紅外遙控電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
紅外遙控電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
紅外遙控電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
紅外遙控電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
紅外遙控電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、成都信息工程學(xué)院成都信息工程學(xué)院“天府軟件園天府軟件園”杯嵌入杯嵌入式創(chuàng)新技術(shù)大賽式創(chuàng)新技術(shù)大賽報(bào)告書報(bào)告書項(xiàng)目名稱:項(xiàng)目名稱: 紅外遙控電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)完成日期:完成日期: 2011 年 5 月成成 員:員: 摘摘要要:本設(shè)計(jì)是以 stc89c52 為主要芯片,以中斷、計(jì)數(shù)等基本工作方式來控制、判斷外部器件的工作、工作狀態(tài),結(jié)合采用數(shù)字信號編碼的基本算法,用紅外遙控器遙控發(fā)送密碼、再用紅外接收管接收密碼,單片機(jī)根據(jù)紅外接收管導(dǎo)通與否和持續(xù)時間結(jié)合二次調(diào)制方式的基本算法還原遙控器發(fā)送的密碼,再與外部儲存器 at24c02 儲存的密碼對比,判斷密碼是否正確,輔助以 lcd12864 顯示用

2、戶的操作結(jié)果,以蜂鳴器提醒,再通過矩陣鍵盤實(shí)現(xiàn)輸入或修改密碼等基本功能實(shí)現(xiàn)紅外電子密碼鎖的設(shè)計(jì)。該設(shè)計(jì)運(yùn)用了 c 語言編寫程序,簡單、明了,很好的實(shí)現(xiàn)了紅外通信的要求。在以往設(shè)計(jì)的基礎(chǔ)上,該設(shè)計(jì)添加了在線燒寫程序,極大的方便了用戶使用,特別是為工業(yè)生產(chǎn)帶來了極大的便利。紅外電子密碼鎖具有成本較低、操作方便、體積小、無污染、反應(yīng)速度快等優(yōu)勢,具有很好的市場價(jià)值。關(guān)鍵詞:關(guān)鍵詞:編碼、解碼、密碼、紅外目錄目錄1總體設(shè)計(jì)思路總體設(shè)計(jì)思路 .11.1題目要求.11.2本設(shè)計(jì)主要硬件功能部分 .11.3本設(shè)計(jì)軟件的總體構(gòu)思 .12系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn) .32.1at24c02 模塊.

3、32.1.1器件及原理介紹.32.1.2電路實(shí)現(xiàn).42.2紅外通信模塊.42.2.1遙控發(fā)射器及其編碼.42.2.2電路實(shí)現(xiàn).62.3矩陣鍵盤模塊.72.4顯示模塊.72.4.1lcd12864 介紹 .72.4.2lcd12864 電路圖: .82.5蜂鳴器模塊.82.6單片機(jī)最小系統(tǒng)模塊 .92.6.1單片機(jī)最小系統(tǒng)電路圖:.93軟件設(shè)計(jì)軟件設(shè)計(jì).103.1程序流程圖.103.1.1主程序流程圖.103.1.2鍵值判斷流程圖.113.1.3開鎖流程圖.123.1.4密碼修改流程圖.133.1.5紅外接收流程圖.143.1.6按鍵掃瞄流程圖.153.2程序設(shè)計(jì)(見附錄二) .154總結(jié):總結(jié)

4、:.165參考文獻(xiàn):參考文獻(xiàn): .176附錄一附錄一.186.1整體電路結(jié)構(gòu): .186.2pcb 圖:.187附錄二附錄二.197.1at24c02 模塊.197.2紅外通信模塊.227.3矩陣鍵盤模塊.247.4lcd12864 顯示.267.5主程序.291總總體體設(shè)設(shè)計(jì)計(jì)思思路路1.1 題目要求紅外遙控電子密碼鎖由紅外遙控發(fā)射板、紅外接收終端、帶控制的電子鎖構(gòu)成。當(dāng)紅外接收終端收到遙控板送來的開鎖密碼信號,并與保存在終端中的密碼對比。當(dāng)對比成功后終端向電子鎖發(fā)出開鎖命令,完成開鎖功能。此題目的重點(diǎn)、難點(diǎn)是實(shí)現(xiàn)紅外信號的接收、密碼儲存和正確識別按鍵并顯示操作結(jié)果。由于紅外遙控不影響周邊環(huán)

5、境、不干擾其他電器設(shè)備,其無法穿透墻壁,因此,不同房間的家用電器可使用通用的遙控器而不會產(chǎn)生相互干擾;電路調(diào)試簡單,只要按給定電路連接無誤,一般不需任何調(diào)試即可投入工作;編解碼容易,可進(jìn)行多路遙控。而且紅外電子密碼所體積較小、操作方便等優(yōu)勢,具有很好的市場前景。1.2本設(shè)計(jì)主要硬件功能部分本系統(tǒng)主要由六大部分組成:1) 單片機(jī)最小系統(tǒng)模塊;2) lcd 顯示電路模塊;3) 陣列鍵盤模塊;4) 紅外接收模塊;5) at24c02 模塊;6) 蜂鳴器模塊;1.3本設(shè)計(jì)軟件的總體構(gòu)思本設(shè)計(jì)是以 stc89c52 為核心控制器件。本設(shè)計(jì)是通過 stc89c52 與at24c02 之間交換密碼后,再與用

6、戶通過鍵盤或紅外遙控器發(fā)送過來的密碼作對比,再用 lcd12864 顯示操作結(jié)果,用蜂鳴器提示電子鎖是否打開,從而實(shí)現(xiàn)紅外遙控電子密碼鎖的設(shè)計(jì),如下圖。 stc89c52單片機(jī)at24c02 存儲器鍵盤輸入紅外二極管接收液晶 12864 顯示蜂鳴器提示圖表圖表 1 主體結(jié)構(gòu)主體結(jié)構(gòu)2系系統(tǒng)統(tǒng)的的硬硬件件設(shè)設(shè)計(jì)計(jì)與與實(shí)實(shí)現(xiàn)現(xiàn)2.1at24c02 模塊2.1.1 器件及原理介紹at24c02 串行 e2prom 具有 i2c 總線接口功能,功耗低,寬電源電壓(根據(jù)不同型號 2.56.0v),工作電流約為 3ma,靜態(tài)電流隨電源電壓不同為30a110a。圖表圖表 2i2c 通信原理:i2c 總線進(jìn)行

7、數(shù)據(jù)傳送時,時鐘信號為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時鐘線上的信號為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化,如圖 a。scl 線為高電平期間,sda 線由高電平向低電平的變化表示起始信號;scl 線為高電平期間,sda 線由低電平向高電平的變化表示終止信號,如圖 4。圖表圖表 3圖表圖表 42.1.2 電路實(shí)現(xiàn)a0 、a1 、a2 作為地址線,因在此只有一個器件,故全都接 gnd。sda作串行數(shù)據(jù)讀寫端接 p1.2 口,scl 作為時鐘信號接 p1.1 口。圖表圖表 5 at24c02 硬件結(jié)構(gòu)硬件結(jié)構(gòu)2.2 紅外通信模塊2.2.1 遙控發(fā)射器及其編碼 遙控發(fā)射器專

8、用芯片很多,根據(jù)編碼格式可以分成兩大類,這里我們以運(yùn)用比較廣泛,解碼比較容易的一類來加以說明,現(xiàn)以日本 nec 的 upd6121g 組成發(fā)射電路為例說明編碼原理, 我們使用的超薄型紅外線遙控器使用的就是6121 編碼。當(dāng)發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征: 采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔 0.56ms、周期為 1.125ms 的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔 1.685ms、周期為 2.25ms 的組合表示二進(jìn)制的“1”, 其波形如圖 7 所示。 圖表圖表 6 上述“0”和“1”組成的 32 位二進(jìn)制

9、碼經(jīng) 38khz 的載頻進(jìn)行二次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射。upd6121g 產(chǎn)生的遙控編碼是連續(xù)的 32 位二進(jìn)制碼組,其中前 16 位為用戶識別碼,能區(qū)別不同的電器設(shè)備,防止不同機(jī)種遙控碼互相干擾,如我們可以同時使用電視機(jī)、機(jī)頂盒、功放等遙控器,但它們不會產(chǎn)生誤觸發(fā)。該芯片的用戶識別碼固定為十六進(jìn)制 01h;后 16 位為 8 位操作碼(功能碼)及其反碼。upd6121g 最多額 128 種不同組合的編碼。 遙控器在按鍵按下后,周期性地發(fā)出同一種 32 位二進(jìn)制碼,周期約為108ms。一組碼本身的持續(xù)時間隨它包含的二進(jìn)制“0”和

10、“1”的個數(shù)不同而不同,大約在 4563ms 之間, 圖表圖表 7 發(fā)射波形圖發(fā)射波形圖當(dāng)一個鍵按下超過 36ms,振蕩器使芯片激活,將發(fā)射一組 108ms 的編碼脈沖,這 108ms 發(fā)射代碼由一個起始碼(9ms),一個結(jié)果碼(4.5ms),低8 位地址碼(9ms18ms),高 8 位地址碼(9ms18ms),8 位數(shù)據(jù)碼(9ms18ms)和這 8 位數(shù)據(jù)的反碼(9ms18ms)組成。如果鍵按下超過108ms 仍未松開,接下來發(fā)射的代碼(連發(fā)代碼)將僅由起始碼(9ms)和結(jié)束碼(2.5ms)組成。 代碼格式(以接收代碼為準(zhǔn),接收代碼與發(fā)射代碼反向) 1)位定義 圖表圖表 82)單發(fā)代碼格式

11、圖表圖表 93)連發(fā)代碼格式 圖表圖表 102.2.2 電路實(shí)現(xiàn)一體化的紅外接收裝置將遙控信號的接收、放大、檢波、整形集于一身,并且輸出可以讓單片機(jī)識別的 ttl 信號,這樣大大簡化了接收電路的復(fù)雜程度和電路的設(shè)計(jì)工作,方便使用。在本系統(tǒng)中我們采用紅外一體化接收頭hs0038,外觀圖如圖所示。圖表圖表 11hs0038 黑色環(huán)氧樹脂封裝,不受日光、熒光燈等光源干擾,內(nèi)附磁屏蔽,功耗低,靈敏度高。在用小功率發(fā)射管發(fā)射信號情況下,其接收距離可達(dá)35m。它能與 ttl、coms 電路兼容。hs0038 為直立側(cè)面收光型。它接收紅外信號頻率為 38 khz,周期約 26 s,同時能對信號進(jìn)行放大、檢波

12、、整形,得到 ttl 電平的編碼信號。三個管腳分別是地、5 v 電源、解調(diào)信號輸出端。利用外部中 0 斷進(jìn)行數(shù)據(jù)的接收。圖表圖表 12 hs0038 硬件結(jié)構(gòu)硬件結(jié)構(gòu)2.3矩陣鍵盤模塊將 12 個按鍵分為 4 排 3 列排列好,如圖:矩陣鍵盤硬件結(jié)構(gòu)。當(dāng)有一個鍵按下時,通過某一邊引腳賦低電平,掃描全部引腳看是否與最初的賦值一樣,不一樣則根據(jù)相應(yīng)的算法(通過改變后的值與初始值相或,根據(jù)結(jié)果賦值)確定是哪個鍵按下。圖表圖表 13 矩陣鍵盤硬件結(jié)構(gòu)矩陣鍵盤硬件結(jié)構(gòu)2.4顯示模塊2.4.1 lcd12864 介紹lcd12864 分為帶字庫和不帶字庫兩種,帶字庫的在顯示文本時更方便,不帶字庫的在顯示圖

13、像時更有優(yōu)勢。本系統(tǒng)采用帶字庫的 lcd12864,采用標(biāo)準(zhǔn)的 20 腳接口,各引腳接口說明如表所示:編號符號引腳說明編號符號引腳說明1vss電源地11d4數(shù)據(jù)2vdd電源正極12d5數(shù)據(jù)3v0對比度亮度調(diào)整 13d6數(shù)據(jù)4rs數(shù)據(jù)/命令選擇 14d7數(shù)據(jù)5r/w讀/寫選擇15psb串行通信選擇端6e使能信號16nc空腳7d0數(shù)據(jù)17ret復(fù)位8d1數(shù)據(jù)18vout lcd 驅(qū)動負(fù)電壓9d2數(shù)據(jù)19led+背光電源正極10d3數(shù)據(jù)20led-背光電源地2.4.2 lcd12864 電路圖:圖表圖表 14 lcd12864 硬件結(jié)構(gòu)硬件結(jié)構(gòu)2.5蜂鳴器模塊蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用

14、直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、汽車電子設(shè)備、電話機(jī)、定時器等電子產(chǎn)品中作發(fā)聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。蜂鳴器在電路中用字母“h”或“ha”(舊標(biāo)準(zhǔn)用“fm”、“l(fā)b”、“jd”等)表示。有源蜂鳴器直接接上額定電源(新的蜂鳴器在標(biāo)簽上都有注明)就可連續(xù)發(fā)聲;而無源蜂鳴器則和電磁揚(yáng)聲器一樣,需要接在音頻輸出電路中才能發(fā)聲。本系統(tǒng)采用無源蜂鳴器,控制更簡單。蜂鳴器硬件如下圖:圖表圖表 152.6單片機(jī)最小系統(tǒng)模塊2.6.1 單片機(jī)最小系統(tǒng)電路圖:圖表圖表 16 最小系統(tǒng)最小系統(tǒng)3軟軟件件設(shè)設(shè)計(jì)計(jì)3.1程序流程圖3.1.1 主程序流程圖

15、開始系統(tǒng)初始化進(jìn)入鍵值判斷程序顯示主界面圖表圖表 17 主程序流程圖主程序流程圖3.1.2 鍵值判斷流程圖圖表圖表 18 鍵值判斷流程圖鍵值判斷流程圖3.1.3 開鎖流程圖圖表圖表 19 開鎖程序流程圖開鎖程序流程圖3.1.4 密碼修改流程圖圖表圖表 20 密碼修改流程圖密碼修改流程圖3.1.5 紅外接收流程圖圖表圖表 21 紅外接收流程圖紅外接收流程圖3.1.6 按鍵掃瞄流程圖圖表圖表 22 按鍵掃描流程圖按鍵掃描流程圖3.2 程序設(shè)計(jì)(見附錄二)4 總總結(jié)結(jié):本設(shè)計(jì)不但很好的滿足了題目的要求,即終端能夠接收紅外遙控發(fā)射板發(fā)射的紅外信號(密碼)并能與已存密碼作對比,而且能夠在液晶上顯示操作結(jié)

16、果,還增加了取消這一功能,從而完成了紅外遙控電子密碼鎖的要求。但一開始并不是這么順利,最先將程序下載到機(jī)子里面,鍵盤不能工作,后經(jīng)查發(fā)現(xiàn)鍵盤程序沒有運(yùn)行。改過來后又發(fā)現(xiàn)多了一個鍵,沒有用處,經(jīng)討論將多的鍵設(shè)為取消鍵。原來設(shè)計(jì)的電源是直接用 usb 從電腦上引出來,后來在此解讀題目時發(fā)現(xiàn)不能滿足題目要求,所以添加了一個用 7805 穩(wěn)壓的小模塊。美中不足的是此設(shè)計(jì)紅外遙控的距離并不太理想(一米多一點(diǎn)),而且取消功能并不是想象的能夠取消前面自己不想要的內(nèi)容,而是返回主菜單。但這些不足并不能抵消此設(shè)計(jì)帶來的好處。5 參參考考文文獻(xiàn)獻(xiàn):侯 璐 黑龍江大學(xué)學(xué)生學(xué)術(shù)科技創(chuàng)新項(xiàng)目申請書甄盈盈 紅外遙控密碼鎖

17、的設(shè)計(jì)與實(shí)現(xiàn) 撰寫電子設(shè)計(jì)競賽報(bào)告參考格式 第 7 章 電子設(shè)計(jì)競賽設(shè)計(jì)總結(jié)報(bào)告寫作在此感謝以上作者、作品。但由于部分原因沒有完全列舉出作者姓名或作品完整,望諒解。6附附錄錄一一6.1整體電路結(jié)構(gòu):圖表圖表 23 總電路圖總電路圖6.2pcb 圖:圖表圖表 24 pcb 電路圖電路圖7附附錄錄二二7.1at24c02 模塊#include common.hsbitwp = p10;sbitscl = p11;sbitsda= p12;void delay_us(void);void delay_10ms(void)uchar i = 0;uchar j = 0;for(i = 50;i0;i-

18、)for(j=200;j0;j-);void at24c08_unprotect()wp = 0;voidat24c02_start(void)/開始總線sda = 1;scl = 1;delay_us();sda = 0;delay_us();void at24c02_stop(void)/停止總線sda = 0;scl = 1;delay_us();sda = 1;delay_us();void at24c02_ack(void)/ack 信號uchar i = 0;/等待從機(jī)回應(yīng)scl = 1;delay_us();while(sda =1) & (i200)/等 侍 ack 信號i +

19、;scl = 0;delay_us();void at24c02_noack(void)/no ackscl = 1;/主機(jī)發(fā)送給從機(jī)delay_us();sda = 1;scl = 0;delay_us();void at24c02_write_byte(uchar value)/ 寫 8 位數(shù)據(jù)到總線uchar i = 0;for(i =0; i8; i+)scl = 0;sda = value & 0 x80;/ 1000 0000 delay_us();scl = 1;delay_us();value = 1;scl = 0;delay_us();sda = 1;uchar at24c

20、02_read_byte(void)/讀 8 位數(shù)據(jù)uchar value = 0;uchar i = 0;scl = 0;/低電平數(shù)據(jù)可以變化delay_us();for(i = 0; i i;/先讀高位數(shù)據(jù)scl = 0;delay_us();return value;void at24c02_write(uchar address,uchar value)at24c02_start();/起始條件at24c02_write_byte(0 xa0);/器件地址 1010 0000/寫at24c02_ack();/等從機(jī)應(yīng)答at24c02_write_byte(address); / 102

21、4 字節(jié),其中一個字節(jié)操作 25at24c02_ack();at24c02_write_byte(value);/ 0 x15at24c02_ack();/at24c02_stop();delay_10ms();uchar at24c02_read(uchar address)uchar value = 0;at24c02_start();/開始總線at24c02_write_byte(0 xa0);/ 1010 0000at24c02_ack();at24c02_write_byte(address); /讀數(shù)據(jù)的地址; /25at24c02_ack();at24c02_start();/再

22、次開始at24c02_write_byte(0 xa1);/ 1010 0001at24c02_ack();value = at24c02_read_byte();at24c02_noack();/主機(jī)發(fā)送給從機(jī)無應(yīng)答at24c02_stop();return value;7.2紅外通信模塊sbit beer=p04;sbit red_data=p32; /紅外接口/uchar red_add=0;/紅外遙控的地址uchar red_add=255; /紅外遙控的地址緩存區(qū)uchar red_key=255; /紅外搖控的鍵值,無鍵按下時為 255/紅外初始化void init_red(voi

23、d)red_data=1; /p32 輸出高電平ex0=1;/開啟紅外中斷 p32/檢測脈沖寬度uchar red_check(void)uchar t=0;uchar a=0;while(red_data)t+;for(a=0;a=200&res=70&res=10&res=0)&(aa8) red_add=17)&(aa25) red_key=1; red_key=red_key+(uchar)rodata; if(aa=32&red_add=0) key_main=red_change(red_key);break; /把紅外數(shù)據(jù)進(jìn)行轉(zhuǎn)換uchar red_change(uchar re

24、dnum) switch(rednum) case 16 :return 0;case 48:return 1;case 176:return 2;case 112:return 3;case 8:return 4;case 136:return 5;case 72:return 6;case 40:return 7;case 168:return 8;case 104:return 9;case 0:return 10;/電源開關(guān)case 32:return 11;/eqcase 144 :return 12;/快退case 80:return 13;/快進(jìn)case 160:return 1

25、4;/聲音減 case 96:return 15;/聲音加 case 128:return 16;/ch - case 64:return 17;/ch + default: return 255; 7.3矩陣鍵盤模塊#include common.h#define key p2void key(void)uchar i = 0;uchar j = 0;uchar k = 0;key= 0 x0f;i = key;if(i != 0 x0f)uint l=0;delay(1000);key= 0 x0f;i = key;if(i != 0 x0f)key = 0 x0f;i = key;key

26、 = 0 xf0;j = key;k = i | j;key_change(k);while(key !=0 xf0 & l2000)key = 0 xf0;l+;void key_change(uchar i)switch(i)case 0 xed:key_main= 1;break;case 0 xdd:key_main= 2;break;case 0 xbd:key_main= 3;break;case 0 xeb:key_main= 4;break;case 0 xdb:key_main= 5;break;case 0 xbb:key_main= 6;break;case 0 xe7:

27、key_main= 7;break;case 0 xd7:key_main= 8;break;case 0 xb7:key_main= 9;break;case 0 xee:key_main= 10;break;case 0 xde:key_main= 0;break;case 0 xbe:key_main= 11;break;default: break;void delay(unsigned int i)while(- i);void init_time_0()tmod = 0x00;th0 = 0x0e;tl0 = 0;et0 =1;tr0 = 1;void key_time_0() i

28、nterrupt 1 using 0th0 = 0x0e;tl0 = 0;key();7.4lcd12864 顯示#include common.h sbit cs = p03;sbit sid = p02;sbit clk = p01;sbit reset = p00;#define lcdcom_w 0 xf8#define lcdcom_r 0 xfc#define lcddata_w 0 xfa#define lcddata_r 0 xfd/漢字地址表uchar code addr_tab= /便于根據(jù)漢字坐標(biāo)求出地址0 x80,0 x81,0 x82,0 x83,0 x84,0 x8

29、5,0 x86,0 x87,/第一行漢字位置0 x90,0 x91,0 x92,0 x93,0 x94,0 x95,0 x96,0 x97,/第二行漢字位置0 x88,0 x89,0 x8a,0 x8b,0 x8c,0 x8d,0 x8e,0 x8f,/第三行漢字位置0 x98,0 x99,0 x9a,0 x9b,0 x9c,0 x9d,0 x9e,0 x9f,/第四行漢字位置;/* / 函 數(shù) 名:void delay_lcd(void)/ 功 能:5ms 延時/*/void delayms(uint t) /約延時 msuint i;while(t-)for(i=0;i125;i+);vo

30、id lcd_sendbyte(uchar dbyte)unsigned char i;for(i=0;i8;i+)clk = 0;dbyte=dbyte1;sid = cy;clk = 1;clk = 0;/* 接收一個字節(jié)*/uchar lcd_receivebyte()unsigned char i,temp1,temp2;temp1=temp2=0;for(i=0;i8;i+)temp1=temp11;clk = 0;clk = 1; clk = 0;if(sid) temp1+;for(i=0;i8;i+)temp2=temp21;clk= 0;clk= 1;clk= 0;if(si

31、d) temp2+;return (0 xf0&temp1)+(0 x0f&temp2);/* 檢查忙狀態(tài)*/void lcd_read_busy()do lcd_sendbyte(lcdcom_r); /11111,rw(1),rs(0),0while(0 x80&lcd_receivebyte(); void lcd_write(uchar k, uchar value) / k = 0 寫命令,k = 1 寫數(shù)據(jù)uchar com2 = lcdcom_w,lcddata_w;cs = 1;lcd_read_busy();lcd_sendbyte(comk);lcd_sendbyte(0

32、xf0 & value);value = value 0)lcd_write(1, *value);value+;void lcd_write_num(uchar x, uchar y, uchar value)lcd_write(0, addr_tab8*y + x); lcd_write(1, value);void lcd_write_hanzi(uchar x, uchar y, uchar *value)lcd_write(0, addr_tab8*y + x);while(*value 0)lcd_write(1, *value);value+;7.5主程序#include com

33、mon.hsbit beer = p04;uchar key_main = 255;uchar minma8 =0;uchar anma8 =0;bit open = 0;void main_key();uchar mima_shuru();void mima_change();void mima_zhuanhuan(uchar *minma, uchar *anma);uchar mima_bidui(uchar *minma, uchar *anma);void mima_save();void show_menu();void show_huanyingjiemian();void sy

34、s_init();void interrupt_on();void interrupt_off();void main()sys_init();show_menu();while(1)main_key();void main_key()if(key_main != 255)if(open = 0)switch(key_main)case 1:/開鎖key_main=255;interrupt_off();lcd_clear();lcd_write_hanzi(0, 0, 請輸入密碼: );/顯示開鎖界面interrupt_on();if(mima_shuru()if(mima_bidui(mi

35、nma, anma)/轉(zhuǎn)換為暗碼與存儲器中的進(jìn)行對比interrupt_off();lcd_clear();open = 1;lcd_write_hanzi(0, 0, 鎖已打開!);/執(zhí)行開鎖動作delayms(800);interrupt_on();show_huanyingjiemian();elseinterrupt_off();lcd_clear();lcd_write_hanzi(0, 0, 輸入錯誤!);/提示輸入錯誤delayms(800);interrupt_on();show_menu();break;else break;case 2:/修改密碼key_main=255;

36、interrupt_off();lcd_clear();lcd_write_hanzi(0, 0, 請輸入舊密碼:);/顯示修改密碼界面interrupt_on();if(mima_shuru()if(mima_bidui(minma, anma)/轉(zhuǎn)換為暗碼與存儲器中的進(jìn)行對比mima_change();/進(jìn)入修改密碼函數(shù)show_menu();elseinterrupt_off();lcd_clear();lcd_write_hanzi(0, 0, 輸入錯誤!);/提示輸入錯誤delayms(800);interrupt_on();show_menu();break;else break;

37、elseswitch(key_main)case 1:/開蜂鳴器beer = 0;break;case 2:/關(guān)蜂鳴器beer = 1;break;case 3:/退出open = 0;show_menu();break;uchar mima_shuru()uchar cnt = 0, i = 0, j = 1;for(i = 0; i 8; i+)minmai=0;interrupt_on();key_main=255;while(key_main=255);interrupt_off();lcd_write_x_y(0, 1);while(key_main!=10)/當(dāng)按鍵不是確定鍵if(key_main10&cnt8)/8 位密碼minmacnt+=key_main;lcd_write(1, key_main+0 x30);/顯示密碼else if(key_main=11)j = 0;show_menu();break;interrupt_on();key

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論