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

VSPD和Proteus串口通信教學實驗

2018-10-30 09:53:50田社平方向忠
實驗室研究與探索 2018年9期
關鍵詞:單片機實驗

田社平, 方向忠, 張 峰

(上海交通大學 電子信息與電氣工程學院,上海 200240)

0 引 言

串口是目前工業通信中較為普遍的一種通信方式,同時在單片機教學中占據重要地位[1-4]。傳統的串口通信實驗往往需要一根串口線連接兩個終端(兩臺PC機,或者一臺PC一個單片機系統,或者兩個單片機系統),其對硬件仿真器依賴性較強。由于很多仿真器不能做到完全硬件仿真,因而可能造成仿真時正常,而實際運行時出現錯誤的情況,或者造成仿真不能通過,但是實際運行正常的情況。當單片機芯片型號發生較大變化時,需要配置新的仿真器,增加了資金投入。因此,開發一種虛擬的串口通信教學實驗系統,具有良好的教學價值。例如,可以利用Keil和虛擬串口驅動(VSPD)即可達到這一目的[5-7],但這樣的實驗系統具有操作較為復雜、顯示不夠直觀、不能加入硬件設計等缺點。

本文討論一種基于VSPD和Proteus[8-9]串口調試與實驗方法,可以在一臺PC機上完成原本需要兩個終端才能實現的串口通信。首先從虛擬串口的結構和原理,闡述串口通信的基本原理。接著以一個實例給出了基于VSPD的串口通信的具體實現過程。該例實現了PC機與單片機之間的串口通信,PC機端串口通信程序采用VC++6.0編寫,單片機選用Intel公司的AT89C51,在Proteus仿真軟件中用匯編語言編寫。

1 虛擬串口驅動程序

虛擬串口驅動程序是一個標準的Win32驅動程序模型(WDM)的設備驅動程序,它面向串口用戶程序,為用戶提供標準而完整的串口設備接口。該驅動程序的系統I/O調用接口以及讀寫控制完全仿造標準的串口驅動程序制作,所以從用戶角度看,虛擬串口的使用和普通串口沒有任何區別。

虛擬串口的應用類型有很多,基于串口教學實驗的需要,這里只介紹其中一種——互聯型虛擬串口。互聯型虛擬串口是將兩個虛擬串口的數據通道連接起來。其效果相當于用串口回環線將兩個物理串口連接起來。除了將串口數據線TX和RX交叉連接以外,互聯型虛擬串口程序還將RTS、CTS、DTR、STR等控制線也進行互連,如圖1所示。

圖1 互聯型虛擬串口模擬的串口回環線

這些連接都是軟件意義上的,并沒有實際物理線相聯。這根使用軟件來模擬的串口回環線,實際上是使用線程通信完成的,其原理圖如圖2所示。由該圖可知,兩個虛擬串口連接以后,任何串口發送的數據將會被另外一個虛擬串口所接收。

圖2 互聯型虛擬串口原理

虛擬串口驅動程序有很多,常用的有VSPD、VSPM和SUDT SerialNull 等。而VSPD以其操作簡單,容易上手等特點倍受青睞。VSPD全稱為Virtual Serial Port Driver XP,是Eltima軟件公司的一款產品。它能成對地添加虛擬串口,最多可虛擬256個串口。VSPD虛擬串口對的操作界面如圖3所示。

圖3 VSPD虛擬串口對

VSPD可以和Proteus結合,添加的一對虛擬串口被設定為通過非MODEM(三線制)串口連接在一起,就像兩個真實的物理串口一樣,從而實現在一臺PC機上模擬兩個軟件的串口通信。

2 VSPD串口實驗

2.1 實驗內容及要求

建立單片機與PC機之間的串口通信,單片機電路如圖4所示。要求單片機的4個開關控制4盞LED燈,當開關合上時,相應的燈亮,同時將信息發送給PC機,如“P1.x is on. Lx lights.”,其中x取0~3,分別與SW1~4對應;PC機接收到信息后顯示,同時向單片機發送字符(0-9,A-F),并通過單片機控制數碼管顯示相應的數字。PC機串口編程采用VC++6.0,單片機采用89C51匯編語言編程實現。串口通信格式為:1 200 bit/s波特率,8位數據,無校驗,1個停止位。

圖4中,SCMR為虛擬接收端口,用來顯示單片機接收到的數據;SCMT為虛擬發送端口,用來顯示單片機發送的內容。P1為串口物理接口模型COMPIM,用來與外部進行RS-232串口通信。在仿真實驗時,必須在相應的“Edit Component”對話框中設置與實驗一致的串口通信參數。其中COMPIM的設置界面如圖5所示。

圖4 串口實驗下位機電路

圖5 串口通信參數設置界面

2.2 單片機編程

為了使例程具有一般性,單片機采用通用的89C51,在Proteus上運行實現[10-12]。89C51的時鐘頻率取11.059 2 MHz,單片機選用串口方式1,定時器方式2,SMOD=1。由波特率公式:

波特率=2SMOD/32×T1溢出率,T1溢出率=時鐘頻率/[12×(256-TH1初值)]

可以求得T1的溢出率為1200/(2/32)=19200,從而算得定時初值為

256-11.0592×106/(19200×12)=208=0D0H

單片機的主程序如下:

MOV SP, #60H

MOV SCON, #50H ;串口方式1,允許接收

MOV TMOD, #20H ;定時器1為方式2

ORL PCON, #80H ; SMOD=1

MOV TH1, #0D0H ;波特率為1200

MOV TL1, #0D0H

SETB TR1

MOV DPTR, #CHSE ;發送’Hello, world!’

LP1: CLR A

MOVC A, @A+DPTR

CJNE A, #’’, SE1 ;判是否到發送結束位

LJMP LP2

SE1: LCALL SEND ;發送子程序

LCALL DELAY ;延時子程序

INC DPTR

LJMP LP1

LP2: MOV DPTR,#TABLE ;初始化顯示‘5’

MOV A, #05H

MOVC A, @A+DPTR

MOV P0, A

CLR A

CLR DPTR

LP: JNB P1.0, L1 ;檢測按鍵,如果P1.0按下轉L1

JNB P1.1, L2

JNB P1.2, L3

JNB P1.3, L4

JNB RI, LP ;等待接收1個字符

CLR RI

MOV A, SBUF ;接收到的字符送A

LCALL DELAY

MOV RDATA, A

LCALL SEND

LCALL DELAY

MOV DPTR, #TABLE

LCALL CHANGE ;ASCII碼轉16進制數子程序

MOV A, RDATA

LCALL DISP ;顯示子程序

LJMP LP

程序中,SEND為發送子程序,DELAY為延時子程序,CHANGE為數制轉換子程序,完成ASCII碼到十六進制的轉換,Lx(x為1,2,3,4)為開關操作程序,即實現按下開關,相應的指示性語句發送到PC機的功能。CHSE地址存放的是初始字符串“Hello, world!”,TABLE地址存放的是7段碼值。由于篇幅所限,具體代碼從略。

2.3 PC機編程

Win32中基于VC++6.0的常用串口通信程序一般可以用兩種方法實現[13-14]:①利用MSComm ActiveX串行通信控件;②使用Windows API通信函數。本實驗中采用MSComm ActiveX控件進行編程。MSComm提供了兩種處理通信問題的方法:①事件驅動法,當串口上發生某一事件時,使用MSComm控件的OnComm事件可以捕獲并處理這些事件;②查詢法,每當應用程序執行完某一串行口操作后,將不斷檢查MSCommEvent屬性以檢查執行結果或者檢查某一事件是否發生。本實驗中采用第一種方法,在串口接收緩沖區中有字符時接收。

實驗中MSComm控件涉及的幾個重要屬性如表1所示。

表1 實驗中MSComm的幾個屬性

根據表1的控件屬性設置好正確的串口通信參數配置、數據獲取方式和通信響應類型等,通過Output發送數據,由Input在OnComm函數中接收數據。圖6為VC++6.0實現的串口通信實驗程序流程框圖。

圖6 串口實驗PC機程序流程

2.4 實驗運行結果

首先打開VSPD增加一對虛擬串口對,如COM1和COM2;接著運行C++程序,設置好串口號為COM2,波特率為1 200,8位數據位,1位停止位和無奇偶校驗之后,打開串口;然后運行Proteus軟件,對串口物理接口,虛擬接收/發送端口設置對應的通信參數,串口號選為COM1,點擊Proteus左下方的運行鍵。最后的結果如圖7所示。

程序通信后,首先由單片機向PC機發送字符串"Hello world!";當按下P1.x時,單片機就向PC機發送"P1.x is on. Lx lights."(x為0到3中的一個整數),同時相應的LED就會點亮。由單片機向PC機發送過程中,PC機和虛擬發送端口同時顯示發送的內容。當PC機向單片機發送字符A時,虛擬接收端口和數碼管就會顯示"A"。由此,實驗任務得到實現。

(a) PC端串口通信界面

虛擬端口發送顯示

虛擬端口接收顯示數碼管顯示

(b) 單片機端顯示界面

圖7 串口通信實驗仿真結果

3 結 語

本實驗利用虛擬串口驅動程序VSPD和虛擬仿真軟件Proteus實現了串口通信功能,具有實驗現象直觀、軟件調試方便的特點。在調試階段不受時間地點和器材的限制,從而減少硬件的使用,給開發和調試帶來了很大的靈活性,能取得事半功倍之效,提高學生的研究能力和學習興趣。

盡管本實驗中的單片機采用目前單片機教學中主流的MCS-51系列單片機,但本文方法也適用于各類單片機、微控制器的串口通信開發與調試,程序的編寫也可采用C語言以簡化開發過程[15]。同樣,PC機端串口程序也可采用不同的語言編寫,例如,當用VB或是其他語言實現串口通信程序時,仍可移植本實驗設計思路。因此,本實驗的實現方案可以根據教學實際進行靈活配置,將教學重點放在對串口通信的理解上,以取得良好的教學效果。

本文給出了虛擬串口通信實驗的框架結構和基本實現方法,在實際教學中可以在此基礎上增加諸如修改通信參數、進行大數據量傳輸等實驗要求,以滿足不同的教學要求。

猜你喜歡
單片機實驗
記一次有趣的實驗
微型實驗里看“燃燒”
基于單片機的SPWM控制逆變器的設計與實現
電子制作(2019年13期)2020-01-14 03:15:28
做個怪怪長實驗
基于單片機的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
小議PLC與單片機之間的串行通信及應用
電子制作(2018年12期)2018-08-01 00:48:04
基于單片機的平衡控制系統設計
電子制作(2017年19期)2017-02-02 07:08:27
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
主站蜘蛛池模板: 欧美精品一二三区| 天堂成人在线视频| 国产微拍一区| 成人在线不卡视频| 日韩 欧美 小说 综合网 另类| 在线免费看片a| 国产成人精品综合| 免费 国产 无码久久久| 国内熟女少妇一线天| 怡春院欧美一区二区三区免费| 在线五月婷婷| 婷婷六月色| 国产亚洲欧美另类一区二区| 中文字幕在线欧美| 91久久夜色精品国产网站| 成年看免费观看视频拍拍| 伊人久久久久久久久久| 在线观看免费黄色网址| 久久国产V一级毛多内射| 欧美一级视频免费| 亚洲第一色视频| 国产91小视频在线观看| 久久99国产视频| 色婷婷丁香| 亚洲精品视频免费| 国产男人天堂| 全裸无码专区| 国语少妇高潮| 国产手机在线ΑⅤ片无码观看| 亚洲第一区欧美国产综合| 久久久久无码精品| 亚洲第一在线播放| 国产精品自在自线免费观看| 国产喷水视频| 99久久国产精品无码| 在线人成精品免费视频| 一级毛片中文字幕| 国产不卡国语在线| 精品一区二区三区水蜜桃| 日本日韩欧美| 全部免费特黄特色大片视频| 日韩久草视频| 在线观看无码a∨| 欧美精品亚洲精品日韩专区| 青青青国产免费线在| 亚洲天堂首页| 国产jizz| 久久精品日日躁夜夜躁欧美| 欧美成人a∨视频免费观看| 5555国产在线观看| 成人一区在线| 无码又爽又刺激的高潮视频| 欧美在线黄| 女人毛片a级大学毛片免费| 国产视频资源在线观看| 国产91精品久久| 免费啪啪网址| 亚洲 成人国产| 国产久操视频| 国产精品va免费视频| 男女性午夜福利网站| 综合亚洲色图| 亚洲欧美在线综合一区二区三区| 国产精品9| 国产乱子伦一区二区=| 国产一区二区影院| 欧美午夜视频| 精品国产网| 国产精品成人免费视频99| 无码内射中文字幕岛国片| 尤物在线观看乱码| 中国精品自拍| 国产区免费精品视频| 2020极品精品国产| 特级毛片8级毛片免费观看| 国产a在视频线精品视频下载| 色悠久久综合| 成人福利在线视频| 久久综合九色综合97网| 女人av社区男人的天堂| 99视频只有精品| 亚洲激情99|