基于51單片機(jī)的密碼鎖設(shè)計(jì)_第1頁
基于51單片機(jī)的密碼鎖設(shè)計(jì)_第2頁
基于51單片機(jī)的密碼鎖設(shè)計(jì)_第3頁
基于51單片機(jī)的密碼鎖設(shè)計(jì)_第4頁
基于51單片機(jī)的密碼鎖設(shè)計(jì)_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

蘇州大學(xué)本科生畢業(yè)設(shè)計(jì)(論文)i基于AT89S51與AT24C02密碼鎖的設(shè)計(jì)(蘇州大學(xué)應(yīng)用技術(shù)學(xué)院)目錄前言 IC總線說明第2.1節(jié)主控芯片AT89S52AT89S51是美國ATMEL公司生產(chǎn)的低功耗,高性能CMOS8位單片機(jī),片內(nèi)含4kbytes的可系統(tǒng)編程的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。它集Flash程序存儲(chǔ)器既可在線編程(ISP)也可用傳統(tǒng)方法進(jìn)行編程及通用8位微處理器于單片芯片中,ATMEL公司的功能強(qiáng)大,低價(jià)位AT89S51單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。2.1.1.主要性能參數(shù)與MCS-51產(chǎn)品指令系統(tǒng)完全兼容4k字節(jié)在系統(tǒng)編程(ISP)Flash閃速存儲(chǔ)器1000次擦寫周期4.0-5.5V的工作電壓范圍全靜態(tài)工作模式:0Hz-33MHz三級程序加密鎖128×8字節(jié)內(nèi)部RAM32個(gè)可編程I/O口線2個(gè)16位定時(shí)/計(jì)數(shù)器6個(gè)中斷源全雙工串行UART通道低功耗空閑和掉電模式中斷可從空閑模喚醒系統(tǒng)看門狗(WDT)及雙數(shù)據(jù)指針掉電標(biāo)識(shí)和快速編程特性靈活的在系統(tǒng)編程(ISP字節(jié)或頁寫模式)2.1.2.功能特性概述AT89S51提供以下標(biāo)準(zhǔn)功能:4k字節(jié)Flash閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,32個(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ù)位。2.1.3.引腳功能說明P0口:P0口是一組8位漏極開路型雙向I/0口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對端口寫“l(fā)”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在F1ash編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。P1口:Pl是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,Pl的輸出緩沖級可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對端口寫“l(fā)”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。Flash編程和程序校驗(yàn)期間,Pl接收低8位地址。端口引腳第二功能:P1.5MOSI(用于ISP犏程)P1.6MISO(用于ISP犏程)P1.7SCK(用于ISP犏程)P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對端口寫“1”在訪問外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口線上的內(nèi)容(也即特殊功能寄存器(SFR)區(qū)中P2寄存器的內(nèi)容),在整個(gè)訪問期間不改變。Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和其它控制信號。P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/0口。P3口輸出緩沖級可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對P3口寫入“l(fā)”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端時(shí),被外部拉低的P3口將用上拉電阻輸出電流。P3口除了作為一般的I/0口線外,更重要的用途是它的第二功能,如下表所示:P3口還接收一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號。端口引腳的第二功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INT0(外中斷0)P3.3INT1(外中斷1)P3.4T0(定時(shí)/計(jì)數(shù)器0外部輸入)P3.5T1(定時(shí)/計(jì)數(shù)器1外部輸入)P3.6WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。WDT溢出將使該引腳輸出高電平,設(shè)置SFRAUXR的DISRT0位(地址8EH)可打開或關(guān)閉該功能。DISRT0位缺省為RESET輸出高電平打開狀態(tài)。ALE/PROG:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲(chǔ)器,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的正脈沖信號,因此它可對外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。對F1ash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條M0VX和M0VC指令A(yù)LE才會(huì)被激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無效。PSEN:程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號,當(dāng)AT89S51由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖。當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,沒有兩次有效的PSEN信號。EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。F1ash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程電壓Vpp。XTALl:振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。XTAL2:振蕩器反相放大器的輸出端。2.1.4.特殊功能寄存器這些地址并沒有全部占用,沒有占用的地址亦不可使用,讀這些地址將得到一個(gè)隨意的數(shù)值。而寫這些地址單元將不能得到預(yù)期的結(jié)果。不要軟件訪問這些未定義的單元,這些單元是留作以后產(chǎn)品擴(kuò)展用途的,復(fù)位后這些新的位將為0。中斷寄存器:各中斷允許控制位于IE寄存器,5個(gè)中斷源的中斷優(yōu)先級控制位于IP寄存器。雙時(shí)鐘指針寄存器:為更方便地訪問內(nèi)部和外部數(shù)據(jù)存儲(chǔ)器,提供了兩個(gè)16位數(shù)據(jù)指針寄存器:DP0位于SFR(特殊功能寄存器)區(qū)塊中的地址82H、83H和DP1位于地址84H、85H,當(dāng)SFR中的位DPS=0選擇DP0,而DPS=1則選擇DP1。用戶應(yīng)在訪問相應(yīng)的數(shù)據(jù)指針寄存器前初始化DPS位。電源空閑標(biāo)志:電源空閑標(biāo)志(POF)在特殊功能寄存器SFR中PCON的第4位(PCON.4),電源打開時(shí)POF置“1",它可由軟件設(shè)置睡眠狀態(tài)并不為復(fù)位所影響。存儲(chǔ)器結(jié)構(gòu):MCS-51單片機(jī)內(nèi)核采用程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器空間分開的結(jié)構(gòu),均具有64KB外部程序和數(shù)據(jù)的尋址空間。程序存儲(chǔ)器:如果EA引腳接地(GND),全部程序均執(zhí)行外部存儲(chǔ)器。在AT89S51,假如EA接至Vcc(電源+),程序首先執(zhí)行地址從0000H-0FFFH(4KB)內(nèi)部程序存儲(chǔ)器,再執(zhí)行地址為1000H-FFFFH(60KB)的外部程序存儲(chǔ)器。數(shù)據(jù)存儲(chǔ)器:AT89S51的具有128字節(jié)的內(nèi)部RAM,這128字節(jié)可利用直接或間接尋址方式訪問,堆棧操作可利用間接尋址方式進(jìn)行,128字節(jié)均可設(shè)置為堆棧區(qū)空間。看門狗定時(shí)器(WDT):WDT是為了解決CPU程序運(yùn)行時(shí)可能進(jìn)入混亂或死循環(huán)而設(shè)置,它由一個(gè)14bit計(jì)數(shù)器和看門狗復(fù)位SFR(WDTRST)構(gòu)成。外部復(fù)位時(shí),WDT默認(rèn)為關(guān)閉狀態(tài),要打開WDT,用戶必須按順序?qū)?1EH和0E1H寫到WDTRST寄存器(SFR地址為0A6H),當(dāng)啟動(dòng)了WDT,它會(huì)隨晶體振蕩器在每個(gè)機(jī)器周期計(jì)數(shù),除硬件復(fù)位或WDT溢出復(fù)位外沒有其它方法關(guān)閉WDT,當(dāng)WDT溢出,將使RST引腳輸出高電平的復(fù)位脈沖。使用看門狗(WDT):打開WDT需按次序?qū)?1EH和0E1H到WDTRST寄存器(SFR的地址為0A6H),當(dāng)WDT打開后,需在一定的時(shí)候01EH和0E1H到WDTRST寄存器以避免WDT計(jì)數(shù)溢出。14位WDT計(jì)數(shù)器計(jì)數(shù)達(dá)到16383(3FFFH),WDT將溢出并使器件復(fù)位。WDT打開時(shí),它會(huì)隨晶體振蕩器在每個(gè)機(jī)器周期計(jì)數(shù),這意味著用戶必須在小于每個(gè)16383機(jī)器周期內(nèi)復(fù)位WDT,也即寫01EH和0E1H到WDTRST寄存器,WDTRST為只寫寄存器。WDT計(jì)數(shù)器既不可讀也不可寫,當(dāng)WDT溢出時(shí),通常將使RST引腳輸出高電平的復(fù)位脈沖。復(fù)位脈沖持續(xù)時(shí)間為98×Tosc,而Tosc=1/Fosc(晶體振蕩頻率)。為使WDT工作最優(yōu)化,必須在合適的程序代碼時(shí)間段周期地復(fù)位WDT防止WDT溢出。掉電和空閑狀態(tài)時(shí)的WDT:掉電時(shí)期,晶體振蕩停止,WDT也停止。掉電模式下,用戶不能再復(fù)位WDT。有兩種方法可退出掉電模式:硬件復(fù)位或通過激活外部中斷。當(dāng)硬件復(fù)位退出掉電模式時(shí),處理WDT可象通常的上電復(fù)位一樣。當(dāng)由中斷退出掉電模式則有所不同,中斷低電平狀態(tài)持續(xù)到晶體振蕩穩(wěn)定,當(dāng)中斷電平變?yōu)楦呒错憫?yīng)中斷服務(wù)。為防止中斷誤復(fù)位,當(dāng)器件復(fù)位,中斷引腳持續(xù)為低時(shí),WDT并未開始計(jì)數(shù),直到中斷引腳被拉高為止。這為在掉電模式下的中斷執(zhí)行中斷服務(wù)程序而設(shè)置。為保證WDT在退出掉電模式時(shí)極端情況下不溢出,最好在進(jìn)入掉電模式前復(fù)位WDT。在進(jìn)入空閑模式前,WDT打開時(shí),WDT是否繼續(xù)計(jì)數(shù)由SFR中的AUXR的WDIDLE位決定,在IDLE期間(位WDIDLE=0)默認(rèn)狀態(tài)是繼續(xù)計(jì)數(shù)。為防止AT89S51從空閑模式中復(fù)位,用戶應(yīng)周期性地設(shè)置定時(shí)器,重新進(jìn)入空閑模式。當(dāng)位WDIDLE被置位,在空閑模式中WDT將停止計(jì)數(shù),直到從空閑(IDLE)模式中退出重新開始計(jì)數(shù)。中斷:AT89S51共有5個(gè)中斷向量:2個(gè)外中斷(INT0和INT1),2個(gè)定時(shí)中斷(Timer0和Timer1)和一個(gè)串行中斷。這些中斷源各自的禁止和使能位參見特殊功能寄存器的IE。IE也包含總中斷控制位EA,EA清0,將關(guān)閉所有中斷。定時(shí)器0和定時(shí)器1的中斷標(biāo)志TF0和TF1,它是定時(shí)器溢出時(shí)的S5P2時(shí)序周期被置位,該標(biāo)志保留至下個(gè)時(shí)序周期。晶體振蕩器特性:AT89S51中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器。外接石英晶體(或陶瓷諧振器)及電容Cl、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對外接電容Cl、C2雖然沒有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性。如果使用石英晶體,我們推薦電容使用30pF±10pF,而如使用陶瓷諧振器建議選擇40pF±10F。用戶也可以采用外部時(shí)鐘。這種情況下,外部時(shí)鐘脈沖接到XTAL1端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端,XTAL2則懸空。由于外部時(shí)鐘信號是通過一個(gè)2分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號的,所以對外部時(shí)鐘信號的占空比沒有特殊要求,但最小高電平持續(xù)時(shí)間和最大的低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。空閑節(jié)電模式:在空閑工作模式狀態(tài),CPU保持睡眠狀態(tài)而所有片內(nèi)的外設(shè)仍保持激活狀態(tài),這種方式由軟件產(chǎn)生。此時(shí),片內(nèi)RAM和所有特殊功能寄存器的內(nèi)容保持不變。空閑模式可由任何允許的中斷請求或硬件復(fù)位終止。需要注意的是,當(dāng)由硬件復(fù)位來終止空閑工作模式時(shí),CPU通常是從激活空閑模式那條指令的下一條指令開始繼續(xù)執(zhí)行程序的,要完成內(nèi)部復(fù)位操作,硬件復(fù)位脈沖要保持兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘周期)有效,在這種情況下,內(nèi)部禁止CPU訪問片內(nèi)RAM,而允許訪問其它端口。為了避免在復(fù)位結(jié)束時(shí)可能對端口產(chǎn)生意外寫入,激活空閑模式的那條指令后一條指令不應(yīng)是一條對端口或外部存儲(chǔ)器的寫入指令。掉電模式:在掉電模式下,振蕩器停止工作,進(jìn)入掉電模式的指令是最后一條被執(zhí)行的指令,片內(nèi)RAM和特殊功能寄存器的內(nèi)容在終止掉電模式前被凍結(jié)。退出掉電模式的方法是硬件復(fù)位或由處于使能狀態(tài)的外中斷INT0和INT1激活。復(fù)位后將重新定義全部特殊功能寄存器但不改變RAM中的內(nèi)容,在Vcc恢復(fù)到正常工作電平前,復(fù)位應(yīng)無效,且必須保持一定時(shí)間以使振蕩器重啟動(dòng)并穩(wěn)定工作。Flash閃速存儲(chǔ)器的并行編程:AT89s51單片機(jī)內(nèi)部有4k字節(jié)的可快速編程的Flash存儲(chǔ)陣列。編程方法可通過傳統(tǒng)的EPROM編程器使用高電壓(+12V)和協(xié)調(diào)的控制信號進(jìn)行編程。AT89S51的代碼是逐一字節(jié)進(jìn)行編程的。數(shù)據(jù)查詢:AT89S5l單片機(jī)用數(shù)據(jù)查詢方式來檢測一個(gè)寫周期是否結(jié)束,在一個(gè)寫周期中,如需讀取最后寫入的那個(gè)字節(jié),則讀出的數(shù)據(jù)的最高位(P0.7)是原來寫入字節(jié)最高位的反碼。寫周期完成后,有效的數(shù)據(jù)就會(huì)出現(xiàn)在所有輸出端上,此時(shí),可進(jìn)入下一個(gè)字節(jié)的寫周期,寫周期開始后,可在任意時(shí)刻進(jìn)行數(shù)據(jù)查詢。Ready/Busy:字節(jié)編程的進(jìn)度可通過“RDY/BSY”輸出信號監(jiān)測,編程期間,ALE變?yōu)楦唠娖健癏”后P3.0端電平被拉低,表示正在編程狀態(tài)(忙狀態(tài))。編程完成后,P3.0變?yōu)楦唠娖奖硎緶?zhǔn)備就緒狀態(tài)。程序校驗(yàn):如果加密位LB1、LB2沒有進(jìn)行編程,則代碼數(shù)據(jù)可通過地址和數(shù)據(jù)線讀回原編寫的數(shù)據(jù),各加密位也可通過直接回讀進(jìn)行校驗(yàn)。讀片內(nèi)簽名字節(jié):AT89S51單片機(jī)內(nèi)有3個(gè)簽名字節(jié),地址為000H、100H和200H。用于聲明該器件的廠商和型號等信息,讀簽名字節(jié)的過程和正常校驗(yàn)相仿,只需將P3.6和P3.7保持低電平。芯片擦除:在并行編程模式,利用控制信號的正確組合并保持ALE/PROG引腳200ns-500ns的低電平脈沖寬度即可完成擦除操作。在串行編程模式,芯片擦除操作是利用擦除指令進(jìn)行。在這種方式,擦除周期是自身定時(shí)的,大約為500ms。擦除期間,用串行方式讀任何地址數(shù)據(jù),返回值均為00H。Flash閃速存儲(chǔ)器的串行編程:將RST接至Vcc,程序代碼存儲(chǔ)陣列可通過串行ISP接口進(jìn)行編程,串行接口包含SCK線、MOSI(輸入)和MISO(輸出)線。將RST拉高后,在其它操作前必須發(fā)出編程使能指令,編程前需將芯片擦除。芯片擦除則將存儲(chǔ)代碼陣列全寫為FFH。外部系統(tǒng)時(shí)鐘信號需接至XTAL1端或在XTALl和XTAL2接上晶體振蕩器。最高的串行時(shí)鐘(SCK)不超過l/16晶體時(shí)鐘,當(dāng)晶體為33MHz時(shí),最大SCK頻率為2MHz。數(shù)據(jù)校驗(yàn):數(shù)據(jù)校驗(yàn)也可在串行模式下進(jìn)行,在這個(gè)模式,在一個(gè)寫周期中,通過輸出引腳MISO串行回讀一個(gè)字節(jié)數(shù)據(jù)的最高位將為最后寫入字節(jié)的反碼。第2.2節(jié)AT24C02AT24C02支持I2C總線數(shù)據(jù)傳送協(xié)議,I2C總線協(xié)議規(guī)定:任何將數(shù)據(jù)傳送到總線的器件作為發(fā)送器,任何從總線接收數(shù)據(jù)的器件為接收器。數(shù)據(jù)傳送是由產(chǎn)生串行時(shí)鐘和所有起始停止信號的主器件控制的,AT24C02作為從器件。雖然主器件和從器件都可以作為發(fā)送器或接收器,但由主器件控制傳送數(shù)據(jù)發(fā)送或接收的模式。2.2.1.性能與400KHzI2C總線兼容1.8到6.0伏工作電壓范圍低功耗CMOS技術(shù)寫保護(hù)功能當(dāng)WP為高電平時(shí)進(jìn)入寫保護(hù)狀態(tài)頁寫緩沖器自定時(shí)擦寫周期1,000,000編程/擦除周期可保存數(shù)據(jù)100年8腳DIPSOIC或TSSOP封裝溫度范圍商業(yè)級工業(yè)級和汽車級2.2.2.引腳功能描述VCC+1.8V6.0V工作電壓VSS地SCL串行時(shí)鐘:串行時(shí)鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時(shí)鐘,這是一個(gè)輸入管腳。SDA串行數(shù)據(jù)/地址:雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收,SDA一個(gè)開漏輸出管腳,可與其它開漏輸出或集電極開路輸出進(jìn)行線或wire-OR。A0A1A2器件地址輸入端:這些輸入腳用于多個(gè)器件級聯(lián)時(shí)設(shè)置器件地址,當(dāng)這些腳懸空時(shí)默認(rèn)值為0,24WC01當(dāng)使用24WC01或24WC02時(shí)最大可級聯(lián)8個(gè)器件,如果只有一個(gè)24WC02被總線尋址這三個(gè)地址輸入腳A0A1A2可懸空或連接到Vss,如果只有一個(gè)24WC01被總線尋址這三個(gè)地址輸入腳A0A1A2必須連接到Vss。當(dāng)使用24WC04時(shí)最多可連接4個(gè)器件該器件僅使用A1A2地址管腳A0管腳未用可以連接到Vss或懸空,如果只有一個(gè)24WC04被總線尋址,A1和A2地址管腳可懸空或連接到Vss。當(dāng)使用24WC08時(shí)最多可連接2個(gè)器件且僅使用地址管腳A2A0,A1管腳未用可以連接到Vss或懸空,如果只有一個(gè)24WC08被總線尋址A2管腳可懸空或連接到Vss。當(dāng)使用24WC16時(shí)最多只可連接1個(gè)器件所有地址管腳A0A1A2都未用管腳可以連接到Vss或懸空。WP寫保護(hù):如果WP管腳連接到Vcc,所有的內(nèi)容都被寫保護(hù)只能讀。當(dāng)WP管腳連接到Vss或懸空,允許器件進(jìn)行正常的讀/寫操作。第2.3節(jié)LCD1602現(xiàn)在的字符型液品模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。1602型LCD顯示模塊具有體積小,功耗低,顯示內(nèi)容豐富等特點(diǎn)。1602型LCD可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線D0—D7和Rs,R/W,EN三個(gè)控制端口,工作電壓為5V,并且具有字符對比度調(diào)節(jié)和背光功能。 2.3.1.接口信號說明1602型LCD的接口信號說明如表2-1所示:表2-11602型LCD的接口信號說明編號符號引腳說明編號符號引腳說明1VSS電源地9D2DataI/O2VDD電源正極10D3DataI/O3VO液晶顯示偏壓信號11D4DataI/O4RS數(shù)據(jù)/命令選擇端(H/L)12D5DataI/O5R/W讀寫選擇端(H/L)13D6DataI/O6E使能信號14D7DataI/O7D0DataI/O15BLA背光源正極8D1DataI/O16BLK背光源負(fù)極1602型LCD的主要技術(shù)參數(shù)如表2-2所示:表2-21602型LCD的主要技術(shù)參數(shù)顯示容量芯片上作電壓工作電流模塊最佳工作電壓字符尺寸16X2個(gè)字符4.5~5.5V2.0mA(5.0V)5.0V2.95X4.35基本操作程序讀狀態(tài):輸入:RS=L,RW=L,E=H輸出:DO-D7=狀態(tài)字讀數(shù)據(jù):輸入:RS=H,RW=H,E=H輸出:無寫指令:輸入:RS=L,RW=L,D0-D7=指令碼,E=高脈沖輸出:D0-D7=數(shù)據(jù)寫數(shù)據(jù):輸入:RS=H,RW=L,D0-D7=數(shù)據(jù),E=高脈沖輸出:無第2.4節(jié)晶振振蕩器晶體振蕩器,簡稱晶振,其作用在于產(chǎn)生原始的時(shí)鐘頻率,這個(gè)頻率經(jīng)過頻率發(fā)生器的放大或縮小后就成了電腦中各種不同的總線頻率。以聲卡為例,要實(shí)現(xiàn)對模擬信號44.1kHz或48kHz的采樣,頻率發(fā)生器就必須提供一個(gè)44.1kHz或48kHz的時(shí)鐘頻率。如果需要對這兩種音頻同時(shí)支持的話,聲卡就需要有兩顆晶振。但是現(xiàn)在的娛樂級聲卡為了降低成本,通常都采用SCR將輸出的采樣頻率固定在48kHz,但是SRC會(huì)對音質(zhì)帶來損害,而且現(xiàn)在的娛樂級聲卡都沒有很好地解決這個(gè)問題?,F(xiàn)在應(yīng)用最廣泛的是石英晶體振蕩器。石英晶體振蕩器是一種高精度和高穩(wěn)定度的振蕩器,石英晶體振蕩器也稱石英晶體諧振器,它用來穩(wěn)定頻率和選擇頻率,是一種可以取代LC諧振回路的晶體諧振元件。石英晶體振蕩器廣泛地應(yīng)用在電視機(jī)、影碟機(jī)、錄像機(jī)、無線通訊設(shè)備、電子鐘表、單片機(jī)、數(shù)字儀器儀表等電子設(shè)備中。為數(shù)據(jù)處理設(shè)備產(chǎn)生時(shí)鐘信號和為特定系統(tǒng)提供基準(zhǔn)信號。在單片機(jī)中為其提供時(shí)鐘頻率。石英晶體振蕩器是利用石英晶體(二氧化硅的結(jié)晶體)的壓電效應(yīng)制成的一種諧振器件,它的基本構(gòu)成大致是:從一塊石英晶體上按一定方位角切下薄片(簡稱為晶片,它可以是正方形、矩形或圓形等),在它的兩個(gè)對應(yīng)面上涂敷上銀層用作電極使用,在每個(gè)電極上各焊一根引線接到管腳上,再加上封裝外殼就構(gòu)成了石英晶體諧振器,簡稱為石英晶體或晶體、晶振。其產(chǎn)品一般用金屬外殼封裝,也有用玻璃殼、陶瓷或塑料封裝的。只要在晶體振子板極上施加交變電壓,就會(huì)使晶片產(chǎn)生機(jī)械變形振動(dòng),此現(xiàn)象即所謂逆壓電效應(yīng)。當(dāng)外加電壓頻率等于晶體諧振器的固有頻率時(shí),就會(huì)發(fā)生壓電諧振,從而導(dǎo)致機(jī)械變形的振幅突然增大。本設(shè)計(jì)中采用12MHz做系統(tǒng)的外部晶振。電容取值為30pF。第3章系統(tǒng)硬件構(gòu)成第3.1節(jié)設(shè)計(jì)原理本設(shè)計(jì)采用AT89S52為主控芯片,通過IIC總線協(xié)議與AT24C02進(jìn)行通信。電路的輔助模塊有復(fù)位電路、矩陣按鍵電路、繼電器電路、報(bào)警電路。在進(jìn)行keilc編程的時(shí)候,首先在程序中設(shè)置初始密碼。在進(jìn)行開鎖的時(shí)候,用戶需要進(jìn)行根據(jù)提示進(jìn)行使用按鍵輸入密碼,在輸入密碼的同時(shí)主控芯片單片機(jī)會(huì)根據(jù)程序的設(shè)定和輸入的密碼進(jìn)行比較,如果輸入每個(gè)密碼都正確的情況下,則液晶會(huì)提示用戶進(jìn)行相應(yīng)的操作,如進(jìn)行修改密碼。報(bào)警與開鎖電路實(shí)際是在在密碼已經(jīng)進(jìn)行比對以后,主控芯片通過判斷的結(jié)果給出相應(yīng)的操作,即相應(yīng)的I/O端口會(huì)出現(xiàn)高低電平的變化,從而實(shí)現(xiàn)開鎖與報(bào)警的功能。系統(tǒng)框圖如圖3-1所示圖3-1系統(tǒng)框圖第3.2節(jié)電路總圖構(gòu)成在確定了選用什么型號的單片機(jī)后,就要確定在外圍電路,其外圍電路包括電源輸入部分、存儲(chǔ)部分、鍵盤輸入部分、復(fù)位部分、晶振部分、顯示部分、報(bào)警部分、開鎖部分組成,根據(jù)實(shí)際情況鍵盤輸入部分選擇4*4矩陣鍵盤,顯示部分選擇字符型液晶顯示LCDl602。電路總圖如圖3-2所示:圖3-2電路總原理圖3.2.1.報(bào)警部分當(dāng)密碼輸入兩次的數(shù)值與所設(shè)定的參數(shù)值不同時(shí),單片機(jī)AT89C51便通過P2.7口控制三極管來驅(qū)動(dòng)揚(yáng)聲器報(bào)警,當(dāng)輸出低電平時(shí)三極管截止,當(dāng)輸出高電平時(shí)三極管導(dǎo)通揚(yáng)聲器報(bào)警。如圖3-3所示圖3-3報(bào)警電路原理圖3.2.2.AT24C02存儲(chǔ)部分掉電存儲(chǔ)單元的作用是在電源斷開的時(shí)候,存儲(chǔ)當(dāng)前設(shè)定的單價(jià)信息。AT24C02是ATMEL公司開發(fā)的可擦除存儲(chǔ)芯片,AT24C02是一個(gè)2K位串行CMOSE2PROM,內(nèi)部含有256個(gè)8位字節(jié),AT24C02有一個(gè)16字節(jié)頁寫緩沖器。該器件通過IIC總線接口進(jìn)行操作,有一個(gè)專門的寫保護(hù)功能。采用兩線串行的總線和單片機(jī)通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10Ua(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且采用8腳的DIP封裝,使用方便。如圖3-4所示圖3-42AT24C02原理圖電路3.2.3.顯示部分為了提高密碼鎖的密碼顯示效果能力。本設(shè)計(jì)的顯示部分由液晶顯示器LCDl602取代普通的數(shù)碼管來完成。只有按下鍵盤上的開啟按鍵后,顯示器才處于開啟狀態(tài)。同理只有按下關(guān)閉按鍵后顯示器才處于關(guān)閉狀態(tài)。否則顯示器將一直處于初始狀態(tài),當(dāng)需要對密碼鎖進(jìn)行開鎖時(shí),按下鍵盤上的開鎖按鍵后利用鍵盤上的數(shù)字鍵0-9輸入密碼,每按下一個(gè)數(shù)字鍵后在顯示器上顯示一個(gè)“*”,輸入多少位就顯示多少個(gè)“*”。當(dāng)密碼輸入完成時(shí),按下確認(rèn)鍵,如果輸入的密碼正確的話,LCD子顯示“RIGHT”,單片機(jī)其中P2.0引腳會(huì)輸出低電平,使三極管T2導(dǎo)通,電磁鐵吸合,電子密碼鎖被打開,如果密碼不正確,LCD顯示屏?xí)@示“ERROR”,P2.0輸出的是高電平,電子密碼鎖不能被打開。通過LCD顯示屏,可以清楚的判斷出密碼鎖所處的狀態(tài)。其顯示部分引腳接口如圖3-5所示:圖3-5液晶顯示電路和上拉電阻驅(qū)動(dòng)3.2.4.復(fù)位電路復(fù)位電路(圖3-12是單片機(jī)復(fù)位電路)具有上電自動(dòng)復(fù)位和手動(dòng)復(fù)位的雙重功能。單片機(jī)的RST引腳是復(fù)位信號的輸入端,復(fù)位信號是高電平的時(shí)候才有效,其有效時(shí)間應(yīng)持續(xù)24個(gè)震蕩脈沖周期(即2個(gè)機(jī)器周期)以上;通常為了保證應(yīng)用系統(tǒng)能夠準(zhǔn)確地復(fù)位,復(fù)位電路應(yīng)使引腳RST腳保持10ms以上的高電平狀態(tài)。只要RST保持高電平,單片機(jī)就會(huì)自動(dòng)循環(huán)復(fù)位。當(dāng)RST引腳從高電平狀態(tài)轉(zhuǎn)為低電平狀態(tài)時(shí),單片機(jī)退出復(fù)位狀態(tài),從程序存儲(chǔ)器的0000H地址開始執(zhí)行用戶程序。電容C3和電阻R5組成上電復(fù)位電路。上電瞬間RST引腳獲得高電平,隨著電容C11的充電,RST引腳的高電平逐漸下降。只要高電平保持足夠的時(shí)間,單片機(jī)就能完成復(fù)位。手動(dòng)復(fù)位如圖3-6所示圖3-6復(fù)位電路3.2.5.晶振部分AT89S52引腳XTAL1和XTAL2與晶體振蕩器及電容C2、C3按圖4-6所示方式連接。晶振、電容C2/C3及片內(nèi)與非門(作為反饋、放大元件)構(gòu)成了電容三點(diǎn)式振蕩器,振蕩信號頻率與晶振頻率及電容C2、C3的容量有關(guān),但主要由晶振頻率決定,范圍在0~33MHz之間,電容C2、C3取值范圍在20~40pF之間。根據(jù)實(shí)際情況,本設(shè)計(jì)中采用12MHz做系統(tǒng)的外部晶振。電容取值為30pF。電路如圖3-7圖3-7晶振電路3.2.6.開鎖電路開鎖電路的功能是當(dāng)輸入正確的密碼后密碼鎖將被鎖定,既開鎖。當(dāng)單片機(jī)P2.6引腳發(fā)出信號經(jīng)三極管放大后,觸動(dòng)電磁閥即會(huì)把鎖打開。一旦輸入密碼,單片機(jī)便會(huì)與初始密碼進(jìn)行比對,如果密碼輸入兩次都與原始密碼不相符即會(huì)報(bào)警。電路如圖3-8所示圖3-8開鎖電路3.2.7.鍵盤輸入模塊鍵盤是單片機(jī)十分重要的輸入設(shè)備,是實(shí)現(xiàn)人機(jī)對話的紐帶。鍵盤是由一組規(guī)則排列的按鍵組成,一個(gè)按鍵實(shí)際上就是一個(gè)開關(guān)元件,即鍵盤是一組規(guī)則排列的開關(guān)。根據(jù)按鍵與單片機(jī)的連接方式不同,按鍵主要分為獨(dú)立式按鍵和矩陣式按鍵,有了這些按鍵,對單片機(jī)的控制就方便多了。本設(shè)計(jì)按鍵數(shù)量較多,所以采用矩陣式按鍵以節(jié)省I/O口線。將16個(gè)按鍵分為4排4列排列好,如圖3-9矩陣鍵盤硬件結(jié)構(gòu)。當(dāng)有一個(gè)鍵按下時(shí),通過某一邊引腳賦低電平,掃描全部引腳看是否與最初的賦值一樣,不一樣則根據(jù)相應(yīng)的算法(通過改變后的值與初始值相或,根據(jù)結(jié)果賦值)確定是哪個(gè)鍵按下。鍵盤為4×4形式,按鍵包括阿拉伯?dāng)?shù)字0~9,以及鎖定、更改和改密三個(gè)應(yīng)用按鍵。當(dāng)用戶需要輸入密碼或修改密碼時(shí),按下相應(yīng)按鍵即會(huì)與單片機(jī)產(chǎn)生信號,并會(huì)執(zhí)行相應(yīng)的程序。電路如圖3-9所示圖3-9矩陣鍵盤電路第4章仿真設(shè)計(jì)第4.1節(jié)Protues仿真軟件概述Protues是目前使用比較廣泛的單片機(jī)類的仿真系統(tǒng)的軟件之一,它可以實(shí)現(xiàn)的功能比較多,可以實(shí)現(xiàn)程序與原理圖的連調(diào),也可以單獨(dú)作為繪制原理圖的工具使用,與Protel有著過之不及的功能,于此同時(shí)還可以進(jìn)行PCB版圖的生成,在方法中與Protel類似。此款軟件及繪制原理圖、PCB版圖和仿真于一身。Protues此款軟件的使用比較簡單。在運(yùn)行環(huán)境搭載好的前提下,打開ISIS直接進(jìn)入到主界面,在左邊欄框中有一個(gè)快捷鍵P(從庫中選取),點(diǎn)擊后出現(xiàn)一個(gè)對話框然后輸入想要查找的元器件即可。之后在單擊確定按鍵所選器件就會(huì)顯示在界面左上角的小框中此時(shí)點(diǎn)擊鼠標(biāo)左鍵就會(huì)放到圖層中,然后直接把鼠標(biāo)放到接頭處就會(huì)顯示一個(gè)畫筆的標(biāo)志此時(shí)按住鼠標(biāo)左鍵就可進(jìn)行連線了。如圖4-1所示為繪圖界面。圖4-1繪圖界面第4.2節(jié)Protues與Keil的連調(diào)在進(jìn)行連調(diào)之前必須確保程序是完整的,原理圖也是沒有錯(cuò)誤的。還要在正確的運(yùn)行平臺(tái)下進(jìn)行操作。檢查沒有錯(cuò)誤后,打開原理圖,點(diǎn)擊單片機(jī)就會(huì)出現(xiàn)一個(gè)對話框如圖5-2所示,然后把生成的.hex文件添加到里面即可實(shí)現(xiàn)。在這里比較重要的就是.hex文件的生成過程。首先把已編寫好的程序加載到Keil軟件下進(jìn)行編譯如果沒有遇到任何錯(cuò)誤后,選擇相應(yīng)的選項(xiàng)就可以生成.hex文件了。之后再按照生成的的路徑去尋找這個(gè)文件。找到之后加載到之前點(diǎn)開的對話框上即可。在此后點(diǎn)擊運(yùn)行按鍵就會(huì)進(jìn)行仿真了,按照設(shè)計(jì)的功能去調(diào)試就可以了。加載hex如圖4-2所示圖4-2加載.hex文件第4.3節(jié)Protues與Keil的連調(diào)的仿真結(jié)果系統(tǒng)仿真運(yùn)行環(huán)境下的結(jié)果如圖4-3所示圖4-3系統(tǒng)仿真圖開鎖仿真圖如5-4所示圖4-3開鎖仿真圖第5章系統(tǒng)軟件設(shè)計(jì)本系統(tǒng)軟件設(shè)計(jì)由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、鍵功能程序、密碼設(shè)置程序、EEPROM讀寫程序和延時(shí)程序等組成。第5.1節(jié)主程序流程圖圖5-1所示為主程序流程圖,開始接上電源,程序進(jìn)行初始化設(shè)置,然后在鍵盤上輸入密碼,此系統(tǒng)進(jìn)行鍵盤掃描,然后啟動(dòng)程序,進(jìn)行保護(hù),再次在鍵盤上輸入密碼,系統(tǒng)進(jìn)行掃描,如和之前一樣,則執(zhí)行程序,如不是,則執(zhí)行另一種程序,最后結(jié)束。圖5-1主程序流程圖第5.2節(jié)按鍵功能流程圖圖5-2為按鍵功能流程圖,在按鍵當(dāng)中,有與輸入、開鎖、清除、設(shè)置、確認(rèn)的程序相對應(yīng)的按鍵,并按順序與輸入的數(shù)相比較,當(dāng)輸入正確時(shí),進(jìn)入密碼程序,錯(cuò)誤時(shí)進(jìn)行清除,輸入兩次正確的,可進(jìn)行重新設(shè)置,最后確認(rèn)程序。圖5-2按鍵功能流程第5.3節(jié)密碼設(shè)置流程圖如圖5-3為密碼設(shè)置流程圖,開始按下設(shè)置鍵,輸入舊密碼,如果錯(cuò)誤,累計(jì)三次錯(cuò)誤,進(jìn)行報(bào)警程序。如輸入正確,可以改密碼,確認(rèn)后再次輸入更改后密碼,如兩次輸入一樣,則更改成功。圖5-3密碼設(shè)置流程圖第5.4節(jié)開鎖流程圖圖5-4為開鎖流程圖,開始時(shí)按開鎖鍵,輸入密碼,如果輸入正確,則開鎖成功。如果輸入錯(cuò)誤累計(jì)三次,則執(zhí)行報(bào)警程序。圖5-4開鎖流程圖結(jié)論此次畢業(yè)設(shè)計(jì)我之所以選擇基于AT89S52與AT24C02的密碼鎖的設(shè)計(jì),是因?yàn)槲覍τ趩纹瑱C(jī)與芯片之間的數(shù)據(jù)傳輸還存在著一定的問題。此次通過本次畢業(yè)設(shè)計(jì),我查閱了大量的資料,具體了解AT89S52芯片、存儲(chǔ)器芯片的讀寫操作、編程程序的簡化與規(guī)范。在進(jìn)行總體的設(shè)計(jì)以后,我使用了keilc軟件編寫了程序并且進(jìn)行了protues軟件的仿真。在仿真成功了以后。我才開始進(jìn)行開始制作硬件電路。硬件電路包括,復(fù)位電路、晶振電路、矩陣按鍵電路、LCD1602液晶顯示電路、報(bào)警指示電路、開鎖電路和AT24C02存儲(chǔ)器電路!在進(jìn)行硬件電路制作的時(shí)候,我花了大量的時(shí)間,因?yàn)榧纫O(shè)計(jì)的美觀又要考慮實(shí)際的電路布線規(guī)則,所以還是感覺制作起來極其困難。電路制作好了以后,我使用下載器把程序下載進(jìn)去以后,發(fā)現(xiàn)并沒有我想象的那么的成功,然后我只能逐一的調(diào)試各個(gè)模塊,最后發(fā)現(xiàn)還是存在許多的問題的,如業(yè)績顯示模塊在使用主控單片機(jī)的P0模塊是,還是要需要使用上拉電阻的。在進(jìn)行矩陣電路的制作時(shí),電路很容易發(fā)生短路,因此必須使用萬用表逐個(gè)的測量使用短路的現(xiàn)象!從策劃開始,我開始查找和收集大量的資料,進(jìn)行程序編程的時(shí)候,我又要把各個(gè)軟件仔細(xì)的熟悉了一下,再到仿真成功,硬件調(diào)試成功。在這個(gè)復(fù)雜的過程中我真的學(xué)到了很多。我學(xué)會(huì)以了系統(tǒng)的看待了一個(gè)問題,也必須細(xì)心的對待每一個(gè)問題,因?yàn)橐粋€(gè)整體無論在哪一個(gè)小的方面出了問題,都會(huì)造成整個(gè)系統(tǒng)的出錯(cuò)。參考文獻(xiàn)劉昌華,易逵.《8051單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)與實(shí)踐》[M].國防工業(yè)出版社.2007.5魏立峰,王寶興.單片機(jī)原理與應(yīng)用技術(shù)[M].北京:北京大學(xué)出版社,2010:34-65.王為青,邱文勛.《51單片機(jī)應(yīng)用開發(fā)案例精選》[M].人民郵電出版社.2007.1譚浩強(qiáng).C程序設(shè)計(jì)(第三版)[M].北京:高等教育出版社,2005:113.陳雪麗.單片機(jī)原理及接口技術(shù)[M].北京:化學(xué)工業(yè)出版社,2005.王少偉,巫丹.89C51單片機(jī)USB接口的設(shè)計(jì)與實(shí)現(xiàn).科技創(chuàng)新導(dǎo)報(bào),2009(28).李明喜.新型電子密碼鎖的設(shè)計(jì)[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2004,(03);董繼成.一種新型安全的單片機(jī)密碼鎖[J].電子技術(shù),2004,(03);楊茂濤.一種電子密碼鎖的實(shí)現(xiàn)[J].福建電腦,2004,(08);瞿貴榮.實(shí)用電子密碼鎖[J].家庭電子,2000,(07);趙亮,跟我學(xué)51單片機(jī)系列教程第(十一)—I2C總線[J],《電子制作》2011年第11期.劉靜,王計(jì)元.24C系列串行EEPROM與單片機(jī)的接口設(shè)計(jì)及應(yīng)用[J],《上海電力學(xué)院學(xué)報(bào)》2011年第4期.致謝時(shí)光飛逝,一轉(zhuǎn)眼大學(xué)四年的時(shí)光就過去了,我所學(xué)的專業(yè)是電子信息工程與技術(shù),我很喜歡這門專業(yè),因此我的專業(yè)課成績也不是很差。在本次畢業(yè)設(shè)計(jì)中,我的論文指導(dǎo)老師真的幫了我很多的忙,指導(dǎo)了我很多。在此次論文的選題到最后論文定稿,老師給了我很多的建議。還有就是我在做硬件的時(shí)候,我的同學(xué)給了我很多的建議,我的同學(xué)專業(yè)學(xué)的很好,尤其在做硬件方面,我在幾個(gè)比較難以解決的問題都是她幫我解決的。在我做論文的時(shí)候給了我很多的鼓勵(lì)與幫助。最后還要感謝我的父母,這么含辛茹苦的給了我這么個(gè)學(xué)習(xí)的機(jī)會(huì)。總之,感謝你們一直伴隨著我成長。真的到了離別的時(shí)候了,真的非常不舍得我美麗的母校,我敬愛的老師,但是百舸爭流,勇者不必勇敢向前。不管前面遇到什么苦難,我相信大學(xué)四年,我已經(jīng)學(xué)會(huì)了如何去思考我所遇到的問題,學(xué)會(huì)如何去解決我所遇到的問題。最后,感謝在大學(xué)期間認(rèn)識(shí)我和我認(rèn)識(shí)的所有朋友,因?yàn)槟銈兊呐惆?,我的大學(xué)生活才豐富多彩!謝謝!附錄附錄1:實(shí)物照片圖1實(shí)物圖2輸入密碼圖3密碼正確提示圖4修改密碼附錄2:部分源程序#include<reg52.h>//包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義#include"keyboard.h"#include"delay.h"#defineKeyPortP1unsignedcharKeyScan(void)//鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法{unsignedcharcord_h,cord_l;//行列值中間變量KeyPort=0x0f;//行線輸出全為0cord_h=KeyPort&0x0f;//讀入列線值if(cord_h!=0x0f)//先檢測有無按鍵按下{DelayMs(10);//去抖if((KeyPort&0x0f)!=0x0f){cord_h=KeyPort&0x0f;//讀入列線值KeyPort=cord_h|0xf0;//輸出當(dāng)前列線值cord_l=KeyPort&0xf0;//讀入行線值while((KeyPort&0xf0)!=0xf0);//等待松開并輸出return(cord_h+cord_l);//鍵盤最后組合碼值}}return(0xff);//返回該值}unsignedcharKeyPro(void)//按鍵值處理函數(shù),返回掃鍵值{switch(KeyScan()){case0x7e:return0;break;//0按下相應(yīng)的鍵顯示相對應(yīng)的碼值case0x7d:retur

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論