RS-232接口與單片機串行通信程序
4、單片機接收到數(shù)據(jù)后,發(fā)出一時短聲提示。同時將數(shù)據(jù)重新發(fā)送回電腦串口,供電腦程序接收顯示,電腦軟件接收到單片機發(fā)送過來的數(shù)據(jù)后,顯示在軟件的接收數(shù)據(jù)窗中。
【RS-232接口與單片機串行通信程序設(shè)計】
該系統(tǒng)程序由單片機通信程序和電腦通信程序構(gòu)成。在微機測控系統(tǒng)中,一般稱計算機為上位機、而前端采集控制的單片機系統(tǒng)稱為下位機。上位機主要負責所有測控數(shù)據(jù)的綜合管理與下位機的調(diào)度控制,而下位機由單片機構(gòu)成前端的測控系統(tǒng),進行原始數(shù)據(jù)的采集及設(shè)備的控制,下位機受上位機的管理控制。
一、單片機程序開發(fā)
51單片機有一個全雙工的串行通信口,非常適合與電腦進行通信,51單片機的串口開發(fā)在各種教科書上都有詳細的介紹,我們這里不在重復(fù),大家可以參考一下書籍。單片機程序功能主要如下:初始化串口、打開串口中斷、接收電腦發(fā)送的數(shù)據(jù)、在1602液晶模塊上顯示數(shù)據(jù)、將數(shù)據(jù)發(fā)送回電腦RS-232串口、接收繼電器控制命令、控制繼電器動作等。
單片機通信參考程序如下:
ORG0000H
AJMPSTART ;轉(zhuǎn)到初始化程序
ORG0023H
AJMPPGUART ;轉(zhuǎn)到串行中斷服務(wù)子程序
START:MOVSP,#60H ;堆棧指針初始化
MOVP0,#0FFH ;P0端口初始化
MOVP1,#0FFH ;P1端口初始化
MOVP2,#0FFH ;P2端口初始化
MOVP3,#0FFH ;P3端口初始化
MOVTMOD,#20H ;定時器T1工作于模式2,自動重裝載
MOVTH1,#0FDH ;TH1初值為"0FDH",9600bps
MOVTL1,#0FDH ;TL1初值為"0FDH",9600bps
MOVSCON,#50H ;串行口工作于方式1,允許接收
SETBTR1 ;啟動定時器T1
SETBES ;允許串行口中斷
SETBEA ;開總中斷
CLR UABIT
;----------------------RS-232接口與單片機串行通信程序設(shè)計-------------------------------
MAIN:...... ;主程序處理其他任務(wù),等待串口中斷
AJMP MAIN
PGUART: ...... ;串口中斷服務(wù)子程序,接收處理數(shù)據(jù)
RETI
END
二、RS-232串行通信測試軟件開發(fā)
計算機RS-232串行通信測試軟件采用VB6.0開發(fā),VisualBasic 6.0(簡稱VB6.0)以其簡單易學(xué),
VB6.0為可視化編程開發(fā)軟件,開發(fā)程序簡單易學(xué),VB程序開發(fā)主要分為兩步:第一步、使用VB控件設(shè)計出軟件界面,第二步、給各種控件編寫相應(yīng)的執(zhí)行程序代碼,代碼編寫完成后可以運行查看結(jié)果了。
VB6提供了多種控件,其中MSCOMM.OCX是用于串行通信的控件,我們可將該控件添加到工具箱(Toolbox)內(nèi),這樣就可以利用該控件進行串行通信程序的設(shè)計了。
下面介紹Mscomm控件的主要屬性和方法:
1) CommPort:設(shè)置或返回串行端口號,VB6的取值范圍為1~16,表示打開或返回通信端口號COM1~COM16
2) Setting:設(shè)置或返回串行端口的波特率、奇偶校驗位、數(shù)據(jù)位數(shù)、停止位。如:Mscomm1.Setting=“9600,N,8,1”
3) PortOpen:打開或關(guān)閉串行端口,格式為:Mscomm1.PortOpen=『True/False』
4) InBufferSize:設(shè)置或返回接收緩沖區(qū)的大小,缺省為1024字節(jié)
5) InBufferCount:返回接收緩沖區(qū)內(nèi)的等待讀取的字節(jié)個數(shù),可通過設(shè)置該屬性為0來清除接收緩沖區(qū)
6) RThreshold:該屬性為一閥值,當接收緩沖區(qū)內(nèi)字節(jié)個數(shù)達到或超過該值后就產(chǎn)生OnComm事件
7) InputLen:設(shè)置或返回接收緩沖區(qū)內(nèi)用Input讀入的個數(shù)。若取0,則Input將讀取整個緩沖區(qū)的所有內(nèi)容
8) Input:該屬性表示從接收緩沖區(qū)InputLen個字符
9) OutBufferSize:設(shè)置或返回發(fā)送緩沖區(qū)大小,缺省為512字節(jié)
10) OutBufferCounter:返回發(fā)送緩沖區(qū)內(nèi)等待發(fā)送的字符數(shù),可用來清空緩沖區(qū)
11) Output:向發(fā)送緩沖區(qū)傳送一字符串,即向串口發(fā)送數(shù)據(jù)
第一步:開發(fā)程序界面
打開VB6.0 -> 新建“標準 EXE”建立一個新的工程。在工程窗口Form1中添加我們要使用的各種按鈕和控件,其中一個圖標如電話一樣的控件就是MSCOMM串行通信控件了,該控件在界面設(shè)計時候可見,在程序運行時候不可見。最后,放置好了各種控件后,程序的界面界面就出來了,是不是很簡單呀!如下圖4所示:
RS-232串口通信測試軟件界面開發(fā) | ||
圖 4
51單片機相關(guān)文章:51單片機教程 單片機相關(guān)文章:單片機教程 單片機相關(guān)文章:單片機視頻教程 單片機相關(guān)文章:單片機工作原理 數(shù)字通信相關(guān)文章:數(shù)字通信原理 通信相關(guān)文章:通信原理 相關(guān)推薦技術(shù)專區(qū) |
評論