版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
LPC82X 典型應(yīng)用實(shí)例
本篇包括第十至十三章,共給出了三個(gè)典型應(yīng)用項(xiàng)目實(shí)例,依次為基于LPC824學(xué)習(xí)板的智能門(mén)密碼鎖設(shè)計(jì)實(shí)例,智能溫度采集、顯示與報(bào)警系統(tǒng)以及數(shù)字電壓采集與顯示實(shí)例,最后還給出了一個(gè)NXP公司設(shè)計(jì)的開(kāi)源硬件平臺(tái)LPCXpresso824-MAX。該學(xué)習(xí)平臺(tái)的硬件和軟件設(shè)計(jì)規(guī)范,且學(xué)習(xí)資料豐富,可作為基于LPC824設(shè)計(jì)應(yīng)用系統(tǒng)的開(kāi)發(fā)模板。第十章
智能門(mén)密碼鎖應(yīng)用實(shí)例 10.1 智能門(mén)密碼鎖功能設(shè)計(jì) 10.2 智能門(mén)密碼鎖程序設(shè)計(jì) 智能門(mén)密碼鎖是通過(guò)輸入密碼控制門(mén)鎖開(kāi)關(guān)的裝置,這里使用LPC824學(xué)習(xí)板模擬智能門(mén)密碼鎖:當(dāng)輸入正確的6位數(shù)字密碼后(按下確認(rèn)鍵S15),用ZLG7289B驅(qū)動(dòng)的四合一七段數(shù)碼管顯示“OOOO”模擬門(mén)被打開(kāi),且LCD屏主界面顯示“歡迎回家!”;當(dāng)按下S16按鍵時(shí),模擬門(mén)被關(guān)閉(此時(shí),數(shù)管碼全部熄滅),界面將顯示“請(qǐng)輸入密碼:”。輸入的密碼用“*”號(hào)顯示。S1~S10按鍵為10個(gè)數(shù)字輸入鍵,其中S10表示數(shù)字“0”,S1表示數(shù)字“1”,依次類(lèi)推,S9表示數(shù)字“9”。初始密碼為:123456,在開(kāi)門(mén)狀態(tài)下,當(dāng)用戶(hù)按下S11按鍵時(shí)可修改密碼,首先會(huì)提示輸入原密碼,輸入6位數(shù)字原密碼并按確認(rèn)鍵S15后,提示輸入新密碼,輸入6位數(shù)字后,按下S15確認(rèn)鍵后要求再次輸入新密碼,再輸入一次新密碼后按下S15按鍵確認(rèn)新密碼,如果兩次輸入的新密碼相同,則修改密碼成功。智能門(mén)密碼鎖實(shí)現(xiàn)的功能如圖10-1和圖10-2所示。圖10-1、10-2請(qǐng)看下頁(yè)
10.1 智能門(mén)密碼鎖功能設(shè)計(jì)圖10-1 智能門(mén)密碼鎖關(guān)門(mén)狀態(tài)下的功能
圖10-2 智能門(mén)密碼鎖開(kāi)門(mén)狀態(tài)下的功能10.1 智能門(mén)密碼鎖功能設(shè)計(jì) 由圖10-1和圖10-2可知,關(guān)門(mén)狀態(tài)下只能輸入密碼開(kāi)鎖,而沒(méi)有其他功能;當(dāng)輸入錯(cuò)誤的密碼后,數(shù)碼管將顯示“EEEE”報(bào)警。開(kāi)門(mén)狀態(tài)下可以修改密碼,此外,開(kāi)門(mén)狀態(tài)下按下S16鍵,則進(jìn)入關(guān)門(mén)狀態(tài)(模擬關(guān)門(mén))。 由于本實(shí)例受到篇幅限制,程序代碼不宜過(guò)長(zhǎng),故僅考慮實(shí)現(xiàn)上述智能門(mén)密碼鎖的基本功能,讀者可以在此基礎(chǔ)上添加屏幕保護(hù)功能,實(shí)現(xiàn)更美觀(guān)的界面設(shè)計(jì)。此外,密碼應(yīng)該保存在EEPROM等安全性高的只讀存儲(chǔ)器中,由于LPC824學(xué)習(xí)板上沒(méi)有EEPROM,所以這里的密碼只是一個(gè)普通的RAM變量。在實(shí)際智能門(mén)密碼鎖中,還應(yīng)該將這個(gè)變量加密后寫(xiě)入到EEPROM中。每次門(mén)鎖通電后,首先將EEPROM中的信息讀出到LPC824內(nèi)存中,然后解密這些信息,得到真實(shí)的開(kāi)鎖密碼。每次修改開(kāi)鎖密碼時(shí),都要將該密鑰加密后,寫(xiě)入到EEPROM中。加密算法可以采用高級(jí)加密標(biāo)準(zhǔn)AES算法。10.1 智能門(mén)密碼鎖功能設(shè)計(jì) 在項(xiàng)目ZLX16的基礎(chǔ)上新建項(xiàng)目ZLX22,保存在目錄D:\ZLXLPC824\ZLX22下,此時(shí)的工程ZLX22與ZLX16相同。然后,按表10-1修改項(xiàng)目ZLX22。表10-1 項(xiàng)目ZLX22在項(xiàng)目ZLX16基礎(chǔ)上的改動(dòng)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì) 建設(shè)好的項(xiàng)目ZLX22如圖10-3所示。圖10-3 項(xiàng)目ZLX22工作界面10.2 智能門(mén)密碼鎖程序設(shè)計(jì) 下面依次介紹表10-1中新添加到項(xiàng)目ZLX22中的各個(gè)文件。
程序段10-1文件task02.c 1 //Filename:task02.c 2 3 #include"includes.h" 4 5 externOS_EVENT*Mbox01;
6
第5行聲明外部定義的消息郵箱Mbox01。
7 voidTask02(void*data) 8 { 9 INT8Uerr;
10 INT8U*keyCd;
11 INT8UkeyN;
12
第10行的KeyCD用于指向接收到的消息(消息包含了按鍵碼),第11行的keyN用于保存按鍵的編號(hào)。
10.2 智能門(mén)密碼鎖程序設(shè)計(jì) 13 data=data;
14 15 DoorLock();
16
第15行調(diào)用DoorLock函數(shù),將門(mén)的初始狀態(tài)設(shè)為關(guān)門(mén)狀態(tài)。
17 while(1) 18 { 19 keyCd=(INT8U*)OSMboxPend(Mbox01,0,&err);
20 keyN=KeyNumber(keyCd[0]);
21 if(keyN<=11) 22 DoorKeyS1_11(keyN);
23 if(keyN==15) 24 DoorKeyS15();
25 if(keyN==16) 26 DoorLock();
27 } 28 }
10.2 智能門(mén)密碼鎖程序設(shè)計(jì)
第19行請(qǐng)求消息郵箱Mbox01,將請(qǐng)求到的消息(即按鍵碼)賦給keyCd。第20行調(diào)用KeyNumber函數(shù)由按鍵碼keyCd[0]得到按鍵的編號(hào)keyN。第21~22行說(shuō)明當(dāng)按鍵為S1~S11時(shí),調(diào)用函數(shù)DoorKeyS1_11,其參數(shù)為按鍵編號(hào),其中S1~S10為數(shù)字輸入鍵,S1對(duì)應(yīng)著數(shù)字1,S2對(duì)應(yīng)著數(shù)字9,依次類(lèi)推,S9對(duì)應(yīng)著數(shù)字9,而S10對(duì)應(yīng)著數(shù)字0。S11為啟動(dòng)修改密碼的按鍵,只有在開(kāi)門(mén)狀態(tài)下,才能修改密碼。按鍵S12~S14沒(méi)有使用。第23~24行說(shuō)明當(dāng)按下S15鍵時(shí),調(diào)用函數(shù)DoorKeyS15,S15鍵為輸入密碼的確認(rèn)鍵。第25~26行表示如果按下按鍵S16,則調(diào)用DoorLock函數(shù),模擬關(guān)門(mén)動(dòng)作,即按下S16鍵時(shí),由開(kāi)門(mén)狀態(tài)進(jìn)入到關(guān)門(mén)狀態(tài)。10.2 智能門(mén)密碼鎖程序設(shè)計(jì)
程序段10-2文件task02.h 1 //Filename:task02.h 2 3 #ifndef_TASK02_H 4 #define_TASK02_H 5 6 #defineTask02StkSize 80 7 #defineTask02ID 2 8 #defineTask02Prio (Task02ID+3) 9 10 voidTask02(void*);
11 12 #endif
文件task02.h宏定義了任務(wù)Task02的堆棧大小為80字、任務(wù)ID號(hào)為2和任務(wù)優(yōu)先級(jí)號(hào)為5。第10行聲明了任務(wù)函數(shù)Task02。
10.2 智能門(mén)密碼鎖程序設(shè)計(jì)
程序段10-3文件task03.c 1 //Filename:task03.c 2 3 #include"includes.h" 4 5 externOS_EVENT*Sem01;
6
第5行聲明外部定義的信號(hào)量事件Sem01。
7 voidTask03(void*data) 8 { 9 INT8Uerr;
10 data=data;
11 12 while(1) 13 { 14 OSSemPend(Sem01,0,&err);
15 SegDoorOff();
16 DoorLock();
17 } 18 }
用戶(hù)任務(wù)Task03始終請(qǐng)求信號(hào)量Sem01(第14行),請(qǐng)求成功后,第15~16行才能執(zhí)行,將四合一七段數(shù)碼管關(guān)閉,然后調(diào)用DoorLock函數(shù)進(jìn)入關(guān)門(mén)狀態(tài)。10.2 智能門(mén)密碼鎖程序設(shè)計(jì)
程序段10-4文件task03.h 1 //Filename:task03.h 2 3 #ifndef_TASK03_H 4 #define_TASK03_H 5 6 #defineTask03StkSize 50 7 #defineTask03ID 3 8 #defineTask03Prio (Task03ID+3) 9 10 voidTask03(void*);
11 12 #endif
文件task03.h宏定義了任務(wù)Task03的堆棧大小為50字、任務(wù)ID號(hào)為3和任務(wù)優(yōu)先級(jí)號(hào)為6。第10行聲明了任務(wù)函數(shù)Task03。10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)
程序段10-6文件uctmr.h 1 //Filename:uctmr.h 2 3 #ifndef_UCTMR_H 4 #define_UCTMR_H 5 6 voiducTmrsCreate(void);
7 voidStartTmrErr(void);
8 9 #endif
文件uctmr.h給出了文件uctmr.c中定義的函數(shù)的聲明。10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì) 144 145constINT8UstrStar[]={//★ 1460x01,0x00,0x01,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x07,0xC0,0xFF,0xFE,0x7F,0xFC,1470x3F,0xF8,0x0F,0xE0,0x0F,0xE0,0x1F,0xF0,0x1E,0xF0,0x18,0x30,0x20,0x08,0x00,0x00};//★ 148 第5~147行為各個(gè)漢字字串的點(diǎn)陣數(shù)組,使用軟件PCtoLCD2002生成,生成方式為逐行式,高位在前。例如生成漢字字串“請(qǐng)輸入密碼:”的點(diǎn)陣數(shù)組,使用如圖10-4和圖10-5所示的方法。圖10-4 PCtoLCD2002生成漢字點(diǎn)陣
圖10-5 PCtoLCD2002工作選項(xiàng)配置10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì)10.2 智能門(mén)密碼鎖程序設(shè)計(jì) 程序段10-8文件doorlock.h 1 //Filename:doorlock.h 2 3 #include"datatype.h" 4 5 #ifndef_DOORLOCK_H 6 #define_DOORLOCK_H 7 8 voidSegDoorErr(void);
9 voidSegDoorOff(void);
10 voidSegDoorOn(void);
11 voidDoorLock(void);
12 voidDoorKeyS15(void);
13 voidDoorKeyS1_11(Int08U);
14 15 #endif
文件doorlock.h中聲明了文件doorlock.c中定義的函數(shù)SegDoorErr、SegDoorOff、SegDoorOn、DoorLock、DoorKeyS15和DoorKeyS1_11。
10.2 智能門(mén)密碼鎖程序設(shè)計(jì)
回到圖10-3,編譯鏈接并運(yùn)行項(xiàng)目
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026浙江溫州市樂(lè)清市城衛(wèi)清潔服務(wù)有限公司長(zhǎng)期招聘考試備考題庫(kù)及答案解析
- 浙商銀行嘉興分行2026年一季度社會(huì)招聘筆試模擬試題及答案解析
- 2026陜西商洛柞水縣縣直部分空編單位選調(diào)(選聘)11人筆試參考題庫(kù)及答案解析
- 2026年新能源汽車(chē)維修技能提升課
- 2026年加油站員工應(yīng)急演練指南
- 2026內(nèi)蒙古通遼市扎魯特旗敦德諾爾露天煤業(yè)有限公司招聘12人筆試備考題庫(kù)及答案解析
- 2026年度安徽國(guó)際商務(wù)職業(yè)學(xué)院省直事業(yè)單位公開(kāi)招聘工作人員19名筆試備考試題及答案解析
- 2026上半年貴州事業(yè)單位聯(lián)考省農(nóng)業(yè)科學(xué)院招聘18人筆試備考試題及答案解析
- 2026年房地產(chǎn)中介帶看流程優(yōu)化
- 2026年體育賽事組織管理培訓(xùn)
- QGDW10384-2023輸電線(xiàn)路鋼管塔加工技術(shù)規(guī)程
- 《養(yǎng)老機(jī)構(gòu)智慧運(yùn)營(yíng)與管理》全套教學(xué)課件
- 2025年本科院校圖書(shū)館招聘面試題
- 電子商務(wù)畢業(yè)論文5000
- 2025-2026學(xué)年人教版(2024)初中生物八年級(jí)上冊(cè)教學(xué)計(jì)劃及進(jìn)度表
- 醫(yī)療衛(wèi)生輿情課件模板
- 高壓注漿施工方案(3篇)
- 高強(qiáng)混凝土知識(shí)培訓(xùn)課件
- (高清版)DB11∕T 1455-2025 電動(dòng)汽車(chē)充電基礎(chǔ)設(shè)施規(guī)劃設(shè)計(jì)標(biāo)準(zhǔn)
- 暖通工程施工環(huán)保措施
- 宗族團(tuán)年活動(dòng)方案
評(píng)論
0/150
提交評(píng)論