




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
智能密碼鎖系統(tǒng)總體設計和主要芯片介紹智能密碼鎖系統(tǒng)總體設計和主要芯片介紹智能密碼鎖系統(tǒng)總體設計和主要芯片介紹資料僅供參考文件編號:2022年4月智能密碼鎖系統(tǒng)總體設計和主要芯片介紹版本號:A修改號:1頁次:1.0審核:批準:發(fā)布日期:第三章系統(tǒng)總體設計和主要芯片介紹系統(tǒng)總體設計本設計主要由單片機、矩陣鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進行各種功能的實現(xiàn)。由用戶通過連接單片機的矩陣鍵盤輸入密碼,后經(jīng)過單片機對用戶輸入的密碼與自己保存的密碼進行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報警電路控制開鎖還是報警,實際使用時只要將單片機的負載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可。系統(tǒng)整體框圖如圖3-1所示。顯示模塊鍵盤輸入模塊AT89S52顯示模塊鍵盤輸入模塊AT89S52報警電路復位電路報警電路復位電路開鎖電路密碼存儲模塊開鎖電路密碼存儲模塊圖3-1系統(tǒng)結構框圖各模塊功能如下:1.鍵盤輸入模塊:分為密碼輸入按鍵與幾個功能按鍵,用于完成密碼鎖輸入功能。2.顯示模塊:用于完成對系統(tǒng)狀態(tài)顯示及操作提示功能。3.復位電路:完成系統(tǒng)的復位。4.報警電路:用于完成輸錯密碼時候的警報功能。5.密碼存儲模塊:用于完成掉電存儲功能,使修改的密碼斷電后仍能保存。6.開鎖電路:應用繼電器及發(fā)光二極管模擬開鎖,完成開鎖及開鎖提示。主要芯片介紹AT89S52AT89S52單片機是一個低功耗,高性能CMOS8位單片機,片內(nèi)含8KBytesISP(In-systemprogrammable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內(nèi)集成了通用8位中央處理器和ISPFlash存儲單元,功能強大的微型計算機的AT89S52可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案[10]。AT89S52具有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。AT89S52的管腳分布如圖3-2所示。圖3-2AT89S52芯片管腳P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P3口作為AT89S52的一些特殊功能管腳備選功能,RXD(串行輸入口)TXD(串行輸出口)/INT0(外部中斷0)/INT1(外部中斷1)T0(記時器0外部輸入)T1(記時器1外部輸入)/WR(外部數(shù)據(jù)存儲器寫選通)/RD(外部數(shù)據(jù)存儲器讀選通)AT89S52主要特性如表3-1所示。表3-1AT89S52主要特性兼容MCS-51指令系統(tǒng)8k可反復擦寫(>1000次)ISPFlashROM32個雙向I/O口工作電壓3個16位可編程定時/計數(shù)器時鐘頻率0-33MHz全雙工UART串行中斷口線256x8bit內(nèi)部RAM2個外部中斷源低功耗空閑和省電模式中斷喚醒省電模式3級加密位看門狗(WDT)電路軟件設置空閑和省電功能靈活的ISP字節(jié)和分頁編程雙數(shù)據(jù)寄存器指針存儲芯片AT24C02AT24C02是美國Atmel公司的低功耗CMOS型E2PROM,內(nèi)含256×8位存儲空間,具有工作電壓寬~V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10ms)、抗干擾能力強、數(shù)據(jù)不易丟失、體積小等特點。而且他是采用了I2C總線式進行數(shù)據(jù)讀寫的串行器件,占用很少的資源和I/O線,并且支持在線編程,進行數(shù)據(jù)實時的存取十分方便。AT24C02中帶有的片內(nèi)地址寄存器。每寫入或讀出一個數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實現(xiàn)對下一個存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節(jié)的數(shù)據(jù)。I2C總線是一種用于IC器件之間連接的二線制總線。他通過SDA(串行數(shù)據(jù)線)及SCL(串行時鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識別每個器件。AT24C02正是運用了I2C規(guī)程,使用主/從機雙向通信,主機(通常為單片機)和從機(AT24C02)均可工作于接收器和發(fā)送器狀態(tài)。主機產(chǎn)生串行時鐘信號(通過SCL引腳)并發(fā)出控制字,控制總線的傳送方向,并產(chǎn)生開始和停止的條件。無論是主機還是從機,接收到一個字節(jié)后必須發(fā)出一個確認信號ACK。AT24C02的控制字由8位二進制數(shù)構成,在開始信號發(fā)出以后,主機便會發(fā)出控制字,以選擇從機并控制總線傳送的方向。管腳描述:SCL為串行時鐘:串行時鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時鐘這是一個輸入管腳。SDL為串行數(shù)據(jù)/地址:雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收SDL,是一個開漏輸出管腳可與其它開漏輸出或集電極開路輸出進行線或。A0、A1、A2為器件地址輸入端:當使用24C02時最大可級聯(lián)8個器件,如果只有一個24C02被總線尋址,這三個地址輸入腳A0、A1、A2可懸空或連接到Vss。WP為寫保護:如果WP管腳連接到Vcc所有的內(nèi)容都被寫保護只能讀當WP,管腳連接到Vss或懸空,允許器件進行正常的讀/寫操作[12]。管腳圖如圖3-3所示。圖3-3AT24C02引腳圖LCD1602顯示器現(xiàn)在的字符型液晶模塊已經(jīng)是單片機應用設計中最常用的信息顯示器件了。1602型LCD顯示模塊具有體積小,功耗低,顯示內(nèi)容豐富等特點。1602型LCD可以顯示2行16個字符,有8位數(shù)據(jù)總線D0~D7和RS,R/W,EN三個控制端口,工作電壓為5V,并且具有字符對比度調(diào)節(jié)和背光功能。接口信號說明:1602型LCD的接口信號說明如表3-2所示。表3-21602型LCD的接口信號說明第1腳VSS電源地第9腳D2雙向數(shù)據(jù)線第2腳VDD+5V電源第10腳D3雙向數(shù)據(jù)線第3腳VEE液晶顯示偏壓信號第11腳D4雙向數(shù)據(jù)線第4腳RS數(shù)據(jù)/命令選擇端第12腳D5雙向數(shù)據(jù)線第5腳R/W讀/寫選擇端第13腳D6雙向數(shù)據(jù)線第6腳E使能端第14腳D7雙向數(shù)據(jù)線第7腳D0雙向數(shù)據(jù)線第15腳BLA背光源正極第8腳D1雙向數(shù)據(jù)線第16腳BLK背光源負極主要技術參數(shù):1602型LCD的主要技術參數(shù)如表3-3所示。表3-31602型LCD的主要技術參數(shù)顯示容量16×2個字符芯片工作電壓~工作電流()模塊最佳工作電壓字符尺寸×(WXH)mm基本操作程序:讀狀態(tài):令RS=L,RW=L,E=H 輸出:D0~D7=狀態(tài)字讀數(shù)據(jù):令RS=H,RW=H,E=H 輸出:無寫指令:令RS=L,RW=L,D0~D7=指令碼,E=高脈沖輸出:D0~D7=數(shù)據(jù)寫數(shù)據(jù):令RS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖輸出:無
第四章硬件設計本系統(tǒng)外圍電路包括鍵盤輸入部分、密碼存儲部分、復位部分、顯示部分、報警部分、開鎖部分組成,根據(jù)實際情況鍵盤輸入部分選擇4×4矩陣鍵盤,顯示部分選擇字符型液晶顯示LCD1602,密碼存儲部分選用AT24C02芯片來完成。其原理圖如圖4-1所示。圖4-1電路原理圖鍵盤輸入模塊由于本設計所用到的按鍵數(shù)量較多而不適合用獨立按鍵式鍵盤。采用的是矩陣式按鍵鍵盤,它由行和列組成,也稱行列式鍵盤,按鍵位于行列的交叉點上,密碼鎖的密碼由鍵盤輸入完成,與獨立式按鍵鍵盤相比,要節(jié)省很多I/O口。本設計中使用的這個4×4鍵盤不但能完成密碼的輸入還能作特別功能鍵使用。鍵盤的每個按鍵功能在程序設計中設置。它與單片機的連接如圖4-2所示。圖4-2鍵盤輸入模塊密碼存儲模塊圖4-3所示AT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在AT89S51試驗開發(fā)板上它們都接地,第5腳和第8腳分別為正、負電源。第8腳SDL為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過這條雙向I2C總線串行傳送,在AT89S52試驗開發(fā)板上和單片機的連接。第6腳SCL為串行時鐘輸入線,在AT89S52試驗開發(fā)板上和單片機的連接。SDL和SCL都需要和正電源間各接一個的電阻上拉。第6腳接。AT24C02中帶有片內(nèi)地址寄存器。每寫入或讀出一個數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實現(xiàn)對下一個存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節(jié)的數(shù)據(jù)。圖4-3密碼存儲電路復位部分單片機復位是使CPU和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。該電路在最簡單的復位電路下增加了手動復位按鍵,在接通電源瞬間,電容C1上的電壓很小,復位下拉電阻上的電壓接近電源電壓,即RST為高電平,在電容充電的過程中RST端電壓逐漸下降,當RST端的電壓小于某一數(shù)值后,CPU脫離復位狀態(tài),由于電容C1足夠大,可以保證RST高電平有效時間大于24個振蕩周期,CPU能夠可靠復位。增加手動復位按鍵是為了避免死機時無法可靠復位。當復位按鍵按下后電容C1通過R5放電。當電容C1放電結束后,RST端的電位由R5與R6分壓比決定。由于R5<<R6因此RST為高電平,CPU處于復位狀態(tài),松手后,電容C1充電,RST端電位下降,CPU脫離復位狀態(tài)。R5的作用在于限制按鍵按下瞬間電容C1的放電電流,避免產(chǎn)生火花,以保護按鍵觸電。其電路如圖4-4所示。圖4-4復位電路晶振部分AT89S52引腳XTAL1和XTAL2與晶體振蕩器及電容C2、C3按圖4-5所示方式連接。晶振、電容C2/C3及片內(nèi)與非門(作為反饋、放大元件)構成了電容三點式振蕩器,振蕩信號頻率與晶振頻率及電容C2、C3的容量有關,但主要由晶振頻率決定,范圍在0~33MHz之間,電容C2、C3取值范圍在5~30pF之間。根據(jù)實際情況,本設計中采用12MHZ作為系統(tǒng)的外部晶振。電容取值為10pF。其電路圖如圖4-5所示。圖4-5晶振電路顯示模塊顯示部分由液晶顯示器LCD1602取代普通的數(shù)碼管完成。開鎖時,按下鍵盤上的開鎖按鍵后,利用鍵盤上的數(shù)字鍵0-9輸入密碼,每按下一個數(shù)字鍵后在顯示器上顯示一個*,輸入多少位就顯示多少個*。當密碼輸入完成時,按下確認鍵,如果輸入的密碼正確的話,LCD顯示“DOOROPEN”,單片機其中引腳會輸出低電平,使三極管T2導通,電磁鐵吸合,繼電器開關跳轉(zhuǎn),電子密碼鎖被打開,如果密碼不正確,LCD顯示屏會顯示“CODEWRONG”,輸出的是高電平,電子密碼鎖不能打開。通過LCD顯示屏,可以清楚地判斷出密碼鎖所處的狀態(tài)。電路圖如圖4-6所示。圖4-6顯示電路報警部分報警部分由陶瓷壓電發(fā)聲裝置及外圍電路組成,加電后不發(fā)聲,當有鍵按下時,“?!甭?,每按一下,發(fā)聲一次,密碼正確時,不發(fā)聲直接開鎖,當密碼輸入錯誤時,單片機的引腳為低電平,三極管T3導通蜂鳴器發(fā)出噪聲報警。如圖4-7所示。圖4-7報警電路開鎖部分開鎖控制電路的功能是當輸入正確的密碼后將鎖打開。系統(tǒng)使用單片機其中一引腳線發(fā)出信號,經(jīng)三極管放大后,由繼電器驅(qū)動電磁閥動作將鎖打開。用戶通過鍵盤任意設置密碼,并儲存在E2PROM中作為鎖碼指令。只有用戶操作鍵盤時,單片機的電源端才能得到3V電源,否則,單片機處于節(jié)電工作方式。開鎖步驟如下:首先按下鍵盤上的開鎖按鍵,然后利用鍵盤上的數(shù)字鍵0-9輸入密碼,最后按下確認鍵。當用戶輸入密碼后,單片機自動識別密碼,如果密碼不符,則報警。只有當密碼正確,單片機才能使繼電器處于開鎖狀態(tài)。具體電路如圖4-8所示。圖4-8開鎖電路
第五章系統(tǒng)軟件設計系統(tǒng)程序流程圖主程序流程圖主程序設計流程圖如圖5-1所示。開始開始初始化密碼正確輸入舊密碼出錯報警開鎖原密碼相同設新密碼返回開鎖修改 NYVN Y圖5-1主程序流程圖鍵功能程序流程圖鍵功能程序流程圖如圖5-2所示。鍵功能程序鍵功能程序鍵值=0~9鍵值=開鎖鍵值=確認鍵值=設置返回密碼輸入程序確認程序設置程序開鎖程序 Y N Y N Y N Y N圖5-2鍵功能流程圖開鎖程序流程圖開鎖程序流程圖如圖5-3所示。LCD初始化LCD初始化按開鎖鍵按開鎖鍵輸入密碼輸入密碼確認程序開鎖確認程序開鎖N輸入密碼正確N輸入密碼正確報警程序報警程序 開鎖成功返回 Y 開鎖成功返回圖5-3開鎖流程圖子程序舉例開鎖子程序if(sk[15]==1) 據(jù)端口sbitP2_0=P2^0;uintkey_val=16;uintm=0,count=0,count2=0;uintpass=0,pass0=0,pass1=0,pass2=0,o=0,n=0;uintco[6]={0,0,0,0,0,0};uintcp[1]={0};uintcq[7]={0,0,0,0,0,0,0};ucharsk[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0},pa=10;ucharpassword[6];voidDelayMs(unsignedintn){unsignedinti,j;for(i=0;i<n;i++)for(j=0;j<120;j++);}/*****按鍵掃描*****/voidCheck_Key(void){unsignedintrow,col,tmp1,tmp2;tmp1=0x10;//tmp1用來設置P1口的輸出,取反后使~中有一個為0for(row=0;row<4;row++)//行檢測{P1=0x0f;//先將~置高P1=~tmp1;//使~中有一個為0tmp1*=2;//tmp1左移一位if((P1&0x0f)<0x0f)//檢測~中是否有一位為0,只要有,則說明此行有鍵按下,進入列檢測{ DelayMs(30);if((P1&0x0f)<0x0f)//檢測~中是否有一位為0,只要有,則說明行有鍵按下,進入列檢測{tmp2=0x01;//tmp2用于檢測出哪一列為0for(col=0;col<4;col++)//列檢測{if((P1&tmp2)==0x00)//該列如果為低電平則可以判定為該列{key_val=row*4+col;//獲取鍵值,識別按鍵while((P1&tmp2)==0x00);return;//退出循環(huán)}tmp2*=2;//tmp2左移一位}while((P1&tmp2)==0x00);}}}}voidrec_key(void)///////////////////////////////////////按鍵判斷{if(key_val!=16)//當按鍵4被按下時,標志位presskey4置位,從而去執(zhí)行判斷按鍵1,2程序{ if(m>6)m=0;if(count2==1){if(key_val==0){//delay(1000);sk[0]=1;count++;pa=0;password[m]=0;m++;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==1){//delay(1000);sk[1]=1;count++;pa=1;password[m]=1;m++;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==2){//delay(1000);sk[2]=1;count++;pa=2;password[m]=2;m++;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==3){//delay(1000);sk[3]=1;count++;pa=3;password[m]=3;m++;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==4){//delay(1000);sk[4]=1;count++;pa=4;password[m]=4;m++;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==5){//delay(1000);sk[5]=1;count++;pa=5;password[m]=5;m++;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==6){//delay(1000);sk[6]=1;count++;pa=6;password[m]=6;m++;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==7){//delay(1000);sk[7]=1;count++;pa=7;password[m]=7;m++;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==8){//delay(1000);sk[8]=1;count++;pa=8;password[m]=8;m++;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==9){//delay(1000);sk[9]=1;count++;pa=9;password[m]=9;m++;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(m>9)m=0;}}if(key_val==10){//delay(1000);sk[10]=1;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==11){//delay(1000);sk[11]=1;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==12){//delay(1000);sk[12]=1;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==13){//delay(1000);sk[13]=1;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;}if(key_val==14){//delay(1000);sk[14]=1;DelayMs(10);p3_6=0;DelayMs(200);p3_6=1;key_val=16;}if(key_val==15){//delay(1000);sk[15]=1;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1; key_val=16;}if(m>10)m=0;} //內(nèi)部等待函數(shù)**********************************************************************unsignedcharLCD_Wait(void){LcdEn=0;LcdRs=0;LcdRw=1; _nop_();LcdEn=1; _nop_();LcdEn=0; _nop_();while(DBPort&0x80)//在用Proteus仿真時,注意用屏蔽此語句,在調(diào)用GotoXY()時,會進入死循環(huán),//可能在寫該控制字時,該模塊沒有返回寫入完備命令,即DBPort&0x80==0x80//實際硬件時打開此語句returnDBPort; }//向LCD寫入命令或數(shù)據(jù)************************************************************#defineLCD_COMMAND 0//Command#defineLCD_DATA 1//Data#defineLCD_CLEAR_SCREEN 0x01//清屏#defineLCD_HOMING 0x02//光標返回原點voidLCD_Write(bitstyle,unsignedcharinput){LCD_Wait(); LcdEn=0; LcdRs=style; LcdRw=0; _nop_(); DBPort=input; _nop_();//注意順序 LcdEn=1; _nop_();//注意順序 LcdEn=0; _nop_();}//設置顯示模式************************************************************#defineLCD_SHOW 0x04//顯示開#defineLCD_HIDE 0x00//顯示關 #defineLCD_CURSOR 0x02 //顯示光標#defineLCD_NO_CURSOR 0x00//無光標 #defineLCD_FLASH 0x01//光標閃動#defineLCD_NO_FLASH 0x00//光標不閃動voidLCD_SetDisplay(unsignedcharDisplayMode){ LCD_Write(LCD_COMMAND,0x08|DisplayMode); }//設置輸入模式************************************************************#defineLCD_AC_UP 0x02#defineLCD_AC_DOWN 0x00//default#defineLCD_MOVE 0x01//畫面可平移#defineLCD_NO_MOVE 0x00//defaultvoidLCD_SetInput(unsignedcharInputMode){ LCD_Write(LCD_COMMAND,0x04|InputMode);}//移動光標或屏幕************************************************************/*#defineLCD_CURSOR 0x02#defineLCD_SCREEN 0x08#defineLCD_LEFT 0x00#defineLCD_RIGHT 0x04voidLCD_Move(unsignedcharobject,unsignedchardirection){if(object==LCD_CURSOR) LCD_Write(LCD_COMMAND,0x10|direction); if(object==LCD_SCREEN) LCD_Write(LCD_COMMAND,0x18|direction);}*///初始化LCD************************************************************voidLCD_Initial(){ LcdEn=0; LCD_Write(LCD_COMMAND,0x38);//8位數(shù)據(jù)端口,2行顯示,5*7點陣 LCD_Write(LCD_COMMAND,0x38); LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);//開啟顯示,無光標 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);//AC遞增,畫面不動}//*********************************************************************voidGotoXY(unsignedcharx,unsignedchary){ if(y==0) LCD_Write(LCD_COMMAND,0x80|x); if(y==1) LCD_Write(LCD_COMMAND,0x80|(x-0x40));}voidPrint(unsignedchar*str){ while(*str!='\0') {LCD_Write(LCD_DATA,*str);str++;}}voidLCD_LoadChar(unsignedcharuser[8],unsignedcharplace){ unsignedchari; LCD_Write(LCD_COMMAND,0x40|(place*8)); for(i=0;i<8;i++) LCD_Write(LCD_DATA,user[i]);}//****密碼設置******************************//*********************************************************** //************************working****************************voidmain(void){intcount1=0,count4=0,count6=0,count7=0,count8=0; P2_0=1; LCD_Initial(); while(1){ Check_Key();rec_key(); //if((count6==0)&(count7==0)) //{GotoXY(0,0);Print("Locking"); } //if(count4==1) //{GotoXY(0,0);Print("Opening"); } if(sk[15]==1){GotoXY(0,0);count=0;Print("Code:");count1=1; count2=1;count6=1;sk[15]=0;sk[14]=0;m=0;cp[0]=1;} if((count!=0)&&(count1==1)){if(count==1){GotoXY(0,0);Print("Code:*"); }if(count==2){GotoXY(0,0);Print("Code:**");}if(count==3){GotoXY(0,0);Print("Code:***");}if(count==4){GotoXY(0,0);Print("Code:****"); }if(count==5){GotoXY(0,0);Print("Code:*****");}if(count==6){GotoXY(0,0);Print("Code:******");} if(count>6){GotoXY(0,0);Print("Code:******"); count1=0;}}if((sk[14]==1)&(count6==1)){if((password[0]==cq[0])&(password[1]==cq[1])&(password[2]==cq[2])&(password[3]==cq[3])&(password[4]==cq[4])&(password[5]==cq[5])&(count==6)){ GotoXY(0,0);Print("DoorOpen!");sk[14]=0;count=0; count2=0; m=0;count4=1;DelayMs(1000);count6=1;P2_0=0;DelayMs(500);P2_0=1;//密碼正確LCD_Initial(); cp[0]=0;}else{ GotoXY(0,0);Print("Codewrong!");DelayMs(1000);sk[14]=0;count=0;count2=0;count6=0;m=0;p3_6=0;DelayMs(100);DelayMs(3000);p3_6=1; LCD_Initial();cp[0]=0;/密碼錯誤}}if((sk[11]==1)&(cp[0]==0)){GotoXY(0,0);Print("OldCode:");pass=1;count1=0;count=0;count7=1;count2=1;count6=0;sk[11]=0;} if((count!=0)&(pass==1)&(cp[0]==0)) { pass0=0; if(count==1) {GotoXY(0,0);Print("OldCode:*"); } if(count==2) {GotoXY(0,0);Print("OldCode:**");} if(count==3) {GotoXY(0,0);Print("OldCode:***");} if(count==4) {GotoXY(0,0);Print("OldCode:****"); } if(count==5) {GotoXY(0,0);Print("OldCode:*****");} if(count==6)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校教室裝修項目的施工合同
- 新建自建房購買合同樣本
- 全新夫妻離婚前財產(chǎn)分割合同
- 建設工程合同管理規(guī)范
- 度渠道拓展合作合同
- 餐飲服務合同模板與消防相關
- 音樂藝人經(jīng)紀合同范本
- 化工產(chǎn)品出口代理合同書
- 簡易彩鋼瓦合同范本
- Module 6 Unit 3 language in use 教學設計 2024-2025學年外研版八年級英語上冊
- 三叉神經(jīng)痛的護理問題
- 2025北京平谷初三(上)期末數(shù)學真題試卷(含答案解析)
- VQ-100無人機手冊(一)
- 2024年01月河北2024滄州銀行總行科技開發(fā)部招考筆試歷年參考題庫附帶答案詳解
- 2024-2030年中國橡膠密封件行業(yè)運行動態(tài)及發(fā)展前景規(guī)劃研究報告
- 八省八校2025屆高三上學期12月聯(lián)合測評語文試題及參考答案
- 商洛職業(yè)技術學院《會計信息系統(tǒng)單統(tǒng)計學》2023-2024學年第一學期期末試卷
- 生產(chǎn)線搬新場地驗證方案計劃
- 《古詩三首》五年級下冊第一單元教學方案
- 中國農(nóng)業(yè)大學人文與發(fā)展學院管理服務崗位招聘筆試真題2023
- 2025年農(nóng)村婦婦兩癌檢查項目實施方案工作計劃
評論
0/150
提交評論