電梯控制程序源代碼(帶流程圖,功能分解、源代碼)_第1頁
電梯控制程序源代碼(帶流程圖,功能分解、源代碼)_第2頁
電梯控制程序源代碼(帶流程圖,功能分解、源代碼)_第3頁
電梯控制程序源代碼(帶流程圖,功能分解、源代碼)_第4頁
電梯控制程序源代碼(帶流程圖,功能分解、源代碼)_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 綜合電子創(chuàng)新訓(xùn)練研究報(bào)告研究題目:cts1600-1控制技術(shù)綜合試驗(yàn)院系名稱: 專業(yè)名稱: 學(xué)生姓名:指導(dǎo)教師: xxxx年 xx月 xx日xxxxxxxxxx目錄第一章緒論11.1課題背景與目的11.2課題研究方法1第二章電梯模型硬件設(shè)備22.1 實(shí)驗(yàn)單片機(jī)模型與接口定義22.1.1 實(shí)驗(yàn)用單片機(jī)22.1.2 單片機(jī)接口定義32.1.3 i/o接口data控制命令表42.2 電梯控制命令說明62.3 實(shí)驗(yàn)用電梯模型9第三章 與電梯模型相關(guān)的實(shí)驗(yàn)程序103.1數(shù)碼管連續(xù)顯示103.1.1 程序流程圖103.1.2 功能簡介113.1.3 功能實(shí)現(xiàn)過程113.1.4 問題的解決及收獲113.2

2、 外部按鍵燈連續(xù)閃爍123.2.1 程序流程圖123.2.2 功能簡介123.2.3 功能實(shí)現(xiàn)過程123.2.4 問題的解決及收獲133.3 鍵、燈、數(shù)碼管143.3.1 程序流程圖143.3.2 功能簡介143.3.3 功能實(shí)現(xiàn)過程143.3.4 問題的解決及收獲153.4 外部按鍵上下行163.4.1 程序流程圖163.4.2 功能簡介173.4.3 功能實(shí)現(xiàn)過程173.4.4 問題的解決及收獲183.5 計(jì)算器193.5.1 程序流程圖193.5.2 功能簡介213.5.3 功能實(shí)現(xiàn)過程213.5.4 問題的解決及收獲223.6 密碼鎖233.6.1程序流程圖233.6.2功能簡介243

3、.6.3實(shí)現(xiàn)功能過程243.6.4問題的解決及收獲243.7逐層停自動(dòng)開關(guān)門循環(huán)253.7.1程序流程圖253.7.2功能簡介273.7.3實(shí)現(xiàn)功能過程273.7.4問題的解決及收獲273.8 可記錄順序逐層停自動(dòng)開關(guān)門283.8.1程序流程圖283.8.2功能簡介293.8.3實(shí)現(xiàn)功能過程293.8.4問題的解決及收獲293.9 外部按鍵電梯303.9.1 主程序303.9.2 開關(guān)門模塊313.9.3 上下行模塊323.9.4 led模塊34第四章 電梯模型完整控制程序364.1 完整控制程序(main函數(shù))364.1.1 功能說明364.1.2 功能實(shí)現(xiàn)過程374.1.3 問題的解決及收

4、獲374.2 按鍵掃描模塊(getto函數(shù))384.2.1功能簡介384.2.2 問題的解決及收獲384.3 當(dāng)前層判斷模塊(getat函數(shù))384.3.1 功能簡介384.3.2 問題的解決及收獲384.4 電梯門的選通、禁止模塊(doorenable函數(shù))384.4.1 功能簡介384.4.2 問題的解決及收獲394.5 電梯開關(guān)門模塊(openandclose函數(shù))394.5.1 功能簡介394.5.2 功能實(shí)現(xiàn)過程394.5.3 問題的解決及收獲39第五章 總結(jié)與致謝415.1 總結(jié)415.2 致謝41附錄 控制電梯模型相關(guān)程序42附錄一 數(shù)碼管連續(xù)顯示42附錄二 外部按鍵燈連續(xù)閃爍4

5、3附錄三 外部按鍵逐個(gè)亮滅45附錄四 鍵、燈、數(shù)碼管47附錄五 外部按鍵上下行49附錄六 計(jì)算器51附錄七 密碼鎖56附錄八 逐層停開關(guān)門循環(huán)59附錄九 可記錄順序逐層停自動(dòng)開關(guān)門64附錄十 外部按鍵電梯70附錄十一 完整電梯程序77圖目錄figure 1 凌陽單片機(jī)2figure 2 凌陽單片機(jī)接口定義3figure 3 實(shí)驗(yàn)用電梯模型9figure 4 數(shù)碼管連續(xù)顯示流程圖10figure 5 外部按鍵燈連續(xù)閃爍流程圖12figure 6 led1to7流程圖13figure 7 鍵、燈、數(shù)碼管流程圖14figure 8 外部按鍵上下行流程圖16figure 9 計(jì)算器數(shù)字掃描函數(shù)流程圖1

6、9figure 10 計(jì)算器主函數(shù)流程圖20figure 11 密碼鎖流程圖23figure 12 逐層停自動(dòng)開關(guān)門循環(huán)main函數(shù)25figure 13 逐層停自動(dòng)開關(guān)門循環(huán)atandto函數(shù)26figure 14 逐層停自動(dòng)開關(guān)門循環(huán)openandclose函數(shù)26figure 15 可記錄順序逐層停自動(dòng)開關(guān)門28figure 16 外部按鍵電梯主函數(shù)流程圖30figure 17 外部按鍵電梯開關(guān)門函數(shù)流程圖31figure 18 外部按鍵電梯上下行函數(shù)流程圖32figure 19 外部按鍵電梯led函數(shù)流程圖34figure 20 外部按鍵電梯btled函數(shù)流程圖35figure 21

7、電梯完整程序主函數(shù)36figure 22 電梯完整程序openandclose函數(shù)流程圖39第一章 緒論1.1 課題背景與目的現(xiàn)代社會中,電梯已經(jīng)成為不可缺少的運(yùn)輸設(shè)備。電梯的存在使得每幢高層建筑的交通更為便利。電梯控制技術(shù)的發(fā)展主要經(jīng)歷了三個(gè)階段:繼電器控制階段,微機(jī)控制階段,現(xiàn)場總線控制階段。隨著經(jīng)濟(jì)的高速發(fā)展,微電子技術(shù)、計(jì)算機(jī)技術(shù)和自動(dòng)控制技術(shù)也得到了迅速發(fā)展,交流變頻調(diào)速技術(shù)已經(jīng)進(jìn)入一個(gè)嶄新的時(shí)代,其應(yīng)用越來越廣。電梯是現(xiàn)代高層建筑的垂直交通工具,其設(shè)計(jì)要求穩(wěn)定性、安全性及高。隨著人們生活水平的不斷提高,對電梯的要求的也相應(yīng)提高,電梯得到了快速發(fā)展。電梯模型將機(jī)械和電氣兩方面有機(jī)地結(jié)

8、合起來,充分體現(xiàn)了機(jī)電結(jié)合的特點(diǎn),同時(shí)微機(jī)控制即單片機(jī)控制的電梯在成本上較低,同時(shí)還有著較高的精度,非常適合在學(xué)生機(jī)電實(shí)驗(yàn)方面得到廣泛的應(yīng)用,可以提高大家的編程能力,加深對單片機(jī)的理解和應(yīng)用,同時(shí)增強(qiáng)創(chuàng)新精神和團(tuán)隊(duì)合作精神。1.2 課題研究方法參照凌陽spce061a開發(fā)的相關(guān)資料,加深對控制電梯模型的單片機(jī)的了解,進(jìn)行61板的相關(guān)實(shí)驗(yàn),掌握單片機(jī)實(shí)現(xiàn)基本功能的技術(shù)。對單片機(jī)編寫程序,以達(dá)到控制電梯模型的目的。第二章 電梯模型硬件設(shè)備2.1 實(shí)驗(yàn)單片機(jī)模型與接口定義2.1.1 實(shí)驗(yàn)用單片機(jī)實(shí)驗(yàn)用單片機(jī)為凌陽spce061a微控制器(簡稱61板),是以凌陽16位單片機(jī)spce061a為核心的精簡

9、開發(fā)-仿真-電路板。61板除了具備單片機(jī)最小系統(tǒng)電路外,還包括有電源電路、音頻電路、復(fù)位電路等,采用電池供電,方便攜帶。spce061a 是繼unsp系列產(chǎn)品spce500a等之后凌陽科技推出的又一款16位結(jié)構(gòu)的微控制器。跟市面上常見的avr、51等單片機(jī)相比,這款單片機(jī)具有一個(gè)絕招:語言功能。與spce500a不同的是,在存儲器資源方面考慮到用戶的較少資源的需求以及便于程序調(diào)試等功能,spce061a里只內(nèi)嵌32k字的閃存(flash)。較高的處理速度使unsp能夠非常容易地、快速地處理復(fù)雜的數(shù)字信號。spce061a主要包括輸入/輸出端口、定時(shí)/計(jì)數(shù)器、數(shù)/模轉(zhuǎn)換、模/數(shù)轉(zhuǎn)換、串行設(shè)備輸入

10、/輸出、通用異步串行接口、低電壓檢測和復(fù)位等部分,且內(nèi)置在線仿真電路ice接口,較高的處理速度使其能夠快速地處理復(fù)雜的數(shù)字信號。本電梯模型就是采用此單片機(jī)進(jìn)行程序編寫和實(shí)現(xiàn)電梯的運(yùn)行控制。figure 1 凌陽單片機(jī)2.1.2 單片機(jī)接口定義a0 a8a1 a9a2 a10a3 a11a4 a12a5 a13a6 a14a7 a15 b0 b8b1 b9b2 b10b3 b11b4 b12b5 b13b6 b14b7 b15 實(shí)驗(yàn)用單片機(jī)接口定義如圖,其中a口為輸入,b口為輸出。各樓層按鍵+電梯內(nèi)按鍵去一層三層下 去二層四層下去三層一層到達(dá)去四層二層到達(dá)各樓層按鍵一層上三層到達(dá)電梯內(nèi)按鍵二層上

11、四層到達(dá)3010二層下開門實(shí)驗(yàn)單片機(jī)接口 三層上關(guān)門 +各樓層按鍵燈 +電梯上下運(yùn)行(1上0下)三層下燈電梯運(yùn)行選通(1行0停)四層下燈開關(guān)門運(yùn)行(1開0關(guān))開門到位開關(guān)門選通(1行0禁)關(guān)門到位各樓層按鍵燈一層上燈二層上燈4020二層下燈三層上燈figure 2 凌陽單片機(jī)接口定義2.1.3 i/o接口data控制命令表單片機(jī)a口data控制命令表a口(信號輸入)*p_ioa_data接口編號電梯動(dòng)作0x0001a0去一層(內(nèi)部按鍵)0x0002a1去二層(內(nèi)部按鍵)0x0004a2去三層(內(nèi)部按鍵)0x0008a3去四層(內(nèi)部按鍵)0x0010a4一層上(外部按鍵)0x0020a5二層上(

12、外部按鍵)0x0040a6二層下(外部按鍵)0x0080a7三層上(外部按鍵)0x0100a8三層下(外部按鍵)0x0200a9四層下(外部按鍵)0x0400a10一層到達(dá)(外部按鍵)0x0800a11二層到達(dá)(外部按鍵)0x1000a12三層到達(dá)(外部按鍵)0x2000a13四層到達(dá)(外部按鍵)0x4000a14開門(內(nèi)部按鍵)0x8000a15關(guān)門(內(nèi)部按鍵)單片機(jī)a口data控制命令表a口(信號輸入)*p_iob_data接口編號電梯動(dòng)作0x0001b0電梯上下運(yùn)行(1上0下)0x0002b1電梯運(yùn)行選通(1行0停)0x0004b2開關(guān)門運(yùn)行(1開0關(guān))0x0008b3開關(guān)門選通(1行0

13、禁)0x0010b4一層上燈0x0020b5二層上燈0x0040b6二層下燈0x0080b7三層上燈0x0100b8三層下燈0x0200b9四層下燈0x0400b10開門到位0x0800b11關(guān)門到位0x1000b12數(shù)碼管0x2000b13數(shù)碼管0x4000b14數(shù)碼管0x8000b15單片機(jī)接口屬性設(shè)置: *p_ioa_dir=0*p_ioa_attrib=0*p_ioa_data=0 (設(shè)a0-a15口為輸入)*p_iob_dir=0xf3ff*p_iob_attrib=0xf3ff (設(shè)b0-b9口為輸出,b10、b11口為輸入)*p_iob_data=0;2.2 電梯控制命令說明1.

14、 一層上按鈕按下,*p_ioa_data輸入值為0x0010;使一層上按鍵燈亮起的命令為:*p_iob_data=0x0010,同時(shí)其它層按鍵燈熄滅;如果要使其它層按鍵燈不受此按鍵燈影響,保持原來的狀態(tài),則輸入的命令應(yīng)為:*p_iob_data=0x0010| p_iob_data;2. 二層上按鈕按下,*p_ioa_data輸入值為0x0020使二層上按鍵燈亮起的命令為:*p_iob_data=0x0020同時(shí)其它層按鍵燈熄滅;如果要使其它層按鍵燈不受此按鍵燈影響,保持原來的狀態(tài),則輸入的命令應(yīng)為:*p_iob_data=0x0020|p_iob_data;3. 二層下按鈕按下,*p_ioa

15、_data輸入值為0x0040使二層下按鍵燈亮起的命令為:*p_iob_data=0x0040時(shí)其它層按鍵燈熄滅;如果要使其它層按鍵燈不受此按鍵燈影響,保持原來的狀態(tài),則輸入的命令應(yīng)為:*p_iob_data=0x0040|p_iob_data;4. 三層上按鈕按下,*p_ioa_data輸入值為0x0080使三層上按鍵燈亮起的命令為:*p_iob_data=0x0080;同時(shí)其它層按鍵燈熄滅;如果要使其它層按鍵燈不受此按鍵燈影響,保持原來的狀態(tài),則輸入的命令應(yīng)為:*p_iob_data=0x0080| p_iob_data;5. 三層下按鈕按下,*p_ioa_data輸入值為0x0100,使

16、三層下按鍵燈亮起的命令為:*p_iob_data=0x0100,同時(shí)其它層按鍵燈熄滅;如果要使其它層按鍵燈不受此按鍵燈影響,保持原來的狀態(tài),則輸入的命令應(yīng)為:*p_iob_data=0x0100| p_iob_data;6. 四層下按鈕按下,*p_ioa_data輸入值為0x0200,使四層上按鍵燈亮起的命令為:*p_iob_data=0x0200,同時(shí)其它層按鍵燈熄滅;如果要使其它層按鍵燈不受此按鍵燈影響,保持原來的狀態(tài),則輸入的命令應(yīng)為:*p_iob_data=0x0200| p_iob_data;7. 電梯內(nèi)部開門按鈕按下,*p_ioa_data輸入值為0x4000,使電梯開門的命令為:

17、*p_iob_data=0x000c;8. 電梯內(nèi)部關(guān)門按鈕按下,*p_ioa_data輸入值為0x8000;使電梯關(guān)門的命令為:*p_iob_data=0x0008。我們?yōu)榱四軌蚝喕覀兊某绦?,我們在頭文件define.h中定義了直觀易懂的單詞來表示數(shù)字指令,這樣使得編程過程更加容易直觀,并且使得程序的可讀性更強(qiáng),但是這種方法是在之前不斷地嘗試的基礎(chǔ)上才逐漸摸索出來的,因而在后來編寫的程序中普遍用到了這種方法,而在開始訓(xùn)練階段編寫的程序還往往是使用數(shù)字型的指令,具體的定義如下:#ifndef_define_h_#define_define_h_#define ioa *p_ioa_data#

18、define iob *p_iob_data#define uint unsigned int#define uchar unsigned char#define ulong unsigned long#define stop 0x0000#define down 0x0002#define up 0x0003#define bt1up 0x0010#define bt2up 0x0020#define bt2down 0x0040#define bt3up 0x0080#define bt3down 0x0100#define bt4down 0x0200#define btin1 0x00

19、01#define btin2 0x0002#define btin3 0x0004#define btin4 0x0008#define btopen 0x4000#define btclose 0x8000#define openok 0x0400#define closeok 0x0800#define down 0x0002#define up 0x0003#define close 0x0008#define open 0x000c#define l1 0x1000#define l2 0x2000#define l3 0x3000#define l4 0x4000#define l

20、1up 0x0010#define l2up 0x0020#define l2down 0x0040#define l3up 0x0080#define l3down 0x0100#define l4down 0x0200#define at1 0x0400#define at2 0x0800#define at3 0x1000#define at4 0x2000#endif同時(shí)由于看門狗在程序中頻繁出現(xiàn),故定義看門狗函數(shù)dog方便使用:#include spce061a.h#include dingyi.hvoid dog()*p_watchdog_clear=0x0001;2.3 實(shí)驗(yàn)用電

21、梯模型figure 3 實(shí)驗(yàn)用電梯模型第三章 與電梯模型相關(guān)的實(shí)驗(yàn)程序3.1數(shù)碼管連續(xù)顯示3.1.1 程序流程圖figure 4 數(shù)碼管連續(xù)顯示流程圖3.1.2 功能簡介程序初始化完成后,數(shù)碼管從0連續(xù)變化到7,再從7連續(xù)變化到1。3.1.3 功能實(shí)現(xiàn)過程通過定義一個(gè)指示當(dāng)前數(shù)碼管顯示數(shù)值的變量,以該變量為循環(huán)條件,每次循環(huán)結(jié)束后變量自動(dòng)加1,即指示下一個(gè)數(shù)碼管顯示數(shù)值,并且通過延時(shí)函數(shù)使得輸出持續(xù)一段時(shí)間一邊觀察現(xiàn)象。(代碼詳見附錄一)3.1.4 問題的解決及收獲該程序較為簡單,但是通過該程序我們對軟件的運(yùn)行、調(diào)試有了初步的認(rèn)識,對采集輸入數(shù)據(jù)、設(shè)置輸出命令的基本方法的認(rèn)識更加清晰直觀,同時(shí)

22、對控制命令部分有了更加深刻的了解。3.2 外部按鍵燈連續(xù)閃爍3.2.1 程序流程圖figure 5 外部按鍵燈連續(xù)閃爍流程圖3.2.2 功能簡介程序初始化完成后,外部按鍵燈連續(xù)閃爍,即從一層上燈到四層下等逐個(gè)亮,并不斷循環(huán)。3.2.3 功能實(shí)現(xiàn)過程定義一個(gè)整形變量,通過該變量對6(外部按鍵一共有6個(gè)燈,可按順序定義六個(gè)燈分別為0,1,2,3,4,5)取余的結(jié)構(gòu)判斷應(yīng)該哪一個(gè)燈亮,同時(shí)通過延時(shí)函數(shù)使得輸出得到持續(xù)。(代碼詳見附錄二)3.2.4 問題的解決及收獲這個(gè)程序的思路非常好,但是在邏輯上需要通過取余這種方法實(shí)現(xiàn),有些復(fù)雜,可以將代碼直接描述為外部按鍵逐個(gè)燈亮這樣也可以實(shí)現(xiàn),我們用這種思路寫

23、了一個(gè)讓外部按鍵的燈逐個(gè)亮且保持,直到所有的燈都亮了之后,再逐個(gè)燈滅的程序,代碼見附錄三,程序流程圖如下:figure 6 led1to7流程圖3.3 鍵、燈、數(shù)碼管3.3.1 程序流程圖figure 7 鍵、燈、數(shù)碼管流程圖3.3.2 功能簡介程序運(yùn)行后,按下電梯外部按鍵之后該層外部按鍵的燈亮,同時(shí)數(shù)碼管顯示按下的層數(shù),等待下一次輸入。3.3.3 功能實(shí)現(xiàn)過程程序初始化完成后,開始掃描是否有按鍵按下,若接收到外部某一按鍵按下信號后,那么該層按鍵的燈亮,并且數(shù)碼管顯示對應(yīng)的層數(shù)。(代碼見附錄四)現(xiàn)以一層上按鍵被按下舉例: if(t&0x0010)=0x0010) /如果一層上按鍵被按下*p_i

24、ob_data=0x1011; /輸出為一層上按鍵燈亮且數(shù)碼管顯示1*p_watchdog_clear=0x0001;3.3.4 問題的解決及收獲通過該程序,我們對多個(gè)部件的共同控制方法有了非常清晰的認(rèn)識,在61中只需要將需要共同控制的部分的數(shù)字指令相加即可形成共同協(xié)調(diào)控制。3.4 外部按鍵上下行3.4.1 程序流程圖figure 8 外部按鍵上下行流程圖3.4.2 功能簡介程序運(yùn)行后,當(dāng)按下電梯外部按鍵后,電梯從當(dāng)前層運(yùn)行至目標(biāo)層后停止,等待下一次輸入。3.4.3 功能實(shí)現(xiàn)過程首先程序定義了一個(gè)指示當(dāng)前所在層的變量at,以及一個(gè)指示目標(biāo)層的變量to,程序初始化完成后,給變量at賦上對應(yīng)的層數(shù)

25、值,如若當(dāng)前所在層為2層:if(t&0x0800)=0x0800) /判斷當(dāng)前所在層數(shù),若當(dāng)前所在層數(shù)為2層at=2; /給變量at賦當(dāng)前層數(shù)值2*p_watchdog_clear=0x0001;掃描外部按鍵是否按下,若按下,則對變量to賦上對應(yīng)層數(shù)值,如若三層上或三層下按鍵被按下:if(t&0x0080)=0x0080)|(t&0x0100)=0x0100) /若三層上、三層下按鍵被按/下to=3; /給變量to賦目標(biāo)層數(shù)為3*p_watchdog_clear=0x0001;進(jìn)行目標(biāo)層與當(dāng)前層的比較判斷,若目標(biāo)層大于當(dāng)前層,即toat,那么電梯應(yīng)向上運(yùn)行,直到獲取的當(dāng)前值at=to之后,電梯

26、停止運(yùn)行:if(toat)*p_iob_data=up;*p_watchdog_clear=0x0001;若目標(biāo)層等于當(dāng)前層,即to=at,那么電梯停止運(yùn)行:if(to=at)*p_iob_data=stop;*p_watchdog_clear=0x0001;若目標(biāo)層小于當(dāng)前層,即toat,那么電梯應(yīng)向下運(yùn)行,直到獲取的當(dāng)前值at=to之后,電梯停止運(yùn)行:if(toat,那么電梯應(yīng)向上運(yùn)行,直到獲取的當(dāng)前值at=to之后,電梯停止運(yùn)行:if(toat)*p_iob_data=up;*p_watchdog_clear=0x0001;若目標(biāo)層等于當(dāng)前層,即to=at,那么電梯停止運(yùn)行:if(to=

27、at)*p_iob_data=stop;*p_watchdog_clear=0x0001;若目標(biāo)層小于當(dāng)前層,即toat,那么電梯應(yīng)向下運(yùn)行,直到獲取的當(dāng)前值at=to之后,電梯停止運(yùn)行:if(toat)*p_iob_data=down;*p_watchdog_clear=0x0001;3.9.4 led模塊3.9.4.1程序流程圖figure 19 外部按鍵電梯led函數(shù)流程圖figure 20 外部按鍵電梯btled函數(shù)流程圖3.9.4.2功能過程程序初始化完成后,外部按鍵燈以及指示層數(shù)的數(shù)碼管根據(jù)現(xiàn)在電梯的運(yùn)行狀態(tài)正常顯示。3.9.4.3實(shí)現(xiàn)功能過程當(dāng)外部六個(gè)按鍵按下后,外部按鍵的燈亮,

28、電梯上部的led燈顯示當(dāng)前運(yùn)行的所在層數(shù)。3.9.4.4問題的解決及收獲在程序調(diào)試過程中,我們發(fā)現(xiàn)如果在電梯運(yùn)行的過程中,即電梯不處于某層到位的狀態(tài)時(shí),若按下電梯外部的按鍵后,電梯有可能會卡死在中間部位,并且導(dǎo)致電梯無法運(yùn)行,在發(fā)現(xiàn)這樣的問題之后,我們對程序進(jìn)行了修改,針對上下行部分,我們加入了使得電梯停止的條件,如果電梯沒有處于到位狀態(tài)的話就始終保持先前上行或下行的狀態(tài)不變,從而使得問題得到了有效的解決。第四章 電梯模型完整控制程序4.1 完整控制程序(main函數(shù))4.1.1 功能說明figure 21 電梯完整程序主函數(shù)代碼見附錄十一4.1.2 功能實(shí)現(xiàn)過程在上下行的優(yōu)先級別判斷上,我們

29、沒有使用以前的數(shù)組或者at和to大小判斷的方式,而是按照內(nèi)外部層數(shù)按鍵的個(gè)數(shù)分別定義了4個(gè)和6個(gè)變量,分別來指示目標(biāo)層數(shù),而何時(shí)選擇上下行這一問題,舉例如下:如果電梯目前處于二層,首先判斷電梯之前的運(yùn)行方向,如果電梯之前運(yùn)行方向向下,那么,若外部二層下按鍵或者內(nèi)部二層按鍵被按下,電梯執(zhí)行開門程序;若外部按鍵二層下被按下且外部按鍵一層上與內(nèi)部一層按鍵均未被按下,電梯執(zhí)行開門程序。之后進(jìn)行上下行的判斷,如果電梯外部按鍵一層上或者內(nèi)部按鍵一層被按下,那么電梯下行至一層再做出判斷;如果電梯外部按鍵一層上或者內(nèi)部按鍵一層均未被按下,且三、四層按鍵至少有一個(gè)被按下之后,電梯上行至三層再做出判斷。如果電梯之

30、前運(yùn)行方向向上,那門,如果外部二層上或者內(nèi)部二層按鍵被按下,電梯執(zhí)行開門程序;若外部按鍵二層下被按下,且三、四層均沒有按鍵被按下,那么電梯也執(zhí)行開門程序。之后進(jìn)行上下行的判斷,如果電梯三、四層有至少一個(gè)按鍵被按下之后,電梯上行至三層再做出判斷;如果電梯外部按鍵一層上被按下且三、四層都沒有按鍵被按下的情況先,電梯執(zhí)行下行動(dòng)作至一層再做出判斷。其它功能的實(shí)現(xiàn)主要通過主函數(shù)調(diào)用其它函數(shù)實(shí)現(xiàn),例如開關(guān)門函數(shù),led控制函數(shù),外部按鍵掃描函數(shù),獲取目標(biāo)層函數(shù)等等。4.1.3 問題的解決及收獲在電梯完整程序中,我們改變了以往c文件過多的特點(diǎn),盡量把一些判斷都放在了主函數(shù)中完成,這也造成了主函數(shù)比較復(fù)雜。4

31、.2 按鍵掃描模塊(getto函數(shù))4.2.1功能簡介程序初始化完成后,隨時(shí)掃描內(nèi)外部按鍵從而獲得目標(biāo)層,并通過各層的標(biāo)志位將其記錄下來。4.2.2 問題的解決及收獲此次使用的獲取目標(biāo)層的函數(shù)雖與以往相同,但是由于實(shí)際的電梯會實(shí)時(shí)記錄電梯內(nèi)外按鍵的情況,同時(shí)在目標(biāo)層之后會把相應(yīng)的層數(shù)及方向清零并且對上下行做出判斷,所以在獲取目標(biāo)層與及時(shí)清除已到達(dá)層這一問題上思路完全是嶄新的,而這部分主要是體現(xiàn)在主函數(shù)中,在此不做贅述。4.3 當(dāng)前層判斷模塊(getat函數(shù))4.3.1 功能簡介當(dāng)程序初始化完成后,實(shí)時(shí)確定當(dāng)前所在層數(shù)。4.3.2 問題的解決及收獲或許當(dāng)前層數(shù)的模塊在前面使用也較多,但是在這一部

32、分我們加入了一個(gè)判斷當(dāng)前上部led指示的部分,即上部led顯示當(dāng)前所在的層數(shù),并且通過此事state的狀態(tài)來判斷l(xiāng)ed顯示部分箭頭的指向。4.4 電梯門的選通、禁止模塊(doorenable函數(shù))4.4.1 功能簡介程序初始化完成后,根據(jù)電梯當(dāng)前的狀態(tài)判斷此時(shí)能否開門的一個(gè)標(biāo)志位,例如當(dāng)電梯某層的兩個(gè)按鍵同時(shí)按下且上面層數(shù)沒有按鍵被按下的情況下,只開門一次且清掉兩個(gè)按鍵的燈和相應(yīng)的標(biāo)志位。4.4.2 問題的解決及收獲在開關(guān)門選通的這一問題上,由于前期做過很多這方面的訓(xùn)練,所以解決起來比較容易,主要是保證它能夠在應(yīng)該可能需要開門的情況下該位是選通的,在不能開門的情況下該位一定要是禁止的。4.5

33、電梯開關(guān)門模塊(openandclose函數(shù))4.5.1 功能簡介開門部分的實(shí)現(xiàn)相對較為簡單,在這里僅對關(guān)門模塊進(jìn)行分析,流程圖如下:figure 22 電梯完整程序openandclose函數(shù)流程圖4.5.2 功能實(shí)現(xiàn)過程4.5.3 問題的解決及收獲針對開門環(huán)節(jié),由于考慮到真實(shí)電梯在開門過程中,電梯可以保持持續(xù)開門的狀態(tài),但是如果在關(guān)門過程中,為保證安全,在電梯內(nèi)部按下開門鍵,或者電梯外部當(dāng)前層被按下的情況下,電梯應(yīng)該是可以立即停止關(guān)門動(dòng)作從而進(jìn)行開門動(dòng)作以保證安全或者外部有人要進(jìn)入電梯的需求。在面對這個(gè)問題是我們一度遇到了很多困難,不知道如何實(shí)現(xiàn)在關(guān)門動(dòng)作進(jìn)行的過程中如何來實(shí)現(xiàn)外部當(dāng)前層按

34、鍵按下后可以保證電梯轉(zhuǎn)而執(zhí)行開門動(dòng)作,最后進(jìn)過深入的思考之后,我們引入了一個(gè)變量k,使得如果按下的按鍵所指示的層數(shù)后,我們給變量k賦值為1,在當(dāng)k=1或者內(nèi)部開門按鍵被按下的時(shí)候,終止之前的關(guān)門動(dòng)作,轉(zhuǎn)而執(zhí)行開門動(dòng)作,直到開門到位。在開關(guān)門問題上我們還遇到了另外一個(gè)問題,如在上行過程中,三層的上下均被按下,且四層的按鍵又均未被按下的情況下,由于每次只能開門動(dòng)作清掉一個(gè)標(biāo)志位,而導(dǎo)致電梯會自動(dòng)開關(guān)兩次門,為了解決這一問題我們引入了一個(gè)doorenable變量,該變量作為是否進(jìn)入開關(guān)門程序的條件之一,同時(shí)在進(jìn)入開關(guān)門函數(shù)之后,令該變量無效,而只有再次上行或者下行之后再令該變量有效,從而解決了這樣一

35、個(gè)問題。第五章 總結(jié)與致謝5.1 總結(jié)本電梯模型的控制程序采用凌陽spces061a單片機(jī)設(shè)計(jì)編寫完成。前期,我們通過編制電梯相關(guān)小程序熟悉單片機(jī)的基本編程技術(shù)。設(shè)計(jì)和制作該電梯模型的控制程序提升了我們的動(dòng)手和動(dòng)腦的積極性,鍛煉了團(tuán)隊(duì)合作能力。同時(shí)這也是機(jī)電結(jié)合方面的優(yōu)秀實(shí)例,是我們對控制理論和機(jī)電結(jié)合方面的知識有了更深入的認(rèn)識和了解。5.2 致謝感謝xx老師和xx老師在綜合電子創(chuàng)新訓(xùn)練過程中給予的大力幫助與支持,讓我們在創(chuàng)新實(shí)習(xí)的過程中得到了充分的鍛煉和提高。感謝工程訓(xùn)練中心提供的場地與實(shí)驗(yàn)設(shè)備的支持。最后也要感謝我們小團(tuán)隊(duì)的所有成員的共同努力,感謝其他同學(xué)的幫助,讓我們在創(chuàng)新實(shí)習(xí)中共同進(jìn)步

36、、共同提高。附錄 控制電梯模型相關(guān)程序附錄一 數(shù)碼管連續(xù)顯示#include spce061a.h#include define.hvoid main()*p_ioa_dir=0;*p_ioa_attrib=0;*p_ioa_data=0;*p_iob_dir=0xf3ff;*p_iob_attrib=0xf3ff;*p_iob_data=0;int i,j;while(1)iob=0x0001;for(i=0,i=7,i+)delayms(100);iob=iob+0x1000;iob=0x7000;for(j=0;j=7;j+)delayms(100);iob=iob+0x1000;附錄二

37、 外部按鍵燈連續(xù)閃爍#include spce061a.h#include define.hint btled,led;int i=1;void delayms(uint t)while(t-)uint j;for(j=0;j200;j+)dog();void main()*p_ioa_dir=0;*p_ioa_attrib=0;*p_ioa_data=0;*p_iob_dir=0xf3ff;*p_iob_attrib=0xf3ff;*p_iob_data=0;while(1)switch(i)case 1:iob=l1up+l1;i=(i+1)%6);delayms(100);dog();b

38、reak;case 2:iob=l2down+l2;i=(i+1)%6);delayms(100);dog();break;case 3:iob=l2up+l2;i=(i+1)%6);delayms(100);dog();break;case 4:iob=l3down+l3;i=(i+1)%6);delayms(100);dog();break;case 5:iob=l3up+l3;i=(i+1)%6);delayms(100);dog();break;case 0:iob=l4down+l4;i=(i+1)%6);delayms(100);dog();break;附錄三 外部按鍵逐個(gè)亮滅#i

39、nclude spce061a.h#include define.hvoid delayms(uint t)while(t-)uint j;for(j=0;j500;j+)void main()*p_ioa_dir=0;*p_ioa_attrib=0;*p_ioa_data=0;*p_iob_dir=0xf3ff;*p_iob_attrib=0xf3ff;*p_iob_data=0;while(1)iob=l1up+l1;delayms(100);dog();iob=l1up+l2down+l2;delayms(100);dog();iob=l1up+l2down+l2up+l2;delayms(100);dog();iob=l1up+l2down+l2up+l3down+l3;delayms(100);dog();iob=l1up+l2down+l2up+l3down+l3up+l3;delayms(100);dog();iob=l1up+l2dow

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論