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

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 基于VB的PC-單片機(jī)通信波特率自動檢測方法

          基于VB的PC-單片機(jī)通信波特率自動檢測方法

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

          一.引言

          主從分布式微機(jī)系統(tǒng)是控制領(lǐng)域廣泛使用的微機(jī)系統(tǒng)。主機(jī)一般由數(shù)據(jù)處理能力強(qiáng)、有良好人機(jī)界面的擔(dān)任,分機(jī)常以體積小、價格便宜、控制能力強(qiáng)的為核心。
          信息量不大的通信一般采用串行通信方式。在分布式多通信系統(tǒng)中,常常要求從機(jī)自身的能隨主機(jī)設(shè)備自動調(diào)整以使系統(tǒng)適應(yīng)性更強(qiáng)、更具智能化。
          本文介紹:主機(jī)為用VB6.0編程,從機(jī)為80C51時,利用微軟的Mscomm控件和單片機(jī)的定時/記數(shù)器實(shí)現(xiàn)單片機(jī)準(zhǔn)確的方法。
          該方法硬件和軟件實(shí)現(xiàn)容易、簡單、實(shí)用。

          二.MSComm控件簡介

          微軟MSComm控件提供了一系列標(biāo)準(zhǔn)通信屬性和方法,具有完善的串口數(shù)據(jù)的發(fā)送和接收功能。該控件具有兩種處理方式:(1)事件驅(qū)動方式:由 MSComm控件的OnComm事件捕獲并處理通信錯誤及事件;(2)查詢方式:通過檢查CommEvent屬性的值來判斷事件和錯誤。
          當(dāng)設(shè)置MSComm控件的Settings屬性值為“9600,n,8,1”時表明:PC機(jī)串口波特率為9600b/s, 幀格式為:無校驗(yàn),一個起始位,8個數(shù)據(jù)位,一個停止位。一幀數(shù)據(jù)共10位。幀結(jié)構(gòu)如下:

          當(dāng)設(shè)置MSComm控件的Settings屬性值為“9600,e,8,1”時表明:PC串口波特率為9600b/s, 幀格式為:一個起始位,8個數(shù)據(jù)位,一個偶校驗(yàn)位,一個停止。一幀數(shù)據(jù)共11位。幀結(jié)構(gòu)如下:

          其中D0~D7是8位數(shù)據(jù)位,D8是偶校驗(yàn)位。

          三.硬件原理框圖


          四.軟件算法思想

          通信開始時,主機(jī)用一幀十位的格式發(fā)一個ASCII碼為0的測試字符,則對應(yīng)的幀結(jié)構(gòu)如下:

          單片機(jī)循環(huán)檢測RXD腳,無數(shù)據(jù)時該腳為高電平,當(dāng)檢測到測試數(shù)據(jù)起始位時(低電平)啟動計(jì)數(shù)器T0,當(dāng)檢測到停止位時(高電平)停止記數(shù),T0所記數(shù)(TH0TL0)為單片機(jī)接收一幀數(shù)據(jù)9位所需的機(jī)器數(shù)時間。則,單片機(jī)波特率為:
          波特率=9/(TH0TL0 x 機(jī)器周期)
          =9/(TH0TL0 x 12 x 振蕩周期)
          =(9 x 振蕩頻率)/(TH0TL0 x 12)

          五.主機(jī)發(fā)送ASCII碼值為0的字符的源程序

          Private Sub Form_Load()
          MSComm1.CommPort = 1 ;使用COM1串口
          MSComm1.Settings = "9600,n,8,1" ;設(shè)置通信格式,見本文一
          End Sub

          Private Sub Send_Click()
          If MSComm1.PortOpen = False Then MSComm1.PortOpen = True ;打開串口COM1
          MSComm1.OutBufferCount = 0 ;清0發(fā)送緩沖區(qū)發(fā)送字符數(shù)
          A =Chr(0) ;ASCII碼為0的字符送A
          MSComm1.Output = A ;發(fā)送
          End Sub

          說明:若程序中MSComm1.Settings = "9600,e,8,1",則發(fā)送的是一幀11位偶校驗(yàn)數(shù)據(jù),其中D0~D8均為0。對應(yīng)單片機(jī)檢測程序(見下文五)TH0TL0結(jié)果值為一幀10位的對應(yīng)機(jī)器數(shù)值。

          六.單片機(jī)接收測試數(shù)據(jù),計(jì)算接收一幀9位數(shù)據(jù)所需機(jī)器數(shù)時間,源程序如下:

          ORG 8000H
          MOV TMOD,#01H ;T0工作于方式1,GATE=0
          MOV TH0,#00H ;清0 TH0TL0
          MOV TL0,#00H
          RLL1: JB P3.0,RLL1 ;等待RXD腳變低
          SETB TR0 ;啟動T0
          RLL2: JNB P3.0,RLL2 ;等待RXD腳變高
          CLR TR0 ;停止T0記數(shù)
          MOV A,TL0 ;存放一幀9位記數(shù)機(jī)器數(shù)值
          MOV A,TH0
          ?。?/P>

          參考書:

          石東海 扈嘯 周旭升《單片機(jī)數(shù)據(jù)通信技術(shù)從入門到精通》西安電子科技大學(xué)出版社 2002
          復(fù)旦大學(xué)微機(jī)開發(fā)應(yīng)用研究室《MCS—51微型計(jì)算機(jī)用戶手冊》1986



          評論


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