基于AT89C52單片機(jī)的自動(dòng)存取柜的設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1、需求信息:
在大型超市、圖書(shū)館、火車(chē)及汽車(chē)站,人們經(jīng)常需要寄存包裹。采用人工方法存取包裹即費(fèi)人工又費(fèi)時(shí)間,與信息社會(huì)格格不入。故而筆者設(shè)計(jì)一套基于單片機(jī)AT89C52的自動(dòng)存取柜(16柜)的微機(jī)系統(tǒng),能夠完全實(shí)現(xiàn)自動(dòng)化。顧客只須按存包鍵,某一柜門(mén)自動(dòng)打開(kāi),同時(shí)系統(tǒng)打印密碼和柜號(hào)。當(dāng)顧客取包時(shí),按取包鍵,同時(shí)輸入密碼(人機(jī)互動(dòng)),系統(tǒng)確認(rèn)密碼正確后其柜門(mén)再次打開(kāi),顧客取包離開(kāi)。
2、自動(dòng)存取柜的硬件系統(tǒng)設(shè)計(jì):
自動(dòng)存取柜的硬件系統(tǒng)設(shè)計(jì)如圖2.1
2.1 本次設(shè)計(jì)采用TM162 16✕2字符液晶點(diǎn)陣式LCD,數(shù)據(jù)線(xiàn)掛接總數(shù)據(jù)線(xiàn),數(shù)據(jù)或命令端RS接P2.2,讀寫(xiě)端 R/W接P2.3,使能E接P2.4,命令寫(xiě)入地址為E3FFH,數(shù)據(jù)寫(xiě)入地址為E7FFH,讀狀態(tài)地址為EBFFH,不需要生成新的字符,只要使用其內(nèi)部字符庫(kù)的字符即可,使用時(shí)送入需顯示數(shù)據(jù)的ASCII碼值即可。
2.2 本次設(shè)計(jì)采用微型打印機(jī)GP16。如圖所示。片選接P2.5,BUSY端接P1.7,數(shù)據(jù)口接總數(shù)據(jù)線(xiàn),其地址為DFFFH,打印機(jī)可作為外部RAM對(duì)待,向打印機(jī)發(fā)送命令或數(shù)據(jù)時(shí),只要向口地址DFFFH寫(xiě)入相應(yīng)數(shù)據(jù)字節(jié)即可,BUSY信號(hào)采用查詢(xún)P1.7口方式控制打印機(jī)。
2.3 本次設(shè)計(jì)我們采用專(zhuān)用鍵盤(pán)管理芯片74C922。74C922為CMOS工藝技術(shù)制造,工作電壓為3—15V,“二鍵鎖定”功能,編碼輸出為三芯輸出,可直接與微處理器數(shù)據(jù)線(xiàn)相連,內(nèi)部振蕩器完成4×4矩形鍵盤(pán)掃描,有按鍵時(shí),DA變高,接到AT89C52的INT0口,并且設(shè)INT0為電平觸發(fā),當(dāng)DA 變高時(shí),經(jīng)過(guò)非門(mén)變低產(chǎn)生INT0外部中斷,通知AT89C52從P1口讀鍵值,從而完成相應(yīng)的散轉(zhuǎn)程序功能。根據(jù)接線(xiàn)圖 及真值表,我們知道,10個(gè)數(shù)字鍵0—9對(duì)應(yīng)ABCD輸出(0000—1001),存包健對(duì)應(yīng)ABCD輸出(1010),取包鍵對(duì)應(yīng)ABCD輸出(1011)。
2.4 本次設(shè)計(jì)采用兩片8255 I/O擴(kuò)展48路I/O口,其地址分別為7FFCHž7FFFH和BFFCHžBFFFH。PA口設(shè)為輸出,通過(guò)驅(qū)動(dòng)芯片7407接16接繼電器開(kāi)柜鎖,當(dāng)PA口某置1時(shí),產(chǎn)生電磁力吸合鎖舌,使鎖打開(kāi),當(dāng)PA口某位置0時(shí),電磁力消失釋放鎖舌。PB口外接16路限位開(kāi)關(guān),設(shè)為輸入口。在柜門(mén)的啟停位置安裝限位開(kāi)關(guān),當(dāng)柜門(mén)被自動(dòng)打開(kāi)時(shí)或人工關(guān)上時(shí),限位開(kāi)關(guān)發(fā)出高或低的電平信號(hào)。CPU檢測(cè)柜門(mén)關(guān)上與否?PC口外接16路反射紅外傳感器開(kāi)關(guān),設(shè)為輸入口,紅外傳感器屬于非接觸無(wú)損檢測(cè)電子開(kāi)關(guān),它利用物體對(duì)紅外線(xiàn)的反射現(xiàn)象來(lái)檢測(cè)物體有無(wú)。它由調(diào)制脈沖發(fā)生器產(chǎn)生的調(diào)制脈沖經(jīng)發(fā)射管G輻射出910—940mm 的紅外線(xiàn)脈沖,當(dāng)被檢測(cè)到物體進(jìn)入傳感器作用范圍時(shí),紅外線(xiàn)脈沖被反射回來(lái)進(jìn)入接受管D,由接受管D的光電效應(yīng)和控制器中的解調(diào)放大器,將紅外線(xiàn)脈沖解調(diào)為電脈沖信號(hào),并經(jīng)選通放大,整流為直流電平,再由抗干擾網(wǎng)絡(luò)濾去干擾后,觸發(fā)驅(qū)動(dòng)器,并輸出一開(kāi)關(guān)信號(hào)。當(dāng)有物為1,無(wú)物為0。此信號(hào)通過(guò)光電隔離及反相器輸入到8255的PC口,圖2.2 為紅外反射式傳感器開(kāi)關(guān)原理圖。
3、自動(dòng)存取柜系統(tǒng)的軟件設(shè)計(jì)
本次設(shè)計(jì)有主程序和INT0中斷程序及相關(guān)的子程序組成。設(shè)有兩個(gè)標(biāo)志位,其中一個(gè)標(biāo)志位flag1為存滿(mǎn)標(biāo)志位,當(dāng)PC口輸入為FFH時(shí),紅外反射式傳感器檢測(cè)到所有柜存滿(mǎn),此時(shí)液晶LCD顯示full!否則顯示welcome!另外一個(gè)標(biāo)志位為flag2,即取包鍵標(biāo)志位。即當(dāng)只有按取包鍵后,flag2置1,液晶LCD顯示Please input code ,當(dāng)取包裹人依次鍵入密碼時(shí),CPU檢測(cè)到flag2為 1,液晶 LCD才逐位顯示密碼,否則在其他時(shí)刻鍵入數(shù)字鍵無(wú)效。當(dāng)存包時(shí),flag2被置0。由于篇幅所限,本處給出主程序流程圖圖3.1和外部INT0中斷流程圖3.2。值得注意 的是,本次設(shè)計(jì)為當(dāng)一個(gè)人操作本系統(tǒng)時(shí),應(yīng)保證其他柜門(mén)已關(guān)上這一前提,即不允許兩個(gè)人同時(shí)操作本系統(tǒng)。
4、軟硬件抗干擾技術(shù)
復(fù)位看門(mén)狗及電源監(jiān)控采用Maxim公司的MAX813芯片.此處不多述。
軟件方面采用:a:在程序中插入空操作指令實(shí)現(xiàn)指令指針PC的容錯(cuò)。插入原則為:在跳轉(zhuǎn)或多字節(jié)指令前插入來(lái)保證指令的正確執(zhí)行。在比較重要的指令前插入:如中斷, 圖3.2 外部INT0中斷流程圖
堆棧等及在 程序中每隔若干條指令插一次。b重復(fù)設(shè)置各種工作方式控制字這樣,通過(guò)軟硬件雙重監(jiān)控,防止程序跑飛。
5、結(jié)束語(yǔ)
通過(guò)以上介紹,我們?nèi)坎捎媒?jīng)典的智能芯片如AT89C52,8255芯片,字符點(diǎn)陣式液晶顯示,GP16打印機(jī),74C922等完成了人機(jī)互動(dòng)能力強(qiáng),軟件硬件簡(jiǎn)單明了,工作可靠的自動(dòng)存取柜系統(tǒng)。經(jīng)實(shí)驗(yàn)證明,完全達(dá)到設(shè)計(jì)目的。
參考文獻(xiàn):
[1] 李昌禧主編。智能儀表原理與設(shè)計(jì) 北京 化學(xué)工業(yè)出版社 2004年
[2] 李華主編 MCS-51系列單片機(jī)實(shí)用接口技術(shù) 北京:北京航天航空大學(xué),2003年
[3] 陳潤(rùn)泰主編 檢測(cè)技術(shù)與智能儀表 中南工業(yè)大學(xué)出版社 1999年
[4]求是科技 靳達(dá) 編著 單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航 人民郵電出版社 2003年
[5] 求是科技 編著 單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航 人民郵電出版社 2003年