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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于89C2051單片機的熱表通訊模塊的開發(fā)

          基于89C2051單片機的熱表通訊模塊的開發(fā)

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

          基于89C2051單片機的熱表通訊模塊的開發(fā)
          圖6  信息幀一般格式
            上位機發(fā)送信息幀時,下位機全部收到上位機的信息幀,然后判斷信息幀中的地址碼,如果是自己的地址碼,則根據(jù)數(shù)據(jù)幀中的信息碼內(nèi)容作出相應(yīng)的反應(yīng)。信息幀的長度不限(根據(jù)系統(tǒng)中下位機的個數(shù)以及信息碼的形式?jīng)Q定) ,是多個字節(jié)的。在這種通信格式中還可以用軟件的方式進行一些通信數(shù)據(jù)的校驗。
          工控機與下位機通訊模塊之間的通信協(xié)議,如圖7 所示。
          基于89C2051單片機的熱表通訊模塊的開發(fā)
          圖7  工控機與下位機通訊模塊間的通信協(xié)議
            上位機工控機向下位機發(fā)出的信息幀中應(yīng)包含地址和控制指令信息,以便下位機的通訊模塊能辨識出是否及如何應(yīng)答;通訊模塊,向上位機回復(fù)的信息幀中應(yīng)包含自身地址及對應(yīng)控制指令的數(shù)據(jù);同步字和結(jié)束字是完成異步通訊必須的,因此無論上位機信息幀還是下位機信息幀都不可少。具體的信息幀格式如下(括號里標(biāo)注為字節(jié)數(shù),未標(biāo)出的字節(jié)數(shù)為1) :
          整個收發(fā)數(shù)據(jù)的互控流程如下:
          上位機:按照一定的時間發(fā)送指令給下位機;
          下位機:收到信息幀后,判斷信息幀中的地址是否為本機地址,若是則將本機地址發(fā)回上位機,并根據(jù)控制字向熱表發(fā)出相應(yīng)的指令,等待模擬串口中斷,將熱表數(shù)據(jù)傳給,之后轉(zhuǎn)發(fā)給上位機;反之則退出中斷程序;
          上位機:根據(jù)串口引發(fā)的事件接受數(shù)據(jù),判斷來源后存入數(shù)據(jù)庫并通過人機界面顯示。
          按照上述通信協(xié)議,綜合串口模擬過程對通訊模塊(下位機) 進行編程。編寫的程序主要包括主程序和中斷程序;中斷程序有模擬串口中斷接收程序和串行中斷程序。其中主程序完成各個特殊寄存器及通信參數(shù)、格式的初始化工作,分析判斷串行中斷,接受信息向熱表發(fā)出相應(yīng)的指令;模擬串口中斷程序具體完成熱表數(shù)據(jù)的接收;串行中斷程序完成對上位機發(fā)出信息幀的接收。另外,考慮到實際應(yīng)用當(dāng)中各種隨機干擾,在編寫程序時作了適當(dāng)?shù)募m錯處理,即通訊模塊收到上位機指令后對熱表進行操作,若在一定時間內(nèi)沒有收到回應(yīng),則使程序復(fù)位。
          每臺熱表對應(yīng)的通訊模塊地址的標(biāo)識方法如圖8所示。充分利用了該型號的硬件資源,以跳線的方式設(shè)定P1 端口各個管腳的電平作為地址標(biāo)識,8個管腳不同的通斷組合可以表示不同的地址。
          基于89C2051單片機的熱表通訊模塊的開發(fā)
          圖8  通信模塊地址標(biāo)識
          通訊模塊的編程都是利用仿真器提供的環(huán)境進行模擬并調(diào)試成功的。

          4  與上位機軟件接口
          通過通訊模塊最終實現(xiàn)工控機對熱表數(shù)據(jù)的讀取還需要對上位機進行通訊接口程序的編寫。上位機通訊程序的編寫也同樣有多種方法: (1) 通過調(diào)用WINDOWS 提供的API 函數(shù)實現(xiàn); (2) 采用匯編語言和C 語言混合編寫動態(tài)連接庫函數(shù)實現(xiàn); (3) 利用VB 語言及其提供的串行通信控件實現(xiàn)。第3 種方法最簡單, 開發(fā)周期短, 經(jīng)濟實用。只需在工程中添加MSCOMM控件, 然后進行相應(yīng)的屬性設(shè)置, 便可完成數(shù)據(jù)的收發(fā)。但VB 中的數(shù)據(jù)收發(fā)分為二進制形式和文本形式。若發(fā)送文本, 收到的文本是ASC Ⅱ碼, 在VB6. 0 中使用的是Unicode 字符,即用2 個字符來表示1 個字符, 當(dāng)發(fā)送1 個字符時單片機收到2 個字節(jié)。因此大多情況下PC 機與單片機通訊交換的是二進制數(shù)據(jù)。所以利用MSCOMM 控件來發(fā)送二進制數(shù)據(jù)時, 必須將變量聲明為Byte 形式。

          參考文獻
          [1 ]  胡漢才. 單片機原理及其接口技術(shù). 北京:清華大學(xué)出版社,1993 :317 - 320.
          [2 ]  李華,嚴(yán)天峰. 串行通訊軟硬件的實現(xiàn)方法. 電子世界,2003 (5) :31 - 33.
          [3 ]  王小軍,郝迎吉,張斌. 單片機串行通信中兩個問題的討論. 現(xiàn)代電子技術(shù),2002 (1) :69 - 71.


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 89C2051 單片機 熱表通訊模塊

          評論


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