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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于單片機及VC++的步進電機控制系統(tǒng)設(shè)計

          基于單片機及VC++的步進電機控制系統(tǒng)設(shè)計

          作者: 時間:2013-02-18 來源:網(wǎng)絡(luò) 收藏

            3.4 串行通信電路

            在PC機內(nèi)接有PC16550(和8250兼容)串行接口、EIA-TTL的電平轉(zhuǎn)換器和RS-232C連 接器,除鼠標占用一個串行口外,還留有兩個串行口給用戶,這就是COM1(地址3F8H-3FFH) 和COM2(地址2F8H-2FFH),通過這兩個口,可以連接串行通信設(shè)備,如、仿真機 等。由于的串行發(fā)送和接收線TXD和RXD是TTL電平,而PC的COM1或COM2的 RS-232C連接器(D型9針插座)是EIA電平,因此需加接MAX232芯片,通過串行電 纜線和PC相連接。本文所設(shè)計的串行通信電路如圖4所示。


            3.5 下位機顯示電路

            液晶采用顯示容量為2行16個字的1602液晶,1602采用標準的16腳接口,內(nèi)部的字符發(fā) 生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,每一個字符都有一個固定的 代碼[5]。設(shè)計電路圖如圖5所示。


            4 軟件設(shè)計

            軟件設(shè)計可分為兩個部分:上位機軟件設(shè)計和下位機軟件設(shè)計。上位機軟件設(shè)計包括: 上位機控制環(huán)境設(shè)計、上位機通信程序設(shè)計以及上位機程序的封裝發(fā)布;下位機軟件設(shè)計包 括:鍵盤掃描程序、下位機通信程序、主驅(qū)動程序、測試部分程序、顯示部分程序。

            4.1 上位軟件設(shè)計

            Visual C++設(shè)計了一套基礎(chǔ)類庫(Microsoft Foundation Class Library, MFC), MFC把編 程規(guī)范中的大多數(shù)內(nèi)容封裝成為各種類,使程序員從繁雜的編程中解脫出來[6]。根據(jù)系統(tǒng)設(shè) 計需要,設(shè)計一個基于對話框的應(yīng)用程序即可,如圖6所示。


            為實現(xiàn)上位機與下位機通信,利用Microsoft提供的串行通信ActiveX控件。該控件的相 應(yīng)文件是MSCOMM32.OCX。在基于對話框的程序中使用控件,需要進行以下幾方面操作: 拖動控件圖標到窗口上,創(chuàng)建控件ID。在對話框頭文件中聲明CMSComm類的變量及引用控 件類頭文件。創(chuàng)建CMSComm類的實例。建立控件事件響應(yīng)代碼框架[7]。

            在電機狀態(tài)改變后,由下位機將代表各狀態(tài)的數(shù)據(jù)發(fā)送給上位機,上位機接收到后存入 一個數(shù)組內(nèi),根據(jù)此數(shù)組內(nèi)容刷新各編輯框內(nèi)容,以達到實時顯示的目的。此處共有五個數(shù) 據(jù),放入rxdata數(shù)組中,分別代表勵磁狀態(tài)、轉(zhuǎn)動方向、速度、測試1計數(shù)、測試2計數(shù)。上 位機MSComm控件SetRThreshold屬性設(shè)置為5,則當(dāng)下位機將五個數(shù)據(jù)發(fā)送完后,上位機立 即觸發(fā)OnComm事件,進行接收[8]。

          陀螺儀相關(guān)文章:陀螺儀原理




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();