紅外遙控電子密碼鎖的設(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 儲存的密碼對比,判斷密碼是否正確,輔助以 lc

2、d12864 顯 示用戶的操作結(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)勢, 具有很好的市場價值。 關(guān)鍵詞:關(guān)鍵詞: 編碼、解碼、密碼、紅外 目錄目錄 1總體設(shè)計(jì)思路總體設(shè)計(jì)思路 .1 1.1題目要求.1 1.2本設(shè)計(jì)主要硬件功能部分 .1 1.3本設(shè)計(jì)軟件的總體構(gòu)思 .1 2系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)的

3、硬件設(shè)計(jì)與實(shí)現(xiàn) .3 2.1at24c02 模塊.3 2.1.1器件及原理介紹.3 2.1.2電路實(shí)現(xiàn).4 2.2紅外通信模塊.4 2.2.1遙控發(fā)射器及其編碼.4 2.2.2電路實(shí)現(xiàn).6 2.3矩陣鍵盤模塊.7 2.4顯示模塊.7 2.4.1lcd12864 介紹 .7 2.4.2lcd12864 電路圖: .8 2.5蜂鳴器模塊.8 2.6單片機(jī)最小系統(tǒng)模塊 .9 2.6.1單片機(jī)最小系統(tǒng)電路圖:.9 3軟件設(shè)計(jì)軟件設(shè)計(jì).10 3.1程序流程圖.10 3.1.1主程序流程圖.10 3.1.2鍵值判斷流程圖.11 3.1.3開鎖流程圖.12 3.1.4密碼修改流程圖.13 3.1.5紅外接收

4、流程圖.14 3.1.6按鍵掃瞄流程圖.15 3.2程序設(shè)計(jì)(見附錄二) .15 4總結(jié):總結(jié):.16 5參考文獻(xiàn):參考文獻(xiàn): .17 6附錄一附錄一.18 6.1整體電路結(jié)構(gòu): .18 6.2pcb 圖:.18 7附錄二附錄二.19 7.1at24c02 模塊.19 7.2紅外通信模塊.22 7.3矩陣鍵盤模塊.24 7.4lcd12864 顯示.26 7.5主程序.29 1總總體體設(shè)設(shè)計(jì)計(jì)思思路路 1.1 題目要求 紅外遙控電子密碼鎖由紅外遙控發(fā)射板、紅外接收終端、帶控制的電子鎖 構(gòu)成。當(dāng)紅外接收終端收到遙控板送來的開鎖密碼信號,并與保存在終端中的 密碼對比。當(dāng)對比成功后終端向電子鎖發(fā)出開

5、鎖命令,完成開鎖功能。 此題目的重點(diǎn)、難點(diǎn)是實(shí)現(xiàn)紅外信號的接收、密碼儲存和正確識別按鍵并 顯示操作結(jié)果。由于紅外遙控不影響周邊環(huán)境、不干擾其他電器設(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) 蜂鳴

6、器模塊; 1.3本設(shè)計(jì)軟件的總體構(gòu)思 本設(shè)計(jì)是以 stc89c52 為核心控制器件。本設(shè)計(jì)是通過 stc89c52 與 at24c02 之間交換密碼后,再與用戶通過鍵盤或紅外遙控器發(fā)送過來的密碼作 對比,再用 lcd12864 顯示操作結(jié)果,用蜂鳴器提示電子鎖是否打開,從而實(shí) 現(xiàn)紅外遙控電子密碼鎖的設(shè)計(jì),如下圖。 stc89c52 單片機(jī) at24c0 2 存儲 器 鍵盤輸入 紅外二極 管接收 液晶 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 串行 e2pro

7、m 具有 i2c 總線接口功能,功耗低,寬電源電壓(根 據(jù)不同型號 2.56.0v),工作電流約為 3ma,靜態(tài)電流隨電源電壓不同為 30a110a。 圖表圖表 2 i2c 通信原理:i2c 總線進(jìn)行數(shù)據(jù)傳送時,時鐘信號為高電平期間,數(shù)據(jù)線 上的數(shù)據(jù)必須保持穩(wěn)定,只有在時鐘線上的信號為低電平期間,數(shù)據(jù)線上的高 電平或低電平狀態(tài)才允許變化,如圖 a。scl 線為高電平期間,sda 線由高電 平向低電平的變化表示起始信號;scl 線為高電平期間,sda 線由低電平向高 電平的變化表示終止信號,如圖 4。 圖表圖表 3 圖表圖表 4 2.1.2 電路實(shí)現(xiàn) a0 、a1 、a2 作為地址線,因在此只有

8、一個器件,故全都接 gnd。sda 作串行數(shù)據(jù)讀寫端接 p1.2 口,scl 作為時鐘信號接 p1.1 口。 圖表圖表 5 at24c02 硬件結(jié)構(gòu)硬件結(jié)構(gòu) 2.2 紅外通信模塊 2.2.1 遙控發(fā)射器及其編碼 遙控發(fā)射器專用芯片很多,根據(jù)編碼格式可以分成兩大類,這里我們以 運(yùn)用比較廣泛,解碼比較容易的一類來加以說明,現(xiàn)以日本 nec 的 upd6121g 組成發(fā)射電路為例說明編碼原理, 我們使用的超薄型紅外線遙控器使用的就是 6121 編碼。當(dāng)發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也 不同。這種遙控碼具有以下特征: 采用脈寬調(diào)制的串行碼,以脈寬為 0.565ms、間隔 0.5

9、6ms、周期為 1.125ms 的組合表示二進(jìn)制的“0”;以脈寬為 0.565ms、間隔 1.685ms、周期為 2.25ms 的組合表示二進(jìn)制的“1”, 其波形如圖 7 所示。 圖表圖表 6 上述“0”和“1”組成的 32 位二進(jìn)制碼經(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ā)。該芯 片的用戶識別碼固

10、定為十六進(jìn)制 01h;后 16 位為 8 位操作碼(功能碼)及其 反碼。upd6121g 最多額 128 種不同組合的編碼。 遙控器在按鍵按下后,周期性地發(fā)出同一種 32 位二進(jìn)制碼,周期約為 108ms。一組碼本身的持續(xù)時間隨它包含的二進(jìn)制“0”和“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

11、)和這 8 位數(shù)據(jù)的反碼(9ms18ms)組成。如果鍵按下超過 108ms 仍未松開,接下來發(fā)射的代碼(連發(fā)代碼)將僅由起始碼(9ms)和結(jié) 束碼(2.5ms)組成。 代碼格式(以接收代碼為準(zhǔn),接收代碼與發(fā)射代碼反向) 1)位定義 圖表圖表 8 2)單發(fā)代碼格式 圖表圖表 9 3)連發(fā)代碼格式 圖表圖表 10 2.2.2 電路實(shí)現(xiàn) 一體化的紅外接收裝置將遙控信號的接收、放大、檢波、整形集于一身, 并且輸出可以讓單片機(jī)識別的 ttl 信號,這樣大大簡化了接收電路的復(fù)雜程度 和電路的設(shè)計(jì)工作,方便使用。在本系統(tǒng)中我們采用紅外一體化接收頭 hs0038,外觀圖如圖所示。 圖表圖表 11 hs0038

12、 黑色環(huán)氧樹脂封裝,不受日光、熒光燈等光源干擾,內(nèi)附磁屏蔽, 功耗低,靈敏度高。在用小功率發(fā)射管發(fā)射信號情況下,其接收距離可達(dá) 35m。它能與 ttl、coms 電路兼容。hs0038 為直立側(cè)面收光型。它接收紅 外信號頻率為 38 khz,周期約 26 s,同時能對信號進(jìn)行放大、檢波、整形,得 到 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)有一個鍵 按下時,通過某一邊引腳賦低電平,掃描全部

13、引腳看是否與最初的賦值一樣, 不一樣則根據(jù)相應(yīng)的算法(通過改變后的值與初始值相或,根據(jù)結(jié)果賦值)確 定是哪個鍵按下。 圖表圖表 13 矩陣鍵盤硬件結(jié)構(gòu)矩陣鍵盤硬件結(jié)構(gòu) 2.4顯示模塊 2.4.1 lcd12864 介紹 lcd12864 分為帶字庫和不帶字庫兩種,帶字庫的在顯示文本時更方便, 不帶字庫的在顯示圖像時更有優(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讀/寫選擇

14、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)的電子訊響器,采用直流電壓供電,廣泛應(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”等) 表

15、示。 有源蜂鳴器直接接上額定電源(新的蜂鳴器在標(biāo)簽上都有注明)就可連續(xù)發(fā) 聲;而無源蜂鳴器則和電磁揚(yáng)聲器一樣,需要接在音頻輸出電路中才能發(fā)聲。本 系統(tǒng)采用無源蜂鳴器,控制更簡單。 蜂鳴器硬件如下圖: 圖表圖表 15 2.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 主程序流程圖 開始 系統(tǒng)初始化 進(jìn)入鍵值判斷程序 顯示主界面 圖表圖表 17 主程序流程圖主程序流程圖 3.1.2 鍵值判斷流程圖 圖表圖表 18 鍵值判斷流程圖鍵值判斷流程圖 3.1.3 開鎖流程圖 圖表圖表 19 開鎖程序流程圖開鎖程

16、序流程圖 3.1.4 密碼修改流程圖 圖表圖表 20 密碼修改流程圖密碼修改流程圖 3.1.5 紅外接收流程圖 圖表圖表 21 紅外接收流程圖紅外接收流程圖 3.1.6 按鍵掃瞄流程圖 圖表圖表 22 按鍵掃描流程圖按鍵掃描流程圖 3.2 程序設(shè)計(jì)(見附錄二) 4 總總結(jié)結(jié): 本設(shè)計(jì)不但很好的滿足了題目的要求,即終端能夠接收紅外遙控發(fā)射板發(fā) 射的紅外信號(密碼)并能與已存密碼作對比,而且能夠在液晶上顯示操作結(jié) 果,還增加了取消這一功能,從而完成了紅外遙控電子密碼鎖的要求。但一開 始并不是這么順利,最先將程序下載到機(jī)子里面,鍵盤不能工作,后經(jīng)查發(fā)現(xiàn) 鍵盤程序沒有運(yùn)行。改過來后又發(fā)現(xiàn)多了一個鍵,沒

17、有用處,經(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)目申請書 甄盈盈 紅外遙控密碼鎖的設(shè)計(jì)與實(shí)現(xiàn) 撰寫電子設(shè)計(jì)競賽報(bào)告參考格式 第 7 章 電子設(shè)計(jì)競賽設(shè)計(jì)總結(jié)報(bào)告寫作 在此感謝以上作者、作品。但由于部分原因沒有完全列舉出作者姓名或作 品完整,望諒解

18、。 6附附錄錄一一 6.1整體電路結(jié)構(gòu): 圖表圖表 23 總電路圖總電路圖 6.2pcb 圖: 圖表圖表 24 pcb 電路圖電路圖 7附附錄錄二二 7.1at24c02 模塊 #include common.h sbitwp = p10; sbitscl = p11; sbitsda= p12; void delay_us(void) ; void delay_10ms(void) uchar i = 0; uchar j = 0; for(i = 50;i0;i-) for(j=200;j0;j-); void at24c08_unprotect() wp = 0; voidat24c02

19、_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) scl = 0; delay_us(); void at24c02_noack(void)/no ack scl = 1;/主機(jī)發(fā)送

20、給從機(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 / 1000 0000 delay_us(); scl = 1; delay_us(); value = 1; scl = 0; delay_us(); sda = 1; uchar at24c02_read_byte(void)/讀 8 位數(shù)據(jù) uchar value = 0; uchar i = 0;

21、 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); / 1024 字節(jié),其中一個字節(jié)操作 25 at24c02_ack(); at24c02_wri

22、te_byte(value);/ 0 x15 at24c02_ack();/ at24c02_stop(); delay_10ms(); uchar at24c02_read(uchar address) uchar value = 0; at24c02_start();/開始總線 at24c02_write_byte(0 xa0);/ 1010 0000 at24c02_ack(); at24c02_write_byte(address); /讀數(shù)據(jù)的地址; /25 at24c02_ack(); at24c02_start();/再次開始 at24c02_write_byte(0 xa1);

23、/ 1010 0001 at24c02_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(void) red_data=1; /

24、p32 輸出高電平 ex0=1;/開啟紅外中斷 p32 /檢測脈沖寬度 uchar red_check(void) uchar t=0;uchar a=0; while(red_data) t+; for(a=0;a=200 red_key=red_key+(uchar)rodata; if(aa=32break; /把紅外數(shù)據(jù)進(jìn)行轉(zhuǎn)換 uchar red_change(uchar rednum) switch(rednum) case 16 :return 0; case 48:return 1; case 176:return 2; case 112:return 3; case 8:re

25、turn 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;/eq case 144 :return 12;/快退 case 80:return 13;/快進(jìn) case 160:return 14;/聲音減 case 96:return 15;/聲音加 case 128:return 16;/ch - case 64:return 17;/ch + default: ret

26、urn 255; 7.3矩陣鍵盤模塊 #include common.h #define key p2 void 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 = 0 xf0; j = key; k = i | j; key_change(k); while(key !=0 xf0 l+; void ke

27、y_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:key_main= 7;break; case 0 xd7:key_main= 8;break; case 0 xb7:key_main= 9;break; ca

28、se 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() interrupt 1 using 0 th0 = 0x0e; tl0 = 0; key(); 7.4lcd12864 顯示 #inc

29、lude 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 x85,0 x86,0 x87,/第一行漢字位置 0 x90,0 x91,0 x92,0 x93,0 x9

30、4,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) /約延時 ms uint i;while(t-)for(i=0;i125;i+); void lcd_sendbyte(uchar dbyte) unsigned cha

31、r 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(sid) temp2+; return

32、(0 xf0 /* 檢查忙狀態(tài) * */ void lcd_read_busy() do lcd_sendbyte(lcdcom_r); /11111,rw(1),rs(0),0 while(0 x80 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 xf0 value = value 0) lcd_write(1, *value); val

33、ue+; 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 common.h sbit beer = p04; uchar key_main = 255;

34、 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 sys_init(); void interrupt_on();

35、 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(minma, anma)/

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

37、_main=255; 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(); else interrupt_off(); lcd_clear(); lcd_write_hanzi(0, 0, 輸入錯誤!);/提示輸入 錯誤 delayms(800); interrupt_on(); s

38、how_menu(); break; else break; else switch(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 lcd_write(1, key_main+0 x30);/顯示密碼 else if(key_main=11) j = 0; show_menu(); break; interrupt_on(); key_main=255; while(key_main=

溫馨提示

  • 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

提交評論