當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]引言現(xiàn)代的單片機(jī)測(cè)控系統(tǒng)中通常以PC機(jī)作為控制中心,單片機(jī)將采集到的數(shù)據(jù)通過(guò)串口送給PC機(jī)進(jìn)行各種處理,為保證數(shù)據(jù)傳送的及時(shí)性和正確性,就必須建立可靠的通訊。我們?cè)陂_(kāi)發(fā)全自動(dòng)生化分析儀溫度控制系統(tǒng)時(shí),溫度

引言

現(xiàn)代的單片機(jī)測(cè)控系統(tǒng)中通常以PC機(jī)作為控制中心,單片機(jī)將采集到的數(shù)據(jù)通過(guò)串口送給PC機(jī)進(jìn)行各種處理,為保證數(shù)據(jù)傳送的及時(shí)性和正確性,就必須建立可靠的通訊。我們?cè)陂_(kāi)發(fā)全自動(dòng)生化分析儀溫度控制系統(tǒng)時(shí),溫度信號(hào)的測(cè)控及采集均由單片機(jī)系統(tǒng)自行完成,然后通過(guò)異步串行通信口將溫度信號(hào)實(shí)時(shí)地傳送給PC 機(jī)進(jìn)行處理。上位PC機(jī)使用VB進(jìn)行串口通信的編程,下位單片機(jī)使用C51進(jìn)行編程。

1  VB下實(shí)現(xiàn)串口通信的方法

1.1 通信控件MSComm簡(jiǎn)介

VB下的串行端口通信是通過(guò)其提供的控件Microsoft Comm control(簡(jiǎn)稱MSComm)實(shí)現(xiàn)的。該控件屏蔽了通信過(guò)程中的底層操作,程序員只需設(shè)置并監(jiān)視MSComm控件的屬性和事件,結(jié)合其它VB提供的控件就可完成對(duì)串口的初始化和數(shù)據(jù)的發(fā)送接收。本系統(tǒng)中用到的主要MSComm控件屬性如下:

①、Commport:設(shè)置并返回通信端口代碼。默認(rèn)值為1,最大值為16,需要使用超過(guò)16個(gè)通信端口時(shí),要采用其他方式操控通信端口(如PcommPro軟件)。例如將串口2設(shè)為通信端口:MsComm1.CommPort=2。

②、Setting:設(shè)置初始化參數(shù)。其格式為“****,P,D,S”,其中****為波特率(baud),P為校驗(yàn)方式,D為數(shù)據(jù)位數(shù),S為停止位。默認(rèn)值為“9600,N,8,1”,意為“串口通信速度為9600Baud,無(wú)校驗(yàn),每次數(shù)據(jù)為8個(gè)Bit,停止位為1個(gè)Bit”。波特率可為 110,300,600,1200,2400,9600,14400,19200,28800,38400(保留)等等。校驗(yàn)位默認(rèn)為None(無(wú)校驗(yàn)),若傳輸距離長(zhǎng),可增加校驗(yàn)位,可選M為符號(hào)校驗(yàn),E為偶校驗(yàn),O為奇校驗(yàn),S為空白校驗(yàn)。停止位的設(shè)定值可為:1(默認(rèn)值),1.5,2。

此處的設(shè)置要和單片機(jī)側(cè)的設(shè)置保持一致,否則不能實(shí)現(xiàn)正常的通信。例如我們采用的初始化參數(shù)為“2400,N,8,1”,則單片機(jī)側(cè)的設(shè)置相應(yīng)項(xiàng)為:定時(shí)器1的初值為E6并且SMOD(串行口波特率加倍位)為1(對(duì)應(yīng)2400Bit),串口控制寄存器SCON為40(10位異步收發(fā),對(duì)應(yīng)8Bit數(shù)據(jù)位,1Bit停止位)。

③、PortOpen:設(shè)置或返回通信端口狀態(tài)。

④、Input:從緩沖區(qū)返回并刪除字符。將串行輸入寄存器的數(shù)據(jù)讀出,并清除寄存器中已讀取的數(shù)據(jù)。寄存器的特性是FIFO(First In First Out,先進(jìn)先出)。例如:BufIn$=MSComm1.Input,是將輸入寄存器中的字符讀入BufIn字符變量中。

⑤、InputLen:設(shè)置并返回Input屬性每次從接收緩沖區(qū)讀取的字符數(shù)。默認(rèn)值為0,表示讀取全部字符。本系統(tǒng)InputLen=2,即一次讀取兩個(gè)字節(jié)。

⑥、Rthreshold:設(shè)置或返回引發(fā)接收事件的字節(jié)數(shù)。當(dāng)接收寄存器達(dá)到設(shè)置的字節(jié)數(shù)時(shí),將引發(fā)OnComm事件中的接收事件。

⑦、CommEvent:返回最近的通信事件或錯(cuò)誤。只要有通信事件或錯(cuò)誤發(fā)生就會(huì)產(chǎn)生OnComm事件。CommEvent屬性中存有該事件或錯(cuò)誤的數(shù)值代碼。程序員可通過(guò)檢測(cè)數(shù)值代碼來(lái)進(jìn)行相應(yīng)的處理。

⑧、InputMode:設(shè)置或返回Input屬性取回的數(shù)據(jù)的類型。有兩個(gè)形式,設(shè)為ComInputModeText(默認(rèn)值)時(shí),按字符串形式接收;設(shè)為ComInputModeBinary時(shí),當(dāng)作字節(jié)數(shù)組中的二進(jìn)制數(shù)據(jù)來(lái)接收。單片機(jī)和PC機(jī)的通信一般使用 ComInputModeBinary形式,本系統(tǒng)采用字節(jié)接收方式。

1.2  串行通信實(shí)現(xiàn)的兩種基本方法

有兩種方法可實(shí)現(xiàn)VB下串行通信的控制,一是查詢法(Polling),二是事件驅(qū)動(dòng)法(Event-driven)。

①、查詢法(Polling)

這種方法是在每個(gè)重要的程序之后查詢MSComm控件的某些屬性值(如CommEvent屬性和InBufferCount屬性)來(lái)檢測(cè)事件和通信狀態(tài)。適用于小程序。查詢可使用定時(shí)器或DO...LOOP實(shí)現(xiàn)。

②、事件驅(qū)動(dòng)法(Event-driven)

這是處理串口通信的一種有效方法。當(dāng)串口接收或發(fā)送指定數(shù)量的數(shù)據(jù),或當(dāng)串口通信狀態(tài)發(fā)生改變時(shí),MSComm控件觸發(fā)OnComm事件。在OnComm 事件中,可通過(guò)檢測(cè)MSComm.CommEvent屬性值獲知串口的各種狀態(tài),從而進(jìn)行相應(yīng)的處理。這種方法程序響應(yīng)及時(shí),可靠性高。本系統(tǒng)采用了此法來(lái)實(shí)現(xiàn)串口的通信。

2  通信線路的構(gòu)建

PC機(jī)和單片機(jī)的接口電平轉(zhuǎn)換芯片采用MAX232C,接口電路圖如圖1所示。單片機(jī)側(cè)的TXD(發(fā)送端)接PC機(jī)的RXD(接收端),單片機(jī)側(cè)的 RXD(接收端)接PC機(jī)的TXD(發(fā)送端),兩者的GND(地)直接相連。電纜線為9針的RS-232電纜。圖中標(biāo)明了PC機(jī)側(cè)發(fā)送與接收腳的針號(hào),不能接錯(cuò)。

3 程序的實(shí)現(xiàn)

3.1  實(shí)現(xiàn)的功能

單片機(jī)控制并檢測(cè)溫度,實(shí)時(shí)地通過(guò)串口將溫度數(shù)據(jù)傳送給PC機(jī)。PC機(jī)側(cè)響應(yīng)OnComm事件,并在事件的處理程序中將數(shù)據(jù)接收,處理后送文本框顯示,同時(shí)保存在設(shè)定的文件中。

3.2  通信協(xié)議及數(shù)據(jù)格式

波特率:2400Baud,無(wú)奇偶校驗(yàn),8位數(shù)據(jù)位,1位停止位。傳送的數(shù)據(jù)類型為二進(jìn)制格式。兩字節(jié)代表一個(gè)溫度信號(hào),單片機(jī)一次傳送兩字節(jié),高字節(jié)在前,低字節(jié)在后,PC機(jī)一次接收兩字節(jié),在接收字節(jié)數(shù)組中,高字節(jié)在前,低字節(jié)在后。

3.3  PC機(jī)側(cè)VB程序

①、在Form中添加MSComm1通信控件,并將其屬性設(shè)定如下:
    With MSComm1.CommPort=1  "設(shè)置串行端口號(hào)為1" 
    .Setting="2400,n,8,1"  “通信協(xié)議“ 
    .InputLen=2  ‘一次讀取2字節(jié)’
    .InputMode=comInputModeBinary ‘二進(jìn)制數(shù)據(jù)格式’
    .Rthreshold=2 ‘接收緩沖區(qū)達(dá)到2字節(jié)時(shí)產(chǎn)生OnComm事件’其他為默認(rèn)值即可。

②、在Form窗口添加兩個(gè)定時(shí)器Timer1和Timer2,Timer1為每次采樣時(shí)間間隔計(jì)時(shí)器,初值Interval=30000(1毫秒/Interval,所以為30秒)。Timer2是為保證串口出錯(cuò)或串口無(wú)信號(hào)時(shí)自動(dòng)跳出的,時(shí)間為1分鐘。

③、在Form窗口中添加三個(gè)文本框,Text1為顯示哪個(gè)串口被打開(kāi),Text2顯示當(dāng)前日期,Text3顯示采集的溫度數(shù)據(jù)。添加兩個(gè)命令按鈕,Command1為運(yùn)行按鈕,Command2為結(jié)束按鈕。添加兩個(gè)下拉列表框,ComboBox1為采樣總時(shí)間設(shè)定,ComboBox2為采樣間隔時(shí)間設(shè)定。添加兩個(gè)單選按鈕,Option1對(duì)應(yīng)COM1,Option2對(duì)應(yīng)COM2,串口默認(rèn)選定為COM1。

④、主要程序及簡(jiǎn)要說(shuō)明

單引號(hào)中的內(nèi)容為程序的說(shuō)明,程序的調(diào)試是在VB6.0中文版環(huán)境下完成的。

3.4  單片機(jī)側(cè)C51程序

單引號(hào)中的內(nèi)容為程序的說(shuō)明,程序調(diào)試調(diào)試環(huán)境為Keil uVision V2.14版本。

此數(shù)據(jù)采集系統(tǒng)已投入使用,傳送距離為1.5米,傳送誤碼率為0,使用情況良好。

參考文獻(xiàn):
[1] 馬忠梅等.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì).北京航空航天大學(xué)出版社,1999.
[2] 李鴻吉.Visual Basic 6.0中文版編程方法詳解.科學(xué)出版社,2001.
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉