版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 2010屆單片機技術(shù)課程設(shè)計說明書密碼鎖 系 、 部: 電氣與信息工程系 學生姓名: 指導(dǎo)教師: 職稱 副教授 專 業(yè): 電子信息工程 班 級: 0801 完成時間: 2010.12.29 摘 要隨著科技的日益發(fā)展,針對傳統(tǒng)機械鎖安全性低,需隨身攜帶且易丟失鑰匙的缺點,另外隨著經(jīng)濟技術(shù)的發(fā)展和人們對生活水平要求的提高,電子密碼鎖控制系統(tǒng)已經(jīng)越來越符合人們的要求,本文設(shè)計了一種使用單片機實現(xiàn)的電子密碼鎖。本文介紹了基于單片機和串行eeprom的智能密碼控制系統(tǒng),對系統(tǒng)硬件和軟件實現(xiàn)進行了詳細的描述。該系統(tǒng)采用at89s52單片機和at24c02串行eeprom,通過at89s52模擬總線和 a
2、t24c02通訊,實現(xiàn)密碼控制的功能。本文從經(jīng)濟實用的角度出發(fā),采用美國atmel公司的單片機at89s52作為主控芯片與數(shù)據(jù)存儲器單元,結(jié)合外圍的矩陣式鍵盤輸入、lcd液晶顯示、報警等,用c語言編寫主控芯片與eeprom讀寫程序相結(jié)合,設(shè)計了一個可以多次修改密碼,并且具有報警功能的電子密碼鎖控制系統(tǒng)。 本設(shè)計通過單片機將各模塊有機地連接在一起,完美地實現(xiàn)了設(shè)計目的,該鎖具有安全性高、性能好、易操作、功耗低、成本低、具有廣泛實用性等優(yōu)點,具有一定的推廣性。關(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è)計方案41.1 設(shè)計課題任務(wù)41.2 功能要求說明41.3 設(shè)計課題總體方案介紹及工作原理說明42 系統(tǒng)硬件設(shè)計52.1系統(tǒng)各功能模塊介紹52.2 系統(tǒng)電路圖72.3 系統(tǒng)元器件清單73 系統(tǒng)軟件設(shè)計83.1 使用單片機資源介紹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è)計體會134.5 教學建議13參考文獻14致 謝15附 錄16 1 系統(tǒng)總體設(shè)計方案1.1 設(shè)計課題任務(wù)設(shè)計一個具有特定功能的密碼鎖。1
9、.2 功能要求說明 密碼鎖主要實現(xiàn)的功能是:該密碼鎖上電或按鍵復(fù)位后能自動顯示系統(tǒng)提示符“p.”,進入準備工作狀態(tài)。該密碼鎖設(shè)有系統(tǒng)原始密碼1234567,用戶可以設(shè)定并存儲用戶密碼,密碼輸入時應(yīng)處于保密顯示狀態(tài),密碼輸入正確時應(yīng)顯示密碼輸入正確提示信息,否則,顯示密碼輸入錯誤提示信息。在輸入的密碼正確時液晶顯示正確的信息,但錯誤時,蜂鳴器發(fā)出警報音,液晶顯示錯誤的信息,也可通過修改密碼開鎖,一旦密碼遺忘只有通過輸入“超級密碼”才能開鎖。1.3 設(shè)計課題總體方案介紹及工作原理說明設(shè)計用以at89s52作為本次設(shè)計的核心元件,利用單片機靈活的編程設(shè)計和豐富的端口,及其控制的準確性,實現(xiàn)基本的密碼
10、控制功能。在單片機的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接fyd12864-0402b液晶顯示器用于輸出顯示。本設(shè)計主要由單片機、矩陣式鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣式鍵盤用于輸入數(shù)字密碼和進行各種功能的實現(xiàn)。由用戶通過連接單片機的矩陣式鍵盤輸入密碼,然后經(jīng)過單片機對用戶輸入的密碼與自己保存的密碼進行對比,從而判斷密碼是否正確,然后控制引腳的高低電平轉(zhuǎn)到液晶顯示密碼正確還是密碼錯誤以及蜂鳴器是否報警。本系統(tǒng)一共有兩部分組成,硬件電路和軟件部分。其中硬件部分由鍵盤輸入部分、復(fù)位部分、晶振部分、報警部分組成,軟件部分對應(yīng)的主要由主程序、初始化程序、液晶顯示程序、鍵
11、掃程序、鍵功能程序、密碼設(shè)置程序、eeprom讀寫程序、延時程序等組成。其原理框圖如圖1.1所示。at89s52鍵盤輸入復(fù)位電路晶振電路液晶顯示報警電路數(shù)據(jù)存貯圖1.1 系統(tǒng)原理框圖2 系統(tǒng)硬件設(shè)計2.1系統(tǒng)各功能模塊介紹2.2.1 at89s52控制模塊考慮到設(shè)計功能需要,控制器的功能用于外部鍵盤信號的接收和識別、液晶顯示與密碼辨認相關(guān)的信息,我們選擇了學習過的at89s52系列單片機,具有反應(yīng)速度極快,工作效率特高的特點。at89s52是種低功耗、高性能cmos8位微控制器,具有8k在系統(tǒng)可編程flash 存儲器。使用atmel公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80c51 產(chǎn)品指令和
12、引腳完全兼容。另外,at89s52可降至0hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu停止工作,允許ram、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,ram內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。2.2.2 lcd顯示模塊 顯示模塊要具有顯示輸入密碼,修改密碼的信息準確性,綜合以上的要求我選擇fyd12864-0402b液晶作為顯示的器件。帶中文字庫的fyd12864-0402b液晶顯示器是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標一級、二級簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為12864, 內(nèi)
13、置8192個16*16點漢字,和128個16*8點ascii字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機交互圖形界面??梢燥@示84行1616點陣的漢字. 也可完成圖形顯示.低電壓低功耗是其又一顯著特點。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊。2.2.3 鍵盤模塊根據(jù)系統(tǒng)的基本的要求,密碼的輸入和修改要求具有修改和設(shè)定等功能,所以采用4*4矩陣式鍵盤接在at89s52單片機的接口非常的方便,同時相對于獨立式鍵盤大大節(jié)省了資源,在軟件的設(shè)計時帶來了極大的方便,使程
14、序簡介,可讀性強。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如p1口)就可以構(gòu)成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。矩陣式鍵盤的按鍵識別方法用行掃描法。2.2.4 掉電存儲模塊 本設(shè)計掉電存儲模塊采用at24c02作為密碼存貯芯片。at24c02是美國atmel公司的低功耗cmos型eeprom,內(nèi)含256*8位存儲空間,具有工作電壓寬(2.5v5.5v),擦
15、寫次數(shù)多(大于10000次),寫入速度快(小于10ms),抗干擾能力強,數(shù)據(jù)不易丟失,體積小等特點。并且它是采用總線式進行數(shù)據(jù)讀寫的串行操作,只占用很少的資源和i/o線。at24c02有一個16字節(jié)頁寫緩沖器,該器件通過總線接口進行操作,還有一個專門的寫保護功能。2.2.5 時鐘信號模塊單片機工作所需的同步時鐘信號由以下兩種方法獲得:由單片機片內(nèi)時鐘電路結(jié)合外部晶振、電容產(chǎn)生和直接從單片機外部引入脈沖信號。這里用第一種方法產(chǎn)生時鐘信號。電路用12mhz的石英晶體和二個微調(diào)電容(一般為30pf左右)連接起來接到單片機的xtal1和xtal2引腳上。2.2.6 報警模塊電子密碼鎖的另外一個要求功能
16、是在輸入密碼正確或誤的時候發(fā)出報警,利用蜂鳴器來實現(xiàn),具有電路結(jié)構(gòu)非常簡單,控制極其方便等優(yōu)點。2.2.7復(fù)位模塊 復(fù)位是單片機的硬件初始化操作。經(jīng)復(fù)位操作后,單片機系統(tǒng)才能開始正常工作。單片機上有復(fù)位引腳rst,用于外接復(fù)位電路,這里復(fù)位電路采用按鍵電平復(fù)位。 2.2 系統(tǒng)電路圖電路原理圖、pcb圖、元器件布局圖見附錄。2.3 系統(tǒng)元器件清單本系統(tǒng)中所用到的元器件清單如表2.1所示。 表2.1元器件清單 器 件型 號數(shù) 量器 件型 號數(shù) 量單片機at89s521塊按鍵4腳17個發(fā)光二極管-1個液晶fyd128641個蜂鳴器脈沖式1個下載接口10腳1個電位器w5031個單排針8腳8個單排針20
17、腳1個排阻10k,9腳4個三極管s90121個存儲芯片at24c021塊電解電容22f1個短路帽2腳1個瓷片電容33p f2個電阻4701個芯片插座40腳1個電阻10k1個 3 系統(tǒng)軟件設(shè)計3.1 使用單片機資源介紹本次設(shè)計主要使用了單片機的口,口,以及其他若干口線。口是單片機與液晶通訊的數(shù)據(jù)口線,口主要是用于鍵盤電路擴展,p3.3接24c02的scl,p3.4接24c02的sda,p3.7接蜂鳴器。 3.2 軟件系統(tǒng)各功能模塊介紹3.2.1 矩陣式鍵盤模塊矩陣式鍵盤軟件設(shè)計通過在主程序中調(diào)用子程序uchar keyscan 的返回值去執(zhí)行鍵功能程序,單片機口發(fā)出oxf0,之后延時10ms左右
18、,讀取口線的數(shù)據(jù),達到通過鍵功能程序的分支執(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,當單片機需要從at24c04中讀出數(shù)據(jù)和寫入數(shù)據(jù)時只需要調(diào)用相應(yīng)的子程序shin和shout即可。3.3 軟件系統(tǒng)程序流程框圖本系統(tǒng)軟件設(shè)計由主程序、初
19、始化程序、lcd顯示程序、鍵盤掃描程序、鍵功能程序、密碼設(shè)置程序、at24c04讀寫程序和延時程序等組成。本次設(shè)計軟件系統(tǒng)的總體流程框圖如圖3.1所示,鍵掃和顯示程序流程框圖分別如圖3.2、圖3.3所示,讀at24c02子程序流程圖和寫at24c02子程序流程圖如圖3.4、圖3.5所示。開始顯示p.a鍵按下選擇功能修改密碼結(jié) 束輸入原密碼正確否?輸入新密碼一致否?修改成功是否否是否是否是輸入新密碼密碼正確輸入密碼是開 鎖錯誤三次輸入超級密碼否圖3.1 總體流程圖 圖3.2 鍵掃描程序給p1口送0xf0開始延 時讀取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鍵進入系統(tǒng)模式。其具體的操作布驟是:按a鍵進入密碼鎖模式,再按b鍵(輸入密碼模式),或者是c鍵(密碼修改模式)進行下一操作,倘若按下b鍵,則是選擇直接輸入密碼,在輸入正確的密碼后,按下e鍵確認,密碼鎖就打開了,若是密碼連續(xù)三次輸入錯誤,在三秒鐘后系統(tǒng)會自動進入超級密碼輸入模式,通過輸入超級密碼
21、也可以打開密碼鎖。密碼鎖成功打開之后,可以按下d鍵返回上一級界面。如果是按下c鍵,則進入了密碼修改模式,在你正確輸入完原始密碼之后,就可以修改密碼了,在通過兩次密碼確認之后,新密碼就產(chǎn)生了。4.2 系統(tǒng)仿真結(jié)果系統(tǒng)最終結(jié)果如下列各圖所示,其中圖4.1為系統(tǒng)上電復(fù)位之后顯示的主界面圖,圖4.2為輸入密碼時的液晶顯示圖,圖4.3為密碼輸入正確后液晶顯示圖,圖4.4為輸入密碼錯誤時液晶顯示圖,圖4.5為密碼輸入錯誤三次時液晶顯示圖,圖4.6為提示輸入超級密碼時液晶顯示圖。 圖4.1 主界面顯示 圖4.1 密碼輸入顯示 圖4.3 密碼輸入正確顯示 圖4.4 密碼輸入錯誤顯示 圖4.4 三次密碼輸入錯誤
22、顯示 圖4.6 輸入超級密碼顯示4.3 系統(tǒng)誤差分析在系統(tǒng)調(diào)試過程中,有的時候按下鍵之后返回的鍵值是亂的,導(dǎo)致系統(tǒng)執(zhí)行的功能與預(yù)計功能相悖,這主要是鍵掃程序有問題,而在系統(tǒng)調(diào)試過程中最主要的問題就是對at24c02的讀取問題,在掉電之后出現(xiàn)輸入了修改后的密碼而打開不了密碼鎖,但是用原始密碼卻能打開的問題,這主要是修改的密碼不能正確的保存到24c02中去而導(dǎo)致的,通過對程序的修改,最終解決了這兩個問題。 4.4 設(shè)計體會本設(shè)計利用單片機at89s52作為主控芯片,配合液晶顯示器12864,串行傳輸存儲器at24c02,4*4矩陣薄膜鍵盤,蜂鳴器以及其他外圍電路,用單片機c語言編寫的控制程序,成功
23、設(shè)計出一款利用密碼開鎖,可以隨時改密,具有適用價值的電子密碼鎖。本系統(tǒng)發(fā)揮出單片機應(yīng)有的價值,完成了電子密碼鎖的基礎(chǔ)功能。利用單片機控制矩陣鍵盤輸入密碼,液晶顯示器顯示提示符,蜂鳴器發(fā)聲等部件都運轉(zhuǎn)良好,密碼鎖運行的效果也可以正確呈現(xiàn)。對本次課題的研究,使我加深了對所學知識的理解,提高了對課外知識的學習能力,增強了對知識的應(yīng)用能力,提高了解決實際問題的能力,培養(yǎng)了自我創(chuàng)新意識,也積累了實踐經(jīng)驗,為以后的發(fā)展打下基礎(chǔ),也為以后我們自己在這方面的發(fā)展打下基礎(chǔ),并能夠在這方面培養(yǎng)自己的興趣。課程設(shè)計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能
24、力的具體訓練和考察過程,隨著科學技術(shù)發(fā)展的日新日異,單片機已經(jīng)成為當今計算機應(yīng)用中空前活躍的領(lǐng)域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握單片機的開發(fā)技術(shù)是十分重要的。通過這次設(shè)計,無論從選題到定稿,從理論到實踐都使我學到了很多東西,它不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。同時也明白了理論與實踐相結(jié)合的重要性,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。4.5 教學建議 通過王老師這一學期的悉心教導(dǎo),讓我對單片機這門課的掌握能力有了進一
25、步的提升,為我們今后學習單片機更深層次的理論打下了堅實的基礎(chǔ)。我原本以為對于這門課我已經(jīng)掌握好了,但是通過這次設(shè)計,我意識到了自己實際動手能力的不足,不能完整的將理論用于實際,在此,我希望老師今后能在教學中加重實驗課在整個教學計劃中的比例,更加注重學生的實際動手能力。 參考文獻1馬忠梅.單片機的c語言應(yīng)用程序設(shè)計m,北京:北京航空航天大學出版社2007.219228. ma zhongmei. scm c language program design m, beijing: beijing aerospace university press, 2007. 219228 2李廣弟.單片機基礎(chǔ)
26、m.北京:北京航空航天大學出版社,2007 li guangdi. microcontroller basedm. beijing: beijing aerospace university press, 2007 致 謝非常感謝學校提供這次課程設(shè)計的機會,通過本次設(shè)計在很大程度上提高了我們的理論與實際結(jié)合的能力;也非常感謝那些在我設(shè)計過程中給予我很多幫助的同學;最后也是最主要的就是感謝我們的王老師,沒有他的悉心教導(dǎo),我們的實際作品也不可能順利完成。在我的設(shè)計的制作過程之中,得到了學校里面許多人熱情的指導(dǎo)和詳細的說明,同時,在遇到諸多的不解困難的時候,自己班里的參加單片機培訓的同學也給我提供的
27、最詳細的解答,沒有以上的每一個人的幫助,我的單片機課程設(shè)計要完成是有巨大的困難的,在此,我對于在我的設(shè)計制作過程中以及學習中給予我?guī)椭拿恳粋€人表示最衷心的感謝。 附 錄系統(tǒng)原理圖pcb圖系統(tǒng)pcb頂層圖 系統(tǒng)pcb底層圖系統(tǒng)元器件布局圖程序清單/*項目名稱:密碼鎖*作者:何聲虎*日期:2010-12-28*密碼鎖:實現(xiàn)密碼的修改與存儲,掉電后密碼不丟失,使用的24c02模塊,*根據(jù)液晶的提示便可進行操作,其中鍵盤中的e鍵為確認鍵,輸入密碼后都要按確認鍵才能確認,其中密碼的長度為八位,*初始密碼為12345678;超級密碼為88888888*修改密碼要輸入初始密碼才能修改密碼*占用單片機口線狀
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 / 定義定時器to時間常數(shù)和方式控制字 #define v_tl0 0
30、xb0#define v_tmod 0x01uchar click_0=0; /1秒是否到了的條件uchar click_1=0; /3秒是否到了的條件bit time=0 ; /定時3秒是否到了的條件/*定時器初始化*/void init_sys(void) tmod=v_tmod; th0=v_th0; tl0=v_tl0; /設(shè)置時間初值tr0=0; ea=1; et0=1; tr1=0; /開啟中斷,關(guān)閉定時器 /*延時子程序*/void delay(uint m) while(-m); void delayms(uchar ms) / 延時子程序 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() /單片機從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) /單片機寫數(shù)據(jù)到at24c02 uchar i; bit ack_bit; for(i = 0; i 8; i+) /循環(huán)移入8個位 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() /在當前地址讀取 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); / 延時去抖 if(p1&0xf0)!=0xf0) /延時再判鍵是否還按下 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); /寫入是否修改密碼的標志 /*密碼鎖菜單界面下的密碼修改的密碼*/ 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,請再次輸入密碼:); 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版木地板電商平臺入駐與銷售合同3篇
- 二零二五年度農(nóng)業(yè)種植節(jié)水灌溉技術(shù)服務(wù)合同標準
- 二零二五年度寵物貓寵物用品線上商城合作合同4篇
- 二零二五年度土地儲備開發(fā)土地征用補償合同
- 2025年銷售總監(jiān)勞動合同模板:業(yè)績提升與團隊建設(shè)策略3篇
- 2025年度健康醫(yī)療大數(shù)據(jù)應(yīng)用合同范本2篇
- 二手房買賣協(xié)議規(guī)范文本2024版版B版
- 二零二五年度工業(yè)用地收儲補償合同3篇
- 二零二五年度女方離婚協(xié)議書制作參考模板
- 2025年度農(nóng)民工職業(yè)培訓合作服務(wù)合同模板
- 實體瘤療效評價標準(RECIST11)
- 電力系統(tǒng)動態(tài)仿真與建模
- 蝦皮shopee新手賣家考試題庫及答案
- 四川省宜賓市2023-2024學年八年級上學期期末義務(wù)教育階段教學質(zhì)量監(jiān)測英語試題
- 價值醫(yī)療的概念 實踐及其實現(xiàn)路徑
- 2024年中國華能集團燃料有限公司招聘筆試參考題庫含答案解析
- 《紅樓夢》中的男性形象解讀
- 安全生產(chǎn)技術(shù)規(guī)范 第49部分:加油站 DB50-T 867.49-2023
- 《三國演義》中的語言藝術(shù):詩詞歌賦的應(yīng)用
- 腸外營養(yǎng)液的合理配制
- 消防安全教育培訓記錄表
評論
0/150
提交評論