999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于C++Builder的PC機(jī)與單片機(jī)串口通信的實(shí)現(xiàn)

2012-10-20 08:35:54張利利李曉京胡文東
微型電腦應(yīng)用 2012年9期
關(guān)鍵詞:單片機(jī)系統(tǒng)

張利利,李曉京,胡文東,李 婭

0 引言

串行口是計(jì)算機(jī)與外部設(shè)備之間進(jìn)行數(shù)據(jù)交換的重要介質(zhì),所以串行通信在工程中有著廣泛的應(yīng)用。這種通信的實(shí)現(xiàn),經(jīng)常要組成上位機(jī)為PC機(jī)而下位機(jī)為單片機(jī)的二級系統(tǒng), 通過RS232 進(jìn)行通信【1】。筆者結(jié)合某人體重心測試系統(tǒng),詳細(xì)介紹在C++ Builder中實(shí)現(xiàn)PC機(jī)與單片機(jī)串行通信的方法。

1 串行口通信

串行通信是指數(shù)據(jù)是一位一位按順序傳送的通信方式。它有兩種基本的通信方式:異步通信和同步通信【2】。本系統(tǒng)采用的是異步通信,所以在此只對異步通信做簡要介紹。

1.1 異步串行通信

異步串行通信時(shí),每個字符作為一個獨(dú)立的信息,可以隨機(jī)出現(xiàn)在數(shù)據(jù)流中。為確保異步通信的正確性,必須找到一種方法,使通信雙方在隨機(jī)傳送的字符內(nèi)部實(shí)現(xiàn)同步。這種方法就是在字符格式中設(shè)置起始位和停止位,即在一個字符正式發(fā)送之前先發(fā)一個起始位,該字符結(jié)束時(shí)再發(fā)一個停止位。接收器檢測到起始位便知道字符到達(dá)并開始接收字符,檢測到停止位則知道字符傳輸已結(jié)束。由于這種通信協(xié)議是靠起始位和停止位來實(shí)現(xiàn)字符內(nèi)部同步的,所以有時(shí)也稱為起止式協(xié)議。

1.2 單片機(jī)與計(jì)算機(jī)相連

普通的單片機(jī)都是通過 RS232C串行口信號線與計(jì)算機(jī)相連。考慮到通信程序之間采用軟件握手以及降低編寫PC與單片機(jī)的程序的復(fù)雜性,PC與單片機(jī)之間的連接只采用了RS232接口中的3根線,即RXD,TXD,GND。因?yàn)橛蒔C出來的是RS232電平,而單片機(jī)是典型的TTL電平,因此在PC與單片機(jī)的連接中必須要有電平轉(zhuǎn)換電路,此處采用的是MAX232電平轉(zhuǎn)換電路。PC數(shù)據(jù)發(fā)送是通過TXD口經(jīng)過一個電平轉(zhuǎn)換電路連接到單片機(jī)的RXD端,而接收數(shù)據(jù)是由RXD經(jīng)過一個電平轉(zhuǎn)換電路連接到單片機(jī)的TXD口,如圖1所示:

圖1 PC機(jī)與單片機(jī)的連接

2 通信的程序設(shè)計(jì)

本次設(shè)計(jì)中,以一個人體重心測控系統(tǒng)為背景,給出單片機(jī)部分和C++ Builder環(huán)境下的通信程序?qū)嵗ㄐ艆f(xié)議采用全雙工異步串行通信方式,通過RS232的RTS信號進(jìn)行收發(fā)轉(zhuǎn)換,傳輸數(shù)據(jù)采用16進(jìn)制數(shù)據(jù),PC機(jī)與單片機(jī)之間采用主從式通訊。

2.1 通信協(xié)議

串口通訊能有條不紊地進(jìn)行,依賴于串口通訊協(xié)議的制定。串口通訊協(xié)議分為底層通訊協(xié)議和用戶層協(xié)議。底層協(xié)議一般由計(jì)算機(jī)硬件提供商和設(shè)備廠家提供,而用戶層協(xié)議則是指數(shù)據(jù)以何種格式發(fā)送出去,或如何從接收到的某種格式的數(shù)據(jù)中提取需要的數(shù)據(jù)等,本系統(tǒng)采用的用戶層協(xié)議是自主定義的通信協(xié)議【3】,具體如下:

(1)波特率19200bps,1個起始位,8個數(shù)據(jù)位,1個停止位,無奇偶校驗(yàn)。實(shí)際通信中,PC機(jī)和下位機(jī)發(fā)送的數(shù)據(jù),都帶有一個起始字和結(jié)束字,可以增加它的抗干擾性,當(dāng)下位機(jī)發(fā)送過來的數(shù)據(jù)亂了之后,上位機(jī)能立即檢測出來,并將亂了的那塊數(shù)據(jù)包扔掉,重新開始尋找下一個帶有起始字和結(jié)束符的一組完整數(shù)據(jù),這樣就能確保數(shù)據(jù)傳輸?shù)目煽啃浴?/p>

(2)通信采用主從式,即PC機(jī)主動發(fā)送命令給單片機(jī),單片機(jī)根據(jù)命令進(jìn)行相應(yīng)的動作;所有發(fā)送的數(shù)據(jù)均采用16進(jìn)制數(shù)(注:OxA1即16進(jìn)制數(shù)A1)。PC機(jī)和下位機(jī)都采用定長的數(shù)據(jù)格式進(jìn)行數(shù)據(jù)的發(fā)送,上位機(jī)和下位機(jī)首先只需判斷起始字是否為通信協(xié)議所規(guī)定的起始字,若是,才進(jìn)行下一步的操作;否則就不用對它進(jìn)行任何操作。這樣就確保了通信的高效性。

(3)通信數(shù)據(jù)幀格式

起始符:1個字節(jié),標(biāo)識一次發(fā)送的開始,PC機(jī)默認(rèn)的A1,下位機(jī)默認(rèn)的為B1;

命令:3個字節(jié),區(qū)分不同的操作;

結(jié)束符:1個字節(jié),標(biāo)識一次發(fā)送的結(jié)束,默認(rèn)的為13;

預(yù)留符:1個字節(jié),增加程序的可擴(kuò)充性。

本系統(tǒng)的詳細(xì)命令與數(shù)據(jù)格式如下:

握手:上位機(jī)發(fā)送A12000010013

下位機(jī)回復(fù): B1000000000000000000000013

開始測試:

無剩余能力測試時(shí)上位機(jī)發(fā)送:A12004000113,其中的01表示本次進(jìn)行無剩余能力測試。

有剩余能力測試時(shí)上位機(jī)發(fā)送:A12004000213,其中的02表示本次進(jìn)行有剩余能力的測試。

下位機(jī)根據(jù)第3、4個字節(jié)確定要發(fā)送多少組數(shù)據(jù)給PC機(jī),根據(jù)第5個字節(jié)確定要采集那些數(shù)據(jù)發(fā)送給PC機(jī)。

結(jié)束測試:上位機(jī)連續(xù)3次發(fā)送命令A(yù)12000000413,其中的04表示結(jié)束本次測試。

2.2 上位機(jī)的通信程序設(shè)計(jì)

上位機(jī)的通信程序作為整個系統(tǒng)中的主機(jī),肩負(fù)著系統(tǒng)數(shù)據(jù)分析、指令下達(dá),同時(shí)提供信息系統(tǒng)管理功能的多重任務(wù)。因此我們選擇具有多任務(wù)的操作方式、良好的用戶界面和強(qiáng)大的數(shù)據(jù)庫管理功能的C++ Builder作為上位機(jī)的開發(fā)軟件。在C++ Builder中實(shí)現(xiàn)串口通信的方法有多種,利用MSComm ActiveX控件(它的支持文件:MSComm32.OCX,需注冊) ,可以非常方便地創(chuàng)建串行通信應(yīng)用程序,但其程序執(zhí)行效率不夠高,并且無法應(yīng)用串行通信的一些底層功能。還可利用一種以Microsoft Communications Control(version 6)為基礎(chǔ)的串口類CSerialPort,該串口類將API和ActiveX控件結(jié)合起來,以API編程的靈活性彌補(bǔ)了C++Builder中串口控件的不足。

下面就詳細(xì)介紹如何利用串口通信類CSerialPort來實(shí)現(xiàn)PC機(jī)與單片機(jī)的通信。 它的工作流程及在本系統(tǒng)的應(yīng)用如下:

上位機(jī)程序工作流程如下:首先設(shè)置好串口參數(shù),再開啟串口監(jiān)測工作線程,串口監(jiān)測工作線程監(jiān)測到串口接收到的數(shù)據(jù)、流控制事件或其他串口事件后,就以消息方式通知主程序,激發(fā)消息處理函數(shù)來進(jìn)行數(shù)據(jù)處理,這是對接收數(shù)據(jù)而言;發(fā)送數(shù)據(jù)可以直接發(fā)送。

1)首先在應(yīng)用程序的工程中添加該類,同時(shí)要包含該類的定義文件“SerialPort.h”,手工添加#include “SerialPort.h”;

2) 自動搜索PC機(jī)上有效的串行端口。一般的PC機(jī)最多可擴(kuò)展到128個串口,但是最常用的是前面10個串口,所以本系統(tǒng)只搜索前面10個串口號。首先聲明一個指向CSerialPort類的指針CSerialPort *Comm,然后利用InitPort函數(shù)對1-10號串口逐一進(jìn)行初始化。如果初始化成功則為當(dāng)前PC機(jī)上的有效串口,并將該串口號保存在變量中。

3)打開通信端口,進(jìn)行數(shù)據(jù)的傳輸:

4)關(guān)閉通信端口,釋放系統(tǒng)資源。在完成串行通信操作后,應(yīng)該將串行通信端口的資源歸還給操作系統(tǒng);

2.3 下位機(jī)的通信程序設(shè)計(jì)

STC系列單片機(jī)具有采集速度快,帶有8路的10位的A/D轉(zhuǎn)換,價(jià)格便宜等優(yōu)點(diǎn)。所以本系統(tǒng)采用的單片機(jī)為STC12C5412AD ,振蕩頻率為22.1184MHz,串口工作于方式1,定時(shí)/計(jì)數(shù)器1用作波特率發(fā)生器,PCON 中的SMOD位為0,發(fā)送的波特率為19200。下位機(jī)端通信程序采用C51編程語言在KeilC51環(huán)境下開發(fā)的,通信流程,如圖2所示:

圖2 單片機(jī)通信流程圖

3 結(jié)束語

利用C++ Builder作為軟件開發(fā)平臺,通過API函數(shù)實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的串口通信,該系統(tǒng)經(jīng)過調(diào)試,運(yùn)行穩(wěn)定可靠,已成功應(yīng)用到人體重心測試系統(tǒng)中。本方法實(shí)現(xiàn)簡單,通用性好,只要稍加改動就能應(yīng)用到其他的系統(tǒng)中。

[1]湯勃,徐立偉,饒潤生.基于VB的PC機(jī)與單片機(jī)串行通信程序設(shè)計(jì).[j]武漢理工大學(xué)學(xué)報(bào).2002年 26卷第4期.534~536.

[2]李朝青.PC機(jī)與單片機(jī)數(shù)據(jù)通信技術(shù).[M]北京航空航天大學(xué)出版社.1999.

[3]黃良沛,黃昕,陽小燕.Delphi環(huán)境中利用MSCOMM實(shí)現(xiàn)PLC與上位機(jī)的串口通信.[j]計(jì)算機(jī)應(yīng)用與軟件.2005年第22卷第4期.125~127.

猜你喜歡
單片機(jī)系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于PowerPC+FPGA顯示系統(tǒng)
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
半沸制皂系統(tǒng)(下)
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
主站蜘蛛池模板: 国产精品深爱在线| 国产成人高清在线精品| 国产农村1级毛片| 国产人免费人成免费视频| 亚洲啪啪网| 亚洲永久色| 99偷拍视频精品一区二区| 国产Av无码精品色午夜| 内射人妻无码色AV天堂| 人妻熟妇日韩AV在线播放| 亚洲国产精品美女| 波多野结衣国产精品| 亚洲天堂精品在线| 深爱婷婷激情网| 亚洲人在线| 国产91线观看| 国内精品小视频福利网址| 不卡无码网| 国产永久免费视频m3u8| 日韩精品亚洲精品第一页| 国产亚洲精| 台湾AV国片精品女同性| 国产日韩欧美中文| 广东一级毛片| 91美女在线| 幺女国产一级毛片| 国产91小视频| 国产成人a毛片在线| 97久久免费视频| 欧美成人A视频| 成人福利视频网| 中国精品久久| 99在线观看精品视频| 国产成人欧美| 欧美性爱精品一区二区三区 | 国产欧美一区二区三区视频在线观看| 国产精品免费p区| 538国产视频| 亚洲性视频网站| 久996视频精品免费观看| 狠狠色丁婷婷综合久久| 亚洲色偷偷偷鲁综合| 色综合天天操| 亚洲成人www| 亚洲电影天堂在线国语对白| 日韩一区精品视频一区二区| 少妇精品在线| 日韩精品专区免费无码aⅴ| 亚洲伊人天堂| www中文字幕在线观看| 精品久久久久久成人AV| 在线精品亚洲国产| 色婷婷丁香| 亚洲精品你懂的| 国产情侣一区| 日韩欧美色综合| 黑色丝袜高跟国产在线91| 91色在线观看| 色欲不卡无码一区二区| 91精品视频网站| 麻豆AV网站免费进入| 人禽伦免费交视频网页播放| 高清国产在线| 蜜臀AVWWW国产天堂| 国产91无码福利在线| 99在线观看精品视频| 在线高清亚洲精品二区| 美女亚洲一区| 伊人精品视频免费在线| av免费在线观看美女叉开腿| 亚洲黄网视频| 特级毛片8级毛片免费观看| 久久这里只精品热免费99| 亚洲国产无码有码| 日韩高清一区 | 午夜毛片免费观看视频 | 美女被躁出白浆视频播放| 最新无码专区超级碰碰碰| 人妻精品全国免费视频| 亚洲专区一区二区在线观看| 国产成人亚洲毛片| 欧美中文字幕一区|