基于VB實(shí)現(xiàn)PC機(jī)與單片機(jī)的串行通訊
引言
本文引用地址:http://m.butianyuan.cn/article/171809.htm隨著計(jì)算機(jī)技術(shù)尤其是單片微型機(jī)技術(shù)的發(fā)展,人們已越來越多地采用單片機(jī)來對一些工業(yè)控制系統(tǒng)中如溫度、流量和壓力等參數(shù)進(jìn)行檢測和控制。PC機(jī)具有強(qiáng)大的監(jiān)控和管理功能,而單片機(jī)則具有快速及靈活的控制特點(diǎn),通過PC機(jī)的RS-232串行接口與外部設(shè)備進(jìn)行通信,是許多測控系統(tǒng)中常用的一種通信解決方案。因此如何實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的通訊具有非常重要的現(xiàn)實(shí)意義。本文將論述在VB環(huán)境下PC機(jī)與單片機(jī)之間實(shí)現(xiàn)串行通訊的軟硬件方案。PC機(jī)的通訊程序使用Visual Basic編寫,VB是Microsoft公司推出的Windows應(yīng)用程序開發(fā)工具,因其具有界面友好,編程簡便等優(yōu)點(diǎn)而受到廣泛的使用,而且 Visual Basic 6.0 版本帶有專門實(shí)現(xiàn)串行通訊的MSCOMM控件。
1、硬件原理
目前的PC機(jī)都有至少一個(gè)串行通訊端口RS-232,RS-232端口可用于兩臺(tái)計(jì)算機(jī)之間進(jìn)行通訊,RS-232的邏輯電平用正負(fù)電壓表示,且信號(hào)使用負(fù)邏輯,邏輯0的電壓范圍是+5V~+15V,而邏輯1的電壓范圍是-5V~ -15V,RS-232端口是計(jì)算機(jī)與其他設(shè)備溝通的最常用的接口,不但實(shí)作簡單,而且價(jià)格便宜。在8051單片機(jī)的內(nèi)部有一個(gè)全雙工的異步串行I/O 口,它的輸入和輸出使用5V邏輯而不是RS-232電壓,如何進(jìn)行兩種信號(hào)的轉(zhuǎn)換,是連接時(shí)需要解決的問題,事實(shí)上,解決的方法很簡單,只需使用一個(gè)諸如 MAX232這樣的專用芯片即可。
電路結(jié)構(gòu)見下圖。
MAX232包含兩個(gè)將TTL輸入轉(zhuǎn)換成RS-232輸出的驅(qū)動(dòng)器,還包含兩個(gè)將RS-232輸入翻譯成CMOS輸出的接收器,這些驅(qū)動(dòng)器和接收器具有反向的功能。4個(gè)外置的電容大小為1uF,如果使用極化電容,注意極性,引腳6的電壓為負(fù),因此它的電容的正極連接到地,電容等級(jí)至少為15V。
2、軟件設(shè)計(jì)
本次通訊中,我們以一個(gè)測控系統(tǒng)的上位機(jī)和下位機(jī)之間的通信為背景,給出單片機(jī)部分和VB環(huán)境下的通信程序?qū)嵗到y(tǒng)中單片機(jī)負(fù)責(zé)數(shù)據(jù)采集、處理和控制,上位機(jī)進(jìn)行現(xiàn)場可視化檢測,通信協(xié)議采用半雙工異步串行通信方式,通過RS232的RTS信號(hào)進(jìn)行收發(fā)轉(zhuǎn)換,傳輸數(shù)據(jù)采用二進(jìn)制數(shù)據(jù),上位機(jī)與下位機(jī)之間采用主從式通訊。
(1)單片機(jī)的串行通訊程序
8051單片機(jī)從外部采集到的一組數(shù)據(jù)(30個(gè)),存在片內(nèi)RAM20H~3DH區(qū)域,要求將這個(gè)數(shù)據(jù)塊傳送給PC機(jī),為了保證傳送的正確,傳送前由單片機(jī)先向PC機(jī)發(fā)送數(shù)據(jù)# 55H(聯(lián)絡(luò)信號(hào)),PC機(jī)接收到后,向單片機(jī)回送數(shù)據(jù)# 0AAH(回應(yīng)信號(hào)),經(jīng)檢驗(yàn)正確后,單片機(jī)才開始向PC機(jī)傳送數(shù)據(jù)。
評論