




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、設(shè)計(jì)任務(wù)與要求1、能夠?qū)崿F(xiàn)密碼開關(guān)鎖功能。2、能更改原密碼。3、系統(tǒng)有報(bào)警功能。4、24C02能存儲密碼。5、采用12864液晶顯示。硬件框圖于說明AT89J12864液晶顯示模塊矩陣鍵盤控制C51單片報(bào)警模塊儲存器模塊設(shè)計(jì)的目的是開發(fā)一種功能多,電路簡單,性能穩(wěn)定可靠的電子密碼鎖,該密碼鎖系統(tǒng)通過AT89C51系列單片機(jī)對各個模塊電路進(jìn)行控制,并對輸入信號進(jìn)行分析、運(yùn)算、處理, 從而控制繼電器開鎖與 12864準(zhǔn)確的顯示。該系統(tǒng)主要分5大模塊:密碼存儲模塊、矩陣鍵盤控制模塊、報(bào)警模塊、12864液晶顯示模塊,如圖所示。信號輸入模塊:利用矩陣鍵盤按鍵電平的變化實(shí)現(xiàn)密碼輸入和密碼更改。三.電路原
2、理圖與說明. AT89C51 模塊如圖所示,使用的是 AT89C51.密碼存儲模塊AT24C02是美國ATEML公司生產(chǎn)的低功耗 COMS型,rC總線接 口的E2PROM存儲器,其內(nèi)含 256x8為存儲空間,具有工作電壓寬 (1.8V-5.5V )、擦寫次數(shù)多(大于 1000次)、寫入速度快(小于 10mS)、抗干擾能力強(qiáng)、 數(shù)據(jù)不易丟失、體積小等特點(diǎn)。采用了i2c總線進(jìn)行數(shù)據(jù)讀寫的串行器件,占用很少的資源和I/O線,而且支持在線編程,實(shí)時存取數(shù)據(jù)十分方便,如圖所示。ELI muRSTFt WOO 事的1 Pft陽子 FflMQ) Ft-KMFflLWlBi 可阻,F(xiàn)71MA njAin 穌件
3、“ “癡A” P2I3 FIQAM 州 FftlSPJST ME 面用嶼鋁RarrrPSQMJflP9F.Eir加/3 口切Q3.矩陣鍵盤控制模塊鍵盤可以分為獨(dú)立連接式和行列式(矩陣式)兩類。根據(jù)設(shè)計(jì)要求,本電路設(shè)計(jì)采用4X4行列式鍵盤,同時也能減少鍵盤與單片機(jī)接口時所占用的I/O線的數(shù)目。矩陣式鍵盤又叫行列式鍵盤。用I/O 口線組成行列結(jié)構(gòu),按鍵設(shè)置在行列的交叉點(diǎn)上。本電對鍵的識別通常用逐行掃描查詢法。首先判另鍵盤中有無按鍵按下,由單片機(jī)I/O 口向鍵盤送(輸出)全掃描字,然后讀入(輸入)列線狀態(tài)來判斷。方法是:向行線輸 出全掃描字00H,把全部行線置為低電平,然后將列線的電平狀態(tài)讀入累加器
4、 A中。如果有鍵按下,總會有一根列線電平拉至低電平,從而使列輸入不全為1。鍵盤中哪一個鍵按下,是由行線逐行置低電平后,檢查列輸入狀態(tài)實(shí)現(xiàn)的,其方法是:依次給行線送低2.4所示。電平,然后查所有列線狀態(tài), 如果全為1 ,則所按下的鍵不在此路采用4條行線和4條列線,即可組成具有4X4個按鍵的鍵盤。其電路圖如下圖陣鍵盤實(shí)物如圖。行,如果不全為1,則所按下的鍵必在此行,而且是在與零電平列線相交的交點(diǎn)上的那個鍵。矩0上鎖未定義修改密碼 JL24C02CI GTSOK A1SDA A2WP24C023.報(bào)警模塊報(bào)警部分由蜂鳴器發(fā)聲裝置及外圍電路組成,高電平發(fā)聲,當(dāng)輸入6次密碼錯誤時,單片機(jī)的P2.5引腳為
5、高電平,蜂鳴器發(fā)聲報(bào)警,如圖所示。當(dāng)鎖處于上鎖狀態(tài)時,P2.3 為高電平,LED導(dǎo)通發(fā)光,表示鎖是閉合的。220上拉電阻是起到限流作用,主要是能讓LED達(dá)到導(dǎo)通電壓。5.12864液晶顯示模塊本系統(tǒng)采用LCD12864液晶顯示,用于直觀地提示用戶輸入開鎖密碼、密碼信息的正誤 提示、開鎖信息的顯示等,顯示整個電子密碼鎖的工作狀態(tài),如下圖所示。表一 12864液晶顯示引腳功能表管腳號管腳名稱W管教功能描述1GND0地2VDD+5V %10電源電壓+5V3VO0-10液晶顯示驅(qū)動電壓4RSHLRS= H“DB7DB0為顯示數(shù)據(jù)RS= L”表示DB7DB0為指令數(shù)據(jù)5R/WHLRW= H”數(shù)據(jù)被讀至i
6、j DB77DB0RW= L DB7DB0的數(shù)據(jù)寫至ij IR或DR6EHL數(shù)據(jù)線7DB0HL數(shù)據(jù)線8DB1HL數(shù)據(jù)線9DB2HL數(shù)據(jù)線10DB3HL數(shù)據(jù)線11DB4HL數(shù)據(jù)線12DB5HL數(shù)據(jù)線13DB6HL數(shù)據(jù)線14DB7HL數(shù)據(jù)線15FSBHL并串/行接口選擇H并行L串行16N.CHL空腳17RSTHL復(fù)位信號18VEE-10LCD驅(qū)動負(fù)電壓輸入19LEDK+5背光電源20LEDA0背光四.軟件設(shè)計(jì)1.主要模塊流程圖鍵盤掃描顯示上鎖鍵盤掃描提不確認(rèn)首2.原程序清單與注釋主模塊:Main.c#include#include display.h#include 24c02.h#include
7、 password.h#include delay.h#include keyscan.h#include 12864.h#define uchar unsigned char#define uint unsigned int extern uchar flag;#define GPIODIG P0/鍵盤標(biāo)志位/uchar data mima7=1,2,3,4,5,6,0;uchar data mima17=0,0,0,0,0,0,0;uchar data mima27=0,0,0,0,0,0,0;uchar data mima_write7=0,0,0,0,0,0,0;uchar data
8、mima_read7=0,0,0,0,0,0,0;sbit lock=P2A3;sbit speaker=P2A5;unsignedcharcodeDIG_CODE16=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x67,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;/*初始密碼123456,第一次下載程序后先修改密碼,但不能按返回鍵,把 uchar data mima7=1,2,3,4,5,6,0; for(k=0;k6;k+)write_add(23+k,mimak);Delay10ms(1);去
9、掉,再次下載即可*/void main()uchar j,k,q,counter1,counter2,counter3,counter4,warn;while(1)speaker=0;counter1=0;counter2=0;counter3=0;counter4=0;lock=1;system_init();i2cinit();display_enterpassword();/*for(k=0;k6;k+)write_add(23+k,mimak);Delay10ms(1);*/for(k=0;k=0&j=9&counter10)(LCD_PutString(counter1,2,);mi
10、ma_writecounter1=0;counter1-; j=0;flag=0;if(compare_mima(mima_read,mima_write)=1)(display_open_door();delay_1ms(100);display_welcome();lock=0;for(;j!=14;)密碼后,返回輸入密碼界面,返回鍵 14鍵(j=keyscan1();if(j=12&flag=1) / 改密碼鍵 12(確認(rèn)鍵10/開始輸入09/修改輸入11鍵輸入完畢,比較密碼上鎖后或剛開鎖和改完display_old_password();clear_mima(mima_write);j
11、=0;for(;j!=10;)(j=keyscan1();if(j=0&j=9&counter20)(LCD_PutString(counter2,2,);mima_writecounter2=0;counter2-; if(compare_mima(mima_read,mima_write)=1)比較密碼( display_new_password(); clear_mima(mima1);delay_1ms(50);clear_mima(mima2);delay_1ms(50);j=0;for(;j!=10;)開始輸入新的密(j=keyscan1();if(j=0&j=9&counter3
12、0) (LCD_PutString(counter3,2, );mima_writecounter3=0;counter3-;) ) display_enter_again(); j=0; for(;j!=10;)確認(rèn)輸入新密碼 j=keyscan1(); if(j=0&j=9&counter40) LCD_PutString(counter4,2, ); mima_writecounter4=0;counter4-; ) ) ) j=0; delay_1ms(100); if(compare_mima(mima1,mima2)=1)比較新密碼新密碼錯誤 display_modify_succ
13、ess(); delay_1ms(1000); for(k=0;k5)for(q=0;q5;q+)speaker=1;Delay10ms(50);speaker=0;Delay10ms(50);液晶顯示模塊:12864.C#include #include ”12864.h”#include delay.hsbit RW=P2A6;sbit E=P2A7;/*/函數(shù)功能:延時函數(shù)/*/ void Delay(uint tt) while(tt-); /*/函數(shù)功能:寫入命令/*/ void Lcd_WriteCmd(uchar LData)uchar i;E=0;RW=1;for(i=0;i5
14、;i+)(E=1;E=0;)RW=0;E=1;E=0;RW=0;E=1;E=0;RW=0;E=1;E=0;for(i=0;i4;i+)(RW=(bit)(LData&(0 x80);E=1;E=0;LData=LData1;)RW=0;for(i=0;i4;i+)(E=1;E=0;)Delay(80);for(i=0;i4;i+)(RW=(bit)(LData&(0 x80);E=1;E=0;LData=LData1;)RW=0;for(i=0;i4;i+)(E=1;E=0;) /*/函數(shù)功能:將數(shù)據(jù)寫入液晶模塊/入口參數(shù):y(為字符常量)/*/ void Lcd_WriteData(ucha
15、r LData) (uchar i;E=0;RW=1;for(i=0;i5;i+)(E=1;E=0;)RW=0;E=1;E=0;RW=1;E=1;E=0;RW=0;E=1;E=0; for(i=0;i4;i+) (RW=(bit)(LData&(0 x80);E=1;E=0;LData=LData1;RW=0;for(i=0;i4;i+)(E=1;E=0;Delay(50);for(i=0;i4;i+)(RW=(bit)(LData&(0 x80);E=1;E=0;LData=LData1;RW=0;for(i=0;i0)(Lcd_WriteData(*s);s+;delay_50us(10)
16、;void display_data(uchar x,uchar y,uint num)/ 顯示數(shù)字(uchar a;switch(y)(Lcd_WriteCmd(0 x80+x);break;Lcd_WriteCmd(0 x90+x);break;Lcd_WriteCmd(0 x88+x);break;Lcd_WriteCmd(0 x98+x);break;default:break;a=num%10;/個位Lcd_WriteData(a+0 x30);存儲器模塊:24c02.c#include#include 24c02.hsbit sda=P2A0;sbit scl=P2A1;void
17、i2cdelay() ; /*i2c開始信號*/void start() 開始信號sda=1;i2cdelay();scl=1;i2cdelay();sda=0;i2cdelay();)/*i2c停止彳t號*/void stop() / 停止(sda=0;i2cdelay();scl=1;i2cdelay();sda=1;i2cdelay();)/*i2c應(yīng)答函數(shù)*/void respons() 應(yīng)答(uchar i;scl=1;i2cdelay();while(sda=1)&(i250)i+;scl=0;i2cdelay();)/*i2c初始化函數(shù)*/void i2cinit()(sda=1
18、;i2cdelay();scl=1;i2cdelay();)/*存儲字節(jié)函數(shù) 傳遞參數(shù):uchar型數(shù)據(jù)*/void write_byte(uchar date)(uchar i,temp;temp=date;for(i=0;i8;i+) (temp=temp1;scl=0;i2cdelay();sda=CY;i2cdelay();scl=1;i2cdelay();/ scl=0;/ delay();)scl=0;i2cdelay();sda=1;i2cdelay();)/*讀取字節(jié)函數(shù)傳遞參數(shù):無*/uchar read_byte() uchar i,k;scl=0;i2cdelay();s
19、da=1;i2cdelay();for(i=0;i8;i+)scl=1;i2cdelay();k=(k1)|sda;scl=0;i2cdelay();)return k;)*/*存儲數(shù)據(jù)函數(shù) 傳遞參數(shù): 地址,uchar型數(shù)據(jù) void write_add(uchar address,uchar date)start();write_byte(0 xa0);respons();write_byte(address);respons();write_byte(date);respons(); stop();)/*讀取數(shù)據(jù)函數(shù)傳遞參數(shù):地址*/uchar read_add(uchar addres
20、s) (uchar date;start();write_byte(0 xa0);respons();write_byte(address);respons(); start();write_byte(0 xa1);respons();date=read_byte(); stop();return date;)#include #include Delay.h#include keyscan.h#define GPIO P0 uchar flag;矩陣鍵盤掃描keyscan.cuchar keyscan1() (uchar temp,key1;flag=0;GPIO = 0 xfe;temp
21、= GPIO;temp = temp&0 xf0; if(temp!=0 xf0) (去抖動delay_1ms(10);temp = GPIO;temp = temp&0 xf0; if(temp!=0 xf0) (flag=1;temp = GPIO; switch(temp)case 0 xee: keyl = 0;break;case 0 xde: keyl = 1;break;case 0 xbe: keyl = 2;break;case 0 x7e: keyl = 3;break;)while(temp!=0 xf0)(temp = GPIO;temp = temp&0 xf0;)G
22、PIO = 0 xfd;temp = GPIO;temp = temp&0 xf0;if(temp!=0 xf0)(delay_1ms(10);temp = GPIO;temp = temp&0 xf0; if(temp!=0 xf0)(flag=1;temp = GPIO; switch(temp) (case 0 xed: keyl = 4;break;case 0 xdd: keyl = 5;break;case 0 xbd: keyl = 6;break;case 0 x7d: keyl = 7;break;)while(temp!=0 xf0)(temp = GPIO;temp = temp&0 xf0; )GPIO = 0 xfb;temp = GPIO;temp = temp&0 xf0;if(temp!=0 xf0)(delay_1ms(10);temp = GPIO;temp = temp&0 xf0;if(temp!=0 xf0)(flag=1;temp = GPIO;switch(temp)(case 0 xeb: key1 = 8;break;case 0 xdb: key1 = 9;break;case 0 xbb: key1 = 10;break; case 0 x7b: key1 = 11;break;while(temp!=0 xf0)(tem
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微碳鉻鐵企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報(bào)告
- 感光紙生產(chǎn)設(shè)備企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 2025年物流師職業(yè)技能鑒定模擬試卷:物流企業(yè)智能制造與自動化試題集
- 2025年物流師職業(yè)技能鑒定模擬試卷:物流企業(yè)物流企業(yè)物流企業(yè)物流信息化建設(shè)與系統(tǒng)維護(hù)試題
- 腰椎間盤突出癥護(hù)理查房
- 成卷用梳棉機(jī)企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 2025年小學(xué)語文畢業(yè)升學(xué)考試全真模擬卷(口語交際與綜合實(shí)踐)歷年真題解析
- 2025年小學(xué)英語畢業(yè)考試聽力專項(xiàng)試題:校園生活場景聽力挑戰(zhàn)
- 單回路調(diào)節(jié)儀表企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 建筑材料制造企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 工業(yè)和信息化部產(chǎn)業(yè)發(fā)展促進(jìn)中心招聘筆試真題2024
- 2025年醫(yī)保知識競賽題庫及答案:新政策調(diào)整下的醫(yī)保選擇
- 呼吸科知識解剖課件
- 幼兒園教育評估指南解讀
- 模擬雨的形成課件
- 《旅游策劃實(shí)務(wù)》課件-《秦嶺北望 千古》長安西安五天四晚親子家庭定制游方案
- 建設(shè)單位保證安全生產(chǎn)措施方案
- 2025年新音樂節(jié)明星藝人歌手演出場費(fèi)報(bào)價單
- 2025年人保應(yīng)聘考試試題及答案
- 新視野大學(xué)英語(第四版)讀寫教程2(思政智慧版) 教案 Unit 5 Striving for financial health
- 幼兒園獲獎公開課:大班科學(xué)活動《茶》課件
評論
0/150
提交評論