智能密碼鎖系統(tǒng)總體設計和主要芯片介紹.doc_第1頁
智能密碼鎖系統(tǒng)總體設計和主要芯片介紹.doc_第2頁
智能密碼鎖系統(tǒng)總體設計和主要芯片介紹.doc_第3頁
智能密碼鎖系統(tǒng)總體設計和主要芯片介紹.doc_第4頁
智能密碼鎖系統(tǒng)總體設計和主要芯片介紹.doc_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三章 系統(tǒng)總體設計和主要芯片介紹3.1 系統(tǒng)總體設計本設計主要由單片機、矩陣鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進行各種功能的實現(xiàn)。由用戶通過連接單片機的矩陣鍵盤輸入密碼,后經過單片機對用戶輸入的密碼與自己保存的密碼進行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報警電路控制開鎖還是報警,實際使用時只要將單片機的負載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可。系統(tǒng)整體框圖如圖3-1所示。顯示模塊鍵盤輸入模塊 AT89S52報警電路復位電路開鎖電路密碼存儲模塊 圖3-1 系統(tǒng)結構框圖各模塊功能如下:1鍵盤輸入模塊:分為密碼輸入按鍵與幾個功能按鍵,用于完成密碼鎖輸入功能。2顯示模塊:用于完成對系統(tǒng)狀態(tài)顯示及操作提示功能。3復位電路:完成系統(tǒng)的復位。4報警電路:用于完成輸錯密碼時候的警報功能。5密碼存儲模塊:用于完成掉電存儲功能,使修改的密碼斷電后仍能保存。6開鎖電路:應用繼電器及發(fā)光二極管模擬開鎖,完成開鎖及開鎖提示。3.2 主要芯片介紹3.2.1 AT89S52 AT89S52單片機是一個低功耗,高性能CMOS 8位單片機,片內含8K Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S52可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案10。AT89S52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。AT89S52的管腳分布如圖3-2所示。 圖3-2 AT89S52芯片管腳P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P3口作為AT89S52的一些特殊功能管腳備選功能,P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時器0外部輸入)P3.5 T1(記時器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)AT89S52主要特性如表3-1所示。表3-1 AT89S52主要特性兼容MCS-51指令系統(tǒng)8k可反復擦寫(1000次)ISP Flash ROM32個雙向I/O口4.5-5.5V工作電壓3個16位可編程定時/計數(shù)器時鐘頻率0-33MHz全雙工UART串行中斷口線256x8bit內部RAM2個外部中斷源低功耗空閑和省電模式中斷喚醒省電模式3級加密位看門狗(WDT)電路軟件設置空閑和省電功能靈活的ISP字節(jié)和分頁編程雙數(shù)據(jù)寄存器指針3.2.2 存儲芯片AT24C02 AT24C02是美國Atmel公司的低功耗CMOS型EPROM,內含2568位存儲空間,具有工作電壓寬(2.55.5 V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10 ms)、抗干擾能力強、數(shù)據(jù)不易丟失、體積小等特點。而且他是采用了IC總線式進行數(shù)據(jù)讀寫的串行器件,占用很少的資源和I/O線,并且支持在線編程,進行數(shù)據(jù)實時的存取十分方便。AT24C02中帶有的片內地址寄存器。每寫入或讀出一個數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實現(xiàn)對下一個存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節(jié)的數(shù)據(jù)。I2C總線是一種用于IC器件之間連接的二線制總線。他通過SDA(串行數(shù)據(jù)線)及SCL(串行時鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識別每個器件。 AT24C02正是運用了IC規(guī)程,使用主/從機雙向通信,主機(通常為單片機)和從機(AT24C02)均可工作于接收器和發(fā)送器狀態(tài)。主機產生串行時鐘信號(通過SCL引腳)并發(fā)出控制字,控制總線的傳送方向,并產生開始和停止的條件。無論是主機還是從機,接收到一個字節(jié)后必須發(fā)出一個確認信號ACK。AT24C02的控制字由8位二進制數(shù)構成,在開始信號發(fā)出以后,主機便會發(fā)出控制字,以選擇從機并控制總線傳送的方向。管腳描述:SCL 為串行時鐘:串行時鐘輸入管腳用于產生器件所有數(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 所有的內容都被寫保護只能讀當WP, 管腳連接到Vss 或懸空,允許器件進行正常的讀/寫操作12。管腳圖如圖3-3所示。 圖3-3 AT24C02引腳圖3.2.2 LCD1602顯示器 現(xiàn)在的字符型液晶模塊已經是單片機應用設計中最常用的信息顯示器件了。1602型LCD顯示模塊具有體積小,功耗低,顯示內容豐富等特點。1602型LCD可以顯示2行16個字符,有8位數(shù)據(jù)總線D0D7和RS,R/W,EN三個控制端口,工作電壓為5V,并且具有字符對比度調節(jié)和背光功能。接口信號說明:1602型LCD的接口信號說明如表3-2所示。表3-2 1602型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-3 1602型LCD的主要技術參數(shù)顯示容量162個字符芯片工作電壓4.55.5V工作電流2.0mA(5.0V)模塊最佳工作電壓5.0V字符尺寸2.954.35(WXH)mm基本操作程序:讀狀態(tài):令RS=L,RW=L, E=H 輸出:D0D7=狀態(tài)字讀數(shù)據(jù):令RS=H,RW=H, E=H 輸出:無寫指令:令RS=L,RW=L,D0D7=指令碼,E=高脈沖 輸出:D0D7=數(shù)據(jù)寫數(shù)據(jù):令RS=H,RW=L, D0D7=數(shù)據(jù), E=高脈沖 輸出:無 第四章 硬件設計本系統(tǒng)外圍電路包括鍵盤輸入部分、密碼存儲部分、復位部分、顯示部分、報警部分、開鎖部分組成,根據(jù)實際情況鍵盤輸入部分選擇44矩陣鍵盤,顯示部分選擇字符型液晶顯示LCD1602,密碼存儲部分選用AT24C02芯片來完成。其原理圖如圖4-1所示。圖4-1 電路原理圖4.1 鍵盤輸入模塊由于本設計所用到的按鍵數(shù)量較多而不適合用獨立按鍵式鍵盤。采用的是矩陣式按鍵鍵盤,它由行和列組成,也稱行列式鍵盤,按鍵位于行列的交叉點上,密碼鎖的密碼由鍵盤輸入完成,與獨立式按鍵鍵盤相比,要節(jié)省很多I/O口。本設計中使用的這個44鍵盤不但能完成密碼的輸入還能作特別功能鍵使用。鍵盤的每個按鍵功能在程序設計中設置。它與單片機的連接如圖4-2所示。圖4-2 鍵盤輸入模塊4.2 密碼存儲模塊圖4-3所示AT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在AT89S51試驗開發(fā)板上它們都接地,第5腳和第8腳分別為正、負電源。第8腳SDL為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過這條雙向IC總線串行傳送,在AT89S52試驗開發(fā)板上和單片機的P3.6連接。第6腳SCL為串行時鐘輸入線,在AT89S52試驗開發(fā)板上和單片機的P3.7連接。SDL和SCL都需要和正電源間各接一個5.1K的電阻上拉。第6腳接P3.5。AT24C02中帶有片內地址寄存器。每寫入或讀出一個數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實現(xiàn)對下一個存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節(jié)的數(shù)據(jù)。圖4-3 密碼存儲電路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 提示輸入密碼GotoXY(0,0);count=0;Print(Code: );count1=1;count2=1;count6=1;sk15=0; sk14=0;m=0;cp0=1;if(count!=0)&(count1=1) /LCD上顯示* 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(count6)GotoXY(0,0); Print(Code:* );count1=0;if(sk14=1)&(count6=1) /按下確認,剛進入較驗/密碼正確if(password0=cq0)&(password1=cq1)&(password2=cq2)&(password3=cq3)&(password4=cq4)&(password5=cq5)&(count=6 )GotoXY(0,0); Print(Door Open! );sk14=0; count=0;count2=0; m=0; count4=1;DelayMs(1000); count6=1; P2_0=0;DelayMs(500);P2_0=1;/密碼錯誤 LCD_Initial(); cp0=0;else GotoXY(0,0); Print(Code wrong! );DelayMs(1000);sk14=0; count=0; count2=0; count6=0; m=0; p3_6=0;DelayMs(100);DelayMs(3000);p3_6=1; LCD_Initial(); cp0=0; /密碼錯誤5.2.2 按鍵掃描子程序 void Check_Key(void)unsigned int row,col,tmp1,tmp2;tmp1 = 0x10; /tmp1用來設置P1口的輸出,取反后使P1.4P1.7中有一個為0for(row=0;row4;row+) / 行檢測P1 = 0x0f; / 先將p1.0P1.3置高P1 =tmp1; / 使P1.4p1.7中有一個為0tmp1*=2; / tmp1左移一位if (P1 & 0x0f) 0x0f) / 檢測P1.0P1.3中是否有一位為0,只要有,則說明此行有鍵按下,進入列檢測DelayMs(30);if (P1 & 0x0f) 0x0f) / 檢測P1.0P1.3中是否有一位為0,只要有,則說明此行有鍵按下,進入列檢測 tmp2 = 0x01; / tmp2用于檢測出哪一列為0for(col =0;col按鍵盤認鍵,較驗舊密碼/舊密碼輸入正確if(password0=cq0)&(password1=cq1)&(password2=cq2)&(password3=cq3)&(password4=cq4)&(password5=cq5)&(pass=1)&(count=6)GotoXY(0,0); Print(New Code: );pass0=1;pass=0;sk14=0;count=0;count7=0;n=0;m=0;elseGotoXY(0,0); Print(Old Code Wrong! ); /舊密碼輸入錯誤sk14=0;count2=0;count7=0;pass=0;m=0;if(pa!=10)&(pass0=1)if(n=7)&(count=6)GotoXY(0,0); Print(Set Over! ); /舊密碼輸入正確,存新密碼cq0=co1;cq1=co2;cq2=co3;cq3=co4;cq4=co5;cq5=co6;n=0;pass0=0;pass1=1;sk14=0;count=0;count2=0;m=0;count7=0;elseGotoXY(0,0); Print(Set Wrong! ); /密碼過多或過少,報錯sk14=0;count2=0;count=0;count7=0;m=0; 附錄一 總電路原理圖附錄二 實物圖附錄三 元器件清單序號元件名稱型號與規(guī)格單位數(shù)量1電阻1K個6470個15.1K個210K個12三極管8550個23發(fā)光二極管個14晶振12M個15電容10uf個120pf個26按鈕開關個177芯片AT24C02塊1AT89S52塊18蜂鳴器5V個19繼電器5V個110液晶顯示器1602塊111實驗板塊1附錄四 系統(tǒng)總體程序#include #include #include #include #define uchar unsigned char;#define uint unsigned int;/Port Definitions*sbit p3_6=P21;sbit LcdRs= P32;sbit LcdRw= P31;sbit LcdEn = P30;sfr DBPort = 0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口sbit P2_0=P20;uint key_val=16;uint m=0,count=0,count2=0;uint pass=0,pass0=0,pass1=0,pass2=0,o=0,n=0;uint co6=0,0,0,0,0,0;uint cp1=0;uint cq7=0,0,0,0,0,0,0; uchar sk16=0,0,0,0,0,0,0,0,0,0,0,0,0,0,pa=10; uchar password6;void DelayMs(unsigned int n) unsigned int i,j; for(i=0;in;i+) for(j=0;j120;j+); /*按鍵掃描*/ void Check_Key(void)unsigned int row,col,tmp1,tmp2;tmp1 = 0x10; /tmp1用來設置P1口的輸出,取反后使P1.4P1.7中有一個為0for(row=0;row4;row+) / 行檢測P1 = 0x0f; / 先將p1.0P1.3置高P1 =tmp1; / 使P1.4p1.7中有一個為0tmp1*=2; / tmp1左移一位if (P1 & 0x0f) 0x0f) / 檢測P1.0P1.3中是否有一位為0,只要有,則說明此行有鍵按下,進入列檢測DelayMs(30);if (P1 & 0x0f) 0x0f) / 檢測P1.0P1.3中是否有一位為0,只要有,則說明行有鍵按下,進入列檢測 tmp2 = 0x01; / tmp2用于檢測出哪一列為0for(col =0;col6)m=0;if(count2=1)if(key_val=0) / delay(1000) ;sk0=1 ;count+;pa=0;passwordm=0;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(key_val=1)/delay(1000) ;sk1=1 ;count+;pa=1;passwordm=1;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=2)/delay(1000) ;sk2=1 ;count+;pa=2;passwordm=2;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=3)/delay(1000) ;sk3=1 ;count+;pa=3;passwordm=3;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=4)/delay(1000) ;sk4=1 ;count+;pa=4;passwordm=4;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(key_val=5)/delay(1000) ;sk5=1 ;count+;pa=5;passwordm=5;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=6)/delay(1000) ;sk6=1 ;count+;pa=6;passwordm=6;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=7)/delay(1000) ;sk7=1 ;count+;pa=7;passwordm=7;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=8)/delay(1000) ;sk8=1 ;count+;pa=8;passwordm=8;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=9)/delay(1000) ;sk9=1 ;count+;pa=9;passwordm=9;m+;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(m9)m=0;if(key_val=10)/delay(1000) ;sk10=1 ;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16; if(key_val=11)/delay(1000) ;sk11=1 ;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(key_val=12)/delay(1000) ;sk12=1 ;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(key_val=13)/delay(1000) ;sk13=1 ;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(key_val=14)/delay(1000) ;sk14=1 ;DelayMs(10);p3_6=0;DelayMs(200);p3_6=1;key_val=16;if(key_val=15)/delay(1000) ;sk15=1;DelayMs(10);p3_6=0;DelayMs(100);p3_6=1;key_val=16;if(m10)m=0; /內部等待函數(shù)*unsigned char LCD_Wait(void)LcdEn=0;LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();LcdEn=0;_nop_();while(DBPort&0x80)/在用Proteus仿真時,注意用屏蔽此語句,在調用GotoXY()時,會進入死循環(huán),/可能在寫該控制字時,該模塊沒有返回寫入完備命令,即DBPort&0x80=0x80/實際硬件時打開此語句return DBPort;/向LCD寫入命令或數(shù)據(jù)*#define LCD_COMMAND0 / Command#define LCD_DATA1 / Data#define LCD_CLEAR_SCREEN0x01 / 清屏#define LCD_HOMING 0x02 / 光標返回原點void LCD_Write(bit style, unsigned char input) LCD_Wait();LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();/注意順序LcdEn=1;_nop_();/注意順序LcdEn=0;_nop_();/設置顯示模式*#define LCD_SHOW0x04 /顯示開#define LCD_HIDE0x00 /顯示關 #define LCD_CURSOR0x02 /顯示光標#define LCD_NO_CURSOR0x00 /無光標 #define LCD_FLASH0x01 /光標閃動#define LCD_NO_FLASH0x00 /光標不閃動void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND, 0x08|DisplayMode);/設置輸入模式*#define LCD_AC_UP0x02#define LCD_AC_DOWN0x00 / default#define LCD_MOVE0x01 / 畫面可平移#define LCD_NO_MOVE0x00 /defaultvoid LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND, 0x04|InputMode);/移動光標或屏幕*/*#define LCD_CURSO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論