【正文】
掃描行線值 鹽城工學(xué)院課程設(shè)計說明書( 20xx) 41 switch(temp) { case 1:keynum=1。 case 2:keynum+=2。 aa=Recstring(0xa0,1,buffer,6)。 } } Display_String(DSY_BUFFER1,0xc0)。 error++。 break。 init()。(Userpassword[k+1]==Mem[k])。 aa=Recstring(0xa0,1,buffer,6)。 break。 } if(error5) //如果錯誤次數(shù)達(dá)到五次長鳴報警,并清除顯示 while(1) {Display_String( ,0x80)。i200。 aa=Sendstring(0xa0,1,Mem,6)。 m++。k6。 delayms(1000)。 Display_String(table,0x80)。 IS_valid_user = 1。 for(n=0。 delayms(5)。 switch(temp) { case 8:keynum+=0。 } } uchar Keys_Scan() { uchar temp,keynum。 if(!sendbyte(slave)) return 0。 } uchar Recstring(uchar slave,uchar subaddr,uchar *buffer,uchar n) { uchar i。i++) { sda=(bit)(wdamp。 sda=1。 } void init() //初始化 { sda=1。 write_(0x01)。 rd=0。 void delayms(uint z) { uint x,y。 sbit scl=P3^3。 開始 N 有鍵輸入? 掃描鍵盤 Y 是數(shù)字鍵? 輸入的密碼長度小于 6? 將輸入的數(shù)放入數(shù)組 在顯示器上顯示 “ *” 是取消鍵? 輸入的密長度大于 0? 清除數(shù)組中的最后一位數(shù) 清除顯示器上的最后一個“ *” 是確認(rèn)鍵? 結(jié)束 Y N N N N Y Y Y N Y 鹽城工學(xué)院課程設(shè)計說明書( 20xx) 23 報警子程序 報警子程 序的原理很簡單,即當(dāng)輸入密碼錯誤次數(shù)超過規(guī)定的最高允許次數(shù)時,不斷給蜂鳴器脈沖,使其不斷發(fā)音。 AT24C04 收到主機(jī)的應(yīng)答信號后繼續(xù)發(fā)送數(shù)據(jù),直到主機(jī)不發(fā)送應(yīng)答信號響應(yīng)而發(fā)送停止信號后操作結(jié)束。對于高于 8 位的 地址,主機(jī)連續(xù)發(fā)送兩個 8 位字節(jié)地址寫入AT24C04 中,主機(jī)在收到 AT24C04 的另外一個應(yīng)答信號后再發(fā)送數(shù)據(jù)到被尋址的存儲單元, AT24C04 再次應(yīng)答,并在主機(jī)發(fā)出停止信號后開始內(nèi)部數(shù)據(jù)的擦寫。 在本設(shè)計中, ~ 為行輸出口, ~ 為列輸出口。當(dāng) 然要有一定的權(quán)限的啦 仿真圖如下圖 311 鹽城工學(xué)院課程設(shè)計說明書( 20xx) 14 圖 311 密碼初始化電仿真圖 4 程序設(shè)計 軟件總體設(shè)計 根據(jù)電子密碼鎖的實際應(yīng)用要求和其應(yīng)該具有的功能,本次設(shè)計的主程序流程圖如圖 41 所示。 圖 36 顯示器電路 使用 LCD1602 可以輕松的實現(xiàn)所有 字母和符號顯示,顯示功能豐富,驅(qū)動程序簡單。其原理圖如圖 35 所示。 密碼鎖電路包含:矩陣鍵盤輸入、 LCD指示電路、報警控制電路、 AT24C02 掉電存儲電路。電子密碼鎖要想取代機(jī)械鎖成為市場上的主流,就必須不斷改進(jìn),在具有更多功能的同 時向更智能化和更低成本化發(fā)展。報警功能無疑更增加了鎖的安全性。自古以來鎖都是人們財產(chǎn)安全乃至生命安全的一種重要保障。 (2)操作簡單。 基于單片機(jī)的電子密碼鎖的出現(xiàn),在一定程度上解決了用戶私人財產(chǎn)安全的問題。 鹽城工學(xué)院課程設(shè)計說明書( 20xx) 7 方案確立 (1)為了實現(xiàn)密碼的保密性,采用一個 44 的矩陣式鍵盤可以任意設(shè)置用戶密碼,從而提高了密碼的保密性。當(dāng)采用內(nèi)部時鐘時,連接方法如下圖所示,在晶振引腳 XTAL1( 19腳)和 XTAL2( 18 腳)引腳之間接入一個 晶振,兩個引腳對地分別再接入一個電容即可產(chǎn)生所需的時鐘信號,電容的容量一般在幾十皮法,如 20PF。開鎖時,按下鍵盤上的開鎖按鍵后,利用 鍵盤上的數(shù)字鍵 0- 9 輸入密碼,每按下一個數(shù)字鍵后在顯示器上顯示一個 *,輸入多少位就顯示多少個 *。通過控制輸入脈沖的頻率還能控制蜂鳴器的發(fā)音頻率。在給按鍵確定鍵值時必須采用同一種算法,并且計算出來的鍵值應(yīng)該是互不相同的。 寫操作方式 兩種寫操作方式為:字節(jié)寫和頁寫。主機(jī) 置通過 R/W——位為 0,發(fā)送開始信號、 AT24C04 地址和欲讀取的字節(jié)數(shù)據(jù)地址來執(zhí)行一次偽操作,在 AT24C04 應(yīng)答后,主機(jī)再一次發(fā)送開始信號和 AT24C04的地址,此時 R/W——位置 1, AT24C04 響應(yīng)并應(yīng)答信號,然后輸出字節(jié)數(shù)據(jù),最后主機(jī)以一 個停止信號結(jié)束數(shù)據(jù)的讀取。取消鍵的功能是退格。_nop_()。 sbit led1=P2^7。 鹽城工學(xué)院課程設(shè)計說明書( 20xx) 33 delayms(3)。 write_(0x38)。 sda=1。 sda=0。 bit ack0。 scl=0。 return 1。i16。 } P1=0xF0。 relay=1。 i++。 //點(diǎn)亮 LED relay=0。 case 10: //按 Lock 鍵上鎖 led=1。 } break。k6。 Display_String(table,0x00)。 Mem[6]=0。 Display_String(THIEF!!!THIEF!!!,0xc0)。 while(1) {led1=!led1。 clear_password()。 Display_String(Will lock again ?? ,0xc0)。 delayms(1000)。 鹽城工學(xué)院課程設(shè)計說明書( 20xx) 48 if(m0) //在第二次輸入密碼 { for(k=0。 delayms(1000)。 Display_String(ERROR!Retry : ,0xc0)。k6。 if(P1!=0x0f) { 鹽城工學(xué)院課程設(shè)計說明書( 20xx) 43 temp=Keys_Scan()。break。break。 } void clear_password() { uchar i。in1。 wd=1。 scl=0。 scl=0。 sda=0。 } void Display_String(uchar *p,uchar ) { uchar i。} void write_(uchar ) { rs=0。 uchar Userpassword[6]={0}。本系統(tǒng)利用單片機(jī)控制, LCD 顯示,配合蜂鳴器提示,系統(tǒng)成本低廉,功能強(qiáng)大實用。 程序中,使定時器 0 每 50 毫秒產(chǎn)生一次中斷,因此中斷每產(chǎn)生 20 次為 1 秒,當(dāng)秒數(shù)為 20 時(每次有鍵輸 入時都執(zhí)行 50 毫秒數(shù)和秒數(shù)清 0 操作),關(guān)閉屏幕,并禁止鍵盤輸入。 讀操作方式 (1)讀當(dāng)前地址內(nèi)容。 以下是 LCD1602 從第一行第一列開始顯示 N( 0N≤16)個字符的程序流程圖。 (2) 識別被按下的鍵的位置。 圖 39 開鎖顯示電路 由于單片機(jī) I/O 口默認(rèn)為高電平,故初始時二極管不亮,代表鎖是閉著的。具體方法是:向行線輸出全掃描字00H,把全部列線置成低電平,然后將列線的電平狀態(tài)讀入累加器 A 中。但單片機(jī)本身是不能自動進(jìn)行復(fù)位的,必須配合相應(yīng)的外部電路才能實現(xiàn)。相對于笨重而構(gòu)造簡 單的傳統(tǒng)機(jī)械鎖來說,電子密碼鎖具有體積小,可靠性高的優(yōu)勢。特別是傳統(tǒng)的機(jī)械鎖,由于其構(gòu)造簡單,在慣偷面前,甚至能夠只用一根鐵絲就直接將其 打開,使其失去了保障用戶個人財產(chǎn)安全的意義。在設(shè)計中, 利用識別密碼是否正確來開鎖或報警,通過串行存儲器 AT24C02 來實現(xiàn)密碼的修改和存儲 關(guān)鍵詞 :單片機(jī);密碼鎖;矩陣鍵盤;掉電存儲 The Design Of Electronic Code Lock Based On Single Chip Microputer Abstract: As sealed device, the lock added to such objects like door, box, drawer etc, can be opened with specified key. Since the ancient time, lock is a kind of security, guaranteeing people’s property safety even life safety. With the development of human history and more attention paid to property safety and life safety, various multifunctional locks can be seen in the world. Traditional mechanical locks people use in life are gradually replaced by electronic bination lock characterized with better safety performance and more functions. In the modern society, electronic bination lock is a noun familiar to everyone. Usually, the door of munity is equipped with electronic bination lock. This paper will introduce an electronic bination lock. This lock controls the electric circuits and the performance of chips by identifying password. Thus, the openness and closeness of the lock can be controlled, and the task of electronic lock device can be pleted. This design is about bination lock, based on the AT89C51 singlechip microputer as the core of controlling goals. This design in which the AT89C51 singlechip microputer as the core of the controlling goals cooperated with relevant circuits and software programs can achieve such functions lik