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

          新聞中心

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

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

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


          3.2  串行通信軟件
          普通I/ O 口模擬串口的軟件編程實(shí)質(zhì)上就是模擬異步通訊規(guī)程。異步通信規(guī)程是把一個(gè)字符看作一個(gè)獨(dú)立的信息單元,并且字符出現(xiàn)在數(shù)據(jù)流中的相對(duì)時(shí)間是任意的。而每個(gè)字符中各數(shù)據(jù)位以固定的時(shí)間傳送,因此這種傳送在同一字符內(nèi)部是同步的,而字符間是異步的。異步通信收發(fā)取得同步的方法,是采用在字符格式中設(shè)置起始位和停止位。但由于發(fā)送器和接收器不是使用同一個(gè)時(shí)鐘,而是以各自時(shí)鐘來劃分每位的寬度,收發(fā)時(shí)鐘的誤差必然影響數(shù)據(jù)的正確采樣,所以要求準(zhǔn)確識(shí)別起始位的前沿。實(shí)際的做法是利用1 個(gè)16 倍波特率的時(shí)鐘,在1 個(gè)位周期的1/ 16 時(shí)間內(nèi)確定出字符的開始,接收器在每個(gè)時(shí)鐘的上升沿采樣數(shù)據(jù)輸入線。若發(fā)現(xiàn)低電平,緊接著又連續(xù)采樣到8 次均為低電平,則認(rèn)定為起始位,以后每隔16 個(gè)時(shí)鐘采樣1 次數(shù)據(jù)。字符再同步過程見圖4。
          基于89C2051單片機(jī)的熱表通訊模塊的開發(fā)
          圖4  f = 16 倍波特率的字符再同步過程
          在軟件編程中,根據(jù)熱表發(fā)送數(shù)據(jù)的波特率計(jì)算出數(shù)據(jù)位周期,而后再根據(jù)的晶振頻率編寫數(shù)據(jù)位周期延遲程序和半位周期延遲程序。當(dāng)檢測(cè)到INT0 (即P3. 2 端口) 為低電平時(shí),外部中斷觸發(fā),進(jìn)入中斷處理程序。首先,調(diào)用半位周期延時(shí)程序,判斷是否為起始位,若是則再調(diào)用位周期延時(shí)程序,進(jìn)行數(shù)據(jù)位的判斷與接收,最后判斷接收停止位。只要延時(shí)程序能準(zhǔn)確地保證延時(shí)時(shí)間,就能完成對(duì)圖4 中工作時(shí)序的模擬。另外,在接收數(shù)據(jù)幀各個(gè)位時(shí),都連續(xù)地采樣3 次,并遵循3 中取2 的原則來確定所檢測(cè)的值。這樣做很大程度上抑制了干擾,提高了信
          號(hào)傳輸?shù)目煽啃?。同?發(fā)送數(shù)據(jù)時(shí)只要調(diào)整好發(fā)送數(shù)據(jù)幀各數(shù)據(jù)位之間的傳輸時(shí)間間隔,滿足熱表接收數(shù)據(jù)的波特率,就能完成熱表對(duì)單片機(jī)發(fā)送數(shù)據(jù)的接收,程序流程圖如圖5 所示。
          基于89C2051單片機(jī)的熱表通訊模塊的開發(fā)

          3.3  通信協(xié)議
          單片機(jī)的串行口工作于方式2 或方式3 時(shí),數(shù)據(jù)幀由11 位數(shù)據(jù)組成:1 位起始位、9 位數(shù)據(jù)位、1 位停止位。在這兩種方式下,第9 位數(shù)據(jù)是可控的標(biāo)志位,只有第9 位的數(shù)據(jù)是“1”(代表地址幀) 時(shí),串行口接口電路才會(huì)在接收完1 個(gè)數(shù)據(jù)后,向CPU 請(qǐng)求中斷。因?yàn)镻C 機(jī)的異步通信功能沒有這樣的通信格式,所以這種方式只適合單片機(jī)之間的多機(jī)通信。一般情況下,實(shí)現(xiàn)兩種異型機(jī)之間的通信常采用以下幾種方式:
          (1) 用1 臺(tái)單片機(jī)作為上位PC 機(jī)和下位單片機(jī)之間的“橋梁”,實(shí)現(xiàn)數(shù)據(jù)格式的轉(zhuǎn)換;
          (2) 在PC 機(jī)內(nèi)安裝異步通信適配卡,通過設(shè)計(jì)可編程芯片的運(yùn)行方式,使之與單片機(jī)的多機(jī)通信方式一致;
          (3) 設(shè)置上位機(jī)編程環(huán)境提供的串行通訊控件的屬性來區(qū)分尋址指令和數(shù)據(jù)傳送指令,進(jìn)而實(shí)現(xiàn)通訊。
          方法1 和方法2 硬件結(jié)構(gòu)復(fù)雜,方法3 軟件代碼編寫繁瑣。在系統(tǒng)不復(fù)雜、任務(wù)不重、通信數(shù)據(jù)量不大的情況下,這些方法還不會(huì)有明顯的缺陷,否則方法1 中的“橋梁”單片機(jī)和方法2 中的通信異步適配器將會(huì)成為通信信道的瓶頸,而方法3 中數(shù)據(jù)幀中的奇偶校驗(yàn)位通常用作發(fā)送地址碼(通道號(hào)) 或數(shù)據(jù)的特征位,這樣數(shù)據(jù)通信的校核會(huì)采用累加和校驗(yàn)的方法,采用這種方法不但軟件開銷和進(jìn)行通信的數(shù)據(jù)量增加了,而且實(shí)時(shí)性也受到影響。
          根據(jù)實(shí)際情況,采用了通信信息幀不區(qū)分?jǐn)?shù)據(jù)幀和地址幀的方法,這樣做不必使單片機(jī)工作在11 位異步收發(fā)方式下,使單片機(jī)和PC 機(jī)的串口工作方式一致。受到通信格式的啟發(fā),設(shè)計(jì)信息幀見圖6 ,用1~3 個(gè)字節(jié)作為數(shù)據(jù)通信的“報(bào)頭”,起同步作用;用1個(gè)或多個(gè)字節(jié)作為單片機(jī)的地址區(qū)別碼來標(biāo)識(shí)某個(gè)單片機(jī)(根據(jù)系統(tǒng)中下位機(jī)的個(gè)數(shù)決定) ;用來標(biāo)志下位機(jī)工作性質(zhì)的信息碼可根據(jù)實(shí)際的情況在信息幀中靈活設(shè)置。


          評(píng)論


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