版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 2010屆單片機(jī)技術(shù)課程設(shè)計(jì)說明書密碼鎖 系 、 部: 電氣與信息工程系 學(xué)生姓名: 指導(dǎo)教師: 職稱 副教授 專 業(yè): 電子信息工程 班 級: 0801 完成時(shí)間: 2010.12.29 摘 要隨著科技的日益發(fā)展,針對傳統(tǒng)機(jī)械鎖安全性低,需隨身攜帶且易丟失鑰匙的缺點(diǎn),另外隨著經(jīng)濟(jì)技術(shù)的發(fā)展和人們對生活水平要求的提高,電子密碼鎖控制系統(tǒng)已經(jīng)越來越符合人們的要求,本文設(shè)計(jì)了一種使用單片機(jī)實(shí)現(xiàn)的電子密碼鎖。本文介紹了基于單片機(jī)和串行eeprom的智能密碼控制系統(tǒng),對系統(tǒng)硬件和軟件實(shí)現(xiàn)進(jìn)行了詳細(xì)的描述。該系統(tǒng)采用at89s52單片機(jī)和at24c02串行eeprom,通過at89s52模擬總線和 a
2、t24c02通訊,實(shí)現(xiàn)密碼控制的功能。本文從經(jīng)濟(jì)實(shí)用的角度出發(fā),采用美國atmel公司的單片機(jī)at89s52作為主控芯片與數(shù)據(jù)存儲器單元,結(jié)合外圍的矩陣式鍵盤輸入、lcd液晶顯示、報(bào)警等,用c語言編寫主控芯片與eeprom讀寫程序相結(jié)合,設(shè)計(jì)了一個(gè)可以多次修改密碼,并且具有報(bào)警功能的電子密碼鎖控制系統(tǒng)。 本設(shè)計(jì)通過單片機(jī)將各模塊有機(jī)地連接在一起,完美地實(shí)現(xiàn)了設(shè)計(jì)目的,該鎖具有安全性高、性能好、易操作、功耗低、成本低、具有廣泛實(shí)用性等優(yōu)點(diǎn),具有一定的推廣性。關(guān)鍵字 密碼鎖;at89s52;at24c02;液晶 abstractalong with the development of scien
3、ce and technology, in view of the traditional mechanical lock security low, need to carry and easy lost key shortcomings, in addition with economic technical development and people to the improvement of living standard requirements, electronic combination lock control system has been more and more a
4、ccord with the requirement of people, this paper introduces a design using microcomputer electronic combination lock. this paper introduced based on scm and serial an eeprom intelligent password control system of the system hardware and software realization are described. this system uses at89s52 sc
5、m and at24c02 serial an eprom, through at89s52 simulation bus and at24c02 communication, realizing the password control function. this article from the economical practical angle and atmel company adopts the monolithic integrated circuit at89s52 as the master chip and data storage locations, combine
6、s with the periphery matrix keyboard input, liquid crystal display, alarm, written in c control chip with an eeprom literacy programs combining, design of a password, and can be changed several times with alarm function of electronic combination lock control system. this design by microcontroller wi
7、ll each module in organic are linked together, the perfect way to realize the design purpose, this lock has high safety, good performance, easy operation, low power consumption, low cost and has extensive practical advantages, have certain extension. keyword trick lock;at89s52;at24c02;liquid crystal
8、 display目 錄1 系統(tǒng)總體設(shè)計(jì)方案41.1 設(shè)計(jì)課題任務(wù)41.2 功能要求說明41.3 設(shè)計(jì)課題總體方案介紹及工作原理說明42 系統(tǒng)硬件設(shè)計(jì)52.1系統(tǒng)各功能模塊介紹52.2 系統(tǒng)電路圖72.3 系統(tǒng)元器件清單73 系統(tǒng)軟件設(shè)計(jì)83.1 使用單片機(jī)資源介紹83.2 軟件系統(tǒng)各功能模塊介紹83.3 軟件系統(tǒng)程序流程框圖83.4 軟件系統(tǒng)程序清單114 系統(tǒng)仿真分析及結(jié)論114.1 系統(tǒng)使用說明114.2 系統(tǒng)仿真結(jié)果124.3 系統(tǒng)誤差分析124.4 設(shè)計(jì)體會134.5 教學(xué)建議13參考文獻(xiàn)14致 謝15附 錄16 1 系統(tǒng)總體設(shè)計(jì)方案1.1 設(shè)計(jì)課題任務(wù)設(shè)計(jì)一個(gè)具有特定功能的密碼鎖。1
9、.2 功能要求說明 密碼鎖主要實(shí)現(xiàn)的功能是:該密碼鎖上電或按鍵復(fù)位后能自動顯示系統(tǒng)提示符“p.”,進(jìn)入準(zhǔn)備工作狀態(tài)。該密碼鎖設(shè)有系統(tǒng)原始密碼1234567,用戶可以設(shè)定并存儲用戶密碼,密碼輸入時(shí)應(yīng)處于保密顯示狀態(tài),密碼輸入正確時(shí)應(yīng)顯示密碼輸入正確提示信息,否則,顯示密碼輸入錯誤提示信息。在輸入的密碼正確時(shí)液晶顯示正確的信息,但錯誤時(shí),蜂鳴器發(fā)出警報(bào)音,液晶顯示錯誤的信息,也可通過修改密碼開鎖,一旦密碼遺忘只有通過輸入“超級密碼”才能開鎖。1.3 設(shè)計(jì)課題總體方案介紹及工作原理說明設(shè)計(jì)用以at89s52作為本次設(shè)計(jì)的核心元件,利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的端口,及其控制的準(zhǔn)確性,實(shí)現(xiàn)基本的密碼
10、控制功能。在單片機(jī)的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接fyd12864-0402b液晶顯示器用于輸出顯示。本設(shè)計(jì)主要由單片機(jī)、矩陣式鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣式鍵盤用于輸入數(shù)字密碼和進(jìn)行各種功能的實(shí)現(xiàn)。由用戶通過連接單片機(jī)的矩陣式鍵盤輸入密碼,然后經(jīng)過單片機(jī)對用戶輸入的密碼與自己保存的密碼進(jìn)行對比,從而判斷密碼是否正確,然后控制引腳的高低電平轉(zhuǎn)到液晶顯示密碼正確還是密碼錯誤以及蜂鳴器是否報(bào)警。本系統(tǒng)一共有兩部分組成,硬件電路和軟件部分。其中硬件部分由鍵盤輸入部分、復(fù)位部分、晶振部分、報(bào)警部分組成,軟件部分對應(yīng)的主要由主程序、初始化程序、液晶顯示程序、鍵
11、掃程序、鍵功能程序、密碼設(shè)置程序、eeprom讀寫程序、延時(shí)程序等組成。其原理框圖如圖1.1所示。at89s52鍵盤輸入復(fù)位電路晶振電路液晶顯示報(bào)警電路數(shù)據(jù)存貯圖1.1 系統(tǒng)原理框圖2 系統(tǒng)硬件設(shè)計(jì)2.1系統(tǒng)各功能模塊介紹2.2.1 at89s52控制模塊考慮到設(shè)計(jì)功能需要,控制器的功能用于外部鍵盤信號的接收和識別、液晶顯示與密碼辨認(rèn)相關(guān)的信息,我們選擇了學(xué)習(xí)過的at89s52系列單片機(jī),具有反應(yīng)速度極快,工作效率特高的特點(diǎn)。at89s52是種低功耗、高性能cmos8位微控制器,具有8k在系統(tǒng)可編程flash 存儲器。使用atmel公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80c51 產(chǎn)品指令和
12、引腳完全兼容。另外,at89s52可降至0hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu停止工作,允許ram、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,ram內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。2.2.2 lcd顯示模塊 顯示模塊要具有顯示輸入密碼,修改密碼的信息準(zhǔn)確性,綜合以上的要求我選擇fyd12864-0402b液晶作為顯示的器件。帶中文字庫的fyd12864-0402b液晶顯示器是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體中文字庫的點(diǎn)陣圖形液晶顯示模塊;其顯示分辨率為12864, 內(nèi)
13、置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8點(diǎn)ascii字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面??梢燥@示84行1616點(diǎn)陣的漢字. 也可完成圖形顯示.低電壓低功耗是其又一顯著特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點(diǎn)陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊。2.2.3 鍵盤模塊根據(jù)系統(tǒng)的基本的要求,密碼的輸入和修改要求具有修改和設(shè)定等功能,所以采用4*4矩陣式鍵盤接在at89s52單片機(jī)的接口非常的方便,同時(shí)相對于獨(dú)立式鍵盤大大節(jié)省了資源,在軟件的設(shè)計(jì)時(shí)帶來了極大的方便,使程
14、序簡介,可讀性強(qiáng)。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。這樣,一個(gè)端口(如p1口)就可以構(gòu)成4*4=16個(gè)按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是合理的。矩陣式鍵盤的按鍵識別方法用行掃描法。2.2.4 掉電存儲模塊 本設(shè)計(jì)掉電存儲模塊采用at24c02作為密碼存貯芯片。at24c02是美國atmel公司的低功耗cmos型eeprom,內(nèi)含256*8位存儲空間,具有工作電壓寬(2.5v5.5v),擦
15、寫次數(shù)多(大于10000次),寫入速度快(小于10ms),抗干擾能力強(qiáng),數(shù)據(jù)不易丟失,體積小等特點(diǎn)。并且它是采用總線式進(jìn)行數(shù)據(jù)讀寫的串行操作,只占用很少的資源和i/o線。at24c02有一個(gè)16字節(jié)頁寫緩沖器,該器件通過總線接口進(jìn)行操作,還有一個(gè)專門的寫保護(hù)功能。2.2.5 時(shí)鐘信號模塊單片機(jī)工作所需的同步時(shí)鐘信號由以下兩種方法獲得:由單片機(jī)片內(nèi)時(shí)鐘電路結(jié)合外部晶振、電容產(chǎn)生和直接從單片機(jī)外部引入脈沖信號。這里用第一種方法產(chǎn)生時(shí)鐘信號。電路用12mhz的石英晶體和二個(gè)微調(diào)電容(一般為30pf左右)連接起來接到單片機(jī)的xtal1和xtal2引腳上。2.2.6 報(bào)警模塊電子密碼鎖的另外一個(gè)要求功能
16、是在輸入密碼正確或誤的時(shí)候發(fā)出報(bào)警,利用蜂鳴器來實(shí)現(xiàn),具有電路結(jié)構(gòu)非常簡單,控制極其方便等優(yōu)點(diǎn)。2.2.7復(fù)位模塊 復(fù)位是單片機(jī)的硬件初始化操作。經(jīng)復(fù)位操作后,單片機(jī)系統(tǒng)才能開始正常工作。單片機(jī)上有復(fù)位引腳rst,用于外接復(fù)位電路,這里復(fù)位電路采用按鍵電平復(fù)位。 2.2 系統(tǒng)電路圖電路原理圖、pcb圖、元器件布局圖見附錄。2.3 系統(tǒng)元器件清單本系統(tǒng)中所用到的元器件清單如表2.1所示。 表2.1元器件清單 器 件型 號數(shù) 量器 件型 號數(shù) 量單片機(jī)at89s521塊按鍵4腳17個(gè)發(fā)光二極管-1個(gè)液晶fyd128641個(gè)蜂鳴器脈沖式1個(gè)下載接口10腳1個(gè)電位器w5031個(gè)單排針8腳8個(gè)單排針20
17、腳1個(gè)排阻10k,9腳4個(gè)三極管s90121個(gè)存儲芯片at24c021塊電解電容22f1個(gè)短路帽2腳1個(gè)瓷片電容33p f2個(gè)電阻4701個(gè)芯片插座40腳1個(gè)電阻10k1個(gè) 3 系統(tǒng)軟件設(shè)計(jì)3.1 使用單片機(jī)資源介紹本次設(shè)計(jì)主要使用了單片機(jī)的口,口,以及其他若干口線??谑菃纹瑱C(jī)與液晶通訊的數(shù)據(jù)口線,口主要是用于鍵盤電路擴(kuò)展,p3.3接24c02的scl,p3.4接24c02的sda,p3.7接蜂鳴器。 3.2 軟件系統(tǒng)各功能模塊介紹3.2.1 矩陣式鍵盤模塊矩陣式鍵盤軟件設(shè)計(jì)通過在主程序中調(diào)用子程序uchar keyscan 的返回值去執(zhí)行鍵功能程序,單片機(jī)口發(fā)出oxf0,之后延時(shí)10ms左右
18、,讀取口線的數(shù)據(jù),達(dá)到通過鍵功能程序的分支執(zhí)行相應(yīng)的程序段,完成對應(yīng)的操作。3.2.2 液晶顯示模塊液晶顯示的程序中,將液晶的系統(tǒng)的設(shè)置,初始化的程序段寫成子程序,等待50ms,顯示開關(guān)控制初始化,之后只要調(diào)用 void lcd_set和void lcd_clear,然后再調(diào)用display子程序就可以在液晶上隨意顯示所需的內(nèi)容。3.2.3 at24c02讀寫模塊 at24c02的子程序包括從at24c02中讀取信息和將信息寫入at24c02,當(dāng)單片機(jī)需要從at24c04中讀出數(shù)據(jù)和寫入數(shù)據(jù)時(shí)只需要調(diào)用相應(yīng)的子程序shin和shout即可。3.3 軟件系統(tǒng)程序流程框圖本系統(tǒng)軟件設(shè)計(jì)由主程序、初
19、始化程序、lcd顯示程序、鍵盤掃描程序、鍵功能程序、密碼設(shè)置程序、at24c04讀寫程序和延時(shí)程序等組成。本次設(shè)計(jì)軟件系統(tǒng)的總體流程框圖如圖3.1所示,鍵掃和顯示程序流程框圖分別如圖3.2、圖3.3所示,讀at24c02子程序流程圖和寫at24c02子程序流程圖如圖3.4、圖3.5所示。開始顯示p.a鍵按下選擇功能修改密碼結(jié) 束輸入原密碼正確否?輸入新密碼一致否?修改成功是否否是否是否是輸入新密碼密碼正確輸入密碼是開 鎖錯誤三次輸入超級密碼否圖3.1 總體流程圖 圖3.2 鍵掃描程序給p1口送0xf0開始延 時(shí)讀取p1口內(nèi)容等于0xf0逐行掃描將返回值作為鍵值否是 等 待開始系統(tǒng)功能設(shè)置等 待
20、有顯示嗎顯示開關(guān)初始化設(shè)置將返回值作為鍵值否是圖3.2 鍵掃流程圖 圖3.3 顯示流程圖 圖3.4 讀at24c02子程序流程圖 圖3.5 寫at24c02子程序流程圖3.4 軟件系統(tǒng)程序清單軟件系統(tǒng)程序清單見附錄。 4 系統(tǒng)仿真分析及結(jié)論4.1 系統(tǒng)使用說明 在上電以后系統(tǒng)在液晶上顯示p.,用戶可以按a鍵進(jìn)入系統(tǒng)模式。其具體的操作布驟是:按a鍵進(jìn)入密碼鎖模式,再按b鍵(輸入密碼模式),或者是c鍵(密碼修改模式)進(jìn)行下一操作,倘若按下b鍵,則是選擇直接輸入密碼,在輸入正確的密碼后,按下e鍵確認(rèn),密碼鎖就打開了,若是密碼連續(xù)三次輸入錯誤,在三秒鐘后系統(tǒng)會自動進(jìn)入超級密碼輸入模式,通過輸入超級密碼
21、也可以打開密碼鎖。密碼鎖成功打開之后,可以按下d鍵返回上一級界面。如果是按下c鍵,則進(jìn)入了密碼修改模式,在你正確輸入完原始密碼之后,就可以修改密碼了,在通過兩次密碼確認(rèn)之后,新密碼就產(chǎn)生了。4.2 系統(tǒng)仿真結(jié)果系統(tǒng)最終結(jié)果如下列各圖所示,其中圖4.1為系統(tǒng)上電復(fù)位之后顯示的主界面圖,圖4.2為輸入密碼時(shí)的液晶顯示圖,圖4.3為密碼輸入正確后液晶顯示圖,圖4.4為輸入密碼錯誤時(shí)液晶顯示圖,圖4.5為密碼輸入錯誤三次時(shí)液晶顯示圖,圖4.6為提示輸入超級密碼時(shí)液晶顯示圖。 圖4.1 主界面顯示 圖4.1 密碼輸入顯示 圖4.3 密碼輸入正確顯示 圖4.4 密碼輸入錯誤顯示 圖4.4 三次密碼輸入錯誤
22、顯示 圖4.6 輸入超級密碼顯示4.3 系統(tǒng)誤差分析在系統(tǒng)調(diào)試過程中,有的時(shí)候按下鍵之后返回的鍵值是亂的,導(dǎo)致系統(tǒng)執(zhí)行的功能與預(yù)計(jì)功能相悖,這主要是鍵掃程序有問題,而在系統(tǒng)調(diào)試過程中最主要的問題就是對at24c02的讀取問題,在掉電之后出現(xiàn)輸入了修改后的密碼而打開不了密碼鎖,但是用原始密碼卻能打開的問題,這主要是修改的密碼不能正確的保存到24c02中去而導(dǎo)致的,通過對程序的修改,最終解決了這兩個(gè)問題。 4.4 設(shè)計(jì)體會本設(shè)計(jì)利用單片機(jī)at89s52作為主控芯片,配合液晶顯示器12864,串行傳輸存儲器at24c02,4*4矩陣薄膜鍵盤,蜂鳴器以及其他外圍電路,用單片機(jī)c語言編寫的控制程序,成功
23、設(shè)計(jì)出一款利用密碼開鎖,可以隨時(shí)改密,具有適用價(jià)值的電子密碼鎖。本系統(tǒng)發(fā)揮出單片機(jī)應(yīng)有的價(jià)值,完成了電子密碼鎖的基礎(chǔ)功能。利用單片機(jī)控制矩陣鍵盤輸入密碼,液晶顯示器顯示提示符,蜂鳴器發(fā)聲等部件都運(yùn)轉(zhuǎn)良好,密碼鎖運(yùn)行的效果也可以正確呈現(xiàn)。對本次課題的研究,使我加深了對所學(xué)知識的理解,提高了對課外知識的學(xué)習(xí)能力,增強(qiáng)了對知識的應(yīng)用能力,提高了解決實(shí)際問題的能力,培養(yǎng)了自我創(chuàng)新意識,也積累了實(shí)踐經(jīng)驗(yàn),為以后的發(fā)展打下基礎(chǔ),也為以后我們自己在這方面的發(fā)展打下基礎(chǔ),并能夠在這方面培養(yǎng)自己的興趣。課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能
24、力的具體訓(xùn)練和考察過程,隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域, 在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握單片機(jī)的開發(fā)技術(shù)是十分重要的。通過這次設(shè)計(jì),無論從選題到定稿,從理論到實(shí)踐都使我學(xué)到了很多東西,它不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。同時(shí)也明白了理論與實(shí)踐相結(jié)合的重要性,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。4.5 教學(xué)建議 通過王老師這一學(xué)期的悉心教導(dǎo),讓我對單片機(jī)這門課的掌握能力有了進(jìn)一
25、步的提升,為我們今后學(xué)習(xí)單片機(jī)更深層次的理論打下了堅(jiān)實(shí)的基礎(chǔ)。我原本以為對于這門課我已經(jīng)掌握好了,但是通過這次設(shè)計(jì),我意識到了自己實(shí)際動手能力的不足,不能完整的將理論用于實(shí)際,在此,我希望老師今后能在教學(xué)中加重實(shí)驗(yàn)課在整個(gè)教學(xué)計(jì)劃中的比例,更加注重學(xué)生的實(shí)際動手能力。 參考文獻(xiàn)1馬忠梅.單片機(jī)的c語言應(yīng)用程序設(shè)計(jì)m,北京:北京航空航天大學(xué)出版社2007.219228. ma zhongmei. scm c language program design m, beijing: beijing aerospace university press, 2007. 219228 2李廣弟.單片機(jī)基礎(chǔ)
26、m.北京:北京航空航天大學(xué)出版社,2007 li guangdi. microcontroller basedm. beijing: beijing aerospace university press, 2007 致 謝非常感謝學(xué)校提供這次課程設(shè)計(jì)的機(jī)會,通過本次設(shè)計(jì)在很大程度上提高了我們的理論與實(shí)際結(jié)合的能力;也非常感謝那些在我設(shè)計(jì)過程中給予我很多幫助的同學(xué);最后也是最主要的就是感謝我們的王老師,沒有他的悉心教導(dǎo),我們的實(shí)際作品也不可能順利完成。在我的設(shè)計(jì)的制作過程之中,得到了學(xué)校里面許多人熱情的指導(dǎo)和詳細(xì)的說明,同時(shí),在遇到諸多的不解困難的時(shí)候,自己班里的參加單片機(jī)培訓(xùn)的同學(xué)也給我提供的
27、最詳細(xì)的解答,沒有以上的每一個(gè)人的幫助,我的單片機(jī)課程設(shè)計(jì)要完成是有巨大的困難的,在此,我對于在我的設(shè)計(jì)制作過程中以及學(xué)習(xí)中給予我?guī)椭拿恳粋€(gè)人表示最衷心的感謝。 附 錄系統(tǒng)原理圖pcb圖系統(tǒng)pcb頂層圖 系統(tǒng)pcb底層圖系統(tǒng)元器件布局圖程序清單/*項(xiàng)目名稱:密碼鎖*作者:何聲虎*日期:2010-12-28*密碼鎖:實(shí)現(xiàn)密碼的修改與存儲,掉電后密碼不丟失,使用的24c02模塊,*根據(jù)液晶的提示便可進(jìn)行操作,其中鍵盤中的e鍵為確認(rèn)鍵,輸入密碼后都要按確認(rèn)鍵才能確認(rèn),其中密碼的長度為八位,*初始密碼為12345678;超級密碼為88888888*修改密碼要輸入初始密碼才能修改密碼*占用單片機(jī)口線狀
28、態(tài):占用了p0作為液晶數(shù)據(jù)接口,p1口作為鍵盤輸入接口, p3.3、p3.4分別接24c02的scl,sda引腳.*/#include#include#define uchar unsigned char#define uint unsigned int#define ta 500 /unsigned int#define op_read0xa1/ 器件地址以及讀取操作#define op_write 0xa0/ 器件地址以及寫入操作#define max_addr 0x7f/ at24c02最大地址sbit sda = p34;sbit scl = p33;sbit le = p36;sbi
29、t rs = p30;sbit rw = p31;sbit en = p35;sbit bj= p37;uchar command0,data0,count=0;uchar v=0;bit tuichu=0;bit tuichu1=0;bit f0=0;bit f1=0;bit yy=0; /是否是原始密碼還是超級密碼的條件uchar savein=0;uchar kk;uchar kkk=0;void write(uchar command0);uchar keyscan(void);#define v_th0 0x3c / 定義定時(shí)器to時(shí)間常數(shù)和方式控制字 #define v_tl0 0
30、xb0#define v_tmod 0x01uchar click_0=0; /1秒是否到了的條件uchar click_1=0; /3秒是否到了的條件bit time=0 ; /定時(shí)3秒是否到了的條件/*定時(shí)器初始化*/void init_sys(void) tmod=v_tmod; th0=v_th0; tl0=v_tl0; /設(shè)置時(shí)間初值tr0=0; ea=1; et0=1; tr1=0; /開啟中斷,關(guān)閉定時(shí)器 /*延時(shí)子程序*/void delay(uint m) while(-m); void delayms(uchar ms) / 延時(shí)子程序 uchar i;while(ms-)
31、 for(i = 0; i 120; i+); uchar code table=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;ucharcodedis_code=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38, 0x39; /寫到24c02uchar code dis_code1=0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38; /超級密碼88888888uchar yuanshimima=0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38; /初始密碼12
32、345678uchar shuzu08;uchar shuzu18;uchar xiugai08;uchar xiugai18; void start() / 開始位 sda = 1;scl = 1;_nop_();_nop_();sda = 0;_nop_();_nop_();_nop_();_nop_();scl = 0;void stop() / 停止位 sda = 0;_nop_();_nop_();scl = 1;_nop_();_nop_();_nop_();_nop_();sda = 1;uchar shin() /單片機(jī)從at24c02讀數(shù)據(jù) uchar i,read_data
33、;for(i = 0; i 8; i+) scl = 1;read_data = 1;read_data |= (uchar)sda;scl = 0;return(read_data);bit shout(uchar write_data) /單片機(jī)寫數(shù)據(jù)到at24c02 uchar i; bit ack_bit; for(i = 0; i 8; i+) /循環(huán)移入8個(gè)位 sda = (bit)(write_data & 0x80); _nop_(); scl = 1; _nop_(); _nop_(); scl = 0; write_data = 1; sda = 1; /讀取應(yīng)答_nop_
34、();_nop_();scl = 1;_nop_();_nop_();_nop_();_nop_();ack_bit = sda;scl = 0;return ack_bit; /返回at24c02應(yīng)答位void write_byte(uchar addr, uchar write_data) /在指定地址addr處寫入數(shù)據(jù)write_data start();shout(op_write);shout(addr);shout(write_data);stop();delayms(10); /寫入周期void fill_byte(uchar fill_data) /填充數(shù)據(jù)fill_data到
35、eeprom內(nèi) uchar i;for(i = 0; i max_addr; i+) write_byte(i, fill_data); uchar read_current() /在當(dāng)前地址讀取 unsigned char read_data; start(); shout(op_read); read_data = shin(); stop(); return read_data;uchar read_random(uchar random_addr) /在指定地址讀取 start(); shout(op_write); shout(random_addr);return(read_cur
36、rent();/*lcd功能設(shè)置*/void lcd_set(void) command0=0x30;write(command0); command0=0x01;write(command0); command0=0x06;write(command0); command0=0x0c;write(command0);/*清屏*/void lcd_clear(void) command0=0x01; write(command0);/*向液晶寫指令*/void write(uchar command0) delay(100); rs=0; rw=0; p0=command0; en=1;_no
37、p_(); _nop_(); en=0;/*向液晶寫數(shù)據(jù)*/void read(uchar data0) delay(100); rs=1; rw=0; p0=data0; en=1; nop_(); _nop_(); en=0;/*字符p.顯示*/void display(uchar y, uchar x, uchar *p) switch (y) case 1: write(0x7f+x);reak; /液晶第一行 case 2: write(0x8f+x);break; case 3: write(0x87+x);break; case 4: write(0x97+x);break; d
38、efault:break; while(*p) read(*p+); /*鍵掃子程序*/uchar keyscan(void) uchar scan,tmp; p1=0xf0; /發(fā)全行0掃描碼 if(p1&0xf0)!=0xf0) /若有鍵按下 delay(1000); / 延時(shí)去抖 if(p1&0xf0)!=0xf0) /延時(shí)再判鍵是否還按下 scan=0xfe; while(scan&0x10)!=0) /逐行掃描 p1=scan; /輸出行掃描碼 if(p1&0xf0)!=0xf0) /本行有鍵按下 tmp=(p1&0xf0)|0x0f; return (scan)|(tmp);/返回
39、鍵值 else scan=(scan1)|0x01; /行掃描碼左移一位 return (0); /無鍵按下,返回0/*將密碼鎖菜單界下的密碼修改的密碼存入24c02中*/ void save (void) uchar i=0; for(i=0;i8;i+) write_byte(i,xiugai1i); /寫入修改后的密碼 write_byte(8, savein); /寫入是否修改密碼的標(biāo)志 /*密碼鎖菜單界面下的密碼修改的密碼*/ void changemima (void) uchar u=0; uchar h=0; uchar n=0; uchar m=0; uchar w=0; u
40、char qv=10; bit yanzheng=0; bit xiangdeng=0; bit xiangdeng1=0; while(1) write(0x98); for(n=0;n100;n+) if(xiangdeng1=1) h=0;xiangdeng1=0; while(yanzheng=0) v=keyscan(); u=v; while(v=0x11)|(v=0x21)|(v=0x41)|(v=0x81)|(v=0x12)|(v=0x22)|(v=0x42)|(v=0x82)|(v=0x14)|(v=0x24) v=keyscan(); switch(u) case 0x11
41、: qv=0;yanzheng=1;read(0x2a); break; / 如果“0”鍵按下,shuzij=0x30; case 0x21: qv=1;yanzheng=1;read(0x2a); break; /如果“1”鍵按下,shuzij=0x31; case 0x41: qv=2;yanzheng=1;read(0x2a); break; /如果“2”鍵按下,shuzij=0x32; case 0x81: qv=3;yanzheng=1;read(0x2a); break; /如果“3”鍵按下,shuzij=0x33; case 0x12: qv=4;yanzheng=1;read(
42、0x2a); break; /如果“4”鍵按下,shuzij=0x34; case 0x22: qv=5;yanzheng=1;read(0x2a); break; /如果“5”鍵按下,shuzij=0x35; case 0x42: qv=6;yanzheng=1;read(0x2a); break; /如果“6”鍵按下,shuzij=0x36; case 0x82: qv=7;yanzheng=1;read(0x2a); break; /如果“7”鍵按下,shuzij=0x37; case 0x14: qv=8;yanzheng=1;read(0x2a); break; /如果“8”鍵按下,
43、shuzij=0x38; case 0x24: qv=9;yanzheng=1;read(0x2a); break;/如果“9”鍵按下,shuzij=0x39; if(xiangdeng=0) xiugai0h=dis_codeqv; if(xiangdeng=1) xiugai1h=dis_codeqv; shuzu1h=dis_codeqv; /確保兩次輸入密碼相等 yanzheng=0; if(xiangdeng=0) if(h=7) xiangdeng=1;xiangdeng1=1;yanzheng=0;n=0;h=0;while(u!=0x48) v=keyscan();u=v; w
44、hile(v=0x48) v=keyscan(); delay(10000000);delay(10000000); lcd_clear();display(1,1,請?jiān)俅屋斎朊艽a:); break; if(xiangdeng=1)&(h=7) for(m=0;m8;m+) if(xiugai0m=xiugai1m) w+; m=0; while(u!=0x48) v=keyscan();u=v;while(v=0x48) v=keyscan(); if(w=8) savein=2; save(); lcd_clear();display(2,2,密碼修改成功!);u=0;h=0;n=0;w=0;qv=10;delay(10000000);delay(10000000); while(1) v=keyscan(); if(v=0x28) f1=1;break;
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球晶圓檢測用物鏡行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年全球及中國鉆頭修磨機(jī)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025-2030全球醫(yī)療器械用注塑機(jī)行業(yè)調(diào)研及趨勢分析報(bào)告
- 主講人鄭長花
- 第06講 我們生活的大洲-亞洲(解析版)
- 2025原料采購合同的模板
- 2025個(gè)人保證擔(dān)保借款合同
- 門面房房屋租賃合同范本
- 工地配餐合同協(xié)議書范本
- it運(yùn)維外包服務(wù)合同
- 畢業(yè)設(shè)計(jì)(論文)-液體藥品灌裝機(jī)的設(shè)計(jì)與制造
- 二年級下冊數(shù)學(xué)教案 -《數(shù)一數(shù)(二)》 北師大版
- 稅收流失論文-我國個(gè)人所得稅稅收流失問題及對策研究
- 長榮股份:投資性房地產(chǎn)公允價(jià)值評估報(bào)告
- 2022年菏澤醫(yī)學(xué)??茖W(xué)校單招綜合素質(zhì)試題及答案解析
- 銀行內(nèi)部舉報(bào)管理規(guī)定
- 平面幾何強(qiáng)化訓(xùn)練題集:初中分冊數(shù)學(xué)練習(xí)題
- 項(xiàng)目獎金分配獎勵制度和方案完整版
- 支氣管鏡試題
- 陰道鏡幻燈課件
- 現(xiàn)代漢語詞匯學(xué)精選課件
評論
0/150
提交評論