黑龍江 姬紅旭
基于STC89C52單片機智能避障小車設計
黑龍江 姬紅旭
本文設計智能避障小車基于STC89C52單片機作為小車的避障、遙控、顯示的核心,通過四對紅外發(fā)射和接收模塊對前方的障礙物距離進行檢測,從而把反饋的信號送給單片機,由單片機進行分析處理對小車進行自動控制躲避障礙物行走。顯示部分分為液晶顯示和LED點陣顯示,是由一塊8x8LED點陣屏進行顯示,漢字采用專門的取模軟件進行漢字編碼,然后通過軟件經動態(tài)掃描顯示出來,使小車有一種動態(tài)的活力感。液晶主要顯示當前所處環(huán)境的溫度和當時的時間,時間可以由按鍵進行設置,遙控部分主要是為了人為的對小車進行干預,使小車能根據個人喜好設置行走路線,獲得人機溝通的樂趣。
單片機;8x8點陣屏;遙控;智能
(一)小車能夠實現自動躲避在車前方的障礙物,達到智能的效果。
(二)時間和溫度顯示功能:液晶顯示的前六位顯示時分秒,后兩位顯示當前的溫度,時間具有可調功能。
(三)遙控功能:遙控器可以遙控小車,人為干預小車的行走路線,實現人性化的設計。
(四)小車還有自動走舞步的功能,增加了很多的樂趣。
(五)點陣的顯示功能,可以顯示歡迎詞,8x8 LED點陣顯示屏顯示歡迎詞,其屬于高亮度的顯示屏。
(一)主控電路設計
硬件電路設計:小車的主要控制核心是一塊STC89C52單片機,該單片機中有一個8位的微處理器,與通用的微處理器基本相同,同樣包括了運算器和控制器兩大部分,只是增加了面向控制的處理功能,不僅可處理數據,還可以進行位變量的處理。數據存儲器片內為256個字節(jié),片外最多可外擴至64k字節(jié)。中斷系統(tǒng)具有5個中斷源,2級中斷優(yōu)先權。定時器/計數器片內有2個16位的定時器/計數器,具有四種工作方式串行口,1個全雙工的串行口。可用來進行串行通訊,擴展并行I/O口,甚至與多個單片機相連構成多機系統(tǒng),從而使單片機的功能更強且應用更廣。特殊功能寄存器共有21個,用于對片內的各功能部件進行管理、控制、監(jiān)視。實際上是一些控制寄存器和狀態(tài)寄存器,是一個具有特殊功能的RAM區(qū)。
下圖是單片機的最小系統(tǒng)也是單片機能夠正常運行并完成各種性能要求的經典電路。

圖1 單片機最小系統(tǒng)
(二)電動機驅動電路設計
小車本身采用的是市面上銷售的遙控玩具小車,主要有兩個電動機。一個是動力驅動部分,主要有電動機和減齒輪,方向舵也是由電動機驅動齒輪帶動前輪進行拐彎。為了讓單片機能夠更好更安全更方便驅動和控制小車底盤中的兩個電動機,我采用專門的驅動芯片L298N輸出的兩路驅動OUT,1OUT2J接動力部分的電動機MG1,OUT3OUT4接轉向電動機MG2,驅動芯片和單片機的接口也采用了抗干擾光電隔離技術,極大地減少了因為外部電磁波對小車運行的干擾,這使小車更好的按照程序來運行整體電路圖。如圖所示:

圖2 電動機驅動電路
(三)避障電路設計
本避障電路的設計是采用紅外對管元件對小車前的障礙物進行檢測,紅外線對管傳感器分別放置在小車前方,水平互成600角,這樣就可以把發(fā)射的紅外線排布在小車的前方任何范圍,提高小車反應及增強避障的能力。當四個中的一個或多個(障礙物較大)接收部分的傳感器,就能根據反射回來的紅外線進行自動的調整,從而使小車的運行軌跡達到自動避障的目的。下圖是傳感器的驅動及接受電路,其中偵測前方障礙的距離,可以通過調節(jié)滑動變阻器的阻值,經比較處理后,將對應的電壓輸出給紅外發(fā)射管,達到調節(jié)距離的目的。

圖3 避障電路設計
(四)LED點陣電路設計
點陣電路的設計是本小車的一個創(chuàng)新之一,點陣屏為小車增添了不少的新奇和樂趣。同時此屏可以通過電腦隨時編寫各種歡迎詞語下載到小車上,讓小車有自己獨特的個性。LED點陣顯示屏采用市面上銷售的8x8點陣模塊,要想顯示字符或者漢字,那么就要點陣屏進行動態(tài)的掃描,而掃描的過程就是讓單片機在一定的時間里通過74HC595擴展的I/O口輸出低電平來驅動8x8點陣顯示屏,并根據程序的要求進行點亮,根據人眼的視覺暫留現象形成一個靜態(tài)的字符或者是文字,使我要想表的思想通過顯示屏展現出來。點陣屏是由發(fā)光的二極管以矩陣的形式接在一起的,互相獨立,互不干擾。于是,要想點亮屏幕,驅動的電流要遠遠超過單片機的驅動能力。這就對單片機的I/O提出了更高的要求。因此,對于陰極的驅動,我用了一個串轉并的芯片74hc595,陽極用的是74ls373芯片,是以總線形式來驅動的,下面是顯示屏電路的設計及芯片資料:

圖4 點陣顯示電路設計
(五)溫度電路設計
由于本設計測量的溫度與常溫相像,對于傳感器的測量范圍沒有太多的要求。所以考慮用總線的溫度傳感器DS18B20,它體積小,總線少,接口方便。為此我采用了如下的設計方法,在數據線上加了一個上拉電阻,常用的是4K7,電路如下:

圖5 溫度接口
(六)遙控電路設計
遙控電路設計是采用專門的解碼和編碼芯片,電路元件少,連接方便,穩(wěn)定性能好。發(fā)射電路采用的是PT2262芯片,設計成四個按鍵,分別是A、B、C、D,單獨按A是前進,單獨按B是后退,單獨按C是左拐,單獨按D是右拐,同時按下ABC小車能夠自動走舞,接受電路用的PT2272經過解碼讀出鍵值變成低電平送給單片機,由單片機處理,讓小車的驅動電機執(zhí)行相應的功能。
PT2262/2272是臺灣普城公司生產的一種CMOS工藝制造的低功耗、低價位通用編解碼電路,PT2262/2272最多可有12位(A0-A11)三態(tài)地址端管腳(懸空、接高電平、接低電平),任意組合可提供531441地址碼,PT2262最多可有6位(D0-D5)數據端管腳。通常在使用中,我們一般采用8位地址碼和4位數據碼,這時編碼電路PT2262和解碼PT2272的第1~8腳為地址設定腳,有三種狀態(tài)可供選擇:懸空、接電源正極、接地三種狀態(tài),3的8次方為6561,所以地址編碼不重復度為6561組,只有發(fā)射端PT2262和接收端PT2272的地址編碼完全相同,才能配對使用。遙控模塊的生產廠家為了便于生產管理,出廠時遙控模塊的PT2262和PT2272的八位地址編碼端要全部懸空,這樣用戶可以很方便選擇各種編碼狀態(tài),用戶如果想改變地址編碼,只要將PT2262和PT2272的1~8腳設置相同即可。例如,將發(fā)射機的PT2262的第1腳接地,第5腳接正電源,其它引腳懸空,那么接收機的PT2272只要也第1腳接地,第5腳接正電源,其它引腳懸空就能實現配對接收。當兩者地址編碼完全一致時,接收機對應的D1~D4端輸出約4V互鎖高電平控制信號,同時VT端也輸出解碼有效高電平信號。用戶可將這些信號加一級放大,便可驅動繼電器、功率三極管等進行負載遙控開關操縱。
在具體的應用中,外接振蕩電阻可根據需要進行適當的調節(jié),阻值越大振蕩頻率越慢,編碼的寬度越大,發(fā)送一幀的時間越長。一般用2262/1.2M/2272/200K組合的,少量產品用2262/4.7M/2272/820K。
PT2272解碼芯片有不同的后綴,表示不同的功能,有L4/M4/L6/M6之分,其中L表示鎖存輸出,數據只要成功接收就能一直保持對應的電平狀態(tài),直到下次遙控數據發(fā)生變化時改變。M表示非鎖存輸出,數據腳輸出的電平是瞬時的,而且和發(fā)射端是否發(fā)射相對應,可以用于類似點動的控制。為了方便程序的下載和小車的調試,特意設計了串口下載電路。此電路和電腦連接非常方便,不需要總是插拔芯片,避免了因為多次的插拔導致芯片的引腳變形,另外,也為做二次開發(fā)做了準備,一舉多得。
(一)程序流程圖

(二)主驅動程序設計
軟件設計中最難也是最重要的是通過程序把字符液晶和溫度傳感器驅動起來,為了減少單片機的I/O端口,液晶屏的驅動是串口。雖然元件少了,方便了焊接,但是軟件上卻增加了很多的程序。筆者設計小車實現的各種功能是通過把各部分的程序分塊來處理,經過編寫調試運行通過后,再把各塊程序再融合到一個主要程序。
(編輯 劉麗娜)
(作者單位:齊齊哈爾工程學院)