仝 香
(江蘇省淮安技師學(xué)院 江蘇淮安 223001)
本設(shè)計(jì)主要應(yīng)用AT89S51 作為控制核心,與顯示器、驅(qū)動(dòng)電路等相結(jié)合的系統(tǒng)。基于單片機(jī)設(shè)計(jì)。利用單片機(jī)AT89S51作為報(bào)警裝置的控制器,能充分發(fā)揮AT89S51 的數(shù)據(jù)處理和實(shí)時(shí)控制功能。使系統(tǒng)工作處于最佳狀態(tài),提高系統(tǒng)的靈敏度。當(dāng)產(chǎn)生信號(hào)驅(qū)動(dòng)小車前進(jìn)時(shí),通過尋跡模塊里的紅外對(duì)管是否尋到黑線產(chǎn)生的電平信號(hào)再返回到單片機(jī),單片機(jī)根據(jù)程序設(shè)計(jì)要求做出相應(yīng)的判斷送給電機(jī)驅(qū)動(dòng)模塊。控制小車讓其在黑線上實(shí)現(xiàn)前進(jìn)后退以及轉(zhuǎn)向。
本設(shè)計(jì)采用了AT89C52 單片機(jī)作為主控芯片來處理各個(gè)模塊的運(yùn)營(yíng),系統(tǒng)硬件總框圖如圖2.1

圖1 系統(tǒng)硬件總體框圖
通常而言,紅外遙控有著信息傳輸準(zhǔn)、抗干擾、低成本等諸多優(yōu)點(diǎn)。其作為一種非接觸性的無線控制技術(shù),在家用電器以及計(jì)算機(jī)系統(tǒng)方面有著廣泛的應(yīng)用。同時(shí),其主要由接收以及發(fā)送兩部分構(gòu)成。在接收部分一般是諸如HS0038 等性能可靠且價(jià)格合理的接收頭,信號(hào)通過主芯片來進(jìn)行二進(jìn)制編碼,并形成最終的脈沖串信號(hào)。紅外遙控不但有著接收信號(hào)的功能,而且能夠整形、檢波以及放大信號(hào),或者接收到類似TTL 的電平編碼,然后將其傳送給單片機(jī)解碼,實(shí)現(xiàn)對(duì)相關(guān)對(duì)象的有效控制。
采用了紅外發(fā)射和接收探頭來探測(cè)路況信息。紅外發(fā)射管發(fā)射紅外信號(hào),然后再通過路面反射的方式獲得前方是否存在有障礙物等路況信息,這也就是所謂的紅外探測(cè)法。
在系統(tǒng)軟件設(shè)計(jì)時(shí),我們將所有的模塊程序嵌入到遙控器中,這種嵌入式主要是為了便于控制,且不占CPU,因?yàn)檫b控模塊、尋跡模塊、以及避障模塊等都同時(shí)用到了實(shí)時(shí)檢測(cè)掃描,這樣不僅占用CPU,而且多個(gè)程序一塊運(yùn)行還會(huì)產(chǎn)生沖突。
遙控器發(fā)送紅外信號(hào)時(shí),開啟單片機(jī)外部中斷0,主程序進(jìn)入中斷函數(shù),進(jìn)行解碼。解碼處理完成之后,將遙控信息反饋給主程序,主程序?qū)Ρ冗b控器輸入值之后進(jìn)入相應(yīng)模塊執(zhí)行相關(guān)操作,各模塊最終會(huì)處理是由電機(jī)驅(qū)動(dòng)來完成的。
整個(gè)控制程序都嵌入到了遙控模塊這一單元里邊,所以紅外遙控的解碼是貫穿整個(gè)設(shè)計(jì)的主線,起到了整個(gè)系統(tǒng)入口的作用。
當(dāng)遙控器上按下按鍵時(shí),1 腳收到遙控器發(fā)送的紅外脈沖信號(hào)并解碼出脈寬波形,同時(shí)使單片機(jī)產(chǎn)生中斷,并開啟定時(shí)器、脈沖個(gè)數(shù)計(jì)數(shù)。記錄出每來一個(gè)脈沖的時(shí)間和脈沖總個(gè)數(shù),等到一幀的數(shù)據(jù)發(fā)送完成之后,單片機(jī)結(jié)束計(jì)數(shù),并關(guān)閉定時(shí)器。之后進(jìn)入判斷階段,首先判斷這一幀數(shù)據(jù)中的脈沖個(gè)數(shù),如果脈沖個(gè)數(shù)大于31 個(gè)則將數(shù)據(jù)丟棄,如果剛好則判斷接收的脈沖是0 還是1,接收完之后將這些數(shù)據(jù)保存起來,再來比對(duì)數(shù)據(jù)的對(duì)錯(cuò)。首先比對(duì)前導(dǎo)碼是否正確,也就是看一下當(dāng)前遙控器是不是與小車匹配的遙控器,如果都正確之后再來將碼值存起來。主程序用一個(gè)swich 函數(shù)來對(duì)相應(yīng)碼值進(jìn)行對(duì)應(yīng)函數(shù)的調(diào)用就可以了,比如按下了上鍵,則調(diào)用前進(jìn)函數(shù)來完成小車前進(jìn)動(dòng)作。
從宏觀上講,電機(jī)驅(qū)動(dòng)在小車運(yùn)行中占據(jù)主導(dǎo),也是小車接收到命令之后的最終輸出,任何一個(gè)模塊所執(zhí)行命令的外在表現(xiàn)。
電機(jī)驅(qū)動(dòng)包括驅(qū)動(dòng)電機(jī)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)以及暫停功能。這些功能不僅僅只是遙控器按下上下左右之后才執(zhí)行,而是每一個(gè)模塊都會(huì)有執(zhí)行電機(jī)驅(qū)動(dòng)模塊的操作,所以在設(shè)計(jì)程序時(shí),最優(yōu)設(shè)計(jì)應(yīng)該是將這些前進(jìn)、后退、左右轉(zhuǎn)向單獨(dú)編譯成一個(gè)函數(shù)塊,每一個(gè)子模塊的運(yùn)行就只需調(diào)用這些函數(shù)就可完成。這樣做就節(jié)省了很大的程序空間,舉個(gè)例子,在編寫前進(jìn)函數(shù)時(shí),為了滿足小車前進(jìn)功能,只需將P0.0—P0.3 賦值1010 就可完成,其他左轉(zhuǎn)右轉(zhuǎn)只是改變相應(yīng)P0.0—P0.3 的碼值則可實(shí)現(xiàn)。當(dāng)然為了使得更準(zhǔn)確,可以添加一下延時(shí)函數(shù)在內(nèi)部,以避免操作太快給電機(jī)帶來了的損壞。
遙控發(fā)送接收調(diào)試,將遙控器裝上電池,然后將你自己的手機(jī)的照相功能打開,將手機(jī)上的攝像頭對(duì)準(zhǔn)你遙控器前面的發(fā)射燈,然后按下遙控器上的任何一個(gè)按鍵,觀察手機(jī)照相功能里面的遙控器發(fā)射燈是否點(diǎn)亮。如果燈已被點(diǎn)亮,則說明遙控器能夠正常發(fā)射紅外信號(hào),否則遙控不能發(fā)射紅外信號(hào)。現(xiàn)在來談?wù)劶t外接收頭的調(diào)試,如果遙控器能夠正常工作,下一步就應(yīng)該測(cè)試一下接收頭是否正常接收了。小車上電之后將接收頭的1 號(hào)管腳接上示波器,然后一直按下遙控器上面的按鍵,觀察示波器上面的波形,如果能夠發(fā)現(xiàn)有重復(fù)的高低脈沖,但看不清具體的脈沖寬度,則說明紅外線能夠正常接收紅外信號(hào)。如果接上之后沒什么反應(yīng),也未見其波形,初步推斷是接收頭有問題,或許是元器件已壞,也可能是焊接時(shí)有虛焊或短路,這時(shí)應(yīng)該再次檢查電路連接。
以上步驟都完成且正常之后可遙控小程序以此來檢查所用程序是否能夠正常解碼。
本設(shè)計(jì)屬于一種基于單片機(jī)的設(shè)計(jì),主要應(yīng)用AT89S51作為控制核心,與顯示器、驅(qū)動(dòng)電路等相結(jié)合的系統(tǒng)。通過AT89S51 的運(yùn)用,提高系統(tǒng)的靈敏度,使其處于最佳工作狀態(tài)。當(dāng)信號(hào)驅(qū)動(dòng)小車向前行駛時(shí),通過紅外對(duì)管是否尋到黑線產(chǎn)生的電平信號(hào)再返回到單片機(jī),然后再做出相應(yīng)的判斷,并將其傳送給驅(qū)動(dòng)模塊,控制小車方向與行進(jìn)。通過該小車設(shè)計(jì),以求在獲得項(xiàng)目整體設(shè)計(jì)能力的同時(shí),掌握更多多通道多樣化傳感器綜合控制的方法。同時(shí),以AT89C52 單片機(jī)為控制核心,能夠?qū)崿F(xiàn)自主識(shí)別黑色引導(dǎo)線并根據(jù)黑線走向?qū)崿F(xiàn)快速穩(wěn)定的尋線行駛。