數(shù)字密碼鎖單片機(jī)課程設(shè)計(jì)_第1頁(yè)
數(shù)字密碼鎖單片機(jī)課程設(shè)計(jì)_第2頁(yè)
數(shù)字密碼鎖單片機(jī)課程設(shè)計(jì)_第3頁(yè)
數(shù)字密碼鎖單片機(jī)課程設(shè)計(jì)_第4頁(yè)
數(shù)字密碼鎖單片機(jī)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(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、.湖南大學(xué)電氣與信息工程學(xué)院課 程 設(shè) 計(jì)課 程 名 稱(chēng): 單 片 機(jī) 原 理 與 應(yīng) 用 課 題 名 稱(chēng): 數(shù) 字 密 碼 鎖 設(shè) 計(jì) 所在 學(xué)院 名稱(chēng): 湖南大學(xué)電氣與信息工程學(xué)院 設(shè) 計(jì) 人 員: 寧 楓 根 宋 浩 冉目錄一、 前言- 2 -二、 總體方案設(shè)計(jì)- 3 -2.1方案論證與比較- 3 -2.2方案選擇- 4 -三、 單元模塊設(shè)計(jì)- 4 -3.1硬件支持- 4 -3.2功能單元模塊設(shè)計(jì)- 4 -3.2.1 開(kāi)鎖機(jī)構(gòu)- 4 -3.2.2 矩陣鍵盤(pán)設(shè)計(jì)電路- 5 -3.2.3 聲音提示電路設(shè)計(jì)- 5 -3.2.4 顯示模塊設(shè)計(jì)- 6 -四、程序設(shè)計(jì)與系統(tǒng)仿真- 7 -4.1 模塊

2、介紹- 7 -4.1.1 主程序模塊- 9 -4.1.2 密碼比較判斷模塊- 9 -4.1.3 鍵盤(pán)掃描模塊- 9 -4.1.4 修改密碼模塊- 10 -五、系統(tǒng)功能- 12 -六設(shè)計(jì)總結(jié)- 12 -七、附錄:源程序- 12 -一、 前言隨著社會(huì)物質(zhì)財(cái)富的日益增長(zhǎng)和人們生活水平的提高,安全成為現(xiàn)代居民最關(guān)心的問(wèn)題之一。而鎖自古以來(lái)就是把守門(mén)的鐵將軍,人們對(duì)它要求甚高,即要求可靠地防盜,又要使用方便。傳統(tǒng)的門(mén)鎖既要備有大量的鑰匙,又要擔(dān)心鑰匙丟失后的麻煩。隨著單片機(jī)的問(wèn)世,出現(xiàn)了數(shù)字密碼鎖,其保密性高,使用靈活性好,安全系數(shù)高,故受到廣大用戶的青睞。數(shù)字密碼鎖通常使用ARM和單片機(jī)控制,單片機(jī)相

3、對(duì)ARM實(shí)現(xiàn)較為簡(jiǎn)單,功能較為完善,因此使用單片機(jī)控制較多。用單片機(jī)控制的密碼鎖常使用匯編語(yǔ)言編寫(xiě)程序,數(shù)碼管做顯示器 。但本設(shè)計(jì)使用移植性及可讀性強(qiáng)的C語(yǔ)言編寫(xiě);同時(shí)采用顯示清楚、功率消耗小而且壽命長(zhǎng)的1602A液晶顯示器。從經(jīng)濟(jì)實(shí)用的角度出發(fā),采用ADUC848單片機(jī)設(shè)計(jì)出一種具有密碼設(shè)置、報(bào)警等功能的數(shù)字密碼鎖,并通過(guò)Proteus軟件成功地進(jìn)行了仿真。任務(wù)及設(shè)計(jì)要求1.設(shè)計(jì)一多位電子密碼鎖,輸入密碼用“F”表示,輸入密碼正確,綠燈亮(或顯示其它標(biāo)志、蜂鳴器替代),輸入密碼錯(cuò)誤,紅燈亮(或顯示其它標(biāo)志、蜂鳴器替代).2.具有確定鍵和取消鍵,在未確定之前可以取消,重新輸入.3.連續(xù)輸入三次

4、錯(cuò)誤密碼,紅燈閃爍,報(bào)警電路動(dòng)作,鍵盤(pán)鎖定.4.具有密碼重置、修改功能.5.具有密碼輸入等待操作時(shí)間限制功能,超過(guò)限定時(shí)間報(bào)警.6.顯示北京時(shí)間,時(shí)間可調(diào)整.7.可利用蜂鳴器添加提示音.二、 總體方案設(shè)計(jì)2.1方案論證與比較方案一:以ADUC848單片機(jī)為數(shù)字密碼鎖系統(tǒng)核心,使用4*4矩陣鍵盤(pán)作為數(shù)據(jù)輸入方式,驅(qū)動(dòng)1602A顯示器提示程序運(yùn)行過(guò)程和開(kāi)鎖的步驟,利用AT24C02芯片實(shí)現(xiàn)掉電存儲(chǔ)。圖1為單片機(jī)控制密碼鎖的系統(tǒng)原理框圖。ADUC848單片機(jī)AT24C02存儲(chǔ)芯片矩陣鍵盤(pán)控制LCD1602A蜂鳴器提示電路電源模塊LED密碼校驗(yàn)提示圖1 單片機(jī)控制密碼鎖的系統(tǒng)原理框圖方案二:以74LS

5、112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路控制方案,如圖2。 輸入按扭開(kāi)關(guān)組輸入鎖存電路密碼存儲(chǔ)電路開(kāi)鎖控制電路機(jī)械動(dòng)作構(gòu)件5秒定時(shí)電路20秒定時(shí)電路聲光指示電路圖2 數(shù)字邏輯控制方案數(shù)字密碼鎖原理框圖2.2方案選擇由于利用單片機(jī)靈活的編程設(shè)計(jì)和強(qiáng)大的I/O端口,及其控制的準(zhǔn)確性,不但能實(shí)現(xiàn)基本的密碼鎖功能,還可以增添掉電存儲(chǔ)、聲光提示等功能,故選用方案一。三、 單元模塊設(shè)計(jì)3.1硬件支持使用的元器件有:核心芯片ADUC848、存儲(chǔ)芯片AT24C02、液晶顯示1602A、4×4矩陣鍵盤(pán)、報(bào)警蜂鳴器、發(fā)光二極管和三極管。3.2功能單元模塊設(shè)計(jì)3.2.1 開(kāi)鎖機(jī)構(gòu)通過(guò)單片機(jī)送給開(kāi)鎖執(zhí)行機(jī)構(gòu),電

6、路驅(qū)動(dòng)電磁鎖吸合,從而達(dá)到開(kāi)鎖的目的。如圖3所示,為密碼鎖開(kāi)鎖電路原理圖。當(dāng)用戶輸入的密碼正確時(shí),單片機(jī)便輸出開(kāi)門(mén)信號(hào),送到開(kāi)鎖驅(qū)動(dòng)電路,然后驅(qū)動(dòng)電磁鎖,達(dá)到開(kāi)門(mén)的目的。本次設(shè)計(jì)中,基于節(jié)省成本考慮,用發(fā)光二極管代替電磁鎖,信息通過(guò)LCD顯示,并利用蜂鳴器和二極管聲光指示。其中,綠發(fā)光二極管亮,表示開(kāi)鎖;否則,表示密碼輸入錯(cuò)誤并開(kāi)啟報(bào)警電路。開(kāi)鎖驅(qū)動(dòng)電路STC89C52單片機(jī)密碼正確超次鎖定電磁鎖是否圖3 密碼鎖開(kāi)鎖電路原理圖3.2.2 矩陣鍵盤(pán)設(shè)計(jì)電路每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過(guò)一個(gè)按鍵來(lái)連通,利用這種行列式矩陣結(jié)構(gòu)只需要M條行線和N條列線,即可組成具有M

7、15;N個(gè)按鍵的鍵盤(pán)。由于本設(shè)計(jì)中要求使用16個(gè)按鍵輸入,為減少鍵盤(pán)與單片機(jī)接口時(shí)所占用的I/O線的數(shù)目,故使用矩陣鍵盤(pán)。本設(shè)計(jì)中,矩陣鍵盤(pán)行線和單片機(jī)P1.0-P1.3相連,列線與單片機(jī)P1.4-P1.7相連。矩陣鍵盤(pán)設(shè)計(jì)電路圖,如圖4所示。鍵盤(pán)掃描采用行掃描法,即依次置行線中的每一行為低電平,其余均為高電平,掃描列線電平狀態(tài),為低電平即表示該鍵按下。1234567890退位確認(rèn)設(shè)置時(shí)間*關(guān)閉圖4 矩陣鍵盤(pán)設(shè)計(jì)電路圖3.2.3 聲音提示電路設(shè)計(jì)聲音提示電路采用小蜂鳴器提示。蜂鳴器能夠根據(jù)脈沖信號(hào),以及信號(hào)的頻率發(fā)出各種不同的聲音,這樣可以根據(jù)系統(tǒng)要求在密碼出入正確和密碼輸入錯(cuò)誤時(shí)發(fā)出不同的聲

8、音提示,已達(dá)到報(bào)警的要求。蜂鳴器電路,如圖5所示。圖5 蜂鳴器電路3.2.4 顯示模塊設(shè)計(jì)本設(shè)計(jì)中,顯示電路采用1602A液晶顯示器顯示。如下所示,圖6為1602A液晶顯示器的接口示意圖,表1為接口說(shuō)明。圖6 1602A液晶顯示器的接口示意圖表1 接口說(shuō)明管腳序名稱(chēng)電平功能描述1VSS0V接地2VCC5.0V電源輸入3V0LCD驅(qū)動(dòng)電壓輸入4RSH/L寄存器選擇:RS=H,選擇數(shù)據(jù)寄存器;RS=L,選擇指令寄存器5R/WH/L讀寫(xiě)信號(hào)線:R/W=H,讀操作;R/W=L,寫(xiě)操作6EH,HL使能信號(hào)7DB0H/L數(shù)據(jù)線8DB1H/L數(shù)據(jù)線9DB2H/L數(shù)據(jù)線10DB3H/L數(shù)據(jù)線11DB4H/L數(shù)

9、據(jù)線12DB5H/L數(shù)據(jù)線13DB6H/L數(shù)據(jù)線14DB7H/L數(shù)據(jù)線15BLA5.0V背光電源正極16BLK0V背光電源負(fù)極本設(shè)計(jì)中液晶串口一共用到11根導(dǎo)線與單片機(jī)相連, 具體連接情況如表2顯示模塊與MCU連接說(shuō)明所示。表2 顯示模塊與MCU連接說(shuō)明序號(hào)1602A液晶顯示器引腳ADUC848單片機(jī)引腳1RS引腳P2.5(A13)2R/W引腳P2.6(A14)3E引腳P2.7(A15)4D0引腳P0.0(AD0)5D1引腳P0.1(AD1)6D2引腳P0.2(AD2)7D3引腳P0.3(AD3)8D4引腳P0.4(AD4)9D5引腳P0.5(AD5)10D6引腳P0.6(AD6)11D7引腳

10、P0.7(AD7)四、程序設(shè)計(jì)與系統(tǒng)仿真4.1 模塊介紹與硬件電路相關(guān)聯(lián),本系統(tǒng)軟件包括主程序模塊、密碼比較判斷模塊、鍵盤(pán)掃描模塊、修改密碼模塊、1602A液晶顯示模塊等。系統(tǒng)程序流程如圖9所示。開(kāi)始系統(tǒng)初始化調(diào)用E2PROM密碼顯示主界面輸入密碼判斷密碼確定密碼開(kāi)鎖模擬聲光鎖定鍵盤(pán)YN返回Y判斷次數(shù)N超過(guò)N次未超過(guò)N次再次輸入密碼密碼設(shè)置完畢N設(shè)置新密碼Y按鍵N判斷按鍵值返回主界面NY設(shè)置解碼次數(shù)產(chǎn)生隨機(jī)密碼輸入密碼N=0x84N=0x82N=0x11圖9 系統(tǒng)程序流程圖4.1.1 主程序模塊主程序主要用于定義全局變量,給全局變量賦初值,初始化E2PROM,啟動(dòng)定時(shí)器以及從AT24C02中讀

11、取密碼,為整個(gè)程序提供數(shù)據(jù);檢測(cè)按鍵;調(diào)用顯示等功能。4.1.2 密碼比較判斷模塊該模塊的功能是將鍵盤(pán)輸入的密碼利用if語(yǔ)句與設(shè)定的密碼進(jìn)行逐個(gè)比較,若密碼完全正確則開(kāi)鎖;若不正確,則開(kāi)啟報(bào)警電路,復(fù)位后重新輸入密碼。其密碼輸入和比較判決流程圖如圖10所示。輸入密碼核對(duì)鍵盤(pán)鎖定,開(kāi)啟報(bào)警電路開(kāi)鎖,燈亮,可密碼修改NY復(fù)位圖10 密碼輸入和比較判決流程圖4.1.3 鍵盤(pán)掃描模塊鍵盤(pán)使用矩陣式鍵盤(pán),由行和列組成,CPU對(duì)所有鍵盤(pán)進(jìn)行監(jiān)視,從而實(shí)現(xiàn)逐列掃描鍵盤(pán)確定被按鍵的具體位置、判斷鍵盤(pán)上有無(wú)鍵按下、消除去抖動(dòng)、判斷閉合的鍵是否釋放等功能。如圖11所示,為鍵盤(pán)掃描流程圖。開(kāi)始延時(shí)去抖動(dòng)計(jì)算輸入鍵值

12、鍵值送入單片機(jī)有按鍵輸入?有按鍵輸入?有按鍵輸入?返回NNYY圖11 鍵盤(pán)掃描流程圖4.1.4 修改密碼模塊在密碼輸入正確情況下,可以按下“重置密碼”對(duì)密碼進(jìn)行重新設(shè)置,每設(shè)定一位就將密碼送給AT24C02存儲(chǔ)起來(lái),當(dāng)設(shè)置6位密碼完畢后,系統(tǒng)將自動(dòng)跳到程序開(kāi)始,調(diào)用新設(shè)置的密碼。圖12為修改密碼流程圖。開(kāi)始輸入原密碼密碼比較比較正確?輸入新密碼再次輸入新密碼調(diào)用AT24C02中密碼比較正確修改成功返回菜單鍵盤(pán)鎖定,啟動(dòng)報(bào)警電路復(fù)位YN圖12 修改密碼流程圖五、系統(tǒng)功能本設(shè)計(jì)中系統(tǒng)可實(shí)現(xiàn)功能如下:(1)通過(guò)切換,對(duì)輸入的18位密碼進(jìn)行顯示或隱藏;(2)通過(guò)發(fā)光二極管和蜂鳴器,對(duì)解密正確或者錯(cuò)誤進(jìn)

13、行聲光報(bào)警;(3)18位密碼修改;(4)在密碼遺失情況下,通過(guò)初始密碼進(jìn)行密碼再設(shè)置;(5)具有1-3次的解鎖次數(shù)任意設(shè)定功能;六設(shè)計(jì)總結(jié)作為一名電子信息工程的學(xué)生,通過(guò)本次課程設(shè)計(jì),我很好的了解了單片機(jī)C語(yǔ)言設(shè)計(jì)的思考模式,熟悉了C語(yǔ)言的編程規(guī)則,知道了如何去運(yùn)用一個(gè)完全陌生的單片機(jī),會(huì)根據(jù)單片機(jī)的不同結(jié)構(gòu)來(lái)采用不同的命令實(shí)現(xiàn)功能。在此次課程設(shè)計(jì)中我負(fù)責(zé)的模塊出現(xiàn)了問(wèn)題導(dǎo)致在數(shù)碼管上顯示狀態(tài)的時(shí)候混亂了,主要是因?yàn)檠訒r(shí)上沒(méi)有處理好,Aduc848的定時(shí)器處理時(shí)是要加上一定的延時(shí)來(lái)防止沖突的。另外還有鍵盤(pán)的防抖模塊,一開(kāi)是沒(méi)有考慮好,所以鍵盤(pán)按下后顯示會(huì)亂變。綜上而言,通過(guò)此次課程設(shè)計(jì),我很好

14、的學(xué)習(xí)了單片機(jī)的應(yīng)用以及其編程。七、附錄:源程序#include <aduc848.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char /*狀態(tài)聲明*/#define opened 0#define new1 15#define new2 16#define succed 5#define fanin 10#define null 11#define error 12#define different 13#define tover 14/*按鍵聲明*/#define ent

15、er 10#define back 11#define trevise 12#define revise 13#define cancel 14#define vain 15#define off 16#define end 17#define finish 18/*函數(shù)聲明*/void p_base();void p_revise();void p_new1();void p_new2();void p_trevise(); void p_show(); uchar p_scan();void p_record();void p_delay(uint f_n);void p_state(uc

16、har f_s);uchar p_compare(uchar *f_k1,uchar *f_k2);void p_copy(uchar *f_s,uchar *f_k);/*I/O口聲明*/sbit p00=P00;sbit p10=P10;sbit p11=P11;sbit p12=P12;sbit p13=P13;sbit p14=P14;sbit p15=P15;sbit p16=P16;sbit p17=P17;sbit p20=P20;sbit p21=P21;sbit p22=P22;sbit p23=P23;sbit p24=P24;sbit p25=P25;sbit p26=P

17、26;sbit p27=P27;sbit p30=P30;sbit p31=P31;sbit p32=P32;sbit p33=P33;sbit p34=P34;sbit p35=P35;sbit p36=P36;sbit p37=P37;/*變量聲明*/uchar bot,key19,key29,save9,t4,s,min,h,mino,mint,ho,ht,n1=1,n2=1,lock,minu,sign,tov,state,n,sound,point=1, showlist=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x71,0

18、xff,0x21,0x85,0xe1,0x7f,0x7d;uint ms; /*主函數(shù)*/void main()EA=1; /開(kāi)總中斷ET0=1; /開(kāi)內(nèi)部中斷0ET1=0;/關(guān)內(nèi)部中斷1TMOD=0x11;TH0=0xf9; /計(jì)數(shù)器0高八位TL0=0xdb; /計(jì)數(shù)器0低八位TR0=1; /計(jì)數(shù)器0開(kāi)始計(jì)數(shù)I2CCON=0xe8;sound=0;tov=1; /超時(shí)計(jì)數(shù)置為1P1=0x00; /P1全置為0作為輸入if(sign!=1)p_new1(); /調(diào)用首次使用判斷函數(shù)p_base();/調(diào)用基礎(chǔ)解鎖函數(shù)/*基礎(chǔ)解鎖函數(shù)*/void p_base() n=0; /密碼數(shù)組置首位st

19、ate=fanin; /指示管置為輸入狀態(tài)faninwhile(1) /無(wú)限循環(huán)if(n=0)state=fanin;elsestate=n; bot=p_scan();if(n!=0&&tov=0)/判斷密碼數(shù)組是不是在首位,超時(shí)計(jì)數(shù)是否為0 p_state(tover);/調(diào)用指示管狀態(tài)閃爍函數(shù),置為用超時(shí)狀態(tài)tovermain(); /調(diào)用主函數(shù)switch(bot)case vain:break;case enter:key1n=end; /把密碼后一位置為endif(p_compare(key1,save) /判斷輸入的密碼是否與原密碼相同p_state(succed

20、);/調(diào)用指示管狀態(tài)閃爍函數(shù),置為成功狀態(tài)succedlock=0;/鎖定鍵盤(pán)計(jì)數(shù)置為0point=1; /多次密碼輸入錯(cuò)誤計(jì)數(shù)state=opened;/指示管置為輸入狀態(tài)openedwhile(1) bot=p_scan();switch(bot)case off:main();break;case back:while(1)bot=p_scan();switch(bot)case off:main();break;case enter:main();break; elsep_state(error);/調(diào)用指示管狀態(tài)閃爍函數(shù),置為用錯(cuò)誤狀態(tài)errorp_record();/調(diào)用錯(cuò)誤計(jì)數(shù)函

21、數(shù)main(); /調(diào)用主函數(shù)break;case cancel:main();break;case back:if(n!=0) /判斷當(dāng)前密碼是否為首位key1n-=end;/當(dāng)前密碼位置end,密碼退位break;case revise:p_revise();break;case trevise:p_trevise();break; default:if(n+1=9)p_state(error);main();key1n+=bot; /*密碼修改模塊*/void p_revise() ET0=1;ET1=0;n=0;p_state(fanin);state=fanin;while(1)if

22、(n=0)state=fanin;elsestate=n;bot=p_scan();if(tov=0) p_state(tover); main();switch(bot)case vain:break;case enter:key1n=end;if(p_compare(key1,save)lock=0;point=1;p_state(succed);p_new1();elsep_state(error);p_record();main(); break;case cancel:main();break;case back: if(n!=0)key1n-=end;break;case revi

23、se:p_revise();case off:break;case trevise:p_trevise();break; default:if(n+1=9)p_state(error);main();key1n+=bot; /*首次使用設(shè)置密碼*/void p_new1() n=0;state=new1;while(1)if(n=0)state=new1;elsestate=n; if(tov=0&&sign=1)|(n!=0&&tov=0) p_state(tover); main();bot=p_scan();switch(bot)case vain:bre

24、ak;case enter:key1n=end;p_new2();break;case cancel:main();break;case back:if(n!=0)key1n-=end;break;case revise:if(sign=1)p_revise();break;case trevise:p_trevise();break; default:if(n+1=9)p_state(error);main();key1n+=bot; /*首次使用二次確定密碼*/void p_new2() n=0;state=new2;while(1)if(n=0)state=new2;elsestate=

25、n;bot=p_scan();if(tov=0) p_state(tover); main();switch(bot)case vain:break;case enter:key2n=end;if(p_compare(key1,key2)sign=1;p_copy(save,key2);lock=0;p_state(succed);main();elsep_state(different);main();break;case cancel:main();break;case back: if(n!=0)key2n-=end;break;case revise:if(sign=1)p_revis

26、e();break;case off:break;case trevise:p_trevise();break; default:if(n+1=9)p_state(error);main();key2n+=bot; /*鍵盤(pán)模塊*/uchar p_scan() uchar f_s=vain;P2=P2&0xf0;if(P1!=0xff)p_delay(10);if(P1!=0xff)tov=1;P2=P2&0xf0;P2=P2|0x07;switch(P1)case 0xfe:f_s=1;break;case 0xfd:f_s=4;break;case 0xfb:f_s=7;b

27、reak;case 0xf7:f_s=back;break;while(P1!=0xff)sound=1;sound=0;P2=P2&0xf0;P2=P2|0x0b;switch(P1)case 0xfe:f_s=2;break;case 0xfd:f_s=5;break;case 0xfb:f_s=8;break;case 0xf7:f_s=0;break;while(P1!=0xff)sound=1;sound=0;P2=P2&0xf0;P2=P2|0x0d;switch(P1)case 0xfe:f_s=3;break;case 0xfd:f_s=6;break;case

28、 0xfb:f_s=9;break;case 0xf7:f_s=enter;break;while(P1!=0xff)sound=1;sound=0;P2=P2&0xf0;P2=P2|0x0e;switch(P1)case 0xfe:f_s=cancel;break;case 0xfd:f_s=off;break;case 0xfb:f_s=revise;break;case 0xf7:f_s=trevise;break;while(P1!=0xff)sound=1;sound=0;p_delay(10);return f_s;void time() interrupt 1 /定時(shí)器0

29、中斷子函數(shù)TH0=0xf9;TL0=0xdb;TR0=1;ms+;ms=ms%1000;/1000毫秒后ms置為0p_show(); /調(diào)用顯示函數(shù)if(sound) /判斷聲音標(biāo)志sound是否為1p26=!p26; /蜂鳴器交替 p26取反if(ms=0) /判斷ms是否為0tov+; /超時(shí)計(jì)數(shù)tov加1tov=tov%11; /11秒后超時(shí)計(jì)數(shù)tov置為0s+; /秒計(jì)數(shù)s加1s=s%60; /60秒后秒計(jì)數(shù)s置為0if(s=0)/判斷秒計(jì)數(shù)s是否為0minu+;/鍵盤(pán)解鎖計(jì)時(shí)加1minu=minu%30; /30分鐘后鍵盤(pán)解鎖計(jì)時(shí)if(minu=0)lock=0;min+;min=m

30、in%60;mino=min%10;mint=min/10;if(min=0)h+;h=h%24;ho=h%10;ht=h/10; /*顯示模塊*/void p_show() switch(n1)case 1:P3=0x80;P0=showlistht;n1+; break;case 2:P3=0x20;P0=showlistmint;n1+;break;case 3:P3=0x00;p24=1;P0=showliststate; n1+;p00=point;break; case 4:p24=0;P3=0x08;P0=showlistmino;n1+;break; case 5:P3=0x4

31、0;P0=showlistho;p00=0;n1=1; /*時(shí)間修改模塊*/void p_trevise() n=3;n2=1;ET0=0;ET1=1;TH1=0xf9;TL1=0xdb;TR1=1;p24=0;P3=0x80;P0=showlistht;while(1)if(tov=0) P0=showlisttover;P3=0x00;while(n-)p24=1;sound=1;p_delay(99999);p24=0;sound=0;p_delay(99999);main();if(bot!=finish)bot=p_scan();switch(bot)case vain:break;

32、case finish:if(t1+t0*10>=24|t3+t2*10>=60)P0=showlisterror;while(n-)p24=1;sound=1;p_delay(99999);p24=0;sound=0;p_delay(99999);bot=vain;p_trevise();ht=t0;ho=t1;mint=t2;mino=t3;h=ho+ht*10;min=mino+mint*10;s=1;main();break;case enter: break;case cancel:main();break;case back: break;case revise:if(

33、sign=1)p_revise();break;case off:break;case trevise:p_trevise();break; default:switch(n2) case 4:P3=0x08;P0=showlistbot;t3=bot;n2=1; bot=finish;p_delay(99999);P3=0x00;break;case 3: P3=0x20;P0=showlistbot;t2=bot;n2+;p_delay(99999);P0=showlistmino;P3=0x08;break;case 2:P3=0x40;P0=showlistbot;t1=bot;n2+

34、;p_delay(99999);P0=showlistmint;P3=0x20;break;case 1:P3=0x80;P0=showlistbot;t0=bot;n2+;p_delay(99999);P0=showlistho;P3=0x40;void atime() interrupt 3 /定時(shí)器1中斷TH1=0xf9;TL1=0xdb;TR1=1;ms+;if(sound)p26=!p26;ms=ms%1000;if(ms=0)tov+;tov=tov%11; /*錯(cuò)誤記錄模塊*/void p_record() /三次解鎖錯(cuò)誤則置狀態(tài)為errorlock+;/鍵盤(pán)鎖定計(jì)數(shù)加1minu

35、=0; /鍵盤(pán)解鎖計(jì)時(shí)置0while(lock=3)/當(dāng)鍵盤(pán)鎖定計(jì)數(shù)為3時(shí)循環(huán)sound=1;point=0; /3次錯(cuò)誤標(biāo)志置為0,表示邏輯1state=error;p_delay(99999);state=null;p_delay(99999); /*狀態(tài)顯示模塊*/void p_state(uchar f_s) /指示管狀態(tài)閃爍函數(shù)uchar f_n=3;while(f_n-)state=f_s;sound=1;p_delay(99999999);state=null;sound=0;p_delay(99999999);void p_delay(uint f_n) /延時(shí)子函數(shù)f_n=100*

溫馨提示

  • 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)論