基于STC89C52單片機(jī)的超市存包柜控制模塊設(shè)計論文_第1頁
基于STC89C52單片機(jī)的超市存包柜控制模塊設(shè)計論文_第2頁
基于STC89C52單片機(jī)的超市存包柜控制模塊設(shè)計論文_第3頁
基于STC89C52單片機(jī)的超市存包柜控制模塊設(shè)計論文_第4頁
基于STC89C52單片機(jī)的超市存包柜控制模塊設(shè)計論文_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

摘要本課題由STC89C52第一局部:CPU核心控制局部,由單片機(jī)STC89C52、復(fù)位電路、時鐘電路等構(gòu)成,是整個系統(tǒng)的核心。第二局部:鍵盤顯示控制局部。用1個LCD1602和12個按鍵進(jìn)行管理,LCD1602用于顯示柜的號碼和4位密碼,12個按鍵分別為10個數(shù)字鍵和2個功能鍵。通過這些鍵盤,用戶就可以完成所有的操作。第三局部:執(zhí)行機(jī)構(gòu)局部。它是通過89C52的并行口控制8個發(fā)光二極管軟件局部主要采用我們自己設(shè)定的一種與柜的號碼相關(guān)聯(lián)的算法來產(chǎn)生一組4位的隨機(jī)密碼,而密碼的產(chǎn)生、核對過程就對應(yīng)存包、取包的過程。本系統(tǒng)具有如下特色:〔1〕經(jīng)濟(jì)實用、操作簡單且便于安裝。〔2〕能產(chǎn)生一組4位隨機(jī)密碼,密碼使用一次有效;有三次容錯功能和解鎖功能,因而系統(tǒng)平安可靠?!?〕利用軟件產(chǎn)生隨機(jī)密碼而不是硬件,使得硬件更為簡潔、可靠、穩(wěn)定。關(guān)鍵詞:STC89C52單片機(jī);自動存包柜;隨機(jī)密碼;解鎖ABSTRACTThissubjectisbecomekeycontrolsystemsbySTC89C52formsandanorganization.Thewholesystemisshownandiscontrolledpartly,carriedoutsomethreepartstomakeupbytopmanagementpart,keyboard,throughcheckingthatfinishesstoringandwrappingupandfetchthecourseofthebagautomaticallyofthepassword.Thefirstpart:CPUcorecontrolandpartly,Formof89C52Thesecondpart:Thekeyboardshowthatcontrolssome.InchargeofwithLCD1602to4numbersand12buttongoonandmanage,4numberinchargeofanduseforandshowtwocupboardsymboland4password,12buttonsare10numericalkeysrespectivelyand2functionkeys.Throughthesekeyboards,userscanfinishalloperation.Thethirdpart:Executivebody'spart.Initthroughthenotrunningsidebysidebecausetherearen'tmouth,andcontrolthestatesoflightof8pieces(ontokill)of89C52Softwarepartadoptweonethatoneselfestablishcorrelatewithnumberofthecupboardalgorithmthatunitecomeandproduceonepasswordatrandomof4ofgroupmainly,Andproduction,checkcoursecorrespondtoanddepositthebag,fetchthecourseofthebagofpassword.Thissystemhasthefollowingcharacteristic:1、Economicalandpractical,operatesimpleandeasytoinstally.2、Canproduceonegroup4passwordatrandom,passworduseoneeffective;Thereisfault-tolerantfunctionthreetimesandlockingthefunction,thereforethesystemissafeandreliable.3、Utilizesoftwareproducepasswordinsteadofhardware,makehardwaremoresuccinct,reliable,stabilityatrandom.KeyWords:STC89C52;Storeabagofcupboards;thepassword;unblockatrandomautomatically目錄_Toc2625552341引言12系統(tǒng)概述22.1系統(tǒng)總體設(shè)計目標(biāo)功能及要求22.2系統(tǒng)總體設(shè)計方案22.2.1系統(tǒng)原理簡介22.2.2系統(tǒng)設(shè)計方案23系統(tǒng)硬件電路設(shè)計43.1系統(tǒng)硬件電路43.2STC89C52單片機(jī)簡介43.2.1單片機(jī)概述43.2.2STC89C52主要性能83.2.3STC89C52芯片引腳功能93.3單片機(jī)根本工作電路113.3.1單片機(jī)的最小系統(tǒng)電路113.3.2顯示電路133.3.3鍵盤電路143.3.4穩(wěn)壓電源154系統(tǒng)的軟件設(shè)計164.1C語言程序設(shè)計164.1.1C語言簡介164.1.2C語言的特點(diǎn)164.1.3C源程序的結(jié)構(gòu)特點(diǎn)174.2軟件設(shè)計174.2.1程序設(shè)計步驟184.2.2程序各模塊設(shè)計184.2.3程序流程圖184.2.4各模塊的軟件程序設(shè)計204.2.5密碼驗證方案比較205系統(tǒng)調(diào)試215.1硬件調(diào)試215.2軟件調(diào)試215.3調(diào)試中遇到的問題及解決方法215.3.1硬件215.3.2軟件21結(jié)論23參考文獻(xiàn)24致謝25附錄一電路綜合原理圖26附錄二程序流程圖27附錄三系統(tǒng)程序28隨著計算機(jī)技術(shù)和微電子技術(shù)不斷開展,電子存包系統(tǒng)由于其平安性高、可靠性高、方便快捷等特點(diǎn),目前一些大商場的入口處,常有電腦控制的自動存包柜。進(jìn)入商場購物常需存放掉一些隨身攜帶的較重物件或多余的現(xiàn)金。電腦控制的存包柜無需專職的管理人員且平安可靠,頗受顧客的信任。事實上這類存包柜用處很廣,如游泳池的更衣室、部隊軍訓(xùn)時的存包處,展覽會、車站、電影院等等,凡公共場所需要臨時存放物品,又要求平安保密,那么很需要有一個這樣的裝置。我們自行設(shè)計制作了一個存包柜的電腦控制器,選用最常見的元器件,本錢很低,工作平安可靠。電子存包柜是集手動,自動控制于一體的,具有多重平安防護(hù)功能,在智能化、平安化、實用性等方面具有傳統(tǒng)存包柜所不可比較的優(yōu)點(diǎn)。電子存包柜是新一代的存包柜,具有操作簡單、管理方便、平安可靠等特點(diǎn)。電子存包柜的功能可以在購物前存放物品,但是由于價格等因素的影響未能得到廣泛的應(yīng)用。以前存包柜都只是在大型的超市得到了應(yīng)用,大局部的超市還是使用人工進(jìn)行管理存包或不進(jìn)行存包。期間有些公司曾推出紅外線掃描條形碼進(jìn)行存包,但是價格的因素未得到廣泛應(yīng)用??煽啃约蟹从沉水a(chǎn)品或設(shè)備的質(zhì)量指標(biāo),一個可靠的系統(tǒng)應(yīng)該能夠長期穩(wěn)定、正常運(yùn)行。電子存包系統(tǒng)的設(shè)計應(yīng)該有高的可靠性,包括系統(tǒng)結(jié)構(gòu)、硬件電路和運(yùn)行軟件的可靠性。高的可靠性是實現(xiàn)系統(tǒng)功能的重要保證,高的可靠性已成為我們設(shè)計電子存包柜時必須解決的關(guān)鍵性問題。平安性是指系統(tǒng)能夠保證人和財物的平安,電子存包柜要有緊急情況保護(hù)等措施。平安性是設(shè)計電子存包柜時必須考慮的另一個重要因素。友好的人機(jī)界面對于系統(tǒng)來說也是相當(dāng)重要的。沒用可視化的人機(jī)接口操作起來不太方便,用戶不能直觀的了解到存包柜的各種信息。沒有友好的可視化的人機(jī)接口的電子存包柜已不能滿足用戶的要求,通過圖形進(jìn)行各種操作并清楚地顯示電子存包柜的各種信息。2.1系統(tǒng)總體設(shè)計目標(biāo)功能及要求〔1〕完成矩陣鍵盤輸入密碼進(jìn)行取包的任務(wù)?!?〕存包時系統(tǒng)能隨機(jī)數(shù)的產(chǎn)生?!?〕隨機(jī)數(shù)在89C52中的保存及刪除?!?〕液晶模塊的選擇及與單片機(jī)的接口電路設(shè)計?!?〕LCD1602的使用〔6〕發(fā)光二極管模擬柜子的實現(xiàn)。2.2系統(tǒng)總體設(shè)計方案2.2.1系統(tǒng)原理簡介電子存包柜由電子電路和機(jī)械兩局部組成。本設(shè)計的存包柜主要實現(xiàn)電子電路方面的功能,它可以通過單片機(jī)完成密碼的隨機(jī)產(chǎn)生、密碼確實認(rèn)和顯示以及用發(fā)光二極管模擬柜子的開閉狀態(tài)等功能。從硬件上看,它由局部組成,分別是:LCD1602液晶顯示屏,顯示亮度均勻,用于顯示相應(yīng)的信息;STC89C52單片機(jī)是整個電路的核心局部,其中振蕩電路為CPU產(chǎn)生賴以工作的時序,復(fù)位電路使CPU與系統(tǒng)中的其他部件處于一個確定的初始狀態(tài);還有鍵盤局部,鍵盤有12個按鍵,其中的十個分別為0——9的數(shù)字鍵,其他兩個分別為存包鍵〔隨機(jī)產(chǎn)生密碼〕和取包鍵〔確認(rèn)密碼〕;以及電源局部,它是由變壓器把220V的電壓變?yōu)?V,再通過7805穩(wěn)壓之后為電路提供一個5V的工作電壓。STC89C52是一種低功耗、高性能CMOS8位單片機(jī),片內(nèi)含8KBISP〔In-systemprogrammable〕的可反復(fù)擦寫的Flash只讀程序存儲器、該器件采用Atmel公司的高密度、非易失性存儲技術(shù)制造、兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及89C整套系統(tǒng)本錢低廉,有廣闊的市場前景。2.2.2系統(tǒng)設(shè)計方案〔1〕控制系統(tǒng)在電子存包柜電路的設(shè)計中,控制方法是核心技術(shù)。方案一:采用數(shù)字電路控制。采用數(shù)字密碼鎖電路的好處就是設(shè)計簡單。用以74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路作為密碼鎖的核心控制,共設(shè)了12個用戶輸入鍵,其中只有10個是有效的密碼按鍵,一個確定鍵和一個去除鍵;如果用戶輸入密碼的次數(shù)超過指定次數(shù)〔假設(shè)用戶覺得不便,還可以修改〕電路將在10秒后發(fā)出報警聲,電路將鎖定鍵盤,防止他人繼續(xù)非法操作。方案二:采用一種是用以STC89C52為核心的單片機(jī)控制方案。利用單片機(jī)靈活的編程設(shè)計和豐富的IO端口,及其控制的準(zhǔn)確性,不但能實現(xiàn)根本的密碼鎖功能,還能添加調(diào)電存儲、聲光提示甚至添加遙控控制功能。存包柜電路包含:鍵盤輸入、密碼檢測、開鎖電路、執(zhí)行電路、顯示電路。〔2〕驅(qū)動顯示電路本設(shè)計采用LM160216*2字符液晶點(diǎn)陣式LCD,數(shù)據(jù)線掛接總數(shù)據(jù)線,數(shù)據(jù)或命令端RS接P2.2,讀寫端R/W接P2.3,使能端E接P2.4,命令寫入地址為E3FFH,數(shù)據(jù)寫入地址為E7FFH,讀狀態(tài)地址為EBFFH,不需要生成新的字符,只要使用其內(nèi)部字符庫的字符即可,使用時送入需要顯示數(shù)據(jù)的ASCII碼值即可。3.1系統(tǒng)硬件電路硬件電路以STC89C52為核心,3*4矩陣鍵盤作為輸入,顯示屏為LCD1602,發(fā)光二極管模擬存包箱柜,其中74LS164為串入并出芯片可節(jié)省I/O口。硬件電路的系統(tǒng)方框圖,如圖3-1所示:STCSTC89C523*4矩陣鍵盤LCD1602發(fā)光二極管電源74LS164圖3-1系統(tǒng)方框圖3.2STC89C52單片機(jī)簡介3.2.1單片機(jī)概述單片機(jī)作為微型計算機(jī)的一個分支,產(chǎn)生于20世紀(jì)70年代,經(jīng)過二三十年的開展,在各行各業(yè)中已經(jīng)廣泛應(yīng)用。單片機(jī)體積小,重量輕,抗干擾能力強(qiáng),對環(huán)境要求不高,價格低廉,可靠性高,靈活性好。廣泛應(yīng)用于工業(yè)控制、智能儀表、機(jī)電一體化產(chǎn)品、家用電器、辦公自動化領(lǐng)域、商業(yè)營銷領(lǐng)域、汽車及通信、計算機(jī)外部設(shè)備、模糊控制等領(lǐng)域。一、應(yīng)用中的單片機(jī)品種繁多主要的單片機(jī)如下:ATMEL公司的AVR單片機(jī),是增強(qiáng)型RISC內(nèi)載Flash的單片機(jī),芯片上的Flash存儲器附在用戶的產(chǎn)品中,可隨時編程,再編程,使用戶的產(chǎn)品設(shè)計容易,更新?lián)Q代方便.AVR單片機(jī)采用增強(qiáng)的RISC結(jié)構(gòu),使其具有高速處理能力,在一個時鐘周期內(nèi)可執(zhí)行復(fù)雜的指令,每MHz可實現(xiàn)1MIPS的處理能力.AVR單片機(jī)工作電壓為2.7~6.0V,可以實現(xiàn)耗電最優(yōu)化.AVR的單片機(jī)廣泛應(yīng)用于計算機(jī)外部設(shè)備,工業(yè)實時控制,儀器儀表,通訊設(shè)備,家用電器,宇航設(shè)備等各個領(lǐng)域.

Motorola單片機(jī):

Motorola是世界上最大的單片機(jī)廠商.從M6800開始,開發(fā)了廣泛的品種,4位,8位,16位32位的單片機(jī)都能生產(chǎn),其中典型的代表有:8位機(jī)M6805,M68HC05系列,8位增強(qiáng)型M68HC11,M68HC12

,

16位機(jī)M68HC16,

32位機(jī)M683XX.

Motorola單片機(jī)的特點(diǎn)之一是在同樣的速度下所用的時鐘頻率較Intel類單片機(jī)低得多,因而使得高頻噪聲低,抗干擾能力強(qiáng),更適合于工控領(lǐng)域及惡劣的環(huán)境

.

MicroChip單片機(jī):

MicroChip單片機(jī)的主要產(chǎn)品是PIC

16C系列和17C系列8位單片機(jī),CPU采用RISC結(jié)構(gòu),分別僅有33,35,58條指令,采用Harvard雙總線結(jié)構(gòu),運(yùn)行速度快,低工作電壓,低功耗,較大的輸入輸出直接驅(qū)動能力,價格低,一次性編程,小體積.

適用于用量大,檔次低,價格敏感的產(chǎn)品.在辦公自動化設(shè)備,消費(fèi)電子產(chǎn)品,電訊通信,智能儀器儀表,汽車電子,金融電子,工業(yè)控制不同領(lǐng)域都有廣泛的應(yīng)用,PIC系列單片機(jī)在世界單片機(jī)市場份額排名中逐年提高.開展非常迅速.

8051單片機(jī):

8051單片機(jī)最早由Intel公司推出,其后,多家公司購置了8051的內(nèi)核,使得以8051為內(nèi)核的MCU系列單片機(jī)在世界上產(chǎn)量最大,應(yīng)用也最廣泛,有人推測8051可能最終形成事實上的標(biāo)準(zhǔn)MCU芯片.NS單片機(jī):

COP8單片機(jī)是NS(美國國家半導(dǎo)體公司)的產(chǎn)品,內(nèi)部集成了16位A/D,這是不多見的,在看門狗多路及STOP方式下單片機(jī)的喚醒方式上都有獨(dú)到之處.此外,COP8的程序加密也做得比較好.二、單片機(jī)根本組成:它由CPU、存儲器〔包括RAM和ROM〕、I/O接口、定時/計數(shù)器、中斷控制功能等均集成在一塊芯片上,片內(nèi)各功能通過內(nèi)部總線相互連接起來。輸入/輸出引腳P0、P1、P2、P3的功能:P0.0~P0。7:P0口是一個8位漏極開路型雙向I/O端口。在訪問片外存儲器時,它分時作低8位地址和8位雙向數(shù)據(jù)總線用。在EPROM編程時,由P0輸入指令字節(jié),而在驗證程序時,那么輸出指令字節(jié)。驗證程序時,要求外接上拉電阻。P0能以吸收電流的方式驅(qū)動8個LSTTL負(fù)載。P1.0~P1.7〔1~8腳〕:P1是一上帶內(nèi)部上拉電阻的8位雙向I/O口。在EPROM編程和驗證程序時,由它輸入低8位地址。P1能驅(qū)動4個LSTTL負(fù)載。在8032/8052中,P1.0還相當(dāng)于專用功能端T2,即定時器的計數(shù)觸發(fā)輸入端;P1.1還相當(dāng)于專用功能端T2EX,即定時器T2的外部控制端。P2.0~P2.7〔21~28腳〕:P2也是一上帶內(nèi)部上拉電阻的8位雙向I/O口。在訪問外部存儲器時,由它輸出高8位地址。在對EPROM編程和程序驗證時,由它輸入高8位地址。P2可以驅(qū)動4個LSTTL負(fù)載。P3.0~P3.7〔10~17腳〕:P3也是一上帶內(nèi)部上拉電阻的雙向I/O口。在MCS-51中,這8個引腳還用于專門的第二功能。P3能驅(qū)動4個LSTTL負(fù)載。P3.0RXD〔串行口輸入〕P3.1TXD〔串行口輸出〕P3.2INT0〔外部中斷0輸入〕P3.3INT1〔外部中斷1輸入〕P3.4T0〔定時器0的外部輸入P3.5T1〔定時器1的外部輸入〕P3.6WR〔片外數(shù)據(jù)存儲器寫選通〕P3.7RD〔片外數(shù)據(jù)存儲器讀選通〕三、MCS-51的尋址方式:1、立即尋址如:MOVA,#40H2、直接尋址如:MOVA,3AH3、存放器尋址如:MOVA,Rn4、存放器間接尋址如:MOVA,@Rn5、基址加變址尋址如:MOVCA,@A+DPTR6、相對尋址如:SJMP08H7、位尋址MOV20H,C四、指令:MOV:片內(nèi)RAM傳送MOVX:片外RAM傳送MOVC:ROM傳送XCH:交換〔和A交換〕SWAP:A內(nèi)半字節(jié)交換ADD:不帶進(jìn)位加ADDC:帶進(jìn)位加SUBB:帶進(jìn)位減INC:加1DEC:減1MUL:乘法DIV:除法DAA:調(diào)整五、計數(shù)初值的計算定時或計數(shù)方式下計數(shù)初值如何確定,定時器選擇不同的工作方式,不同的操作模式其計數(shù)值均不相同。假設(shè)設(shè)最大計數(shù)值為M,各操作模式下的M值為:模式0:M=213=8192模式1:M=216=65536模式2:M=28=256模式3:M=256,定時器T0分成2個獨(dú)立的8位計數(shù)器,所以TH0、TL0的M均為256。因為MCS-51的兩個定時器均為加1計數(shù)器,當(dāng)初到最大值〔00H或0000H〕時產(chǎn)生溢出,將TF位置1,可發(fā)出溢出中斷,因此計數(shù)器初值X的計算式為:X=M-計數(shù)值式中的M由操作模式確定,不同的操作模式計數(shù)器的長不相同,故M值也不相同。而式中的計數(shù)值與定時器的工作方式有關(guān)。1、計數(shù)工作方式時計數(shù)工作方式時,計數(shù)脈沖由外部引入,是對外部沖進(jìn)行計數(shù),因此計數(shù)值根據(jù)要求確定。其計數(shù)初值:X=M-計數(shù)值例如:某工序要求對外部脈沖信號計100次,X=M-1002、定時工作方式時定時工作方式時,因為計數(shù)脈沖由內(nèi)部供應(yīng),是對機(jī)器周期進(jìn)行計數(shù),故計數(shù)脈沖頻率為fcont=fosc×1/12、計數(shù)周期T=1/fcont=12/fosc定時工作方式的計數(shù)初值X等于:X=M-計數(shù)值=M-t/T=M-〔fosc×t〕/12式中:fosc為振蕩器的振蕩頻率,t為要求定時的時間。定時器有兩種工作方式:即定時和計數(shù)工作方式。由TMOD的D6位和D2位選擇,其中D6位選擇T1的工作方式,D2位選擇T0的工作方式。=0工作在定時方式,=1工作在計數(shù)方式。并有四種操作模式:模式0:13位計數(shù)器,TLi只用低5位。模式1:16位計數(shù)器。模式2:8位自動重裝計數(shù)器,THi的值在計數(shù)中不變,TLi溢出時,THi中的值自動裝入TLi中。模式3:T0分成2個獨(dú)立的8位計數(shù)器,T1停止計數(shù)。MCS-51有5個中斷源,可分為2個中斷優(yōu)先級,即高優(yōu)先級和低優(yōu)先級,中斷自然優(yōu)先級:外部中斷0;定時器0中斷;外部中斷1;定時器1中斷;串行口中斷;定時器2中斷〔1〕同級或高優(yōu)先級的中斷正在進(jìn)行中;〔2〕現(xiàn)在的機(jī)器周期還不是執(zhí)行指令的最后一上機(jī)器周期,即正在執(zhí)行的指令還沒完成前不響應(yīng)任何中斷;〔3〕正在執(zhí)行的是中斷返回指令RET1或是訪問專用存放器IE或IP的指令,換而言之,在RETI或者讀寫IE或IP之后,不會馬上響應(yīng)中斷請求,至少要在執(zhí)行其它一要指令之扣才會響應(yīng)。中斷響應(yīng)條件CPU響應(yīng)中斷的條件有:〔1〕有中斷源發(fā)出中斷請求;〔2〕中斷總允許位EA=1,即CPU開中斷;〔3〕申請中斷的中斷源的中斷允許位為1,即沒有被屏蔽。六、串行口工作方式及幀格式MCS-51單片機(jī)串行口可以通過軟件設(shè)置四種工作方式:方式0:這種工作方式比較特殊,與常見的微型計算機(jī)的串行口不同,它又叫同步移位存放器輸出方式。在這種方式下,數(shù)據(jù)從RXD端串行輸出或輸入,同步信號從TXD端輸出,波特率固定不變,為振蕩率的1/12。該方式是以8位數(shù)據(jù)為一幀,沒有起始位和停止位,先發(fā)送或接收最低位。方式2:采用這種方式可接收或發(fā)送11位數(shù)據(jù),以11位為一幀,比方式1增加了一個數(shù)據(jù)位,其余相同。第9個數(shù)據(jù)即D8位具有特別的用途,可以通過軟件摟控制它,再加特殊功能存放器SCON中的SM2位的配合,可使MCS-51單片機(jī)串行口適用于多機(jī)通信。方式2的波特率固定,只有兩種選擇,為振蕩率的1/64或1/32,可由PCON的最高位選擇。方式3:方式3與方式2完全類似,唯一的區(qū)別是方式3的小組特率是可變的。而幀格式與方式2-樣為11位一幀。所以方式3也適合于多機(jī)通信。3.2.2STC89C52主要性能與MCS-51單片機(jī)產(chǎn)品兼容、8K字節(jié)在系統(tǒng)可編程Flash存儲器、1000次擦寫周期、全靜態(tài)操作:0Hz~33Hz、三級加密程序存儲器、32個可編程I/O口線、三個16位定時器/計數(shù)器八個中斷源、全雙工UART串行通道、低功耗空閑和掉電模式、掉電后中斷可喚醒、看門狗定時器、雙數(shù)據(jù)指針、掉電標(biāo)識符。STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。使用高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在線系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。STC89C52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,STC89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。8位微控制器8K字節(jié)在系統(tǒng)可編程Flash。P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。P1口:P1口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,p1輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P1端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流〔IIL〕。此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入〔P1.0/T2〕和時器/計數(shù)器2的觸發(fā)輸入〔P1.1/T2EX〕,具體如下表所示。在flash編程和校驗時,P1口接收低8位地址字節(jié)。3.2.3STC89C52芯片引腳功能圖3-2STC89C52芯片圖P1.0T2〔定時器/計數(shù)器T2的外部計數(shù)輸入〕,時鐘輸出P1.1T2EX〔定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制〕P1.5MOSI〔在線系統(tǒng)編程用〕P1.6MISO〔在線系統(tǒng)編程用〕P1.7SCK〔在線系統(tǒng)編程用〕P2口:P2口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P2端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流〔IIL〕。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器〔例如執(zhí)行MOVX@DPTR〕時,P2口送出高八位地址。在這種應(yīng)用中,P2口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址〔如MOVX@RI〕訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。P3口:P3口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,p2輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P3端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流〔IIL〕。P3口亦作為STC89C52特殊功能〔第二功能〕使用,如下表所示。在flash編程和校驗時,P3口也接收一些控制信號。端口引腳第二功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INTO(外中斷0)P3.3INT1(外中斷1)P3.4TO(定時/計數(shù)器0)P3.5T1(定時/計數(shù)器1)P3.6WR(外部數(shù)據(jù)存儲器寫選通)P3.7RD(外部數(shù)據(jù)存儲器讀選通)此外,P3口還接收一些用于FLASH閃存編程和程序校驗的控制信號。RST——復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機(jī)器周期以上高電平將是單片機(jī)復(fù)位。ALE/PROG——當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE〔地址鎖存允許〕輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖〔PROG〕。如有必要,可通過對特殊功能存放器〔SFR〕區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時,應(yīng)設(shè)置ALE禁止位無效。PSEN——程序儲存允許〔PSEN〕輸出是外部程序存儲器的讀選通信號,當(dāng)STC89C52由外部程序存儲器取指令〔或數(shù)據(jù)〕時,每個機(jī)器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。EA/VPP——外部訪問允許,欲使CPU僅訪問外部程序存儲器〔地址為0000H-FFFFH〕,EA端必須保持低電平〔接地〕。需注意的是:如果加密位LB1被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平〔接Vcc端〕,CPU那么執(zhí)行內(nèi)部程序存儲器的指令。FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。3.3單片機(jī)根本工作電路3.3.1單片機(jī)的最小系統(tǒng)電路單片機(jī)最小系統(tǒng)是利用最少的外圍器件而使單片機(jī)工作的電路組織形式。最小系統(tǒng)只包含單片機(jī)、振蕩器、復(fù)位電路和電源。如圖3-2為最小系統(tǒng)電路圖。時鐘信號:單片機(jī)的XTAL2和XTAL1接晶振,這種結(jié)構(gòu)通過晶振電容C1、C2與單片機(jī)內(nèi)部結(jié)構(gòu)組成一個時鐘信號源,晶振的頻率決定系統(tǒng)的時鐘頻率。對于時間要求不是很高的系統(tǒng),只要按圖進(jìn)行設(shè)計就能使系統(tǒng)可靠起振并穩(wěn)定運(yùn)行。但由于圖中的電容C1、C2起著系統(tǒng)時鐘頻率微調(diào)和穩(wěn)定的作用。因此,在實際應(yīng)用中一定要注意正確選擇參數(shù)〔30±10PF〕,并保證對稱性〔盡可能匹配〕。復(fù)位電路:最簡單的復(fù)位電路就是在RST與VCC之間連接一個10UF電解電容,當(dāng)通電時,RST維持一段很短的高電平狀態(tài),使單片機(jī)復(fù)位,很快電容充電滿后,RST電平被拉低。單片機(jī)進(jìn)入正常工作中。一般應(yīng)復(fù)位電路有手動或上電復(fù)位電路[4]。復(fù)位電路的實現(xiàn)通常有兩種方式:1〕RC復(fù)位電路;2〕專用μP監(jiān)控電路。前者實現(xiàn)簡單,本錢低,但復(fù)位可靠性相對較低;后者本錢較高,但復(fù)位可靠性高,尤其是高可靠重復(fù)復(fù)位。對于復(fù)位要求高并對電源電壓進(jìn)行監(jiān)視的場合,大多采用這種方式。圖3-3最小系統(tǒng)電路圖(1)專用μP監(jiān)控電路專用μP監(jiān)控電路又稱電源監(jiān)視電路,具有上電時可靠產(chǎn)生復(fù)位信號和電源電壓跌落到“門檻值〞時可靠產(chǎn)生復(fù)位信號功能。按有效電平分,有高電平輸出、低電平輸出兩種;按功能分,有簡單的電源監(jiān)視復(fù)位電路、帶“看門狗〞定時器〔WATCHDOG,又簡稱“WDT〞〕的監(jiān)控電路、和WDT+EEPROM的監(jiān)控電路等多種類型。比較常見的生產(chǎn)廠家有MAXIM、PHILIPS、IMP以及DALLS等,51系列微處理器中常用的型號有MAX813L、MAX809、X25043/5等?!?〕RC復(fù)位電路本系統(tǒng)采用的是這種復(fù)位方式。RC復(fù)位電路的實質(zhì)是一階充放電電路。系統(tǒng)上電時該電路提供有效的復(fù)位信號RST〔高電平〕直至系統(tǒng)電源穩(wěn)定后撤銷復(fù)位信號〔低電平〕。理論上說,51系列單片機(jī)復(fù)位引腳只要外加2個機(jī)器周期的有效信號即可復(fù)位,即只要保證t=RC>2M〔機(jī)器周期〕便可,但實際設(shè)計中,通常取C3為10μF以上,R2通常取10K左右。實踐發(fā)現(xiàn)R2如果取值太小,例如1K,那么會導(dǎo)致RST信號驅(qū)動能力變差而無法使系統(tǒng)可靠復(fù)位。外部程序存儲器訪問控制端:由于沒有使用外部程序存儲器拓展,所以在這里接高電平。3.3.2顯示電路LCD1602可以在LCD顯示屏上完整顯示32個英文字符和日文等一些字符,適合顯示英文文字信息量較小的地方.可以應(yīng)用在計算器,頻率計,信號發(fā)生器,時鐘等產(chǎn)品上.LCD1602已經(jīng)很普遍了,市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780寫的控制程序可以很方便地應(yīng)用與市面上大局部的字符型液晶。字符型LCD通常有14條引腳或16條引腳的LCD,多出來的2條線是背光電源線VCC〔15腳〕和地線GND〔16腳〕,其控制原理與14腳的LCD完全一樣。圖3-4LCD1602與單片機(jī)的接口圖1602LCD的根本參數(shù)及引腳功能1602LCD分為帶背光和不帶背光兩種,基控制器大局部為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差異。1602LCD主要技術(shù)參數(shù):顯示容量:16×2個字符芯片工作電壓:4.5—5.5V工作電流:2.0mA(5.0V)模塊最正確工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm引腳功能說明:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器比照度調(diào)整端,接正電源時比照度最弱,接地時比照度最高,比照度過高時會產(chǎn)生“鬼影〞,使用時可以通過一個10K的電位器調(diào)整比照度。第4腳:RS為存放器選擇,高電平時選擇數(shù)據(jù)存放器、低電平時選擇指令存放器。第5腳:R/W為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。本設(shè)計通過用1602顯示兩行信息,其中第一行顯示超市或圖書館的英文信息,第二行那么主要顯示密碼等相關(guān)提示信息。3.3.3鍵盤電路鍵盤按結(jié)構(gòu)的不同可分為獨(dú)立式按鍵鍵盤和行列式鍵盤兩類,每類按譯碼方式的不同又分為編碼式和非編碼式兩種。單片機(jī)中一般使用的都是用軟件來識別和產(chǎn)生鍵代碼的非編碼鍵盤。行列式鍵盤的編碼方式有靜態(tài)和動態(tài)兩種。靜態(tài)接口主要由一個行編碼器和一個列編碼器構(gòu)成;動態(tài)接口可用計數(shù)器、譯碼器和數(shù)據(jù)選擇器來構(gòu)成。一般在小型儀器儀表和控制系統(tǒng)中,使用較多的是行列式和獨(dú)立式的非編碼鍵盤;如果系統(tǒng)要求實現(xiàn)多鍵同時按下的處理,那么用非編碼獨(dú)立方式較為適宜。本系統(tǒng)主要是采用了常用的3×4矩陣式鍵盤,工作方式采用的是外部中斷掃描,如圖3-5所示。中斷式鍵盤掃描原理是:當(dāng)有鍵按下將會觸發(fā)一個中斷源,提醒處理器進(jìn)行鍵值掃描查詢。鍵盤的中斷方式一般有定時中斷和外部中斷兩種,本系統(tǒng)采用的是外部中斷INT0。單片機(jī)先讓行線輸出低電平,當(dāng)有鍵按下時列線電平不全為高,四輸入與門輸出端產(chǎn)生下降沿,將觸發(fā)外部中斷INT0,單片機(jī)進(jìn)入中斷后先延時去抖動,再掃描查尋鍵盤,讀出鍵值,然后處理相應(yīng)的鍵值處理子程序,無鍵按下那么不進(jìn)入中斷,單片機(jī)不掃描,從而節(jié)約了大量的資源。圖3-5鍵盤與單片機(jī)的連接3.3.4穩(wěn)壓電源如圖3-6為穩(wěn)壓電源設(shè)計電路圖3-6穩(wěn)壓電源設(shè)計電路LM7805是一個穩(wěn)壓三極管,它可以支持5V到12V的電源輸入,經(jīng)過降壓后,穩(wěn)定輸出5V的直流電壓。一般在輸入電源的正負(fù)級之間并上一個無極性陶瓷電容和一個220U的電解電容,起到對電源濾波的作用。由于本設(shè)計使用干電池供電,電源干擾少些,所以沒有加上220U的電解電容。單片機(jī)要求在穩(wěn)定的電源下才能正常工作,本身單片機(jī)工作在晶震12M下,產(chǎn)生的干擾信號也是大的。所以需要提供一個穩(wěn)定的直流電源給單片機(jī),這樣能保證單片機(jī)穩(wěn)定的工作。4.1C語言程序設(shè)計4.1.1C語言簡介C語言是在70年代初問世的。一九七八年由美國電報公司(AT&T)貝爾實驗室正式發(fā)表了C語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的“THECPROGRAMMINGLANGUAGE〞一書。通常簡稱為《K&R》,也有人稱之為《K&R》標(biāo)準(zhǔn)。但是,在《K&R》中并沒有定義一個完整的標(biāo)準(zhǔn)C語言,后來由美國國家標(biāo)準(zhǔn)學(xué)會在此根底上制定了一個C語言標(biāo)準(zhǔn),于一九八三年發(fā)表。通常稱之為ANSIC。早期的C語言主要是用于UNIX系統(tǒng)。由于C語言的強(qiáng)大功能和各方面的優(yōu)點(diǎn)逐漸為人們認(rèn)識,到了八十年代,C開始進(jìn)入其它操作系統(tǒng),并很快在各類大、中、小和微型計算機(jī)上得到了廣泛的使用。成為當(dāng)代最優(yōu)秀的程序設(shè)計語言之一。C語言是一種結(jié)構(gòu)化語言。它層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護(hù)。C語言的表現(xiàn)能力和處理能力極強(qiáng)。它不僅具有豐富的運(yùn)算符和數(shù)據(jù)類型,便于實現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。它還可以直接訪問內(nèi)存的物理地址,進(jìn)行位(bit)一級的操作。由于C語言實現(xiàn)了對硬件的編程操作,因此C語言集高級語言和低級語言的功能于一體。既可用于系統(tǒng)軟件的開發(fā),也適合于應(yīng)用軟件的開發(fā)。此外,C語言還具有效率高,可移植性強(qiáng)等特點(diǎn)。因此廣泛地移植到了各類各型計算機(jī)上,形成了多種版本的C語言。C語言對操作系統(tǒng)和系統(tǒng)使用程序以及需要對硬件進(jìn)行操作的場合,用C語言明顯優(yōu)于其它高級語言,許多大型應(yīng)用軟件都是用C語言編寫的。

C語言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動畫它是數(shù)值計算的高級語言。4.1.2C語言的特點(diǎn)〔1〕簡潔緊湊、靈活方便:C語言一共只有32個關(guān)鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示。它把高級語言的根本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。C語言可以象匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計算機(jī)最根本的工作單元?!?〕運(yùn)算符豐富:C的運(yùn)算符包含的范圍很廣泛,共有種34個運(yùn)算符。C語言把括號、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C的運(yùn)算類型極其豐富表達(dá)式類型多樣化,靈活使用各種運(yùn)算符可以實現(xiàn)在其它高級語言中難以實現(xiàn)的運(yùn)算?!?〕數(shù)據(jù)結(jié)構(gòu)豐富:C的數(shù)據(jù)類型有:整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運(yùn)算。并引入了指針概念,使程序效率更高。另外C語言具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動器。且計算功能、邏輯判斷功能強(qiáng)大。〔4〕C是結(jié)構(gòu)式語言:結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個局部除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?便于使用、維護(hù)以及調(diào)試。C語言是以函數(shù)形式提供應(yīng)用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化?!?〕C語法限制不太嚴(yán)格、程序設(shè)計自由度大:一般的高級語言語法檢查比較嚴(yán),能夠檢查出幾乎所有的語法錯誤。而C語言允許程序編寫者有較大的自由度?!?〕C語言允許直接訪問物理地址,可以直接對硬件進(jìn)行操作:因此既具有高級語言的功能,又具有低級語言的許多功能,能夠象匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計算機(jī)最根本的工作單元,可以用來寫系統(tǒng)軟件?!?〕C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高:一般只比匯編程序生成的目標(biāo)代碼效率低10へ20%?!?〕C語言適用范圍大,可移植性好:C語言有一個突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng),如DOS、UNIX,也適用于多種機(jī)型。4.1.3C源程序的結(jié)構(gòu)特點(diǎn)〔1〕一個C語言源程序可以由一個或多個源文件組成?!?〕每個源文件可由一個或多個函數(shù)組成?!?〕一個源程序不管由多少個文件組成,都有一個且只能有一個main函數(shù),即主函數(shù)。〔4〕源程序中可以有預(yù)處理命令(include命令僅為其中的一種),預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面?!?〕每一個說明,每一個語句都必須以分號結(jié)尾。但預(yù)處理命令,函數(shù)頭和花括號“}〞之后不能加分號?!?〕標(biāo)識符,關(guān)鍵字之間必須至少加一個空格以示間隔。假設(shè)已有明顯的間隔符,也可不再加空格來間隔。4.2軟件設(shè)計軟件設(shè)計思想:系統(tǒng)運(yùn)行時,主程序調(diào)度LCD1602先進(jìn)行程序初始化,假設(shè)有人按下“存包鍵〞時先由隨機(jī)數(shù)模塊產(chǎn)生一個隨機(jī)數(shù)保存在單片機(jī)內(nèi)部數(shù)組中,并將產(chǎn)生的密碼顯示在LCD1602顯示屏上,一段時間后顯示數(shù)據(jù)消失,密碼顯示的同時系統(tǒng)也將所要翻開的箱子號顯示在LCD1602并發(fā)一個觸發(fā)信號使對應(yīng)的箱子號翻開。存包的過程也就此結(jié)束。當(dāng)有取包時必然先要輸入存包時所顯示的密碼,輸入密碼時運(yùn)行鍵盤掃描模塊掃描所輸入的按鍵值并按下“取包鍵〞,假設(shè)輸入的密碼是正確的,系統(tǒng)將通過LCD1602顯示所輸入的密碼是正確的并且系統(tǒng)將翻開你存包時所翻開的箱子。4.2.1程序設(shè)計步驟程序設(shè)計就是用計算機(jī)所能接受的語言把所需解決問題的步驟逐一描述出來,也就是編制計算機(jī)的程序,在設(shè)計應(yīng)用系統(tǒng)時,軟件的編制是重要環(huán)節(jié)。軟件的質(zhì)量直接影響整個系統(tǒng)功能的實現(xiàn)。應(yīng)用程序的設(shè)計因系統(tǒng)而異,但程序設(shè)計總是有共同特點(diǎn)及其規(guī)律的。在編寫程序時,采取如下幾個步驟:(1)分析問題,明確所要解決問題的要求,將軟件分成假設(shè)干個相對獨(dú)立的局部。根據(jù)功能關(guān)系和時序關(guān)系,設(shè)計出合理的軟件總體結(jié)構(gòu)。(2)定程序框圖,即根據(jù)所選擇的計算方法制定框圖,這不僅是程序設(shè)計的一個重要組成,而且是決定成敗的關(guān)鍵局部。(3)合理分配系統(tǒng)資源,包括定時器/計數(shù)器、中斷、堆棧等。分配好單元后,進(jìn)一步將程序框圖畫成詳細(xì)的操作流程。(4)根據(jù)程序的流程圖和指令系統(tǒng)編寫出程序。注意在程序的有關(guān)位置處寫上功能注釋,提高程序的可讀性。(5)程序調(diào)試。通過編輯軟件編輯出的源程序,必須用編譯程序匯編后生成目標(biāo)代碼。如果源程序有語法錯誤,需修改源文件后繼續(xù)編譯,直到無語法錯誤為止,然后利用目標(biāo)代碼通過仿真器進(jìn)行程序調(diào)試,排除設(shè)計和編程中的錯誤直到成功。(6)程序優(yōu)化。使各功能程序模塊化,子程序化,縮短程序的長度,加快運(yùn)算速度和節(jié)省數(shù)據(jù)存儲空間,減少程序執(zhí)行的時間。4.2.2程序各模塊設(shè)計本系統(tǒng)由四個程序模塊和一個主程序組成,四個程序模塊分別為隨機(jī)數(shù)模塊、箱柜模塊、LCD1602模塊、鍵盤掃描模塊組成。4.2.3程序流程圖存包過程存包過程無鍵按下無鍵按下返回主程序并保存箱號返回主程序并保存密碼Y有鍵按下開始LCD初始化鍵盤掃描存包鍵按下?主程序產(chǎn)生隨機(jī)密碼翻開箱子顯示密碼和箱號顯示正常信息箱子翻開后提示信息過后箱子翻開后提示信息過后返回主程序并刪除密碼和對應(yīng)的箱號YN四位密碼輸入有鍵按下無鍵按下主程序鍵盤掃描取包過程密碼正確?翻開對應(yīng)箱子LCD1602提示翻開信息顯示正常信息4.2.4各模塊的軟件程序設(shè)計〔1〕隨機(jī)模塊:下列圖為隨機(jī)模塊的程序框架。經(jīng)計算經(jīng)計算開始產(chǎn)生一個一位種子產(chǎn)生一個四位數(shù)返回圖4-2隨機(jī)模塊程序框圖〔2〕1602工作框圖:見附錄二?!?〕矩陣鍵盤工作框圖:見附錄二?!?〕主程序框圖:見附錄二。4.2.5密碼驗證方案比較當(dāng)鍵盤輸入密碼時,輸入的數(shù)如何與內(nèi)部產(chǎn)生的密碼進(jìn)行比較是一個需要解決的問題。因為內(nèi)部產(chǎn)生的是一個4位數(shù)密碼。這也就有了兩種方案來解決這個問題。〔1〕先將內(nèi)部生成的4位數(shù)密碼轉(zhuǎn)化成4個個位數(shù)的數(shù)字密碼,并將其保存在數(shù)組中。將輸入的密碼保存在另一個數(shù)組中。最后再對這兩個數(shù)組的元素進(jìn)行比較,如有錯誤返回主程序進(jìn)行錯誤提示,假設(shè)是正確的就將執(zhí)行后續(xù)的程序?!?〕將輸入的四個數(shù)進(jìn)行乘計算得到一個四位數(shù)密碼。與系統(tǒng)產(chǎn)生的四位數(shù)密碼進(jìn)行比較,如有錯誤返回主程序進(jìn)行錯誤提示,假設(shè)正確就執(zhí)行后續(xù)的程序。本系統(tǒng)的調(diào)試主要分為硬件調(diào)試、軟件調(diào)試等兩大局部。經(jīng)過初步的分析設(shè)計后,在制作硬件電路的同時,調(diào)試也在穿插進(jìn)行。這樣有利于問題的分析和解決,不會造成問題的積累,而且不會因為一個小問題而進(jìn)行整體電路的檢查,從而可以節(jié)約大量的調(diào)試時間。軟件編程中,首先完成單元功能模塊的調(diào)試,然后進(jìn)行系統(tǒng)調(diào)試,整體上與硬件調(diào)試的方法差不多。聯(lián)機(jī)調(diào)試是最重要的一局部,同時也是本設(shè)計成功的關(guān)鍵。5.1硬件調(diào)試首先應(yīng)對電路板外表進(jìn)行檢查,對焊接后的電路板的所有連接線仔細(xì)檢查。通過目測查出一些明顯的安裝及連接錯誤并及時排除。其次用萬用表測量,主要是測量目測是疑心通斷的情況,尤其是要測量電源與地之間是否短路。再次是加電檢查。開啟電源后,檢查芯片的電源電壓是否正確,也可用手觸摸,是否有明顯發(fā)燙,所遇芯片均未發(fā)現(xiàn)異常,可進(jìn)入下一步調(diào)試。5.2軟件調(diào)試軟件調(diào)試較硬件調(diào)試麻煩,先將事先編寫好的各模塊局部程序?qū)懭敕抡孳浖锏膯纹瑱C(jī)中,然后通過Proteus仿真軟件進(jìn)行仿真。如有錯誤或?qū)崿F(xiàn)不了預(yù)想的功能,那么需要對程序進(jìn)行修改以到達(dá)設(shè)計的最終要求。5.3調(diào)試中遇到的問題及解決方法5.3.1硬件〔1〕LCD1602無法顯示:把復(fù)位腳誤接在地端而使LCD1602一直不停的在復(fù)位,把接線改正來從而使顯示屏正常工作?!?〕LCD1602顯示過暗:調(diào)解10K的電位器使得顯示逐漸變亮,因為通過調(diào)節(jié)電位器可以調(diào)節(jié)電壓使顯示的點(diǎn)陣變亮。〔3〕在電路的調(diào)試過程中,發(fā)現(xiàn)LCD1602能正常發(fā)光,而在有按鍵按下時,顯示屏上卻沒有顯示相應(yīng)的信息,發(fā)光二極管也不能正常工作,后通過仔細(xì)檢查電路,發(fā)現(xiàn)單片機(jī)的接地管腳忘記接線了,隨即改正過來后,電路工作正常。5.3.2軟件〔1〕定義出錯:產(chǎn)生的現(xiàn)象是有密碼產(chǎn)生但無法檢測到輸入密碼。經(jīng)過仔細(xì)檢查曾變量定義錯誤(誤將存儲密碼變量unsignedint定義成unsignedchar):因為unsignedint無符號短整型數(shù)說明。簡寫為unsignedint,字長為2字節(jié)共16位二進(jìn)制數(shù),數(shù)的范圍是0~65535。而unsignedchar字符在計算機(jī)中以其ASCII碼方式表示,其長度為1個字節(jié),有符號字符型數(shù)取值范圍為-128~127,無符號字符型數(shù)到值范圍是0~255。因此在TurboC語言中,字符型數(shù)據(jù)在操作時將按整型數(shù)處理,如果某個變量定義成char,那么說明該變量是有符號的,即它將轉(zhuǎn)換成有符號的整型數(shù)。使輸入的數(shù)字無法轉(zhuǎn)換為一個4位數(shù)。使得無法與內(nèi)部產(chǎn)生的隨機(jī)數(shù)進(jìn)行密碼驗證,故無法翻開箱子?!?〕LCD無法顯示:初始化程序出錯:按初始化順序時延時時間沒有到達(dá)Datasheet的要求。因為延時時間還沒到達(dá)內(nèi)部初始化需求,上一步的初始化過程還沒有結(jié)束就進(jìn)行了下一步初始化過程,這樣即跳過了上一步的初始化程序,這樣必然導(dǎo)致系統(tǒng)初始化失敗。在本系統(tǒng)中,根本模擬了超市存包的功能。用STC89C52為核心CPU進(jìn)行系統(tǒng)任務(wù)調(diào)度,內(nèi)部的隨機(jī)數(shù)模塊、LCD1602液晶模塊、箱子模擬模塊和鍵盤輸入模塊通過系統(tǒng)主程序來調(diào)度實現(xiàn)系統(tǒng)所需要的功能。通過本次設(shè)計了解了51系列單片機(jī)的具體使用,比方存放器、定時器、RAM、ROM。同時也了解了74LS164串口轉(zhuǎn)并口輸入芯片的使用,加深了對LCD1602的使用,特別是在調(diào)試LCD1602的初始化程序時,具體了解了初始化程序有哪些步驟且延時也對初始化有著相當(dāng)重要的關(guān)系。也加深了對發(fā)光二極管、矩陣鍵盤等常規(guī)元件的使用。由于時間、資金等各個因素的影響本系統(tǒng)也有著一些缺點(diǎn),比方平安性有待加強(qiáng)。[1]謝維成.單片機(jī)原理與應(yīng)用及C51程序設(shè)計[M].北京:清華大學(xué)出版社.2006:169-181[2]求是科技.單片機(jī)典型模塊設(shè)計實例導(dǎo)航[M].北京:人民郵電出版社.2004:117-135[3]馬家辰.MCS-51單片機(jī)原理及接口技術(shù)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1998:112-154[4]馬鴻文.基于AT89C51單片機(jī)的自動存取柜的設(shè)計與實現(xiàn)[B].單片機(jī)開發(fā)與應(yīng)用,2005.9[5]盧敏生、盧惲.一個廉價的存包柜電腦控制裝置[B].蘇州大學(xué)工學(xué)院、蘇州職業(yè)大學(xué),1999[6]黃石紅.雙子系統(tǒng)在電子存取柜中的應(yīng)用[B].微計算機(jī)信息,2003.9[7]常喜.微型打印機(jī)在單片機(jī)系統(tǒng)中的應(yīng)用[B].吉林師范大學(xué)信息技術(shù)學(xué)院.2004[8]黃湖劍,梁楚樵.單片機(jī)與微型打印機(jī)的接口設(shè)計[A].武漢理工大學(xué)信息工程學(xué)院.2006[9]梁金千,張躍.在計算機(jī)上產(chǎn)生真隨機(jī)數(shù)的探討[D].計算機(jī)工程.2003[10]李少芳.在C/C++語言中如何自動生成隨機(jī)密碼[D].福建電腦.2003[11]趙雪峰.一種偽隨機(jī)數(shù)生成算法的研究與實現(xiàn)[A].電腦學(xué)習(xí).2005[12]劉西玲.MCS-51系列單片機(jī)與微型打印機(jī)的接口設(shè)計[D].天水師范學(xué)院學(xué)報.2004[13]朱家駒,王月姣.微型打印機(jī)通用打印程序的設(shè)計[A].中南民族大學(xué)學(xué)報(自然科學(xué)版).2002[14]ProykovaA.HowtoImproveaRandomNumberGenerator.ComputerPhysicsCommunications,2000,124:125-131[15]Tsumoto,S.ExtracingStructureofMedicalDiagnosis[M].RoughSetApproach,2003.開始延時40ms功能設(shè)置顯示開關(guān)控制延時1ms延時1ms清顯示延時10ms進(jìn)入模式設(shè)置初始化結(jié)束YNY開始延時40ms功能設(shè)置顯示開關(guān)控制延時1ms延時1ms清顯示延時10ms進(jìn)入模式設(shè)置初始化結(jié)束YNYY開始P1.0—P1.3賦為0讀列狀態(tài)重新掃描延時10ms消抖有鍵按下?高四位鍵值保存在temp1延時3秒穩(wěn)定電平低四位的電平保存在temp2合并鍵值查詢按鍵數(shù)據(jù)并返回鍵值圖二LCD1602工作框圖YYNCount>=4且按下確定If(count<4)Y開始掃描鍵值計數(shù)count加1進(jìn)行密碼驗證開箱子且LCD1602提示圖一矩陣鍵盤工作框圖圖三主程序框圖/*主程序*/#defineset_timer TH0=0xd8;TL0=0xef;#defineset_bpsTH1=0xF4; TL1=0x0b;#include<reg52.h>#include<ctype.h>#include<stdlib.h>#include<errno.h>#include<stdio.h>#include<lcd.h>#include<systimer.h>#include"systimer.h"#include"lcd.h"#defineuintunsignedint#defineucharunsignedcharexternvoidsendbyte(ucharbyte);externunsignedcharkeyscan(void);externdelay1(unsignedintn);externvoiddelay_50ms(unsignedintt);extern bitpwcmp(void);//externvoidsrand(unsignedintseed);externvoidclrram(void);//externvoidLCD_init(void);externvoidInitLCD(void);externvoidWriteDataToLCD(ucharlcddata);externvoidWriteCmdToLCD(ucharlcdcmd);externvoidDisplaySinglByte(ucharLine,ucharRow,ucharShowData);ucharenterflag,i,flag,pwflag;uintkeybuf[4]={0,0,0,0}; //輸入密碼的存放地址uintkeyword[4]={0,0,0,0};uintkey[8]={0,0,0,0,0,0,0,0}; //對應(yīng)的箱子密碼初始值ucharboxflag=0;ucharcount=0;uintpassword;uint_next=1;ucharlcd_flag,seconds;uchartimer_work,timer_10ms;voidmain(void){ TMOD=0x21; SCON=0x50;set_bps TH0=0x70; TL0=0x00; TR0=1; //P1=0xfd; //翻開中斷 IP=0x10;//中斷優(yōu)先級//PT0=0; PS=1; TR1=1; ES =1; ET0=1; EA =1; InitLCD(); //P2=0x00; //array_write(0x2000,8,&key[0]); while(1) { //LCD_init(); //LCD_WriteStr(3,1,"熱烈歡送"); //LCD_WriteStr(1,2,"ABCDEFGHIJKLMNOP"); DisplaySinglByte(1,0,''); DisplaySinglByte(1,3,'T'); DisplaySinglByte(1,4,'J'); DisplaySinglByte(1,5,'G'); DisplaySinglByte(1,6,'C'); DisplaySinglByte(1,7,'S'); DisplaySinglByte(1,8,'F'); DisplaySinglByte(1,9,'X'); DisplaySinglByte(1,10,'Y'); DisplaySinglByte(1,11,'T'); DisplaySinglByte(1,12,'S'); DisplaySinglByte(1,13,'G');/* DisplaySinglByte(2,8,keybuf[0]+0x30); DisplaySinglByte(2,9,keybuf[1]+0x30); DisplaySinglByte(2,10,keybuf[2]+0x30); DisplaySinglByte(2,11,keybuf[3]+0x30);*/// DisplaySinglByte(2,14,'O');// DisplaySinglByte(2,15,'K'); if(timer_10ms>=100) { seconds++; timer_10ms=0; } if(seconds>=3) { timer_work=0; seconds=0; lcd_flag=0; flag=0; } if(flag==0) { DisplaySinglByte(2,12,''); DisplaySinglByte(2,13,''); DisplaySinglByte(2,14,''); DisplaySinglByte(2,15,''); } if(flag==1) { DisplaySinglByte(2,12,(i+1)%10+0x30); DisplaySinglByte(2,13,''); DisplaySinglByte(2,14,'O'); DisplaySinglByte(2,15,'K'); } if(flag==2) { DisplaySinglByte(2,12,''); DisplaySinglByte(2,13,'E'); DisplaySinglByte(2,14,'R'); DisplaySinglByte(2,15,'R'); } if(lcd_flag==1) { DisplaySinglByte(2,0,'P'); DisplaySinglByte(2,1,'W'); DisplaySinglByte(2,2,(i+1)%10+0x30); DisplaySinglByte(2,3,':'); DisplaySinglByte(2,4,key[i]/1000+0x30); DisplaySinglByte(2,5,key[i]%1000/100+0x30); DisplaySinglByte(2,6,key[i]%100/10+0x30); DisplaySinglByte(2,7,key[i]%10+0x30); } if(lcd_flag==0) { DisplaySinglByte(2,0,''); DisplaySinglByte(2,1,''); DisplaySinglByte(2,2,''); DisplaySinglByte(2,3,''); DisplaySinglByte(2,4,''); DisplaySinglByte(2,5,''); DisplaySinglByte(2,6,''); DisplaySinglByte(2,7,''); } if(boxflag==8) //是否箱滿驗查 { DisplaySinglByte(2,8,'F'); DisplaySinglByte(2,9,'U'); DisplaySinglByte(2,10,'L'); DisplaySinglByte(2,11,'L'); } if(boxflag<8) { DisplaySinglByte(2,8,''); DisplaySinglByte(2,9,''); DisplaySinglByte(2,10,''); DisplaySinglByte(2,11,''); } switch(

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論