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

下載本文檔

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

文檔簡(jiǎn)介

1、 綜合電子創(chuàng)新訓(xùn)練研究報(bào)告研究題目:CTS1600-1控制技術(shù)綜合試驗(yàn)院系名稱: 專業(yè)名稱: 學(xué)生姓名:指導(dǎo)教師: xxxx年 xx月 xx日xxxxxxxxxx綜合電子創(chuàng)新訓(xùn)練研究報(bào)告目錄第一章緒論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 電梯控制命令說(shuō)明62.3 實(shí)驗(yàn)用電梯模型9第三章 與電梯模型相關(guān)的實(shí)驗(yàn)程序103.1數(shù)碼管連續(xù)顯示103.1.1 程序流程圖103.1.2 功能簡(jiǎn)介113.1.3 功能實(shí)現(xiàn)過(guò)程113.1.4 問(wèn)

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

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

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

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

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

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

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

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

10、、模/數(shù)轉(zhuǎn)換、串行設(shè)備輸入/輸出、通用異步串行接口、低電壓檢測(cè)和復(fù)位等部分,且內(nèi)置在線仿真電路ICE接口,較高的處理速度使其能夠快速地處理復(fù)雜的數(shù)字信號(hào)。本電梯模型就是采用此單片機(jī)進(jìn)行程序編寫和實(shí)現(xiàn)電梯的運(yùn)行控制。Figure 1 凌陽(yáng)單片機(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á)各樓層按鍵一層

11、上三層到達(dá)電梯內(nèi)按鍵二層上四層到達(dá)3010二層下開(kāi)門實(shí)驗(yàn)單片機(jī)接口 三層上關(guān)門 +各樓層按鍵燈 +電梯上下運(yùn)行(1上0下)三層下燈電梯運(yùn)行選通(1行0停)四層下燈開(kāi)關(guān)門運(yùn)行(1開(kāi)0關(guān))開(kāi)門到位開(kāi)關(guān)門選通(1行0禁)關(guān)門到位各樓層按鍵燈一層上燈二層上燈4020二層下燈三層上燈Figure 2 凌陽(yáng)單片機(jī)接口定義2.1.3 I/O接口DATA控制命令表單片機(jī)A口DATA控制命令表A口(信號(hào)輸入)*P_IOA_Data接口編號(hào)電梯動(dòng)作0x0001A0去一層(內(nèi)部按鍵)0x0002A1去二層(內(nèi)部按鍵)0x0004A2去三層(內(nèi)部按鍵)0x0008A3去四層(內(nèi)部按鍵)0x0010A4一層上(外部按鍵

12、)0x0020A5二層上(外部按鍵)0x0040A6二層下(外部按鍵)0x0080A7三層上(外部按鍵)0x0100A8三層下(外部按鍵)0x0200A9四層下(外部按鍵)0x0400A10一層到達(dá)(外部按鍵)0x0800A11二層到達(dá)(外部按鍵)0x1000A12三層到達(dá)(外部按鍵)0x2000A13四層到達(dá)(外部按鍵)0x4000A14開(kāi)門(內(nèi)部按鍵)0x8000A15關(guān)門(內(nèi)部按鍵)單片機(jī)A口DATA控制命令表A口(信號(hào)輸入)*P_IOB_Data接口編號(hào)電梯動(dòng)作0x0001B0電梯上下運(yùn)行(1上0下)0x0002B1電梯運(yùn)行選通(1行0停)0x0004B2開(kāi)關(guān)門運(yùn)行(1開(kāi)0關(guān))0x00

13、08B3開(kāi)關(guān)門選通(1行0禁)0x0010B4一層上燈0x0020B5二層上燈0x0040B6二層下燈0x0080B7三層上燈0x0100B8三層下燈0x0200B9四層下燈0x0400B10開(kāi)門到位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

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

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

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

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

18、 *P_IOA_Data#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#defi

19、ne btin1 0x0001#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 0x

20、4000#define L1up 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.h"void d

21、og()*P_Watchdog_Clear=0x0001;2.3 實(shí)驗(yàn)用電梯模型Figure 3 實(shí)驗(yàn)用電梯模型第三章 與電梯模型相關(guān)的實(shí)驗(yàn)程序3.1數(shù)碼管連續(xù)顯示3.1.1 程序流程圖Figure 4 數(shù)碼管連續(xù)顯示流程圖3.1.2 功能簡(jiǎn)介程序初始化完成后,數(shù)碼管從0連續(xù)變化到7,再?gòu)?連續(xù)變化到1。3.1.3 功能實(shí)現(xiàn)過(guò)程通過(guò)定義一個(gè)指示當(dāng)前數(shù)碼管顯示數(shù)值的變量,以該變量為循環(huán)條件,每次循環(huán)結(jié)束后變量自動(dòng)加1,即指示下一個(gè)數(shù)碼管顯示數(shù)值,并且通過(guò)延時(shí)函數(shù)使得輸出持續(xù)一段時(shí)間一邊觀察現(xiàn)象。(代碼詳見(jiàn)附錄一)3.1.4 問(wèn)題的解決及收獲該程序較為簡(jiǎn)單,但是通過(guò)該程序我們對(duì)軟件的運(yùn)行、調(diào)試有了

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

23、復(fù)雜,可以將代碼直接描述為外部按鍵逐個(gè)燈亮這樣也可以實(shí)現(xiàn),我們用這種思路寫了一個(gè)讓外部按鍵的燈逐個(gè)亮且保持,直到所有的燈都亮了之后,再逐個(gè)燈滅的程序,代碼見(jiàn)附錄三,程序流程圖如下:Figure 6 LED1to7流程圖3.3 鍵、燈、數(shù)碼管3.3.1 程序流程圖Figure 7 鍵、燈、數(shù)碼管流程圖3.3.2 功能簡(jiǎn)介程序運(yùn)行后,按下電梯外部按鍵之后該層外部按鍵的燈亮,同時(shí)數(shù)碼管顯示按下的層數(shù),等待下一次輸入。3.3.3 功能實(shí)現(xiàn)過(guò)程程序初始化完成后,開(kāi)始掃描是否有按鍵按下,若接收到外部某一按鍵按下信號(hào)后,那么該層按鍵的燈亮,并且數(shù)碼管顯示對(duì)應(yīng)的層數(shù)。(代碼見(jiàn)附錄四)現(xiàn)以一層上按鍵被按下舉例:

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

25、變量at,以及一個(gè)指示目標(biāo)層的變量to,程序初始化完成后,給變量at賦上對(duì)應(yīng)的層數(shù)值,如若當(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;掃描外部按鍵是否按下,若按下,則對(duì)變量to賦上對(duì)應(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)層與

26、當(dāng)前層的比較判斷,若目標(biāo)層大于當(dāng)前層,即to>at,那么電梯應(yīng)向上運(yùn)行,直到獲取的當(dāng)前值at=to之后,電梯停止運(yùn)行:if(to>at)*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)前層,即to<at,那么電梯應(yīng)向下運(yùn)行,直到獲取的當(dāng)前值at=to之后,電梯停止運(yùn)行:if(to<at)*P_IOB_Data=down;*P_Watchdog_Clear=0x0001;代碼

27、詳見(jiàn)附錄五3.4.4 問(wèn)題的解決及收獲對(duì)數(shù)據(jù)采集系統(tǒng)以及程序的運(yùn)行方式有了更加深刻的認(rèn)識(shí),系統(tǒng)的輸入的數(shù)據(jù)有一部分是可以持續(xù)的,而有一部分只是一個(gè)短暫的脈沖,比如說(shuō)像開(kāi)門到位或者關(guān)門到位這樣的輸入就可以是持續(xù)的信號(hào),但外部按鍵這樣的輸入只能是一個(gè)脈沖信號(hào),像這種信號(hào)就需要通過(guò)在這種脈沖信號(hào)產(chǎn)生的瞬間給另外一個(gè)自己定義的變量賦上相關(guān)信息的值這樣的方式來(lái)保存這種信息;在加有*P_Watchdog_Clear=0x0001的情況下,程序是以非??斓乃俣仍谝槐橐槐榈淖哒麄€(gè)代碼部分,在沒(méi)有加看門狗的情況下,程序在運(yùn)行一段時(shí)間之后會(huì)從頭初始化后繼續(xù)運(yùn)行。3.5 計(jì)算器3.5.1 程序流程圖Figure 9

28、 計(jì)算器數(shù)字掃描函數(shù)流程圖Figure 10 計(jì)算器主函數(shù)流程圖3.5.2 功能簡(jiǎn)介程序初始化完成后,一層上按鍵按下后,電梯門打開(kāi),內(nèi)部層數(shù)按鍵1、2、3、4分別對(duì)應(yīng)數(shù)字1、2、3、4,四層上、三層上、三層下分別對(duì)應(yīng)加法、減法和乘法,首先按下內(nèi)部?jī)蓚€(gè)按鍵分別對(duì)應(yīng)數(shù)學(xué)符號(hào)前后兩個(gè)數(shù)字,在電梯上部的LED顯示屏上顯示按下的數(shù)字,然后再按下加減乘符號(hào),則在電梯上部的LED顯示屏上顯示計(jì)算結(jié)果,若答案在顯示范圍之內(nèi),即在0到7的范圍正確顯示,如果超出這個(gè)范圍,則01閃爍。3.5.3 功能實(shí)現(xiàn)過(guò)程程序初始化完成后,通過(guò)掃描內(nèi)部按鍵,獲取兩個(gè)數(shù)字作為即將進(jìn)行數(shù)學(xué)計(jì)算的輸入,而這兩個(gè)數(shù)字的輸入又靠一個(gè)標(biāo)志位

29、i實(shí)現(xiàn),當(dāng)清零按下之后或者在初始化完成后還沒(méi)有進(jìn)行輸入的情況下,i標(biāo)志位為0等待輸入,當(dāng)采集進(jìn)來(lái)一個(gè)數(shù)據(jù)之后,i標(biāo)志位自動(dòng)加1,之后當(dāng)i=1的情況下在采集進(jìn)來(lái)第二個(gè)數(shù)據(jù),例如第一個(gè)按鍵按下內(nèi)部按鍵1,則該部分代碼如下:while (i=0)if(IOA&btin1)=btin1)num1=1;i+;IOB=0x1000;DelayMs(100);dog();第二次按下內(nèi)部按鍵3,則該部分代碼如下:while (i=0)if(IOA&btin3)=btin3)num2=3;i+;IOB=0x3000;dog();之后在進(jìn)行運(yùn)算法則的選擇,分別有加、減、乘三種,在按下運(yùn)算法則的選擇

30、按鍵后,數(shù)碼管顯示最終的答案,如果運(yùn)算結(jié)果沒(méi)有超出顯示范圍的話那么就正常顯示答案,如若超出了正常的顯示范圍,那么這個(gè)時(shí)候出現(xiàn)01閃爍以提示超出了運(yùn)算范圍。代碼詳見(jiàn)附錄六3.5.4 問(wèn)題的解決及收獲計(jì)算器是我們比較有特色的一個(gè)程序,程序在實(shí)現(xiàn)上雖然比較簡(jiǎn)單,但是讓我們對(duì)系統(tǒng)輸入和輸出的理解更加深刻,尤其是在幫助我們理解如何完成按鍵的實(shí)時(shí)掃描、并且記錄相關(guān)數(shù)據(jù)這兩點(diǎn)上起到非常重要的作用,比如說(shuō)對(duì)外部案件的處理上,人手動(dòng)按下外部按鍵的時(shí)間要比CPU掃過(guò)整個(gè)程序的時(shí)間來(lái)說(shuō)長(zhǎng)得多,這樣如果沒(méi)有延時(shí)函數(shù)作用而且又使用數(shù)組記錄輸入數(shù)據(jù)的情況下,可能會(huì)導(dǎo)致數(shù)組的溢出,從而達(dá)不到每次記錄一個(gè)數(shù)據(jù)輸入的目的。3.

31、6 密碼鎖3.6.1程序流程圖Figure 11 密碼鎖流程圖3.6.2功能簡(jiǎn)介程序初始化完成后,若電梯門沒(méi)有關(guān)上則電梯門關(guān)閉,等待外部按鍵輸入,若密碼輸入正確則開(kāi)門。3.6.3實(shí)現(xiàn)功能過(guò)程在這一部分我們引入了兩個(gè)數(shù)組對(duì)密碼是否相同進(jìn)行判斷,一個(gè)是程序初始化完成后的正確密碼,另外一個(gè)就是我們輸入的密碼,這個(gè)密碼是通過(guò)當(dāng)程序運(yùn)行后,掃描外部按鍵的情況,對(duì)外部按鍵進(jìn)行順序記錄,最終對(duì)外部按鍵輸入的密碼與真實(shí)密碼進(jìn)行逐位比對(duì),若每一位均相同,那么執(zhí)行開(kāi)門動(dòng)作,如果不相同,則不開(kāi)門。代碼詳見(jiàn)附錄七3.6.4問(wèn)題的解決及收獲密碼鎖程序的代碼編寫過(guò)程中我們使用了數(shù)組進(jìn)行數(shù)據(jù)的采集和記錄,所以這樣我們又遇到

32、了之前在編寫計(jì)算器程序中遇到的問(wèn)題,在按下按鍵之后數(shù)組溢出不能滿足之前預(yù)定的要求,因而我們加入的延時(shí)函數(shù)以改進(jìn)之前的程序,但是在這個(gè)過(guò)程中由于延時(shí)時(shí)間不是很好控制,所以也做了很多次嘗試之后才最終確定了一個(gè)相對(duì)比較合適的時(shí)間常數(shù),基本上可以滿足正常速度的密碼輸入,從這一點(diǎn)上來(lái)說(shuō),通過(guò)編寫密碼鎖程序讓我們對(duì)61單片機(jī)的了解更加深入細(xì)致,以前總會(huì)遇到編譯通過(guò)但是運(yùn)行之后總會(huì)出現(xiàn)很多問(wèn)題而且我們總是感覺(jué)無(wú)從下手的這種情況,但是完成密碼鎖程序之后,隨著我們對(duì)單片機(jī)的了解更加深入,在程序運(yùn)行之后,我們經(jīng)過(guò)簡(jiǎn)單地調(diào)試一般就可以找到在那些環(huán)節(jié)的判斷或者邏輯是存在不合理之處,使得我們的效率提高了很多。3.7逐層

33、停自動(dòng)開(kāi)關(guān)門循環(huán)3.7.1程序流程圖Figure 12 逐層停自動(dòng)開(kāi)關(guān)門循環(huán)main函數(shù)Figure 13 逐層停自動(dòng)開(kāi)關(guān)門循環(huán)AtAndTo函數(shù)Figure 14 逐層停自動(dòng)開(kāi)關(guān)門循環(huán)OpenAndClose函數(shù)3.7.2功能簡(jiǎn)介程序初始化完成后,電梯自動(dòng)完成上下行以及開(kāi)關(guān)門動(dòng)作,不斷循環(huán)。3.7.3實(shí)現(xiàn)功能過(guò)程在這個(gè)程序中我們引入了一個(gè)指示上下行的變量shangxia,一層到位之后令該變量為1,指示電梯之后的運(yùn)行狀態(tài)為上行;當(dāng)四層到位之后令該變量為0,指示電梯之后的運(yùn)行狀態(tài)為下行。這樣電梯在二、三層進(jìn)行上下行的判斷時(shí),只需判斷現(xiàn)在指示電梯運(yùn)行狀態(tài)的shangxia則可以保證電梯的正常運(yùn)行。

34、代碼詳見(jiàn)附錄八3.7.4問(wèn)題的解決及收獲逐層停自動(dòng)開(kāi)關(guān)門程序在前面諸多程序的鋪墊下相對(duì)比較容易,不同點(diǎn)在于在這個(gè)程序中定義了一個(gè)指示電梯先前運(yùn)動(dòng)狀態(tài)的變量,從而控制電梯現(xiàn)在時(shí)刻的上下行,這為之后的電梯完整程序打下了一定的基礎(chǔ)。3.8 可記錄順序逐層停自動(dòng)開(kāi)關(guān)門3.8.1程序流程圖Figure 15 可記錄順序逐層停自動(dòng)開(kāi)關(guān)門3.8.2功能簡(jiǎn)介在程序初始化完成后,首先連續(xù)輸入目標(biāo)層數(shù),點(diǎn)擊確定按鍵之后,電梯按照之前按鍵設(shè)定的順序自動(dòng)運(yùn)行,完成上下行和相應(yīng)的開(kāi)關(guān)門功能。3.8.3實(shí)現(xiàn)功能過(guò)程代碼詳見(jiàn)附錄九3.8.4問(wèn)題的解決及收獲這個(gè)程序在實(shí)現(xiàn)的過(guò)程中我們借鑒了密碼鎖的相關(guān)經(jīng)驗(yàn),不同之處在與之前的

35、密碼鎖是有確定個(gè)數(shù)的輸入的,而現(xiàn)在的可記錄順序的逐層停開(kāi)關(guān)門的輸入是不確定個(gè)數(shù)的,同時(shí)它還具備了清零和確定的選項(xiàng),但是它是把之前的密碼匹配部分改為了電梯的上下行和到達(dá)目標(biāo)層之后自動(dòng)開(kāi)關(guān)門的功能,所以可記錄順序的逐層停自動(dòng)開(kāi)關(guān)門程序是繼承了密碼鎖程序的一些特點(diǎn)的基礎(chǔ)上,在功能上又有所拓展和創(chuàng)新。3.9 外部按鍵電梯3.9.1 主程序3.9.1.1程序流程圖Figure 16 外部按鍵電梯主函數(shù)流程圖3.9.1.2功能過(guò)程在程序初始化完成后,進(jìn)入AtAndTo函數(shù),判斷當(dāng)前層數(shù)和目標(biāo)層,之后進(jìn)入U(xiǎn)pAndDown函數(shù)通過(guò)對(duì)at與to的大小比較,判斷電梯的上下行,并將電梯送至目標(biāo)層,進(jìn)入OpenAn

36、dClose函數(shù)后進(jìn)行開(kāi)關(guān)門操作。(代碼詳見(jiàn)附錄十)3.9.2 開(kāi)關(guān)門模塊3.9.2.1程序流程圖Figure 17 外部按鍵電梯開(kāi)關(guān)門函數(shù)流程圖3.9.2.2功能過(guò)程當(dāng)從主函數(shù)進(jìn)入開(kāi)關(guān)門模塊后,電梯自動(dòng)開(kāi)門,開(kāi)門到位后,如果按下內(nèi)部關(guān)門按鍵,電梯關(guān)門。3.9.2.3實(shí)現(xiàn)功能過(guò)程當(dāng)從主函數(shù)進(jìn)入開(kāi)關(guān)門模塊后,首先判斷at和to的值,如果二者相等且DoorEnable允許開(kāi)門即為1,此時(shí)執(zhí)行開(kāi)門動(dòng)作,當(dāng)開(kāi)門到位且內(nèi)部關(guān)門按鍵按下后,電梯關(guān)門。3.9.3 上下行模塊3.9.3.1程序流程圖Figure 18 外部按鍵電梯上下行函數(shù)流程圖3.9.3.2功能過(guò)程程序初始化完成后,若外部按鍵按下后,電梯運(yùn)

37、行到目標(biāo)層。3.9.3.3實(shí)現(xiàn)功能過(guò)程這個(gè)函數(shù)定義了一個(gè)指示當(dāng)前所在層的變量at,以及一個(gè)指示目標(biāo)層的變量to,程序初始化完成后,給變量at賦上對(duì)應(yīng)的層數(shù)值,如若當(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;掃描外部按鍵是否按下,若按下,則對(duì)變量to賦上對(duì)應(yīng)層數(shù)值,如若三層上或三層下按鍵被按下:if(t&0x0080)=0x0080)|(t&0x0100)=0x0100) /若三層上、三層下按鍵被按下to=3; /給變量to賦目標(biāo)

38、層數(shù)為3*P_Watchdog_Clear=0x0001;進(jìn)行目標(biāo)層與當(dāng)前層的比較判斷,若目標(biāo)層大于當(dāng)前層,即to>at,那么電梯應(yīng)向上運(yùn)行,直到獲取的當(dāng)前值at=to之后,電梯停止運(yùn)行:if(to>at)*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)前層,即to<at,那么電梯應(yīng)向下運(yùn)行,直到獲取的當(dāng)前值at=to之后,電梯停止運(yùn)行:if(to<at)*P_IOB_Da

39、ta=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功能過(guò)程程序初始化完成后,外部按鍵燈以及指示層數(shù)的數(shù)碼管根據(jù)現(xiàn)在電梯的運(yùn)行狀態(tài)正常顯示。3.9.4.3實(shí)現(xiàn)功能過(guò)程當(dāng)外部六個(gè)按鍵按下后,外部按鍵的燈亮,電梯上部的LED燈顯示當(dāng)前運(yùn)行的所在層數(shù)。3.9.4.4問(wèn)題的解決及收獲在程序調(diào)試過(guò)程中,我們發(fā)現(xiàn)如果在電梯運(yùn)行的過(guò)程中,即電梯不處于某層到位的狀態(tài)時(shí),若按下電梯外部的按鍵后,電梯有可能會(huì)卡死在中間部位,并且導(dǎo)致電梯無(wú)法運(yùn)

40、行,在發(fā)現(xiàn)這樣的問(wèn)題之后,我們對(duì)程序進(jìn)行了修改,針對(duì)上下行部分,我們加入了使得電梯停止的條件,如果電梯沒(méi)有處于到位狀態(tài)的話就始終保持先前上行或下行的狀態(tài)不變,從而使得問(wèn)題得到了有效的解決。第四章 電梯模型完整控制程序4.1 完整控制程序(main函數(shù))4.1.1 功能說(shuō)明Figure 21 電梯完整程序主函數(shù)代碼見(jiàn)附錄十一4.1.2 功能實(shí)現(xiàn)過(guò)程在上下行的優(yōu)先級(jí)別判斷上,我們沒(méi)有使用以前的數(shù)組或者at和to大小判斷的方式,而是按照內(nèi)外部層數(shù)按鍵的個(gè)數(shù)分別定義了4個(gè)和6個(gè)變量,分別來(lái)指示目標(biāo)層數(shù),而何時(shí)選擇上下行這一問(wèn)題,舉例如下:如果電梯目前處于二層,首先判斷電梯之前的運(yùn)行方向,如果電梯之前運(yùn)

41、行方向向下,那么,若外部二層下按鍵或者內(nèi)部二層按鍵被按下,電梯執(zhí)行開(kāi)門程序;若外部按鍵二層下被按下且外部按鍵一層上與內(nèi)部一層按鍵均未被按下,電梯執(zhí)行開(kāi)門程序。之后進(jìn)行上下行的判斷,如果電梯外部按鍵一層上或者內(nèi)部按鍵一層被按下,那么電梯下行至一層再做出判斷;如果電梯外部按鍵一層上或者內(nèi)部按鍵一層均未被按下,且三、四層按鍵至少有一個(gè)被按下之后,電梯上行至三層再做出判斷。如果電梯之前運(yùn)行方向向上,那門,如果外部二層上或者內(nèi)部二層按鍵被按下,電梯執(zhí)行開(kāi)門程序;若外部按鍵二層下被按下,且三、四層均沒(méi)有按鍵被按下,那么電梯也執(zhí)行開(kāi)門程序。之后進(jìn)行上下行的判斷,如果電梯三、四層有至少一個(gè)按鍵被按下之后,電梯

42、上行至三層再做出判斷;如果電梯外部按鍵一層上被按下且三、四層都沒(méi)有按鍵被按下的情況先,電梯執(zhí)行下行動(dòng)作至一層再做出判斷。其它功能的實(shí)現(xiàn)主要通過(guò)主函數(shù)調(diào)用其它函數(shù)實(shí)現(xiàn),例如開(kāi)關(guān)門函數(shù),LED控制函數(shù),外部按鍵掃描函數(shù),獲取目標(biāo)層函數(shù)等等。4.1.3 問(wèn)題的解決及收獲在電梯完整程序中,我們改變了以往c文件過(guò)多的特點(diǎn),盡量把一些判斷都放在了主函數(shù)中完成,這也造成了主函數(shù)比較復(fù)雜。4.2 按鍵掃描模塊(getto函數(shù))4.2.1功能簡(jiǎn)介程序初始化完成后,隨時(shí)掃描內(nèi)外部按鍵從而獲得目標(biāo)層,并通過(guò)各層的標(biāo)志位將其記錄下來(lái)。4.2.2 問(wèn)題的解決及收獲此次使用的獲取目標(biāo)層的函數(shù)雖與以往相同,但是由于實(shí)際的電

43、梯會(huì)實(shí)時(shí)記錄電梯內(nèi)外按鍵的情況,同時(shí)在目標(biāo)層之后會(huì)把相應(yīng)的層數(shù)及方向清零并且對(duì)上下行做出判斷,所以在獲取目標(biāo)層與及時(shí)清除已到達(dá)層這一問(wèn)題上思路完全是嶄新的,而這部分主要是體現(xiàn)在主函數(shù)中,在此不做贅述。4.3 當(dāng)前層判斷模塊(getat函數(shù))4.3.1 功能簡(jiǎn)介當(dāng)程序初始化完成后,實(shí)時(shí)確定當(dāng)前所在層數(shù)。4.3.2 問(wèn)題的解決及收獲或許當(dāng)前層數(shù)的模塊在前面使用也較多,但是在這一部分我們加入了一個(gè)判斷當(dāng)前上部LED指示的部分,即上部LED顯示當(dāng)前所在的層數(shù),并且通過(guò)此事state的狀態(tài)來(lái)判斷LED顯示部分箭頭的指向。4.4 電梯門的選通、禁止模塊(DoorEnable函數(shù))4.4.1 功能簡(jiǎn)介程序初

44、始化完成后,根據(jù)電梯當(dāng)前的狀態(tài)判斷此時(shí)能否開(kāi)門的一個(gè)標(biāo)志位,例如當(dāng)電梯某層的兩個(gè)按鍵同時(shí)按下且上面層數(shù)沒(méi)有按鍵被按下的情況下,只開(kāi)門一次且清掉兩個(gè)按鍵的燈和相應(yīng)的標(biāo)志位。4.4.2 問(wèn)題的解決及收獲在開(kāi)關(guān)門選通的這一問(wèn)題上,由于前期做過(guò)很多這方面的訓(xùn)練,所以解決起來(lái)比較容易,主要是保證它能夠在應(yīng)該可能需要開(kāi)門的情況下該位是選通的,在不能開(kāi)門的情況下該位一定要是禁止的。4.5 電梯開(kāi)關(guān)門模塊(openandclose函數(shù))4.5.1 功能簡(jiǎn)介開(kāi)門部分的實(shí)現(xiàn)相對(duì)較為簡(jiǎn)單,在這里僅對(duì)關(guān)門模塊進(jìn)行分析,流程圖如下:Figure 22 電梯完整程序openandclose函數(shù)流程圖4.5.2 功能實(shí)現(xiàn)過(guò)

45、程4.5.3 問(wèn)題的解決及收獲針對(duì)開(kāi)門環(huán)節(jié),由于考慮到真實(shí)電梯在開(kāi)門過(guò)程中,電梯可以保持持續(xù)開(kāi)門的狀態(tài),但是如果在關(guān)門過(guò)程中,為保證安全,在電梯內(nèi)部按下開(kāi)門鍵,或者電梯外部當(dāng)前層被按下的情況下,電梯應(yīng)該是可以立即停止關(guān)門動(dòng)作從而進(jìn)行開(kāi)門動(dòng)作以保證安全或者外部有人要進(jìn)入電梯的需求。在面對(duì)這個(gè)問(wèn)題是我們一度遇到了很多困難,不知道如何實(shí)現(xiàn)在關(guān)門動(dòng)作進(jìn)行的過(guò)程中如何來(lái)實(shí)現(xiàn)外部當(dāng)前層按鍵按下后可以保證電梯轉(zhuǎn)而執(zhí)行開(kāi)門動(dòng)作,最后進(jìn)過(guò)深入的思考之后,我們引入了一個(gè)變量k,使得如果按下的按鍵所指示的層數(shù)后,我們給變量k賦值為1,在當(dāng)k=1或者內(nèi)部開(kāi)門按鍵被按下的時(shí)候,終止之前的關(guān)門動(dòng)作,轉(zhuǎn)而執(zhí)行開(kāi)門動(dòng)作,直到

46、開(kāi)門到位。在開(kāi)關(guān)門問(wèn)題上我們還遇到了另外一個(gè)問(wèn)題,如在上行過(guò)程中,三層的上下均被按下,且四層的按鍵又均未被按下的情況下,由于每次只能開(kāi)門動(dòng)作清掉一個(gè)標(biāo)志位,而導(dǎo)致電梯會(huì)自動(dòng)開(kāi)關(guān)兩次門,為了解決這一問(wèn)題我們引入了一個(gè)doorenable變量,該變量作為是否進(jìn)入開(kāi)關(guān)門程序的條件之一,同時(shí)在進(jìn)入開(kāi)關(guān)門函數(shù)之后,令該變量無(wú)效,而只有再次上行或者下行之后再令該變量有效,從而解決了這樣一個(gè)問(wèn)題。第五章 總結(jié)與致謝5.1 總結(jié)本電梯模型的控制程序采用凌陽(yáng)SPCES061A單片機(jī)設(shè)計(jì)編寫完成。前期,我們通過(guò)編制電梯相關(guān)小程序熟悉單片機(jī)的基本編程技術(shù)。設(shè)計(jì)和制作該電梯模型的控制程序提升了我們的動(dòng)手和動(dòng)腦的積極性

47、,鍛煉了團(tuán)隊(duì)合作能力。同時(shí)這也是機(jī)電結(jié)合方面的優(yōu)秀實(shí)例,是我們對(duì)控制理論和機(jī)電結(jié)合方面的知識(shí)有了更深入的認(rèn)識(shí)和了解。5.2 致謝感謝xx老師和xx老師在綜合電子創(chuàng)新訓(xùn)練過(guò)程中給予的大力幫助與支持,讓我們?cè)趧?chuàng)新實(shí)習(xí)的過(guò)程中得到了充分的鍛煉和提高。感謝工程訓(xùn)練中心提供的場(chǎng)地與實(shí)驗(yàn)設(shè)備的支持。最后也要感謝我們小團(tuán)隊(duì)的所有成員的共同努力,感謝其他同學(xué)的幫助,讓我們?cè)趧?chuàng)新實(shí)習(xí)中共同進(jìn)步、共同提高。附錄 控制電梯模型相關(guān)程序附錄一 數(shù)碼管連續(xù)顯示#include "spce061A.h"#include "define.h"void main()*P_IOA_Dir

48、=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;附錄二 外部按鍵燈連續(xù)閃爍#include "spce061A.h"#include "define.h"int BTLED

49、,LED;int i=1;void DelayMs(uint t)while(t-)uint j;for(j=0;j<200;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();break;case 2:IOB=L2down+L2;i=(i+1)%6);DelayMs(100);d

50、og();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è)亮滅#include "spce061A.h"#include "define.h"void DelayMs(uint t)while(t-)uint j;for(j=0;j<500;j+)void main()*P_IOA_Dir=0;*P_I

溫馨提示

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

評(píng)論

0/150

提交評(píng)論