計(jì)算機(jī)控制智能小車的軟件設(shè)計(jì)
摘要:本設(shè)計(jì)是采用單片機(jī)作為從機(jī)(也稱下位機(jī)),而PC機(jī)作為中央控制機(jī)的主從式系統(tǒng)。主機(jī)同時(shí)根據(jù)從從機(jī)接收的過(guò)程參數(shù)進(jìn)行判斷處理并給從機(jī)發(fā)送各種控制命令。利用單片機(jī)的串行口與PC機(jī)的串行口進(jìn)行串行通信,PC機(jī)可對(duì)遠(yuǎn)程前端單片機(jī)進(jìn)行控制,將單片機(jī)采集的數(shù)據(jù)傳送到PC中去,由PC機(jī)對(duì)數(shù)據(jù)進(jìn)行處理和顯示,同時(shí)把反饋信號(hào)發(fā)到單片機(jī),實(shí)現(xiàn)閉環(huán)控制和管理。本設(shè)計(jì)在VC++6.0的環(huán)境下,編寫(xiě)使用C++語(yǔ)言,SQL數(shù)據(jù)庫(kù)的串口通信程序,控制由單片機(jī)控制的智能小車。
本文引用地址:http://2s4d.com/article/201610/309949.htm0 引言
隨著多微機(jī)系統(tǒng)的應(yīng)用和微機(jī)網(wǎng)絡(luò)的發(fā)展,通信功能越來(lái)越顯得重要。在工業(yè)控制系統(tǒng)(尤其是多點(diǎn)現(xiàn)場(chǎng)工業(yè)控制系統(tǒng))設(shè)計(jì)實(shí)踐中,單片機(jī)與PC機(jī)組合構(gòu)成分布式控制系統(tǒng)便是一個(gè)重要的應(yīng)用;主控計(jì)算機(jī)通過(guò)485網(wǎng)絡(luò)監(jiān)督管理下位分機(jī)的運(yùn)行狀況。在以單片機(jī)為基礎(chǔ)的數(shù)據(jù)采集和實(shí)時(shí)控制系統(tǒng)中,通過(guò)計(jì)算機(jī)中的RS-232接口進(jìn)行計(jì)算機(jī)與單片機(jī)之間的命令和數(shù)據(jù)傳送,就可以利用計(jì)算機(jī)對(duì)生產(chǎn)現(xiàn)場(chǎng)進(jìn)行監(jiān)測(cè)和控制。本文設(shè)計(jì)是以單片機(jī)AT89C51為控制核心,附以外圍電路,采用反射光耦(1550-01)檢測(cè)黑白線,霍爾傳感器(A04E)+磁鋼來(lái)實(shí)現(xiàn)智能車行駛的計(jì)程,采用四位共陰LED實(shí)現(xiàn)行駛計(jì)程和時(shí)間的交替計(jì)數(shù)顯示。同時(shí)還充分利用單片機(jī)的串口、并口資源和運(yùn)算、處理能力,來(lái)實(shí)現(xiàn)小車的按軌跡直線行走、按軌跡轉(zhuǎn)彎、計(jì)數(shù)小車行駛的距離,最后停車等智能控制系統(tǒng)。避免了當(dāng)前的電動(dòng)小汽車基本上只能采取的是基于純硬件電路的一種開(kāi)環(huán)控制方法,或者是直線行駛,或者是在遙控下做出前進(jìn)、后退、轉(zhuǎn)彎、停車等基本功能。
1 系統(tǒng)的設(shè)計(jì)思路
本文設(shè)計(jì)是采用PC機(jī)做上位機(jī)和單片機(jī)(作為智能小車的外圍電路的設(shè)計(jì))做下位機(jī)的主從式系統(tǒng)。PC機(jī)控制小車的模擬框圖如圖1所示。利用單片機(jī)的串行口與PC機(jī)的串行口進(jìn)行串行通信,通過(guò)設(shè)置PC機(jī)的控制界面(智能小車運(yùn)行的各種控制功能)來(lái)實(shí)現(xiàn)上位機(jī)的數(shù)據(jù)采集,并由上位機(jī)不斷發(fā)送握手協(xié)議(通信協(xié)議)信號(hào),直到下位機(jī)回應(yīng)“發(fā)送下一幀”為止。之后上位機(jī)開(kāi)始發(fā)送正常數(shù)據(jù)。若下位機(jī)反饋“發(fā)送下一幀”信息,則繼續(xù)發(fā)送下一幀;若下位機(jī)反饋“重發(fā)上一幀”,則重發(fā)剛剛發(fā)送過(guò)的那一幀數(shù)據(jù);若下位機(jī)反饋“無(wú)效地址”,則繼續(xù)發(fā)送下一幀數(shù)據(jù),從而實(shí)現(xiàn)PC機(jī)對(duì)遠(yuǎn)程前端單片機(jī)的控制。同時(shí)將單片機(jī)采集的數(shù)據(jù)通過(guò)判斷握手協(xié)議(通信協(xié)議)傳送到PC中去,由PC(主)機(jī)同時(shí)根據(jù)從從機(jī)接收的過(guò)程參數(shù)進(jìn)行判斷處理并給從機(jī)(單片機(jī))發(fā)送各種控制命令。從而實(shí)現(xiàn)PC機(jī)(上位機(jī))對(duì)智能小車外圍電路(下位機(jī))的控制。
下位機(jī)設(shè)計(jì)采用AT89C51單片機(jī)芯片來(lái)實(shí)現(xiàn)智能車模型的自動(dòng)尋跡、自動(dòng)控制等功能,利用反射光耦(1550-01)檢測(cè)黑白線來(lái)實(shí)現(xiàn);采用霍爾傳感器(A04E)+磁鋼來(lái)實(shí)現(xiàn)智能車行駛的計(jì)程;同時(shí)采用四位共陰LED實(shí)現(xiàn)行駛計(jì)程和時(shí)間的交替計(jì)數(shù)顯示。本文上位機(jī)設(shè)計(jì)采用在Visu al C++環(huán)境中,直接使用Windows提供的API函數(shù)實(shí)現(xiàn)一個(gè)串行通信動(dòng)態(tài)鏈接庫(kù)(DLL),通過(guò)編程工具(VC)設(shè)計(jì)一個(gè)與智能小車通信的上位機(jī)控制界面,在上位機(jī)和下位機(jī)之間通過(guò)MAX485接口芯片與控制軟件結(jié)合來(lái)監(jiān)測(cè)。MAX485是半雙工的,可以先檢測(cè)/RE和DE的電平,判斷芯片是處于接收信號(hào)還是發(fā)送信號(hào),然后再檢測(cè)AB的電平,當(dāng)A引腳的電平高于B端時(shí),代表發(fā)送的數(shù)據(jù)為1;當(dāng)A的電平低于B端時(shí),代表發(fā)送的數(shù)據(jù)為0。從而實(shí)現(xiàn)上位機(jī)與下位機(jī)(由AT89C51單片機(jī)控制的智能小車)的半雙工串行通信。
2 系統(tǒng)的軟件設(shè)計(jì)
單片機(jī)的通信軟件采用AT89C51的匯編語(yǔ)言編寫(xiě),單片機(jī)的發(fā)送和接收采用中斷程序。準(zhǔn)備發(fā)送的數(shù)據(jù)存放在以內(nèi)存50H為首地址的連續(xù)10個(gè)單元中。本設(shè)計(jì)采用單片機(jī)芯片AT89C51為核心控制器,通過(guò)編寫(xiě)控制程序(匯編語(yǔ)言)來(lái)控制小車的正常行駛、左右轉(zhuǎn)彎、后退行駛、停止行駛、檢測(cè)金屬、計(jì)程、行駛時(shí)間、告警和上位機(jī)與下位機(jī)的通信等。
2.1 系統(tǒng)的下位機(jī)軟件設(shè)計(jì)
2.1.1 控制主程序設(shè)計(jì)
單片機(jī)主程序圖如圖2所示??刂浦鞒绦蚴峭ㄟ^(guò)中斷服務(wù)程序?qū)崿F(xiàn)的,采用外部中斷0、外部中斷1和T0中斷來(lái)實(shí)現(xiàn)主程序的控制,使各中斷子程序交替運(yùn)行,顯示不會(huì)產(chǎn)生干擾,且能在顯示部分交替進(jìn)行顯示。
2.1.2 小車行駛程序設(shè)計(jì)
小車行駛流程圖如圖3所示。小車行駛控制程序啟動(dòng)后程序進(jìn)入5S的倒計(jì)時(shí)狀態(tài),并開(kāi)啟四位數(shù)碼顯示工作;5S倒計(jì)時(shí)結(jié)束后程序開(kāi)始運(yùn)行黑帶檢測(cè)程序,由通過(guò)光電傳感器(1550-01)檢測(cè)到通過(guò)LM324放大電路放大的信號(hào)輸入來(lái)判斷小車是否正常行駛,若否,則由相應(yīng)的程序來(lái)控制小車的左轉(zhuǎn)或右轉(zhuǎn)來(lái)達(dá)到正常行駛;當(dāng)傳感器檢測(cè)到停止線時(shí)小車立即停止。
2.1.3 時(shí)間計(jì)數(shù)程序設(shè)計(jì)
時(shí)間計(jì)數(shù)子程序圖如圖4所示。小車行駛的時(shí)間長(zhǎng)短需要通過(guò)時(shí)間計(jì)數(shù)程序來(lái)控制。時(shí)間計(jì)數(shù)程序通過(guò)累加器每秒鐘計(jì)數(shù)一次來(lái)實(shí)現(xiàn)計(jì)數(shù)功能,并由十進(jìn)制調(diào)整指令(DA A)來(lái)進(jìn)行個(gè)位轉(zhuǎn)換為十位的功能,同時(shí)特定的檢測(cè)控制指令(CJNEA.#59H.JJX1)來(lái)判斷是否達(dá)59S,若否,則進(jìn)行高低位分別存儲(chǔ)并送顯示部分顯示;若是,則分位加1秒位清0并送顯示部分顯示。
2.1.4 行駛距離記錄程序設(shè)計(jì)
距離中斷子程序圖如圖5所示。小車行駛距離的記錄通過(guò)霍爾傳感器來(lái)檢測(cè)小車車輪行駛轉(zhuǎn)動(dòng)的圈數(shù),并通過(guò)中斷服務(wù)子程序來(lái)進(jìn)行換算成相應(yīng)的十進(jìn)制的(距離)數(shù)據(jù),再特殊的換算控制指令:
評(píng)論