




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單片機課程設(shè)計報告課題名稱:密碼鎖控制學院:機電汽車工程學院班級:機091-5姓名:學號:指導(dǎo)老師:劉鵬小組成員:孫岳 宋習震 孫建業(yè) 孫煜琦 唐元朝 單片機課程設(shè)計基于單片機8051的密碼鎖控制一、 題目:密碼鎖控制二、 任務(wù)要求:1、密碼鎖由4x4鍵盤和LCD顯示器組成。2、其基本功能為:(1)使用LCD顯示器來顯示密碼輸入的相關(guān)信息(2)可以設(shè)置4位數(shù)字(0-9)密碼;(3)內(nèi)定另一組4位數(shù)字密碼為1234;(4)密碼輸入正確則繼電器啟動2s,密碼輸入錯誤則發(fā)出警報聲。程序執(zhí)行后工作指示燈LED亮,表示程序開始執(zhí)行,LCD顯示“PASSWORD A OR B KEY”,按下操作鍵A或B動
2、作如下:操作鍵A:設(shè)置新的4位數(shù)字密碼,操作鍵B:輸入4位數(shù)字密碼并做檢查。三、組內(nèi)成員:孫岳,宋習震,孫煜琦,孫建業(yè),唐元朝四、指導(dǎo)老師:劉鵬 2012年6月6日本組成員及分工情況組長:孫岳 組員:宋習震,孫煜琦,孫建業(yè),唐元朝孫岳:任務(wù)分配,領(lǐng)導(dǎo)整體程序編制以及電路的模擬.孫建業(yè),孫煜琦,唐元朝:電路圖的仿真宋習震,唐元朝,孫煜琦:程序的編譯調(diào)試孫建業(yè),宋習震,孫煜琦:前期資料的搜集整理全體小組成員集體參與資料搜集,前期程序的研討,程序的編制和任務(wù)書的編寫。緒論 單片機自二十世紀七十年代問世以來,以其極高的性能價格比受到人們的重視和關(guān)注,應(yīng)用廣泛,發(fā)展快。由于其的優(yōu)點多而突出,所以其的應(yīng)用
3、領(lǐng)域極廣,幾乎到了無孔不入的地步。在我國廣泛的應(yīng)用于工業(yè)自動化控制、自動檢測、智能儀表、智能家用電器、航空航天系統(tǒng)和國防軍事、尖端武器等各個方面。可以采用軟硬件結(jié)合的辦法提高系統(tǒng)的性能的控制技術(shù)為微控技術(shù)。 LCD 液晶顯示器是 Liquid Crystal Display 的簡稱,是20世紀70年代初發(fā)展起來的一種液晶顯示器。隨著技術(shù)的發(fā)展其的分辨率、屏幕發(fā)光顏色等進入批量化合實用化。 隨著人們生活水平的提高,如何實現(xiàn)家庭防盜這一問題也變的尤其的突出,傳統(tǒng)的機械鎖由于其構(gòu)造的簡單,被撬的事件屢見不鮮,電子鎖由于其保密性高,使用靈活性好,安全系數(shù)高,受到了廣大用戶的親呢。 本系統(tǒng)由單片機系統(tǒng)、
4、矩陣鍵盤、LCD顯示和報警系統(tǒng)組成。系統(tǒng)能完成開鎖、報警、修改用戶密碼基本的密碼鎖的功能。本文詳細闡述了個模塊的功能以及它們之間的聯(lián)系。一、單片機概述采用以8051為核心的單片機控制方案。利用單片機靈活的編程設(shè)計和豐富的IO端口,及其控制的準確性,不但能實現(xiàn)基本的密碼鎖功能,還能添加調(diào)電存儲、聲光提示甚至添加遙控控制功能。其原理如圖所示。 圖22單片機控制方案 2、單片機80511>、芯片8051有40條引腳,共分為端口線、電源線和控制線三類·4并行I/O端口,每個端口有8條端口線,用于傳送數(shù)據(jù)、地址。·可編程串行通道 ·5個中斷源·低功耗的閑置和
5、掉電方式·兩個16位定時器、計數(shù)器·片內(nèi)振蕩器和時鐘脈沖·4K內(nèi)部RoM·128內(nèi)部RaM2>、管腳說明 1)、主電源引腳VCC和VSSVCC(40腳)接+5V電壓; VSS(20腳)接地。 2)、外接晶體引腳XTAL1和XTAL2 XTAL1(19腳)接外部晶體的一個引腳。在單片機內(nèi)部,它是一個反相放大器的輸入端,這個放大器構(gòu)成了片內(nèi)振蕩器。當采用外部振蕩器時,對HMOS單片機,此引腳應(yīng)接地;對CHMOS單片機,此引腳作為驅(qū)動端。 XTAL2(18腳)接外晶體的另一端。在單片機內(nèi)部,接至上述振蕩器的反相放大器的輸出端。采用外部振蕩器時,對HMOS
6、單片機,該引腳接外部振蕩器的信號,即把外部振蕩器的信號直接接到內(nèi)部時鐘發(fā)生器的輸入端;對XHMOS,此引腳應(yīng)懸浮。 3)、控制或與其它電源復(fù)用引腳RST/VPD、ALE/PROG、PSEN和EA/VPP RST/VPD(9腳)當振蕩器運行時,在此腳上出現(xiàn)兩個機器周期的高電平將使單片機復(fù)位。推薦在此引腳與VSS引腳之間連接一個約8.2k的下拉電阻,與VCC引腳之間連接一個約10F的電容,以保證可靠地復(fù)位。VCC掉電期間,此引腳可接上備用電源,以保證內(nèi)部RAM的數(shù)據(jù)不丟失。當VCC主電源下掉到低于規(guī)定的電平,而VPD在其規(guī)定的電壓范圍(5±0.5V)內(nèi),VPD就向內(nèi)部RAM提供備用電源。
7、 ALE/PROG(30腳):當訪問外部存貯器時,ALE(允許地址鎖存)的輸出用于鎖存地址的低位字節(jié)。即使不訪問外部存儲器,ALE端仍以不變的頻率周期性地出現(xiàn)正脈沖信號,此頻率為振蕩器頻率的1/6。因此,它可用作對外輸出的時鐘,或用于定時目的。然而要注意的是,每當訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。ALE端可以驅(qū)動(吸收或輸出電流)8個LS型的TTL輸入電路。對于EPROM單片機(如8751),在EPROM編程期間,此引腳用于輸入編程脈沖(PROG)。 PSEN(29腳):此腳的輸出是外部程序存儲器的讀選通信號。在從外部程序存儲器取指令(或常數(shù))期間,每個機器周期兩次PSEN有效。但在
8、此期間,每當訪問外部數(shù)據(jù)存儲器時,這兩次有效的PSEN信號將不出現(xiàn)。PSEN同樣可以驅(qū)動(吸收或輸出)8個LS型的TTL輸入。 EA/VPP(引腳):當EA端保持高電平時,訪問內(nèi)部程序存儲器,但在PC(程序計數(shù)器)值超過0FFFH(對851/8751/80C51)或1FFFH(對8052)時,將自動轉(zhuǎn)向執(zhí)行外部程序存儲器內(nèi)的程序。當EA保持低電平時,則只訪問外部程序存儲器,不管是否有內(nèi)部程序存儲器。對于常用的8031來說,無內(nèi)部程序存儲器,所以EA腳必須常接地,這樣才能只選擇外部程序存儲器。 對于EPROM型的單片機(如8751),在EPROM編程期間,此引腳也用于施加21V的編程電源(VPP
9、)。 4)、輸入/輸出(I/O)引腳P0、P1、P2、P3(共32根)P0口(39腳至32腳):是雙向8位三態(tài)I/O口,在外接存儲器時,與地址總線的低8位及數(shù)據(jù)總線復(fù)用,能以吸收電流的方式驅(qū)動8個LS型的TTL負載。 P1口(1腳至8腳):是準雙向8位I/O口。由于這種接口輸出沒有高阻狀態(tài),輸入也不能鎖存,故不是真正的雙向I/O口。P1口能驅(qū)動(吸收或輸出電流)4個LS型的TTL負載。對8052、8032,P1.0引腳的第二功能為T2定時/計數(shù)器的外部輸入,P1.1引腳的第二功能為T2EX捕捉、重裝觸發(fā),即T2的外部控制端。對EPROM編程和程序驗證時,它接收低8位地址。 P2口(21腳至28
10、腳):是準雙向8位I/O口。在訪問外部存儲器時,它可以作為擴展電路高8位地址總線送出高8位地址。在對EPROM編程和程序驗證期間,它接收高8位地址。P2可以驅(qū)動(吸收或輸出電流)4個LS型的TTL負載。 P3口(10腳至17腳):是準雙向8位I/O口,在MCS-51中,這8個引腳還用于專門功能,是復(fù)用雙功能口。P3能驅(qū)動(吸收或輸出電流)4個LS型的TTL負載。 作為第一功能使用時,就作為普通I/O口用,功能和操作方法與P1口相同。值得強調(diào)的是,P3口的每一條引腳均可獨立定義為第一功能的輸入輸出或第二功能。 P3各口線的第二功能定義 口線 引腳 第二功能 P3.0 10 RXD(串行輸入口)
11、P3.1 11 TXD(串行輸出口) P3.2 12 INT0(外部中斷0) P3.3 13 INT1(外部中斷1) P3.4 14 T0(定時器0外部輸入) P3.5 15 T1(定時器1外部輸入) P3.6 16 WR(外部數(shù)據(jù)存儲器寫脈沖)P3.7 17 RD(外部數(shù)據(jù)存儲器讀脈沖) 2>、MCS-51單片機的片外總線結(jié)構(gòu) 綜合上面的描述可知,I/O口線都不能當作用戶I/O口線。除8051/8751外真正可完全為用戶使用的I/O口線只有P1口,以及部分作為第一功能使用時的P3口。如圖,是MCS-51單片機按引腳功能分類的片外總線結(jié)構(gòu)圖。 由圖我們可以看到,單片機的引腳除了電源、復(fù)位
12、、時鐘接入,用戶I/O口外,其余管腳是為實現(xiàn)系統(tǒng)擴展而設(shè)置的。這些引腳構(gòu)成MCS-51單片機片外三總線結(jié)構(gòu),即: 地址總線(AB):地址總線寬為16位,因此,其外部存儲器直接尋址為64K字節(jié),16位地址總線由P0口經(jīng)地址鎖存器提供8位地址(A0至A7);P2口直接提供8位地址(A8至A15)。 數(shù)據(jù)總線(DB):數(shù)據(jù)總線寬度為8位,由P0提供。 控制總線(CB):由P3口的第二功能狀態(tài)和4根獨立控制線RESET、EA、ALE、PSEN組成。 下表列出各個子系列的配制情況供讀則參考。 芯片種類 片內(nèi)存儲器 中斷源 定時/計數(shù)器 串行口 電源消耗(mA) 制造工藝 ROM/EPROM RAM 80
13、51(8751,8031) 4K 128 5 2 同、異步方式,8位或10位可程序控制 125 HMOS 8052(8752,8032) 8K 256 6 3 同、異步方式,8位或10位可程序控制 100 HMOS 80C51(87C51,80C31) 4K 128 5 2 同、異步方式,8位或10位可程序控制 24 CHMOS 80C52(87C52,80C32) 8K 256 7 3 同、異步方式,8位或10位可程序控制 24 CHMOS 8044(8744,8344) 4K 192 5 2 S.L.U 200 HMOS 3>、控制部件 控制部件是單片機的神經(jīng)中樞,它包括時鐘電路、復(fù)
14、位電路、指令寄存器、譯碼以及信息傳送控制部件。它以主振頻率為基準發(fā)出CPU的時序,對指令進行譯碼,然后發(fā)出各種控制信號,完成一系列定時控制的微操作,用來控制單片機各部分的運行。其中有一些控制信號線能簡化應(yīng)用系統(tǒng)外圍控制邏輯,如控制地址鎖存的地址鎖存信號ALE,控制片外程序存儲器運行的片內(nèi)外存儲器選擇信號EA,以及片外取指信號PSEN二、硬件設(shè)計2.1 硬件設(shè)計思想鍵盤采用4×4矩陣式鍵盤,P1口作為鍵盤的輸入口。顯示采用LCD顯示報警聲音由P3.6引腳控制錯誤指示燈由P3.7引腳控制電源與接地要做好片內(nèi)外以及強弱電的隔離。2.2 部分硬件方案論述2.2.1 鍵盤輸入單元:這是用戶使用
15、時將密碼輸入單片機內(nèi)的輸入設(shè)備,具體結(jié)構(gòu)構(gòu)成見圖:采用16個按鍵開關(guān),分別代表0D14個數(shù)字輸入鍵位,一個確認鍵和一個取消鍵。采取矩陣式鍵位設(shè)計,此舉為減少對單片機的I/O口的使用,同時也是的我們鍵盤的的外形更好看,使用更人性化。鍵盤的行線和列現(xiàn)分別接80C51單片機的P1.0P1.7八個端口。對鍵盤的識別方式我們采取行掃描法。具體使用由編程由單片機完成。逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,介紹過程如下。1>、判斷鍵盤中有無鍵按下。將全部行線置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。
16、若所有列線均為高電平,則鍵盤中無鍵按下。 2>、判斷閉合鍵所在的位置。在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。 圖 鍵盤輸入單元2.2.2 顯示單元:此設(shè)備是用戶使用密碼防盜鎖的的顯示裝置,是實現(xiàn)人機交換的重要設(shè)備。用戶通過它來觀看鍵位數(shù)字的信息,了解已輸入的密碼個數(shù),單片機通過它告知用戶操作的正確與否,對用戶的操作進行提示和引導(dǎo)。LCD顯示器的基本結(jié)構(gòu)和原理LCD顯示電路LCD模組是
17、由控制器,驅(qū)動器,顯示器三部份所組成,而目前市面上LCD的模組驅(qū)動/控制器都是由日制的HD44780控制器晶片(或是相容產(chǎn)品),因此外部接腳的功能也都相同,這個控制器的內(nèi)部共有80 個位元組可供儲存由外部送進來的資料,因此使用此款控器的LCD模組最多一次可顯示80個字HD44780中儲存顯示資料的80個位元組,稱之為Display DataRAM(DDRAM),DDRA的位址從00H67H,共80個Byte。在LCD 上Show出資料DDRAM位址與可供顯示位置的對應(yīng)圖至于CPU如何將資料送給LCD顯示的方法,是將欲顯示的字元的ASCII 碼寫到LCD內(nèi)部的DDRAM,LCD就會將這個自在其對
18、應(yīng)的位置顯示出來.例如,若想在LCD 的左上角處(位址00h),顯示A.就將ASCII碼-41H,送到DDRAM 的00H 位址.例:2.2.3報警電路模塊:此設(shè)備用于輸出按鍵聲、開鎖提示聲、操作錯誤提示聲及報警聲;由P3.6輸出脈沖驅(qū)動喇叭發(fā)聲,電路如圖:圖 報警電路模塊2.2.4晶振電路模塊:此模塊為單片機提供時鐘頻率圖 晶振電路2.2.5復(fù)位電路模塊:此模塊用于實現(xiàn)密碼鎖的密碼重置,復(fù)位電路接單片機的RST引腳,但復(fù)位鍵按下時,低電平使單片機復(fù)位,從而實現(xiàn)密碼鎖密碼的重置。圖 復(fù)位電路模塊2.26 掉電存儲單元2.3 使用到的元器件列表元器件規(guī)格和型號數(shù)量單片機80511LCD顯示器LM
19、016L1蜂鳴器SPEAKER1晶體振蕩器CRYSTAL1可擦除存儲芯片24C0241按鍵開關(guān)BUTTON16電容CAP3電阻RES4發(fā)光二極管LED-RED,LED-GREEN2滑動變阻器POT13 總框圖設(shè)計整體程序設(shè)計和程序流程圖 1>、程序分為主程序和中斷服務(wù)程序兩個主要部分,主程序完成變量和單片機特殊功能寄存器的初始化后,進入一個循環(huán)結(jié)構(gòu)。在循環(huán)中,首先判斷有無按鍵按下,若有則判斷是數(shù)字鍵還是功能鍵,根據(jù)按鍵的情況執(zhí)行相應(yīng)的功能。然后根據(jù)密碼是否正確的判斷情況,執(zhí)行相應(yīng)的操作。循環(huán)中最后需要顯示的內(nèi)容通過動態(tài)掃描子在液晶顯示器上顯示。中斷服務(wù)程序需要實現(xiàn)待機計時5秒。單片機采用
20、MCS51系列的單片機8051作為主要主控制器,外圍電路器件包括液晶顯示驅(qū)動、蜂鳴器的驅(qū)動輸出、獨立式鍵盤和發(fā)光二極管的輸出等。2>、程序主要包括以下幾個模塊1)、主程序模塊主要完成初始化、設(shè)置中斷向量、檢查有無按鍵按下、以及調(diào)用顯示等等。2)、鍵盤掃描及識別子程序鍵盤采用查詢方式,放于主程序中,當沒有按鍵按下時,單片機循環(huán)主程序,當按鍵按下時便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束后返回。3)、掉電存儲服務(wù)程序當比較密碼的時候,需要讀取AT24C02程序,將存儲于芯片內(nèi)的數(shù)據(jù)讀到RAM中,然后和輸入密碼相比較,當修改密碼時需要把密碼保存于24C02中。4)、顯示子程序包括關(guān)閉狀態(tài)顯示子程序(d
21、is-A)、開鎖狀態(tài)顯示子程序(DIS-B)、密碼輸入及修改狀態(tài)顯示子程序(DIS-C)、密碼輸入錯誤報警狀態(tài)子程序(DIS-D).程序流程圖 四、程序設(shè)計#include<reg52.h>#define uint unsigned int#define uchar unsigned charint pw_error,audio_out,cnt_state;void key_scan();uchar count0,count1,count3,num,n=0,temp,a,j,count4;uchar mima4; /初始密碼存儲區(qū)uchar tab_key50; /輸入密碼存儲區(qū)u
22、char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;bit enterflag; /確認鍵按下與否的標志bit mimaflag; /密碼正確與否的標志bit xiugaiflag; /修改密碼標志bit enter1flag; /修改密碼確認鍵標志sbit red=P37;sbit bell=P36;sbit rs=P20;sbit rw=P21; sbit lcden=P22; sbit green=P32;sbit scl=P34;sbit sda=
23、P35;uchar code table1="input the passco"uchar code table2="de: -"uchar code table3="*"uchar code table4="right (_) "uchar code table5="error!"uchar code table6="define the passc"uchar code table7="ode: -"uchar code table8="co
24、de is new"/*鍵盤消抖函數(shù)*void delay1() ; void delay2(uchar x) uchar a,b; for(a=x;a>0;a-) for(b=100;b>0;b-); void delay(uint z) uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-); /*e2room的初始化*void start() /開始信號 sda=1; delay1(); scl=1; delay1(); sda=0; delay1();void stop() /停止 sda=0; delay1(); sc
25、l=1; delay1(); sda=1; delay1();/*應(yīng)答信號*void respond() uchar i; scl=1; delay1(); while(sda=1)&&(i<250)i+; scl=0; delay1(); /*寫字節(jié)操作函數(shù)*void write_byte(uchar date) uchar i,temp; temp=date; for(i=0;i<4;i+) temp=temp<<1; /保持最高位,左移到進位CY scl=0; delay1(); sda=CY; delay1(); scl=1; delay1();
26、 scl=0; delay1(); sda=1;/總線釋放 delay1();/*讀字節(jié)操作函數(shù)*uchar read_byte() uchar i,k; scl=0; delay1(); sda=1; delay1(); for(i=0;i<4;i+) scl=1; delay1(); k=(k<<1)|sda; /或運算,放到最低位 scl=0; delay1(); return k;/*寫地址函數(shù)*void write_add(uchar address,uchar date) start(); write_byte(0xa0); respond(); write_by
27、te(address); respond(); write_byte(date); respond(); stop();/*讀地址函數(shù)*uchar read_add(uchar address) uchar date; start(); write_byte(0xa0); respond(); write_byte(address); respond(); start(); write_byte(0xa1); respond(); date=read_byte(); stop(); return date;/*LCD1602的初始化*void write_com(uchar com) rs=0
28、; lcden=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; void write_date(uchar date) rs=1; lcden=0; P0=date; delay(5); lcden=1; delay(5); lcden=0; /*密碼比較函數(shù)*bit mimacmp() bit flag; uchar i; for(i=0;i<4;i+) if(mimai=tab_keyi) flag=1; else flag=0; i=4; return(flag); /返回flag/*LCD顯示函數(shù)開始*void lcd_displ
29、ay()uchar i=0;write_com(0x80+0x40+4);for(i=0;i<n;i+)write_date(table30);/*鍵盤功能分配函數(shù)群開始*/* 0 * 4 * 8 *修改(clr) * /* 1 * 5 * 9 *修改密碼鍵(a)*/* 2 * 6 * 確認(en)*修改確認密碼鍵(b)* /* 3 * 7 *void key_manage1()tab_keyn=0;n+;if(xiugaiflag=1)mimacount4=0;count4+; void key_manage2()tab_keyn=1;n+;if(xiugaiflag=1)mimaco
30、unt4=1;count4+;void key_manage3()tab_keyn=2;n+;if(xiugaiflag=1)mimacount4=2;count4+;void key_manage4()tab_keyn=3;n+;if(xiugaiflag=1)mimacount4=3;count4+;void key_manage5()tab_keyn=4;n+;if(xiugaiflag=1)mimacount4=4;count4+;void key_manage6()tab_keyn=5;n+;if(xiugaiflag=1)mimacount4=5;count4+;void key_
31、manage7()tab_keyn=6;n+;if(xiugaiflag=1)mimacount4=6;count4+;void key_manage8()tab_keyn=7;n+;if(xiugaiflag=1)mimacount4=7;count4+;void key_manage9()tab_keyn=8;n+;if(xiugaiflag=1)mimacount4=8;count4+;void key_manage10()tab_keyn=9;n+;if(xiugaiflag=1)mimacount4=9;count4+;/*確認鍵* void key_manage11() enter
32、flag=1; /確認鍵按下 if(n=4) /只有輸入4個密碼后按確認才做比較 mimaflag=mimacmp(); else mimaflag=0; if(enterflag=1) enterflag=0; n=0; /用FFFF清除已經(jīng)輸入的密碼 for(count3=0;count3<4;count3+) delay(5); tab_keycount3=0x0f; TR1=1; /打開計數(shù)器 count1=0; /定時器1由50MS累計到1S所用的計數(shù)器 if(mimaflag=1) a=0; write_com(0x01); write_com(0x80); for(coun
33、t3=0;count3<16;count3+) write_date(table4count3); /密碼正確,顯示RIGHT,綠燈亮 green=0; delay(5); else n=0; red=0;/ bell=bell;/ delay(100) ; a+; if(a=3) / for(count3=0;count3<8;count3+) /ffffffff清除密碼/ / delay(5);/ tab_keycount3=0x0f; / write_com(0x01); write_com(0x80); for(count3=0;count3<9;count3+) w
34、rite_date(table5count3); /密碼錯誤,顯示 error,紅燈亮 / green=1; pw_error=0; /密碼錯誤指示燈亮 bell=0; /長鳴聲報警 delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); bell=1; /- TR1=1; /打開定時器計時 cnt_state=2; /下一狀態(tài)處于15秒計時的狀態(tài) / delay(5); / TR1=0; void
35、key_manage12()tab_keyn=11;n+; /密碼計數(shù)清零/*取消鍵* void key_manage13()n=0; /密碼計數(shù)清零write_com(0x80); /指針所指位置for(count3=0;count3<16;count3+) write_date(table1count3); /第一行顯示INPUT THE PASSPORD: delay(5);write_com(0x80+0x40);for(count3=0;count3<16;count3+) write_date(table2count3); /開機顯示- delay(5); tab_ke
36、ycount3=0x0f; /用FFFF清除已經(jīng)輸入的密碼/*修改密碼鍵*void key_manage14() uchar aa=0; n=0; xiugaiflag=1; write_com(0x01); write_com(0x80);for(count3=0;count3<16;count3+) write_date(table6count3); /顯示define the password delay(5); tab_keycount3=0x0f; /用FFFF清除已經(jīng)輸入的密碼write_com(0x80+0x40);for(count3=0;count3<16;cou
37、nt3+) write_date(table7count3); /顯示- delay(5);TR0=1;/*修改密碼鍵的確認鍵*void key_manage15() n=0;enter1flag=1;if(enter1flag=1) enter1flag=0; count4=0; for(count3=0;count3<16;count3+) tab_keycount3=0x0f; /用FFFF清除已經(jīng)輸入的密碼 write_com(0x01); write_com(0x80); for(count3=0;count3<16;count3+) write_date(table8c
38、ount3); delay(100); TR1=1; count1=0;void key_manage16()tab_keyn=15;n+;/*定時器1的50MS,共延時1秒*void time_1() interrupt 3 TH1=(65536-50000)/256; TL1=(65536-50000)%256; if(count1<20) count1+; else /計時到1S TR1=0; count1=0; mimaflag=0; red=1; bell=1; /顯示FFFF write_com(0x01); write_com(0x80); for(count3=0;cou
39、nt3<16;count3+) write_date(table1count3); /顯示PASSWORD A OR B KEY delay(5); write_com(0x80+0x40); for(count3=0;count3<16;count3+) write_date(table2count3); /開機顯示FFFF delay(5); /*定時0*void time_0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256;if(count4<4) key_scan();else TR0=0; cou
40、nt4=0;/初始化函數(shù)void init() / uchar i; lcden=0; write_com(0x38); /打開顯示模式設(shè)置 write_com(0x0c); /打開顯示,光標等等設(shè)置未零 write_com(0x06); /當讀或?qū)懸粋€字符后地址指針加一,且光標加一,當寫一個字符后整頻顯示左移 write_com(0x01); /清零指令 write_com(0x80); /指針所指位置 count0=0; /初始沒有密碼輸入,故為零 enterflag=0; /沒有確認鍵按下 mimaflag=0; /密碼正確與否鍵先置零 red=1; /紅燈不亮/*密碼存入EPROM中*
41、 sda=1; delay(5); scl=1; delay(5); for(i=0;i<8;i+) write_add(i,8); delay2(100); for(i=0;i<8;i+) mimai=read_add(i); delay(5); void main() TMOD=0x11; /T0,T1工作方式1 TH0=(65536-2000)/256; TL0=(65536-2000)%256; /T0初始化2MS TH1=(65536-50000)/256; TL1=(65536-50000)%256; /T1初始化50MS TR1=0; ET1=1; EA=1; TR0
42、=0; ET0=1; rw=0; init(); write_com(0x80); /指針所指位置 for(count3=0;count3<16;count3+) write_date(table1count3); /第一行顯示INPUT THE PASSPORD: delay(5); write_com(0x80+0x40); for(count3=0;count3<16;count3+) write_date(table2count3); /開機顯示FFFF delay(5); while(1) key_scan(); /調(diào)用鍵盤掃描函數(shù) lcd_display(); /*鍵盤
43、掃描函數(shù)開始*void key_scan()/*掃描第一行*P1=0xfe; temp=P1;temp=temp&0xf0;if(temp!=0xf0)delay(100);if(temp!=0xf0)temp=P1;switch(temp)case 0xee:key_manage1();break;case 0xde:key_manage2();break;case 0xbe:key_manage3();break;case 0x7e:key_manage4();break; while(temp!=0xf0)temp=P1;temp=temp&0xf0; /*掃描第二行*P1=0xfd;
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年北京電子科技職業(yè)學院招聘考試真題
- 2025至2030年中國新型胺洗多功能高效處理劑數(shù)據(jù)監(jiān)測研究報告
- 醫(yī)用繃帶智能生產(chǎn)設(shè)備企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025至2030年中國拖車卡車電路系統(tǒng)用插頭數(shù)據(jù)監(jiān)測研究報告
- 《海外投資協(xié)議》
- 科技助力野生動植物保護-創(chuàng)新技術(shù)與方法探討
- 自然借款合同范本
- 便攜式智能免疫力儀企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 金屬集中拆解處理和集中污染治理企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 天然植物護發(fā)精油行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 2025年合肥職業(yè)技術(shù)學院單招職業(yè)適應(yīng)性測試題庫完整版
- 2025年湖南城建職業(yè)技術(shù)學院單招職業(yè)技能測試題庫新版
- 《中國古代文學史及作品選II》教學大綱
- 代工生產(chǎn)合同范本
- 瑜伽課程合同轉(zhuǎn)讓協(xié)議書范本
- 個人經(jīng)營性貸款合同模板
- 人教版英語2025七年級下冊 Unit1Animal Friends教師版 語法講解+練習
- DeepSeek新手入門教程
- 課件:《教育強國建設(shè)規(guī)劃綱要(2024-2035年)》學習宣講
- 2025年山東化工職業(yè)學院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年全國幼兒園教師資格證考試教育理論知識押題試題庫及答案(共九套)
評論
0/150
提交評論