<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 汽車電子 > 設計應用 > 基于智能小車控制的PC端與單片機通信的軟件設計

          基于智能小車控制的PC端與單片機通信的軟件設計

          作者: 時間:2014-08-04 來源:網(wǎng)絡 收藏

            摘要:本設計是采用單片機作為從機(也稱下位機),而PC機作為中央控制機的主從式系統(tǒng)。主機同時根據(jù)從從機接收的過程參數(shù)進行判斷處理并給從機發(fā)送各種控制命令。利用單片機的串行口與PC機的串行口進行串行通信,PC機可對遠程前端單片機進行控制,將單片機采集的數(shù)據(jù)傳送到PC中去,由PC機對數(shù)據(jù)進行處理和顯示,同時把反饋信號發(fā)到單片機,實現(xiàn)閉環(huán)控制和管理。本設計在VC++6.0的環(huán)境下,編寫使用C++語言,SQL數(shù)據(jù)庫的串口通信程序,控制由單片機控制的

          本文引用地址:http://www.ex-cimer.com/article/256426.htm

            0 引言

            隨著多微機系統(tǒng)的應用和微機網(wǎng)絡的發(fā)展,通信功能越來越顯得重要。在工業(yè)控制系統(tǒng)(尤其是多點現(xiàn)場工業(yè)控制系統(tǒng))設計實踐中,單片機與PC機組合構成分布式控制系統(tǒng)便是一個重要的應用;主控計算機通過485網(wǎng)絡監(jiān)督管理下位分機的運行狀況。在以單片機為基礎的數(shù)據(jù)采集和實時控制系統(tǒng)中,通過計算機中的接口進行計算機與單片機之間的命令和數(shù)據(jù)傳送,就可以利用計算機對生產(chǎn)現(xiàn)場進行監(jiān)測和控制。本文設計是以單片機為控制核心,附以外圍電路,采用反射光耦(1550-01)檢測黑白線,霍爾傳感器(A04E)+磁鋼來實現(xiàn)智能車行駛的計程,采用四位共陰LED實現(xiàn)行駛計程和時間的交替計數(shù)顯示。同時還充分利用單片機的串口、并口資源和運算、處理能力,來實現(xiàn)小車的按軌跡直線行走、按軌跡轉彎、計數(shù)小車行駛的距離,最后停車等智能控制系統(tǒng)。避免了當前的電動小汽車基本上只能采取的是基于純硬件電路的一種開環(huán)控制方法,或者是直線行駛,或者是在遙控下做出前進、后退、轉彎、停車等基本功能。

            1 系統(tǒng)的設計思路

            本文設計是采用PC機做上位機和單片機(作為的外圍電路的設計)做下位機的主從式系統(tǒng)。PC機控制小車的模擬框圖如圖1所示。利用單片機的串行口與PC機的串行口進行串行通信,通過設置PC機的控制界面(運行的各種控制功能)來實現(xiàn)上位機的數(shù)據(jù)采集,并由上位機不斷發(fā)送握手協(xié)議(通信協(xié)議)信號,直到下位機回應“發(fā)送下一幀”為止。之后上位機開始發(fā)送正常數(shù)據(jù)。若下位機反饋“發(fā)送下一幀”信息,則繼續(xù)發(fā)送下一幀;若下位機反饋“重發(fā)上一幀”,則重發(fā)剛剛發(fā)送過的那一幀數(shù)據(jù);若下位機反饋“無效地址”,則繼續(xù)發(fā)送下一幀數(shù)據(jù),從而實現(xiàn)PC機對遠程前端單片機的控制。同時將單片機采集的數(shù)據(jù)通過判斷握手協(xié)議(通信協(xié)議)傳送到PC中去,由PC(主)機同時根據(jù)從從機接收的過程參數(shù)進行判斷處理并給從機(單片機)發(fā)送各種控制命令。從而實現(xiàn)PC機(上位機)對智能小車外圍電路(下位機)的控制。

            

           

            下位機設計采用單片機芯片來實現(xiàn)智能車模型的自動尋跡、自動控制等功能,利用反射光耦(1550-01)檢測黑白線來實現(xiàn);采用霍爾傳感器(A04E)+磁鋼來實現(xiàn)智能車行駛的計程;同時采用四位共陰LED實現(xiàn)行駛計程和時間的交替計數(shù)顯示。本文上位機設計采用在Visu al C++環(huán)境中,直接使用Windows提供的API函數(shù)實現(xiàn)一個串行通信動態(tài)鏈接庫(DLL),通過編程工具(VC)設計一個與智能小車通信的上位機控制界面,在上位機和下位機之間通過MAX485接口芯片與控制軟件結合來監(jiān)測。MAX485是半雙工的,可以先檢測/RE和DE的電平,判斷芯片是處于接收信號還是發(fā)送信號,然后再檢測AB的電平,當A引腳的電平高于B端時,代表發(fā)送的數(shù)據(jù)為1;當A的電平低于B端時,代表發(fā)送的數(shù)據(jù)為0。從而實現(xiàn)上位機與下位機(由單片機控制的智能小車)的半雙工串行通信。

            2 系統(tǒng)的軟件設計

            單片機的通信軟件采用AT89C51的匯編語言編寫,單片機的發(fā)送和接收采用中斷程序。準備發(fā)送的數(shù)據(jù)存放在以內存50H為首地址的連續(xù)10個單元中。本設計采用單片機芯片AT89C51為核心控制器,通過編寫控制程序(匯編語言)來控制小車的正常行駛、左右轉彎、后退行駛、停止行駛、檢測金屬、計程、行駛時間、告警和上位機與下位機的通信等。

            2.1 系統(tǒng)的下位機軟件設計

            2.1.1 控制主程序設計

            單片機主程序圖如圖2所示。控制主程序是通過中斷服務程序實現(xiàn)的,采用外部中斷0、外部中斷1和T0中斷來實現(xiàn)主程序的控制,使各中斷子程序交替運行,顯示不會產(chǎn)生干擾,且能在顯示部分交替進行顯示。

            

           

            2.1.2 小車行駛程序設計

            小車行駛流程圖如圖3所示。小車行駛控制程序啟動后程序進入5S的倒計時狀態(tài),并開啟四位數(shù)碼顯示工作;5S倒計時結束后程序開始運行黑帶檢測程序,由通過光電傳感器(1550-01)檢測到通過LM324放大電路放大的信號輸入來判斷小車是否正常行駛,若否,則由相應的程序來控制小車的左轉或右轉來達到正常行駛;當傳感器檢測到停止線時小車立即停止。

            

           

            2.1.3 時間計數(shù)程序設計

            時間計數(shù)子程序圖如圖4所示。小車行駛的時間長短需要通過時間計數(shù)程序來控制。時間計數(shù)程序通過累加器每秒鐘計數(shù)一次來實現(xiàn)計數(shù)功能,并由十進制調整指令(DA A)來進行個位轉換為十位的功能,同時特定的檢測控制指令(CJNEA.#59H.JJX1)來判斷是否達59S,若否,則進行高低位分別存儲并送顯示部分顯示;若是,則分位加1秒位清0并送顯示部分顯示。

            

           

            2.1.4 行駛距離記錄程序設計

            距離中斷子程序圖如圖5所示。小車行駛距離的記錄通過霍爾傳感器來檢測小車車輪行駛轉動的圈數(shù),并通過中斷服務子程序來進行換算成相應的十進制的(距離)數(shù)據(jù),再特殊的換算控制指令:

          光耦相關文章:光耦原理


          51單片機相關文章:51單片機教程


          單片機相關文章:單片機教程


          c++相關文章:c++教程


          單片機相關文章:單片機視頻教程


          單片機相關文章:單片機工作原理


          霍爾傳感器相關文章:霍爾傳感器工作原理


          數(shù)字通信相關文章:數(shù)字通信原理


          通信相關文章:通信原理


          霍爾傳感器相關文章:霍爾傳感器原理
          燃氣報警器相關文章:燃氣報警器原理

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();