已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
畢業(yè)設(shè)計(jì) 基于at89s51的密碼柜控制器設(shè)計(jì) 基于at89s51的密碼柜控制器設(shè)計(jì)鄒佳輝摘要:隨著社會(huì)物質(zhì)財(cái)富的日益增長和科技文明的高速發(fā)展,安全防盜已成為一個(gè)備受關(guān)注的社會(huì)問題。而互開率極高的機(jī)械鎖泛濫成災(zāi),有諸多安全隱患。本文使用單片機(jī)設(shè)計(jì)了一個(gè)密碼柜控制器。設(shè)計(jì)中,使用單片機(jī)at89s51作為主控芯片,e2prom at24c02作為數(shù)據(jù)存儲(chǔ)器,并結(jié)合外圍電路進(jìn)行設(shè)計(jì)。該控制器具有密碼輸入、密碼比對、密碼修改、錯(cuò)誤報(bào)警和狀態(tài)顯示等功能。論文詳細(xì)描述了控制器的設(shè)計(jì)方案,給出了各功能模塊的程序流程圖和代碼清單。經(jīng)測試表明,該控制器的軟件運(yùn)行正常,可以實(shí)現(xiàn)設(shè)計(jì)目標(biāo)。關(guān)鍵詞:密碼柜;單片機(jī);led顯示;at89s51;at24c024design of code cabinet controller based on at89s51li liangcollege of physics and electronic information electrical engineering and automation no:070544*tutor: cui *abstract: with the growing material wealth of the society and the rapid development of science and technology, security has become a social problem which should be paid more attention. the mechanical locks can be opened mutually which has become a safety hazard. in this paper, a design of the code cabinet controller based on mcu is proposed. the design is accomplished by using at89s51 and at24c02 as the main controller chip and the data memory. in addition, external circuit is also adopted to finished the design. the controller has many functions such as password inputting, password comparing, password modifying, error warning and state displaying etc. in this thesis, the design method of the controller is described in detail, and the program flow chart and code list of function blocks are presented respectively. the debugging indicated that the software works well and can achieve the design goal. key words: code cabinet; mcu; led display; at89s51; at24c02 目 錄摘要11 引言42 密碼柜控制器的功能與設(shè)計(jì)方案42.1 密碼柜控制器的功能42.2 密碼柜控制器的設(shè)計(jì)方案43 芯片介紹53.1 單片機(jī)at89s5153.2 存儲(chǔ)器芯片at24c02463.3 譯碼器74ls13873.4 集成穩(wěn)壓模塊mc780574 密碼柜控制器硬件設(shè)計(jì)74.1 電源電路設(shè)計(jì)74.2 輸入鍵盤電路設(shè)計(jì)84.3 復(fù)位電路設(shè)計(jì)94.4 時(shí)鐘電路設(shè)計(jì)94.5 信息存儲(chǔ)電路設(shè)計(jì)104.6 數(shù)碼管顯示電路設(shè)計(jì)104.7 報(bào)警電路設(shè)計(jì)114.8 開鎖電路設(shè)計(jì)115 密碼柜控制器軟件設(shè)計(jì)125.1 軟件工作流程125.2 鍵盤輸入子程序125.3 密碼比對子程序125.4 密碼修改子程序135.5 密碼錯(cuò)誤報(bào)警子程序135.6 開鎖子程序135.7 程序存儲(chǔ)器讀寫子程序135.8 狀態(tài)顯示子程序146 軟件編譯與調(diào)試156.1 keil c51 編譯156.2 開發(fā)板調(diào)試157 結(jié)束語16參考文獻(xiàn)16附錄117附錄218 1 引言 鎖自古以來就是把守門戶不可或缺的法寶,古代能工巧匠對于機(jī)械鎖的研究至今仍讓世人嘆為觀止。但是,由于高保密性能的機(jī)械鎖工藝復(fù)雜、成本較高,一直未能推廣使用,大多使用的還是傳統(tǒng)的簡單機(jī)械鎖。同時(shí),假冒偽劣的機(jī)械鎖也已泛濫成災(zāi),互開率非常高,極不安全。現(xiàn)在,在大型超市、娛樂場所等,員工個(gè)人物品的存放和顧客隨身物品的寄存都需要儲(chǔ)物柜。而一些工廠、企事業(yè)單位保密文件的安全存放,更需要保密設(shè)施完備的文件柜。傳統(tǒng)的箱柜多采用機(jī)械鎖,而傳統(tǒng)機(jī)械鎖有諸多不安全因素。隨著電子產(chǎn)品的普及和自動(dòng)化時(shí)代的到來,機(jī)械產(chǎn)品由于其高繁復(fù)性和高廢材性,已不能適應(yīng)人們的需求,慢慢退出市場。而電子產(chǎn)品則以其輕便、快捷、高性價(jià)比的特點(diǎn)迅速占領(lǐng)市場。采用電子電路設(shè)計(jì)的密碼鎖應(yīng)運(yùn)而生,并逐漸引領(lǐng)潮流。本設(shè)計(jì)采用單片機(jī)at89s51設(shè)計(jì)了一個(gè)密碼柜控制器,該控制器可用一個(gè)電路控制多個(gè)密碼柜,通過輸入密碼對密碼柜進(jìn)行開啟和鎖閉,操作簡便,防盜性強(qiáng)。2 密碼柜控制器的功能與設(shè)計(jì)方案2.1 密碼柜控制器的功能本次設(shè)計(jì)的,密碼柜控制器的功能如下:系統(tǒng)初始化后,進(jìn)入等待密碼輸入階段,當(dāng)有6位密碼輸入時(shí)(前2位為箱號(hào),后4位為密碼),則進(jìn)行密碼比對。密碼正確,則顯示“p-”,此時(shí),若按下“開鎖”按鈕,對應(yīng)的柜門打開;若按下“修改密碼”按鈕,則進(jìn)入密碼修改狀態(tài)。完成相應(yīng)操作后,系統(tǒng)會(huì)進(jìn)行初始化,可重新輸入密碼。密碼錯(cuò)誤,則進(jìn)入密碼錯(cuò)誤環(huán)節(jié),提示重新輸入。當(dāng)密碼輸入錯(cuò)誤三次時(shí),就不再讀取按鍵,并進(jìn)行報(bào)警,同時(shí)屏幕顯示“error”。2.2 密碼柜控制器的設(shè)計(jì)方案密碼柜控制器設(shè)計(jì)方案如圖1所示,電路分為九個(gè)部分:電源電路、led數(shù)碼管顯示、復(fù)位電路、時(shí)鐘電路、鍵盤輸入、密碼儲(chǔ)存、報(bào)警電路、led指示、開鎖控制電路。本設(shè)計(jì)以單片機(jī)at89s51為核心設(shè)計(jì)密碼柜的控制器。單片機(jī)具有編程方式靈活、i/o端口豐富、控制性能準(zhǔn)確等優(yōu)點(diǎn)。設(shè)計(jì)中,使用at24c02作為程序存儲(chǔ)器,與單片機(jī)p1.0p1.2相連;輸入鍵盤作為密碼輸入終端,與單片機(jī)p3口相連;數(shù)碼管電路作為狀態(tài)顯示終端,與單片p0口及p2.0p2.2口相連;開鎖電路用來控制開鎖動(dòng)作,與單片機(jī)p2.3p2.7相連。圖1 密碼柜控制器設(shè)計(jì)方案3 芯片介紹3.1 單片機(jī)at89s51 at89s51是美國 atmel 公司生產(chǎn)的低功耗、高性能的8位單片機(jī),采用 atmel 公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn) 8051 指令系統(tǒng)及引腳。片內(nèi)含有4k字節(jié)的可編程flash程序存儲(chǔ)器,既可在線編程(isp),也可用傳統(tǒng)方法進(jìn)行編程。 at89s51的封裝形式如圖2所示, 提供以下標(biāo)準(zhǔn)功能:4k字節(jié) flash存儲(chǔ)器,128 字節(jié)內(nèi)部 ram,4個(gè)i/o 口,看門狗(wdt),兩個(gè)數(shù)據(jù)指針,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量兩級中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),at89s51可降至0hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式:空閑方式和掉電方式??臻e方式停止cpu的工作,但允許ram、定時(shí)/計(jì)數(shù)器、串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存ram中的內(nèi)容,但振蕩器停止工作,并禁止其它所有部件,直到下一個(gè)硬件復(fù)位1。圖2 at89s51封裝圖3.2 存儲(chǔ)器芯片at24c024at24c02是支持i2c總線數(shù)據(jù)傳送協(xié)議的cmos e2prom,其容量為256字節(jié),擦寫次數(shù)可達(dá)10萬次以上,寫入數(shù)據(jù)的有效保存時(shí)間可達(dá)100年2。其封裝形式如圖3所示。圖3 at24c02封裝圖scl:串行時(shí)鐘,at24c02串行時(shí)鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時(shí)鐘,這是一個(gè)輸入管腳。 sda:串行數(shù)據(jù)/地址,at24c02 雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收,sda 是一個(gè)開路輸出管腳,可與其它開路輸出或集電極開路輸出進(jìn)行線或(wire-or)。 a0、a1、a2:地址輸入端,這些輸入腳用于多個(gè)器件級聯(lián)時(shí)設(shè)置器件地址,當(dāng)這些腳懸空時(shí)默認(rèn)值為0。當(dāng)使用at24c02 時(shí)最大可級聯(lián)8個(gè)器件。如果只有一個(gè)at24c02被總線尋址,這三個(gè)地址輸入腳(a0、a1、a2 )可懸空或連接到vss,如果只有一個(gè)at24c02被總線尋址這三個(gè)地址輸入腳(a0、a1、a2 )必須連接到vss。 wp:寫保護(hù),如果wp管腳連接到vcc,所有的內(nèi)容都被寫保護(hù)只能讀。當(dāng)wp管腳連接到vss 或懸空時(shí),允許器件進(jìn)行正常的讀/寫操作3,4。3.3 譯碼器74ls138 74ls138 為3 線8 線譯碼器,其封裝形式如圖4所示。該譯碼器有3位二進(jìn)制輸入a1、a2、a3,共有8種狀態(tài)組合,可編譯出8個(gè)輸出信號(hào)。此外,還設(shè)置了3個(gè)使能輸入端和和5。3.4 集成穩(wěn)壓模塊mc7805設(shè)計(jì)中,需要一個(gè)能提供精確+5v電壓的穩(wěn)壓電源,這里使用motorola公司的電壓芯片mc7805,它能將12v左右的電壓轉(zhuǎn)變?yōu)榫_+5v的電壓輸出6,7。其封裝形式如圖5所示。 圖4 74ls138 封裝圖 圖5 mc7805封裝圖4 密碼柜控制器硬件設(shè)計(jì)4.1 電源電路設(shè)計(jì)在單片機(jī)系統(tǒng)中,電源電路入侵是干擾入侵的主要途徑,為增加系統(tǒng)的穩(wěn)定性,采用抗干擾穩(wěn)壓電源。電源電路由變壓器、整流橋、三端集成穩(wěn)壓電路和濾波電路組成。電源通過低通濾波器和隔離變壓器接入電網(wǎng),如圖6所示。在市電與變壓器間并聯(lián)兩個(gè)0.01f電容構(gòu)成低通濾波器,用以吸收市電中的“毛刺”。經(jīng)變壓后得到8v-12v的交流電,并通過橋式整流得到直流電壓。然后,由并聯(lián)100f的電解電容和0.33f的瓷片電容構(gòu)成的濾波器進(jìn)行濾波,最后使用mc7805將12v左右的電壓轉(zhuǎn)變?yōu)榫_+5v輸出。為了進(jìn)一步降低干擾,在單片系統(tǒng)的vcc處并聯(lián)電容濾波網(wǎng)絡(luò)1,7。圖6 電源電路圖4.2 輸入鍵盤電路設(shè)計(jì)本設(shè)計(jì)采用44矩陣式鍵盤,與獨(dú)立式鍵盤相比,這種鍵盤可節(jié)省很多i/o口線。矩陣式鍵盤由行線和列線組成,按鍵位于行列的交點(diǎn)上。矩陣式鍵盤的按鍵識(shí)別方式有兩種:一是行掃描法,二是線反轉(zhuǎn)法。行掃描法中,首先由行線發(fā)出低電平信號(hào),此時(shí),若有按鍵按下,則相應(yīng)列線為“0”;無按鍵按下,則相應(yīng)列線為“1”。逐行掃描完畢后,若只有一個(gè)鍵按下,則讀入鍵值;若多鍵按下則按鍵無效。線反轉(zhuǎn)法中,首先由單片機(jī)向列線輸出全“0”,讀入行線值后,若某行有鍵按下,則該行線值為“0”。然后再將讀取的行線值經(jīng)行線輸出,同時(shí)將所有列線置“1”。隨后,讀取列線值,有鍵按下的列線值為“0”。這樣通過行列交叉定位,可識(shí)別出按鍵的位置。因此線反轉(zhuǎn)法的識(shí)別速度比行掃描快很多,本設(shè)計(jì)采用線反轉(zhuǎn)識(shí)別方法。鍵盤電路如圖7所示,按鍵設(shè)置在行列線交點(diǎn)上,行、列線分別接到按鍵開關(guān)兩端。其中,行、列線通過上拉電阻接到+5v上,并連接到單片機(jī)的p3口1,8。圖7 輸入鍵盤電路圖4.3 復(fù)位電路設(shè)計(jì)單片機(jī)的復(fù)位電路如圖8所示。在通電瞬間,rc電路充電,reset端出現(xiàn)正脈沖,從而使單片機(jī)復(fù)位。在系統(tǒng)的運(yùn)行過程中,只要按下開關(guān),reset就能得到高電位,復(fù)位有效1,9,10。復(fù)位脈沖要持續(xù)10ms以上,才能保證有效復(fù)位。4.4 時(shí)鐘電路設(shè)計(jì)在單片機(jī)的xtal1引腳和xtal2引腳之間接12m石英晶體振蕩器和30pf的電容,組成并聯(lián)諧振回路,如圖9所示1,9。 圖8 單片機(jī)復(fù)位電路圖 圖9 時(shí)鐘電路4.5 信息存儲(chǔ)電路設(shè)計(jì)存儲(chǔ)器芯片at24c02的a0、a1、a2是三條地址線,用于確定芯片的硬件地址。本設(shè)計(jì)只用到了一片at24c02,因此a0、a1、a2均接至高電平。wp、scl、sda分別接單片機(jī)的p1.0、p1.1、p1.2,通過p1.0、p1.1、p1.2來模擬實(shí)現(xiàn)i2c的功能3,11。圖10 程序儲(chǔ)存電路圖4.6 數(shù)碼管顯示電路設(shè)計(jì)數(shù)碼管顯示電路如圖11所示。由單片機(jī)p2.0、p2.1、p2.2依次輸出000b111b,經(jīng)74hc138譯碼后得到位選通信號(hào),順次選通8個(gè)數(shù)碼管。然后,單片機(jī)的p0口的輸出數(shù)據(jù)顯示在被選通的數(shù)碼管上12。 圖11 數(shù)碼管顯示電路4.7 報(bào)警電路設(shè)計(jì)報(bào)警電路如圖12所示,由蜂鳴器和外圍電路組成。密碼輸入正確時(shí),蜂鳴器不發(fā)聲,直接開鎖,指示燈亮;密碼輸入錯(cuò)誤時(shí),蜂鳴器發(fā)聲報(bào)警,指示燈熄滅。圖12 報(bào)警電路4.8 開鎖電路設(shè)計(jì)開鎖電路的功能是將單片機(jī)內(nèi)部信號(hào)轉(zhuǎn)化成開鎖信號(hào)。由于本設(shè)計(jì)采用集成控制,由一個(gè)單片機(jī)來控制16個(gè)箱體的門鎖,因此采用譯碼器來擴(kuò)展控制數(shù)目。開鎖電路如圖13所示,使用2片74hc138組合成4線-16線的譯碼系統(tǒng),其中p1.5是連接防止誤開鎖的選通信號(hào)。圖13 開鎖電路5 密碼柜控制器軟件設(shè)計(jì)5.1 軟件工作流程密碼柜控制器的工作流程如圖14所示,軟件設(shè)計(jì)主要完成密碼比對、密碼修改、錯(cuò)誤報(bào)警、存儲(chǔ)器讀寫、鍵盤輸入、開鎖和顯示等功能。其中顯示功能利用單片機(jī)的內(nèi)部時(shí)鐘中斷完成,中斷間隔為10ms。其它功能均通過調(diào)用相應(yīng)子程序?qū)崿F(xiàn)。主程序流程圖如圖15,程序代碼見附錄2。圖14 軟件工作流程圖 圖15 主程序流程圖 5.2 鍵盤輸入子程序鍵盤設(shè)計(jì)采用了44矩陣鍵盤,采用反線法掃描鍵盤,得到鍵盤按鍵的返回值后,再通過比對來辨別按鍵的具體功能。鍵盤輸入子程序流程圖如圖16,程序代碼見附錄2。5.3 密碼比對子程序密碼比對子程序?qū)︽I盤輸入的密碼和密碼存儲(chǔ)器中的密碼進(jìn)行比對,并根據(jù)結(jié)果修改相關(guān)的標(biāo)志位,返回給主程序。密碼比對子程序流程圖如圖17,程序代碼見附錄2。圖16 鍵盤輸入子程序流程圖 圖17 密碼比對子程序流程圖5.4 密碼修改子程序密碼修改子程序是通過修改密碼存儲(chǔ)器中的內(nèi)容,實(shí)現(xiàn)密碼修改功能。密碼修改子程序流程圖如圖18,程序代碼見附錄2。5.5 密碼錯(cuò)誤報(bào)警子程序密碼錯(cuò)誤報(bào)警子程序的功能是:當(dāng)錯(cuò)誤次數(shù)不超過三次時(shí),提示錯(cuò)誤,并轉(zhuǎn)入密碼輸入程序,輸入新密碼;當(dāng)輸入錯(cuò)誤次數(shù)達(dá)到三次時(shí),進(jìn)行報(bào)警并鎖定鍵盤3分鐘。密碼錯(cuò)誤報(bào)警子程序流程圖如圖19,程序代碼見附錄2。5.6 開鎖子程序開鎖子程序?qū)崿F(xiàn)開鎖功能,當(dāng)輸入密碼正確并按下開鎖時(shí),通過p2.4p2.7口和p1.5的輸出開鎖信號(hào),控制箱柜的門開啟或鎖閉。開鎖子程序流程圖如圖20,程序代碼見附錄2。5.7 程序存儲(chǔ)器讀寫子程序程序存儲(chǔ)器讀寫子程序?qū)崿F(xiàn)對密碼存儲(chǔ)器訪問。當(dāng)進(jìn)行密碼修改時(shí),需進(jìn)行寫入操作;當(dāng)進(jìn)行密碼比對時(shí),需進(jìn)行讀出操作。寫入程序和讀出程序流程圖如圖21和圖22所示,程序代碼見附錄2。圖18 密碼修改流程圖 圖19 密碼錯(cuò)誤報(bào)警流程圖 圖20 開鎖流程圖5.8 狀態(tài)顯示子程序狀態(tài)顯示子程序顯示系統(tǒng)運(yùn)行狀態(tài),采用內(nèi)部時(shí)鐘中斷實(shí)現(xiàn),即先通過程序?qū)⒁@示的數(shù)據(jù)存入顯示緩沖數(shù)組內(nèi),再通過中斷將緩沖數(shù)組內(nèi)的數(shù)據(jù)顯示到數(shù)碼管上。狀態(tài)顯示子程序流程圖如圖23,程序代碼見附錄2。圖21 寫密碼流程圖 圖22 讀密碼流程圖 圖23 顯示流程圖 6 軟件編譯與調(diào)試6.1 keil c51 編譯keil c51是美國keil software公司出品的51系列兼容單片機(jī)c語言軟件開發(fā)系統(tǒng)。與匯編相比,c語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢。將程序代碼添加到工程中,點(diǎn)擊“編譯”,通過錯(cuò)誤提示修改程序的語法錯(cuò)誤與邏輯錯(cuò)誤,并再次編譯。編譯無錯(cuò)誤提示后,點(diǎn)擊“匯編”,生成16進(jìn)制的可執(zhí)行程序。結(jié)果如圖23所示。6.2 開發(fā)板調(diào)試在萬用單片機(jī)實(shí)驗(yàn)開發(fā)板上,將程序通過usb在線下載器下載到單片機(jī)中,其下載過程如圖24所示。在開發(fā)板中調(diào)試各程序模塊,直到各模塊運(yùn)行正常。密碼柜控制器部分功能運(yùn)行過程如圖25-28所示。 圖23 keil c51編譯結(jié)果 圖24 程序燒寫過程 圖25 等待輸入密碼 圖26 密碼錯(cuò)誤報(bào)警 圖27 比對正確 圖28 開啟01號(hào)箱 7 結(jié)束語本次設(shè)計(jì)以單片機(jī)at89s51為核心,設(shè)計(jì)了一個(gè)密碼柜控制器。該密碼柜控制器具有電路結(jié)構(gòu)簡單、成本低等優(yōu)點(diǎn),能夠完成密碼比對、密碼修改、錯(cuò)誤報(bào)警等功能。測試結(jié)果表明,各程序模塊運(yùn)行正常。本次設(shè)計(jì)比較簡單,還有一些不足之處。例如,密碼存儲(chǔ)器在讀寫過程中沒有采取加密措施,密碼有被破解的風(fēng)險(xiǎn),今后將進(jìn)一步解決此問題。參考文獻(xiàn)1 余錫存, 曹國華. 單片機(jī)原理及接口技術(shù)m. 西安: 西安電子科技大學(xué)出版社, 2007. 第二版: 178-186; 159-163; 130-133; 24-25.2 于會(huì)山, 崔學(xué)禮. 一種新型紅外線遙控智能密碼鎖j. 電子技術(shù), 2005, 10: 45-49.3 盧旭錦. 基于keil c的at24c02串行e2prom的編程j. 現(xiàn)代電子技術(shù), 2007, 8: 154-160.4 季宏鋒, 吳軍輝, 徐立輝. i2c總線技術(shù)及應(yīng)用實(shí)例j. 自動(dòng)化儀表, 2002, 4. 21-23.5 康華光. 電子技術(shù)基礎(chǔ)數(shù)字部分(第五版) m. 北京: 高等教育出版社, 2006, 1. 第五版: 144-153.6 陳開文. 基于at89c51的安全密碼鎖應(yīng)用設(shè)計(jì)a. 科技資訊, 2006, 9: 2-3.7 康華光. 電子技術(shù)基礎(chǔ)模擬部分(第五版) m. 北京: 高等教育出版社, 2006, 1. 第五版: 485-511.8 周文龍. 基于單片機(jī)控制的電子密碼鎖設(shè)計(jì)j. 大眾商務(wù), 2009, 3: 108-109.9 張陪仁. 基于c語言編程mcs-51單片機(jī)原理與應(yīng)用m. 北京: 清華大學(xué)出版社,2003, 1: 12-13.10 邱關(guān)源, 羅先覺. 電路(第五版) m, 高等教育出版社. 2006. 5. 第五版: 147-152.11 卜登立. 基于優(yōu)先級編碼器的非編碼矩陣鍵盤接口設(shè)計(jì)j. 化工自動(dòng)化及儀表, 2010, 37 (4): 93 -95. 12 管小明, 雷伯錄, 曾凡錦, 吳邦國. 具有激活功能的實(shí)用型密碼系統(tǒng)的設(shè)計(jì)j. 設(shè)計(jì)參考, 2008, 10 (12): 33-38.附錄1電路原理圖附錄226/*- 名稱:基于at89s51單片機(jī)的16箱密碼柜 學(xué)校:洛陽師范學(xué)院 編寫:李良 日期:2011年5月 指導(dǎo)老師:崔 版本號(hào):1.0 內(nèi)容:通過鍵盤輸入密碼來完成對16箱密碼 柜控制。-*/#include #include #include#define uint unsigned int#define uchar unsigned char#define key p3 /定義鍵盤接口 #define no_key 20 /定義鍵盤無按鍵鍵值 #define addwr 0xae /定義寫24c02地址 #define addrd 0xaf /定義讀24c02地址 sbit sda=p12; /定義i2c總線sbit scl=p11;sbit wp=p10; /定義寫保護(hù) sbit light= p13; /定義密碼正確標(biāo)示燈sbit light1= p14;/定義錯(cuò)誤報(bào)警接口sbit km=p15;/定義開鎖允許接口uchar j ;/數(shù)據(jù)輸入個(gè)數(shù)uchar aa; /記錄鍵盤鎖定時(shí)間uchar xh;/箱號(hào)uchar dispcode8=0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40;/顯示緩存uchar dispbit8=0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7;/顯示位選uchar code table= 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40;uchar code table1=0x73,0x40,0x40,0x40,0x40,0x40,0x40,0x40 ;uchar code table2=0x79,0x31,0x31,0x3f,0x31,0x00,0x00,0x00 ;uchar code table3=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code ks=0x1f,0x2f,0x3f,0x4f,0x5f,0x6f,0x7f,0x8f,0x9f,0xaf,0xbf,0xcf,0xdf,0xef,0xff;uchar password4 ; /密碼緩存uchar save6; /輸入數(shù)據(jù)緩存 uchar conflag ; / 密碼正確標(biāo)志 uchar lockflag; /鎖定鍵盤標(biāo)志 uchar startflag; /開始標(biāo)志 void mdelay(uchar yy); /延時(shí)子程序 void init(); /初始化子程序 void display_ok();/密碼真確顯示void display_enter();/等待輸入密碼顯示void display_error(); /密碼錯(cuò)誤顯示void delete(); /刪除子函數(shù)void change();/更改密碼子函數(shù)uchar keyscan() ; /鍵盤掃描子函數(shù) uchar keyscanxz(void) ;/鍵值選擇子函數(shù)void enter_code(uchar t); /輸入數(shù)據(jù)記錄子函數(shù)void kaisuo(uchar h);/開鎖子函數(shù)void confirm();/密碼比對子函數(shù)void succeed_an(); /密碼正確響應(yīng)void fail_an(); /密碼錯(cuò)誤響應(yīng)void lockkey(); /鍵盤鎖定子函數(shù) void alarm(); /錯(cuò)誤報(bào)警子函數(shù)void reset(); /數(shù)據(jù)復(fù)位子函數(shù) void start(void);/開啟i2c總線void stop(void);/關(guān)閉i2c總線void ack(void);/應(yīng)答void noack(void);/非應(yīng)答void send(unsigned char data);/發(fā)送一個(gè)數(shù)據(jù)unsigned char read(void);/讀取一個(gè)數(shù)據(jù)void wrtorom(unsigned char data,unsigned char address,unsigned char num);/寫數(shù)據(jù)void rdfromrom(unsigned char data,unsigned char address,unsigned char num);/讀數(shù)據(jù)/*主程序*/void main(void) uchar temp; init(); /初始化 while(1) if(lockflag) temp=keyscanxz(); if(temp!=no_key) aa=0; /鎖定鍵盤是掃描鍵盤 else temp=keyscanxz(); if(temp!=no_key) /判斷鍵值賦予不同的功能 if(temp=10) reset();/數(shù)據(jù)復(fù)位 startflag=1;/置位開始標(biāo)志 di if(startflag) enter_code(temp); if(temp=13) confirm();/調(diào)用密碼比對 if(conflag) succeed_an();/調(diào)用密碼正確響應(yīng) reset(); memcpy(dispcode, table, sizeof(dispcode);/將要顯示數(shù)據(jù)存入顯示緩存數(shù)組 else fail_an();/密碼錯(cuò)誤響應(yīng) reset(); if(temp=14) delete();/調(diào)用刪除子函數(shù),進(jìn)行數(shù)據(jù)修改 /*初始化*/void init(void)/初始化設(shè)置內(nèi)部計(jì)時(shí)器t0,t1tmod = 0x11;th0=(65536-50000)/256;tl0=(65536-50000)%256;th1 = 0xb1;tl1 = 0xe0;et0=1;tr0=1;et1 = 1; tr1 = 1;ea = 1;/* 對各種變量進(jìn)行復(fù)位*/void reset()uchar num;for(num=0;num8;num+) dispcodenum=0;/復(fù)位顯示緩存數(shù)組 savenum=0;/復(fù)位顯示緩存數(shù)組lockflag=0; /復(fù)位鎖鍵盤標(biāo)志conflag=0;/復(fù)位密碼正確標(biāo)志j=0;/復(fù)位數(shù)據(jù)個(gè)數(shù)記錄display_enter();/* 顯示子程序*/void display_enter()dispcode7=0x80;void display_ok()memcpy(dispcode, table1, sizeof(dispcode);void display_error()memcpy(dispcode, table2, sizeof(dispcode);void timer1interrupt(void) interrupt 3 uchar ii,jj; th1 = 0xb1; tl1 = 0xe0; km=1;/關(guān)閉開鎖允許for(ii=0;ii4) goto loop; loop1: reset(); xmflag=1; while(xmflag) temp=keyscanxz(); if(temp!=no_key) enter_code(temp); if(temp=14) delete(); if(temp=13) xmflag=0; if(j4) goto loop1; else for(k=0;k2) /錯(cuò)誤三次進(jìn)行報(bào)警 bb0=0; wrtorom(bb,70,1); wp=1; alarm(); lockkey();void alarm() /密碼報(bào)警 uchar s=50,ss=250,sss=20; while(sss-) while(ss-) while(s-); light1=light1; light1=1;/*鎖鍵盤子程序*/void lockkey() /鎖鍵盤lockflag=1;void timer0() interrupt 1 th0=(65536-50000)/256; tl0=(65536-50000)%256; if(lockflag) aa+; light1=0; if(aa=60) aa=0; light1=1; lockflag=0; reset(); /*對比密碼子程序*/void confirm() uchar k; xh=save0*10+save1-1;/計(jì)算箱號(hào) if(xh16 ) goto cc;/輸入箱號(hào)大于16退出比對 rdfromrom(password,xh*4,4);/讀取原始密碼 for(k=0;k=0&t0;yy-) for(i=0;i125;i+) ; /*密碼存儲(chǔ)器讀寫子程序*/void start(void) /開啟總線 sda=1; _nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); sda=0; _nop_();_nop_();_nop_();_nop_();_nop_(); scl=0; void stop(void) /關(guān)閉總線 sda=0; _nop_(); scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); sda=1; _nop_();_nop_();_nop_();_nop_();_nop_(); scl=0; void ack(void) /總線應(yīng)答 sda=0;_nop_();_nop_();_nop_();scl=1;_nop_();_nop_();_nop_();_nop_();_nop_();scl=0;_nop_();_nop_();void noack(void) /總線非應(yīng)答 s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年一線班組員工安全培訓(xùn)題庫
- 2025年攤鋪機(jī)租賃與施工材料保障合同范本3篇
- 除薄冰機(jī)課程設(shè)計(jì)
- 年度多媒體集成競爭策略分析報(bào)告
- 二零二五年度模板木枋行業(yè)信息化平臺(tái)建設(shè)合同4篇
- 水溝勾縫施工方案
- 文明施工方案范本
- 二零二五年度環(huán)保型門衛(wèi)室建設(shè)合同4篇
- 2025年度個(gè)人股權(quán)無償轉(zhuǎn)讓及公司資產(chǎn)評估協(xié)議2篇
- 隔聲罩課程設(shè)計(jì)模板
- 寒假作業(yè)一年級上冊《數(shù)學(xué)每日一練》30次打卡
- 2024-2025學(xué)年九年級化學(xué)上冊 第二單元 單元測試卷(人教版)
- 2024年公共衛(wèi)生基本知識(shí)考試題庫(附含答案)
- 2024多級AO工藝污水處理技術(shù)規(guī)程
- 2024年江蘇省鹽城市中考數(shù)學(xué)試卷真題(含答案)
- DZ∕T 0287-2015 礦山地質(zhì)環(huán)境監(jiān)測技術(shù)規(guī)程(正式版)
- 2024年合肥市廬陽區(qū)中考二模英語試題含答案
- 質(zhì)檢中心制度匯編討論版樣本
- 藥娘激素方案
- 提高靜脈留置使用率品管圈課件
- GB/T 10739-2023紙、紙板和紙漿試樣處理和試驗(yàn)的標(biāo)準(zhǔn)大氣條件
評論
0/150
提交評論