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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于89C51單片機的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)設(shè)計

          基于89C51單片機的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)設(shè)計

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

            系統(tǒng)上電即執(zhí)行初始化程序。當(dāng)操作員按下采樣鍵時執(zhí)行數(shù)據(jù)采樣模塊。從00~07通道間隔每秒采集每個通道的5個值,調(diào)用濾波子程序得到準(zhǔn)確值,再通過數(shù)據(jù)轉(zhuǎn)換子程序分別送到6116數(shù)據(jù)區(qū)及8155RAM區(qū),通過字形顯示子程序顯示各通道檢測的數(shù)據(jù)。每采集完一個周期后,89C51通過 MAX232接口PC機查詢有無通信命令,有則響應(yīng),無則繼續(xù)采集數(shù)據(jù)。該程序一直按框圖流程循環(huán)執(zhí)行,直至意外掉電或強迫復(fù)位后,才能終止。

          2.3 故障診斷模塊

            過程中,若出現(xiàn)故障會直接影響采樣結(jié)果,所得到的錯誤數(shù)據(jù)不允許存檔,并應(yīng)該記錄故障原因及持續(xù)時間。故障診斷模塊主要是89C51外圍芯片 MAX691的電源監(jiān)控以及掉電保護(hù)電路檢測到硬件故障后向發(fā)出中斷請求INT0所執(zhí)行的外部中斷服務(wù)子程序。該程序主要功能是在累加數(shù)據(jù)保存完畢后,置位89C51內(nèi)部的特殊功能寄存器PCON中的PD,使RAM進(jìn)入掉電模式,保護(hù)數(shù)據(jù)不變,同時顯示故障類型和發(fā)生的時間。若為軟件死循環(huán)引起的故障,則MAX691的“看門狗”電路自動使程序跳出陷阱,強迫系統(tǒng)復(fù)位。

          2.4 數(shù)據(jù)通信模塊

            分通信程序和PC機通信程序。

          2.4.1 單片機通信程序

            流程圖如圖4所示。 

             

            

          2.4.2 Win98下PC機與89C51通信程序

            通訊程序編寫中首先在項目頭文件中嵌入的頭文件MSComm.h及實現(xiàn)文件MSComm.cpp,其次,為了用該控件控制一個串口的通訊操作,還必須在相應(yīng)程序中插入該控件。為此,設(shè)計在某對話框中插入,其ID為IDC_M(jìn)SComm1,并利用ClassWizard 為其添加變量CCMSComm m_Com1,通訊程序中對串口的所有操作都可以通過m_Com1來實現(xiàn)。

            89C51通過中斷方式采集和傳遞數(shù)據(jù)。當(dāng)其數(shù)據(jù)緩沖區(qū)滿時,向CPU發(fā)出中斷申請,若CPU響應(yīng)并經(jīng)與PC機握手后便可發(fā)送數(shù)據(jù)。因此PC機采用查詢的通訊方式。設(shè)計中將PC機串口每接收一幀數(shù)據(jù)設(shè)置成串口要響應(yīng)的事件EV_RXFLAG事件,通過此事件激活消息處理函數(shù)OnComm(),在OnComm()中加入處理代碼,判斷是否是所需的數(shù)據(jù),再作出相應(yīng)的顯示、存盤等處理。

            下面簡要給出用事件驅(qū)動方式接收89C51單片機發(fā)送數(shù)據(jù)的程序源代碼。通訊時PC機串口與89C51串口參數(shù)的設(shè)置必須一致,否則兩者無法進(jìn)行通訊。設(shè)置PC機串口參數(shù)的初始化程序如下:
          If(!m_Com1.getportOpen())

          m_Com1.SetPortOpen(TRUE);//打開串口 
            m_Com1.SetSettings("9600,n,11,1");
          //串口參數(shù)設(shè)置 
            m_Com1.InputMode(1);
          //建立1024字節(jié)輸入隊列 
            SetCommEvent(m_Com1,EV_RXFLAG);
          //設(shè)置串口要響應(yīng)的事件EV_RXFLAG 
            m_Com1.SetRThreshold(200);
          //每接收200幀激活OnComm()事件 ………

          3 結(jié)束語

            本文通過PC機與89C51單片機組成一簡單的多機系統(tǒng),通過串行通信實現(xiàn)了遠(yuǎn)程系統(tǒng)的基本功能。在硬件連接上,為提高傳輸距離,采用了RS- 232C/RS-422A轉(zhuǎn)換電路,以差分傳輸、差分接受的形式解決了這一問題。在軟件編制上,采用流行的VC++6.0下的Active X控件,通過對控件相關(guān)屬性及代碼的編寫,實現(xiàn)了Windows 98環(huán)境下PC機與89C51單片機的遠(yuǎn)程通信。該方法也可以用于類似的工業(yè)場合中。

          參 考 文 獻(xiàn)

          1 何立民.單片機應(yīng)用系統(tǒng)設(shè)計.北京:航空航天大學(xué)出版社,1998
          2 趙仕健.VC++6.0編程與實例解析.北京:科學(xué)出版社,2000


          上一頁 1 2 下一頁

          評論


          相關(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); })();