<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

一.引言

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

二.MSComm控件簡(jiǎn)介

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

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

其中D0~D7是8位數據位,D8是偶校驗位。

三.硬件原理框圖


四.軟件算法思想

通信開(kāi)始時(shí),主機用一幀十位的格式發(fā)一個(gè)ASCII碼為0的測試字符,則對應的幀結構如下:

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

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

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

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

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

六.單片機接收測試數據,計算接收一幀9位數據所需機器數時(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 ;啟動(dòng)T0
RLL2: JNB P3.0,RLL2 ;等待RXD腳變高
CLR TR0 ;停止T0記數
MOV A,TL0 ;存放一幀9位記數機器數值
MOV A,TH0
?。?/P>

參考書(shū):

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>