虚拟串口以及在Proteus中的使用
- 格式:doc
- 大小:627.50 KB
- 文档页数:9
中国民航大学单片机课程设计报告题目:实际单片机与proteus中虚拟单片机串口通信仿真设计时间:2012年 9 月 13 日至 9 月 20 日学院:航空自动化学院专业名称:自动化学号:**********名:***指导老师:***目录1绪论 (3)2设计内容及要求 (3)3串口通信原理 (3)4设计思路 (4)5设计框图 (4)6硬件实现 (5)7电路设计 (7)7.1硬件设计 (7)7.2软件配置 (8)8程序设计 (12)8.1设计思路 (12)8.2硬件程序 (12)8.3虚拟单片机程序............................. 错误!未定义书签。
9 PROTEUS仿真..................................... 错误!未定义书签。
10总结............................................ 错误!未定义书签。
参考文献. (26)实际单片机与proteus中虚拟单片机串口通信仿真1绪论单片机与单片机或单片机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。
由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。
在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯,本课程设计则采用串行通信的方式进行proteus仿真。
2设计内容及要求采用串行通讯的方式,用实际的单片机读取超声波测距模块的数据,然后通过串口与proteus中的虚拟单片机进行通信,将超声波测得的数据通过串口实时发送给proteus中的单片机,虚拟单片机将接收到的数据实时用lcd1602在proteus中仿真显示。
设计中用到二个1602液晶屏,一个虚拟终端,实时监测发送与接受的数据,用来验证通信的数据是否正确。
设计要求在测距周期尽可能短的情况下,同时保证数据传输误码率在0.2%以下。
Proteus虚拟终端使用心得虚拟终端就是仿真PC机的键盘和屏幕,单片机通过串口发送出去,在虚拟终端上就可以显示出来;从PC机键盘输入数据,在单片机侧编好的接收程序就可以收到PC机键盘输入的数据。
不需也没办法对虚拟终端写任何程序,可以理解为虚拟终端就是PC机的串口,它已经编好程序了,单片机送数据它就接收并显示出来,虚拟终端它送数据,单片机编好接收程序就可以收到。
你只要编写单片机的发送、接收程序即可。
1、虚拟终端显示:虚拟终端收到数值,如果HEX DISPLAY MODE选中,则显示收到数值的16进制形式;如果没选中HEX DISPLAY MODE,则是以ASCII码形式显示,注意有些ASCII码是不可显示的。
2、虚拟终端输出:敲PC键盘按键,它就发送出此键对应的ASCII码;如果勾上了“echo typed char...”选项[术语“回显”],所敲按键的值就会显示在虚拟终端上(显示格式取决于数制模式,即HEX DISPLAY MODE有没有勾上)。
在仿真运行时要右击虚拟终端,看下图点击最下那个选项,会出现:这个黑色大框就是运行后的虚拟终端,其中,可能还要右击黑大框,出现:这时,可能还要选中一些选项,如图示echo typed char... ,另外,取决于你通讯时采用16进制还是ASCII码,可能还要设置HEX DISPLAY MODE, ———————————————————————————————————虚拟终端向单片机发送数据时,只需要把TXD与单片机的RXD连接即可。
在使用虚拟终端向单片机发送数据时,发现总是会跳过While(SBUF!=0x0d)循环,初步推测虚拟终端在初始时,会发送一个回车字符,所以我在原代码上进行了修改:单片机使用串口方式1接收:SCON=0x50;(0x0d是回车的ASCII码十六进制)(以上程序仅供参考,仅适用于使用回车结束输入的情况)。
关于虚拟protuse虚拟串口的使用最近在学校的单片的实习中,老师硬是要我们做交通的仿真,废了挺大劲才完成的,下到实验箱上好使,结果老师还要我们protuse仿真一下,没办法了,硬着头皮都没做出来;最近有时间了,终于把它做出来了。
其实,虚拟protuse的串口使用起来是非常的。
下面简要说明:软件:VSPD虚拟串口Protuse仿真串口助手本文只是对VSPD虚拟串口的使用进行介绍,而关于Protuse仿真和串口助手的安装和使用不在介绍。
安装VSPD虚拟串口并没有什么复杂的,此处不再说明,下面是装完的界面:1,添加虚拟串口,由于虚拟串口是利用一个串口发,一个串口收的,因此要成对添加,这点与实际串口有区别。
注意,添加的串口端号最好是不常用的,考虑到Protuse仿真的COMPIM的端口是COM1~COM4,我们一般添加串口号为COM3~COM42完成后左边窗口显示添加的端口3虚拟串口检测串口4到这一步,虚拟串口就建立完成了,接下来就是试验了!在Protuse仿真添加串口端口如下图5注意:COMPIM是集成电平转换的,不需要MAX232了,与单片机的连接为RXD、TXD与单片机RXD、TXD对应。
如下图:6其原理为下图:这个也就是为什么虚拟串口成对设定的原因7设定COMPIM的属性(与串口助手的相一致,注意端口和波特率)8在下面的选项中,我们不选择exclude from simulation即可。
翻译:exclude [iks'klu:d] vt.排除;排斥;拒绝接纳;逐出simulation ['s?mj?'le??n]n. 仿真;模拟;模仿;假装layout n. 布局;设计;安排;陈列第一个排除仿真,我要的就是虚拟的仿真串口,所以不能排除。
第二个排除PCB布局,可要可不要,我们没有PCB。
第三个将COMPIM的全部设置生成text,界面如下,我们不用生成text9启动串口助手之后,启动仿真Protuse,端口有颜色的,不启动或者链接错误是暗的。
Proteus仿真——51单片机串口转RS232口单片机串口是单片机通信的基本途径,可以进行多单片机间的通信,也可以通过接口转换实现与计算机间的通信。
其中与计算机通信可以通过计算机的串口(232口)或USB口实现。
本文是本人做的一个小实验,内容是在Proteus ISIS中仿真51单片机串口转RS232口,实现单片机通过串行口与计算机通信。
单片机串行口有四种不同的工作方式:方式0:移位寄存器输入/出方式,波特率固定为:f osc/12。
方式1:10位UART(通用异步接口电路),一帧数据包括1位起始位(0),8位数据位和1位停止位(1)。
波特率可变,公式为:其中X为定时器T1的初值,当然我们一般都是先确定波特率然后算初值的,所以我们更想知道X等于多少。
把上面的式子变一下就可以得到初值X了:方式2/3:这两种方式都是11位的UART,它们比方式1多了一个第9位数据。
他们不同的是:方式2波特率固定为f osc/32或f osc/64,由SMOD位决定。
方式3:波特率同方式1;本例中采用方式1,波特率为9600(计算机默认值),根据波特率算出初值X=253(定时器T1工作方式2)。
我们以9600的波特率向计算机循环发送00H;proteus中的接口转换电路如下:计算机端用串口调试软件接收;不过我们要说明一下,为了实现串口的连接,我们要用计算机串口模拟软件模拟出两个232口,模拟出的这两个232口是设计为连接着的。
我们用Virtual Serial Port Driv er这个软件(到网上去搜,很容易找到)。
安装好后打开,界面如下:在上图里可以看出我的机器有一个物理口COM1,现在已经模拟出了两个口COM2和COM3,而且他们是一组是连接着的。
我们在proteus中的compim默认是连到com1的,在我们这边改成com2,然后在串口调试软件中测试com3,如下两个图现在硬件连接已经到位,下面就是软件了:通过串口以波特率为9600的速度发送00H,程序如下:ORG 0000HLJMP STARTORG 0030HSTAR T: SETB EASETB ESSETB ET1CLR SM0;串行口工作于方式1:sm0=0,sm1=1SETB SM1MOV PCON,#00H;波特率不加倍MOV TMOD,#20H;T1定时器方式2MOV TL1,#253MOV TH1,#253SETB TR1MOV A,#00HLOOP: MOV SBUF,A JNB TI,$;等待发送完CLR TI;清除中断标志LJMP LOOP;循环END结果如下:。
单片机与PC通信-(proteus 与虚拟串口驱动软件以及串口调试助手的仿真)实验:单片机与PC通信(proteus与虚拟串口驱动软件以及串口调试助手的仿真)实现内容:设置单片机串行口为工作方式一,波特率为9600。
PC从串口发送字符1、2、3或4到单片机串行口,单片机接收到该字符后,首先在P2 口显示字符,然后根据字符不同返回不同字符串,具体要求如下表:表:单片机与PC通信内容一、proteus仿真图:(此proteUS 仿真图可 免费下载, 下载网址:)1、图1.12、注意:(1)51单片机属性的时钟频率(clock frequency )必为11.0592mhz , 否则无法仿真。
请按下图设置AT89SC52PJXJ/M.ID R9.1/&C1 P92/AC2 F*1 V*ti3 F-J 對 Mil PJ.5/WLI5 r.-j--p. Rjjr«i7 P2CU^ 就.sg P2JA1Q 咱•佃H E7SJA1J F2.E1A14 F3皿旳pi.omB F3?JMT0~RZM S T TF5TFlEHI卩卫 Pl 陀曲丽■图1.23、在仿真图中P1即(元件名称:COMPIN模块为集成电平转换的串行通信接口(如下图)(1)图1.3(2)设置参数如下图1.44、虚拟串口驱动设置 在右侧选择端口一: “COM ”端口二:“COM4,然后按“添加端口” ,此时左侧的Virtual ports 下出现:工 Virtual portsS <2 CQM3 [960Q'N^-l]* COM4 [96OO-N-E-11图1.5表示添加了 COM3 COM4^对虚拟串行口,且 已连接,故我们把单片机和PC 选择COM 和 COM4 (如图1.4中的physical port 选项:COM4图 中:串口号COM )。
接着再在右侧选择 端口一:“COM ”端口二:“COM2则为下图,劃E 雷口驱訟6.9 by 耽III 汉化Manage port 占 Port access list 匚 u stem pin outMPD 肓餉魏幢任何你想使用的端口号的虛拟端口 .所以你可以不 受端口吕;3躯的限制1旦呈诒诵■呆I'」芒腔垮支持这些端口号p no port selected no port 眸血“cf使用精确的遁特率模报 综路中斷重新皈夏连接所有虎拟端口捋质全部刪像请 确认所有端口业时都处于关闭 状态。
单片机用 Proteus 仿真双机串口通信总结体会本文介绍了使用 Proteus 仿真软件进行单片机双机串口通信的实验过程及总结体会。
下面是本店铺为大家精心编写的5篇《单片机用 Proteus 仿真双机串口通信总结体会》,供大家借鉴与参考,希望对大家有所帮助。
《单片机用 Proteus 仿真双机串口通信总结体会》篇1引言在单片机应用中,串口通信是一种重要的通信方式,它具有传输速率快、传输距离远、抗干扰能力强等优点。
Proteus 仿真软件是一种功能强大的电子电路仿真工具,可以用来模拟单片机串口通信的整个过程,为学习和实践提供方便。
本文将详细介绍使用Proteus 仿真软件进行单片机双机串口通信的实验过程及总结体会。
实验过程1. 硬件电路设计首先,我们需要设计一个简单的单片机硬件电路,包括电源电路、串口通信电路和 LED 显示电路。
电源电路可以使用电池或者稳压器来提供稳定的电压,串口通信电路可以使用 Proteus 提供的串口助手软件进行设计和调试,LED 显示电路可以使用 Proteus 提供的 LED 助手软件进行设计和调试。
2. 软件程序设计在软件程序设计中,我们需要编写两个程序:主程序和串口通信程序。
主程序主要负责初始化串口通信电路和 LED 显示电路,并将控制权转移到串口通信程序。
串口通信程序主要负责接收和发送数据,通过串口助手软件可以方便地进行调试和测试。
3. 仿真测试在仿真测试中,我们可以使用 Proteus 提供的仿真工具进行测试。
首先,我们需要将硬件电路和软件程序导入 Proteus 仿真软件中,并进行电路连接和程序编译。
然后,我们可以通过串口助手软件进行数据发送和接收,并通过 LED 显示电路进行数据展示。
总结体会通过使用 Proteus 仿真软件进行单片机双机串口通信实验,我们可以得出以下总结体会:1. Proteus 仿真软件是一种非常强大的电子电路仿真工具,可以用来模拟各种电路和通信方式。
先上图:实验程序:/********************************************************************************* * 【编写时间】: 2016年6月12日* 【作者】:小瓶子* 【实验平台】: Proteus 7* 【内部晶振】: 11.0592mhz* 【主控芯片】: STC89C51* 【编译环境】: Keil μVisio4* 【程序功能】:利用虚拟中断实现串口数据的发送和接收**********************************************************************************/#include <reg51.h>#define uint unsigned int#define uchar unsigned char//毫秒级延时函数void delay(uint x){uchar i;while(x--){for(i = 0;i < 120;i++);}}//字符发送函数void putchar(uchar data1){SBUF = data1; //将待发送的字符送入发送缓冲器while(!TI); //等待发送完成TI = 0; //发送中断标志请0}//字符串发送函数void putstring(uchar *dat){while(*dat != '\0') //判断字符串是否发送完毕{putchar(*dat); //发送单个字符dat++; //字符地址加1,指向先下一个字符 delay(5);}}//串口初始化函数void serial_init(){uchar c = 0;SCON = 0x50; //串口方式1 ,允许接收TMOD = 0x20; //T1工作于方式2PCON = 0x00; //波特率不倍增TL1 = 0xfd;TH1 = 0xfd; // 波特率设置为9600EA = 1; //开总中断ES = 1; //开串口接收中断}//主函数void main(){serial_init(); //串口初始化TR1 = 1; //定时器开启delay(200);putstring("Receiving from 8051...\r\n"); //串口向终端发送字符串,结尾处回车换行putstring("----------------------\r\n");delay(50);while(1);}//串口中断void revdata() interrupt 4{uchar temp;if(RI == 0) return; //如果没有接收中断标志,退出中断ES = 0; //关闭串口中断RI = 0; //清串行中断标志位temp = SBUF; //接收缓冲器中的字符putchar(temp); //将接收的字符发送出去ES = 1; //开启串口中断}仿真:。
虚拟串口以及在Proteus中的使用一,虚拟串口虚拟串口是计算机通过软件模拟的串口,当其它设计软件使用到串口的时候,可以通过调用虚拟串口仿真模拟,以查看所设计的正确性。
首先要安装虚拟串口设置的软件,网上有很多设置虚拟串口的软件,我用的是VSPD,可试用1个月,试用期过后,该软件将不能使用,但不用担心,所设置的虚拟串口不会消失,可以继续使用。
设置界面:我设置的是COM3和COM4,软件只能成对设置,主要是因为通信时,一方可以监视另一方,如果仅设置1个虚拟串口的话,如你用COM3发送接收数据,但发送了什么接收到什么,你无法验证其正确与来源。
这是人家编写软件的高明之处。
软件设置时将所设置的两个虚拟串口对接,这样就可实现发送与接收的监视。
从设备管理器中可以看到两个虚拟串口对接方式:这样可以用串口调试助手调试串口通信了,从下图可以看到COM3发送的数据到达了COM4的接收区域,COM4发送的数据到达了COM3的接收区域,从而实现了COM3与COM4之间的互联互通。
到这虚拟串口已经设置好,对其它设计软件而言,虚拟串口和普通串口没有区别,如串口调试助手对虚拟串口的使用和普通串口的使用方法一样。
二,虚拟串口在Proteus中的使用下一步介绍一下虚拟串口在Proteus中的使用,更准确的应该说是“串口在Proteus中的使用”,只不过我们用软件实现仿真,虚拟串口在这使用的比较频繁。
先在Proteus中将环境建立起来,很简单,先需要两个元器件就可以建立连接VIRTUAL TERMINAL和COMPIM,如图VIRTUAL TERMINAL的TXD与COMPIM的TXD相连,RXD 与RXD相连,后面有图分析为什么这样相连:VIRTUAL TERMINAL是串口监视仪器,可以通过它将数据线上的符合RS232协议的波形捕捉到,并显示出来,也可以往数据线上发送RS232协议的波形;COMPIM为串口元件,可设置占用计算机上哪一个串口,可以是“实际串口”,也可以是“虚拟串口”,对Proteus而言,是分不清虚拟串口还是实际串口的。
虚拟串口以及在Proteus中的使用一,虚拟串口虚拟串口是计算机通过软件模拟的串口,当其它设计软件使用到串口的时候,可以通过调用虚拟串口仿真模拟,以查看所设计的正确性。
首先要安装虚拟串口设置的软件,网上有很多设置虚拟串口的软件,我用的是VSPD,可试用1个月,试用期过后,该软件将不能使用,但不用担心,所设置的虚拟串口不会消失,可以继续使用。
设置界面:我设置的是COM3和COM4,软件只能成对设置,主要是因为通信时,一方可以监视另一方,如果仅设置1个虚拟串口的话,如你用COM3发送接收数据,但发送了什么接收到什么,你无法验证其正确与来源。
这是人家编写软件的高明之处。
软件设置时将所设置的两个虚拟串口对接,这样就可实现发送与接收的监视。
从设备管理器中可以看到两个虚拟串口对接方式:这样可以用串口调试助手调试串口通信了,从下图可以看到COM3发送的数据到达了COM4的接收区域,COM4发送的数据到达了COM3的接收区域,从而实现了COM3与COM4之间的互联互通。
到这虚拟串口已经设置好,对其它设计软件而言,虚拟串口和普通串口没有区别,如串口调试助手对虚拟串口的使用和普通串口的使用方法一样。
二,虚拟串口在Proteus中的使用下一步介绍一下虚拟串口在Proteus中的使用,更准确的应该说是“串口在Proteus中的使用”,只不过我们用软件实现仿真,虚拟串口在这使用的比较频繁。
先在Proteus中将环境建立起来,很简单,先需要两个元器件就可以建立连接VIRTUAL TERMINAL和COMPIM,如图VIRTUAL TERMINAL的TXD与COMPIM的TXD相连,RXD与RXD相连,后面有图分析为什么这样相连:VIRTUAL TERMINAL是串口监视仪器,可以通过它将数据线上的符合RS232协议的波形捕捉到,并显示出来,也可以往数据线上发送RS232协议的波形;COMPIM为串口元件,可设置占用计算机上哪一个串口,可以是“实际串口”,也可以是“虚拟串口”,对Proteus而言,是分不清虚拟串口还是实际串口的。
ERROR TXD 3RXD 2CTS 8RTS7DSR 6DTR 4DCD 1RI9P1COMPIMXTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52D 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCDLM016L先用Virtual serial port driver 在电脑上模拟出两个串口,且它们默认已相互连接。
本人模拟出的两个串口分别为COM1和COM2,它们可以在设备管理器里查看到。
如下图所示:不同电脑模拟出的虚拟串口可能不一样,但设置方法一样,即ProteusS 中的COMPIM 占用一个虚拟串口COM1,串口调试助手占用一个虚拟串口COM2,这样单片机就可以接收串口调试助手发来的数据,并显示在LCD 上。
Proteus 中的仿真串口COMPIM 的设置如下图:在“手动发送”右边的框中输入想要发送的字符,可以是10进制的数字,也可以是16进制的字符,字符源于LCD1602的字符库,如下图所示:在上图中,比如说,数字“1”对应0011 0001,即31H,“H”表示16进制数。
我们只需要在调试助手的发送框中输入31,然后将“16进制发送”选上勾,即可将数字“1”发送给单片机,单片机再将其显示在LCD上。
Labview及Protues软件环境下串口通讯的仿真方法Labview及Proteus 软件环境下单片机串口通讯的仿真方法介绍一种在纯软件环境的上下位机串口通讯的仿真方法。
通过虚拟串口软件VSPD XP ,在Labview 和Proteus 软件环境中,对走DS18b20温度采集电路的串口通信进行了联调,仿真运行的结果表明这一方法是可行的。
同时本文编制了该实例的上位机Labview 监控程序,设计了下位机的程序框图和Protues 硬件原理图。
这种方法的采用可以提高设计效率,降低设计成本,辅助开发者开发出价格低廉,功能专一的测控设备,具有很好的实用性。
言 0 引Labview 是美国国家仪器公司(NI 公司) 推出的专为数据采集、仪器控制、它是一个开放的开发环境, 具有PCI , 数据分析与数据表达的图形化编程环境, GPIB , PXI ,VXI ,RS232/ 485 ,USB 等各种仪器通讯总线标准的所有功能函数,开发者可以利用这些函数与不同总线标准接口的数据采集硬件交互工作。
但现实中的数据采集卡很多是利用美国NI 公司提供的专用数据采集卡,价格较贵,不利于普及Labview 软件测控的学习和应用。
Proteus 软件支持51 单片机,集程序编辑,原理图绘制和程序仿真于一体,它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路,具有电路互动仿真功能,通过动态外设模型,如键盘、开关、发光二极管、数码管、液晶和传感器、电机等,可实时显示单片机系统输入、输出结果;另外还配置了多种虚拟仪器如示波器、逻辑分析仪等方便对实验图形和数据的测量。
基于Labview 和Proteus 的特性,本文利用Proteus 仿真下位机运行,而Labview 实现上位机对下位机运行的监控,两软件采用虚拟串口进行RS232 串口通讯,在纯软件环境下,完成基于Labview 软件数据采集系统的组建。
这种方法成本低,效率高,可以方便地应用到测控技术的学习和设计中。
用Proteus学习51单片机之串口
串口的理论知识我就不记了,网上多的是。
51单片机的串口,有4种方式,分别为方式0,方式1,方式2,方式3.由于我的目的,使用串口主要是为了和电脑进行通信,所以主要使用方式1(事实上我也只学了方式1,其他方式等用到的时候再学吧)。
串口的方式1,其波特率与定时器T1相关,公式如下:
方式1波特率=(2SMOD×32)/(T1溢出率)
SMOD是一个寄存器,一般我们就取0了
T1的溢出率,即每秒T1计数满几次(相关知识可以看看前面笔记的记录) 正是因为如上的公式,所以设置TH1和TL1的初值,就能控制方式1
的波特率了。
不过一般波特率是固定的那么几种,像2400,4800和9600等,要用的时候查一下初值就成了。
由于用的是Proteus来模拟串口(我的笔记本电脑根本没串口),所以需要一个虚拟串口的软件。
推荐使用的是VisualSerialPortDriver,用起来非常的简单,直接点击AddPair就成了,会自动增加一对串口,模拟的时候,分别连接这两个端口就成。
添加好后,可以把这个程序关闭,端口仍旧可以使用。
要说一下的是,这软件是一个收费软件(能免费使用14天),所以,如果只想学习一下串口的话,我们就自私一下吧,不购买了,直接使用一个控制软件时间的软件(比如RunAsDate),让程序以为时间一直没变,就能一直试用了……
要试验一下Proteus是否可以进行串口连接,可以直接打开安装目录下
的\SAMPLES\InteractiveSimulation\COMPIMDemo,设置好波特率等参数后,
使用“串口调试助手”,向Proteus发送数据,看看能否接收到。
0引言串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。
就单片机来说,这种通信方式是实现与PC 机、智能仪器仪表连接的重要手段,常见的通信标准有RS232和RS485,其中RS232有三线制接法和九线制接法,RS-485接口则是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好,这两种方式因接线简单,通信协议灵活而得到广泛的应用[1-2]。
1Proteus 虚拟串口Proteus 软件是英国Lab Center Electronics 公司出版的EDA 工具软件,它不仅具有其它EDA 工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前比较好的仿真单片机及外围器件的工具,是目前世界上唯一将电路仿真软件、PCB 设计软件和虚拟模型仿真软件三合一的设计平台[3-4]。
通常情况下,虚拟仿真系统是不能与物理环境交互通信的,但是Proteus 虚拟系统模拟了这种功能,它使Proteus 仿真环境下的系统能与实际的物理环境直接交互,Proteus 的COMPIM 组件是一种串行接口组件,当由CPU 或UART 软件生成的数字信号出现在PC 物理COM 接口时,它能缓冲所接收的数据,并将它们以数字信号的形式发送给Proteus 仿真电路,如果不使用物理串口而使用虚拟串口,使用串口调试助手软件能与Proteus 单片机串口直接交互,此时需要安装虚拟串口驱动软件VSPD 。
2仿真实例选用AT89C52型号单片机,运行在PC 机中的串口调试软件,实现单片机与PC 机双向通信。
2.1硬件电路设计2.1.1安装虚拟串口驱动程序VSPD 并运行在First port 中选择COM3,在Second port 中选择COM4,单击“Add Pair ”按钮,这两个端口立即出现在左边的Virtual Ports 分支下,且用蓝色虚线将它们连接起来,在PC 的设备管理器中,也会出现两个串口的显示[5-6]。
巧用电脑虚拟串口软件调试串口通信殷建彬朱前华笔者在试用Proteus这个软件的时候,在Labcenter Electronics\Proteus 6 Demonstration\SAMPLES\目录下看到COMPIM Demo这个例子,电路图如图1所示。
它用虚拟串口物理模型(左侧的P1)和一个虚拟终端(右侧的VT1)通信。
在使用这个例子的时候,笔者准备使用一个串口调试软件sscom32来检验一下,发现需要把电脑的两个串口连接起来,并且要串口2、3脚颠倒使用,当时手头没有这样的连线,也就没有进行这个试验。
后来有一天突然想到软驱、光驱、打印机甚至PC都能虚拟,串口也应该可以吧?功夫不负有心人,终于在一个外国的网站上找到一个虚拟串口软件――Virtual Serial Ports kit。
虚拟串口的使用Virtual Serial Ports kit在它的官方网站上下载到的最新版本是4.72,可惜只有15天的试用期。
下载解压后点击setup.exe进行安装,安装的时候,要求你同意它的协议才能继续安装。
然后一路“NEXT”,就可以安装成功了!安装完毕点击桌面上的图标,出现图2所示的界面。
点击工具栏的图标,出现了如图3所示的对话框,这是让我们设置虚拟串口的。
一般来说,电脑硬件上已经设置串口COM1和COM2,所以我们可以把虚拟串口设置成COM3和COM4,让这两个串口通讯,点击“OK”按钮,这个时候软件的界面变成了如图4所示的界面了。
如果发现工具栏上按钮是灰色,还需要点击一下,使它变成绿色,这意味着两个串口可以正常通信了。
笔者先试验了一下这个软件。
同时运行两个sscom32软件,既双击sscom32图标两次,软件的界面如图5所示。
点击左侧串口选择下拉箭头,如图6,把运行的两个sscom32的串口分别设置为COM3和COM4(要和虚拟串口软件的一致。
)点击“打开串口”按钮,打开两个串口,使“打开串口”前面的指示灯变为红色。
先上图:实验程序:/******************************************************************** ************** 【编写时间】: 2016年6月17日* 【作者】:小瓶子* 【实验平台】: Proteus 7* 【外部晶振】: 11.0592mhz* 【主控芯片】: STC89C51* 【编译环境】: Keil μVisio4* 【程序功能】:在虚拟终端发送8个字符,通过数码管和虚拟* 终端显示出来,8个字符发送完毕,显示发送完毕********************************************************************* *************/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar bufr[]="------\r\n";//存放接收数据uchar *prx=&bufr;//接收指针bit str; //接收完毕标志位//段码uchar code leddata[]={0xC0, //"0"0xF9, //"1"0xA4, //"2"0xB0, //"3"0x99, //"4"0x92, //"5"0x82, //"6"0xF8, //"7"0x80, //"8"0x90, //"9"0x88, //"A"0x83, //"B"0xC6, //"C"0xA1, //"D"0x86, //"E"0x8E, //"F"0x89, //"H"0xC7, //"L"0xC8, //"n"0xC1, //"u"0x8C, //"P"0xA3, //"o"0xBF, //"-"0xFF, //熄灭0xFF //自定义};//延时函数void delay( uint i){uint m,n;for(m=i;m>0;m--)for(n=90;n>0;n--);}//数码管显示函数void led_display(){uchar i;P2 = 0x01;for(i=0;i<8;i++){P0=0xff;P2 = _cror_(P2,1);P0 = leddata[bufr[i]-'0'];delay(2);}}//字符发送函数void putchar(uchar data1){SBUF = data1; //将待发送的字符送入发送缓冲器while(!TI); //等待发送完成TI = 0; //发送中断标志请0}//字符串发送函数void putstring(uchar *dat){while(*dat != '\0') //判断字符串是否发送完毕{putchar(*dat); //发送单个字符dat++; //字符地址加1,指向先下一个字符delay(5);}}//串口初始化函数void serial_init(){TMOD = 0x20; //定时器工作方式2SCON = 0x50; //串行口工作方式2PCON = 0x80; //SMOD = 1,波特率加倍TH1 = 0xfa;TL1 = 0xfa; //波特率设置9600ES = 1;EA = 1;//开总中断}void main(){serial_init();TR1 = 1;putstring("Receiving from 8051...\r\n");putstring("----------------------\r\n");delay(50);while(!str);//等待接收完毕while(1){P0=0xff;while(!str);led_display();}}void serial() interrupt 4{if(RI!=1) return;//判断是否接收{str = 0;ES = 0;*prx = SBUF; //接收存放数据putchar(*prx);RI = 0;prx++; //指针自加if(*prx=='\0') //是否接收完成{prx = &bufr;//指针初始化str = 1; //标志位置1putstring("\r\n");putstring("translate over!\r\n");ES = 1;return;}ES = 1;return; //退出中断}}仿真原理图:。
利用“串口调试助手”等软件调试 PROTEUS 环境中 51单片机的串行通信在前面的博文“利用 PROTEUS 软件调试串口通信最简单实用的方法”中,做而论道介绍了利用 Virtual Terminal(虚拟终端)调试串口通信的方法。
但是 Virtual Terminal 有一定的局限性,只是适合于调试使用键盘输入少量数据的情况。
如果是需要利用 PC 机器的串行口,和其它的软件进行串行通信,Virtual Terminal 就办不到了。
下面,做而论道将介绍两种另外两种仿真调试串口通信的方法。
1、利用 COMPIM 组件在 PROTEUS 软件中,可以找到一个 COMPIM 组件,它的图形、以及默认属性可见下图:把 COMPIM 放在仿真电路图中,当仿真运行起来之后,送到 COMPIM 3 号引脚的串行数据,将会通过 PC 机的 COM1 串行口输出,如果在 PC 机的 COM1 串行口外接一条电缆,可将串行数据送到其它的硬件设备上。
同样道理,其它的硬件设备送到 PC 机的 COM1 的串行数据,也会在 COMPIM 的2号引脚出现,送到仿真电路里面。
COMPIM 组件内部,自带 RS-232 和 TTL 的电平转换功能,因此不需要再使用电平转换芯片。
利用 COMPIM,就可以用一台 PC 机,仿真带有串行口的单片机系统,通过外接的电缆,和另外一台 PC 机进行全双工的串行通信。
十分轻松的就实现了对远程测量、控制系统进行仿真调试。
2、利用 Virtual Serial Port Driver 软件上述的调试方法,可以说是很完备的了,但是还是必须在两个串行口之间连接一条串行通信电缆。
为了省去这条电缆,就应该看看虚拟串口软件。
Virtual Serial Port Driver 软件可以为 PC 机增加一些两两连接的虚拟串行口。
该软件运行起来如下图所示:在图中可以看到,COM1、COM2 就是“一对连接好虚拟串行口”;PC 机原来就有的实际的串行口,称为物理串行口,为 COM3。
一,虚拟串口
虚拟串口是计算机通过软件模拟的串口,当其它设计软件使用到串口的时候,可以通过调用虚拟串口仿真模拟,以查看所设计的正确性。
首先要安装虚拟串口设置的软件,网上有很多设置虚拟串口的软件,我用的是VSPD,可试用1个月,试用期过后,该软件将不能使用,但不用担心,所设置的虚拟串口不会消失,可以继续使用。
设置界面:
我设置的是COM3和COM4,软件只能成对设置,主要是因为通信时,一方可以监视另一方,如果仅设置1个虚拟串口的话,如你用COM3发送接收数据,但发送了什么接收到什么,你无法验证其正确与来源。
这是人家编写软件的
高明之处。
软件设置时将所设置的两个虚拟串口对接,这样就可实现发送与接收的监视。
从设备管理器中可以看到
两个虚拟串口对接方式:
这样可以用串口调试助手调试串口通信了,从下图可以看到COM3发送的数据到达了COM4的接收区域,COM4发送的数据到达了COM3的接收区域,从而实现了COM3与COM4之间的互联互通。
到这虚拟串口已经设置好,对其它设计软件而言,虚拟串口和普通串口没有区别,如串口调试助手对虚拟串口的使用和普通串口的使用方法一样。
二,虚拟串口在Proteus中的使用
下一步介绍一下虚拟串口在Proteus中的使用,更准确的应该说是“串口在Proteus中的使用”,只不过我们用软件实现仿真,虚拟串口在这使用的比较频繁。
先在Proteus中将环境建立起来,很简单,先需要两个元器件就可以建立连接VIRTUAL TERMINAL和COMPIM,如图VIRTUAL TERMINAL的TXD与COMPIM 的TXD相连,RXD与RXD相连,后面有图分析为什么这样相连:
VIRTUAL TERMINAL是串口监视仪器,可以通过它将数据线上的符合RS232协议的波形捕捉到,并显示出来,也可以往数据线上发送RS232协议的波形;COMPIM为串口元件,可设置占用计算机上哪一个串口,可以是“实际串口”,也可以是“虚拟串口”,对Proteus而言,是分不清虚拟串口还是实际串口的。
下一步就要设置通信速率以及通信格式了,在属性框中实现设置相同的就行了。
这样就可实现数据的通信了。
图为本人的VIRTUAL TERMINAL和COMPIM的设置:
下一步就是实现Proteus与串口调试助手之间的通信了。
在VIRTUAL TERMINAL中可直接键盘输入想要发送的数据,但界面中无任何显示,可以通过串口调试助手看到相应的输入数据。
这样的的话即实现数据从Proteus中传送到串口调试助手中了,其相应的数据流向关系为
现在大家知道为什么在Proteus中VIRTUAL TERMINAL的TXD与COMPIM 的TXD相连接,而RXD与RXD相连接的原因了吧。
三,在Proteus中实现单片机的串口调试功能
这个做起来就比较简单了,我编写了一个工作在9600bps的8051的串口程序,程序的功能就是将串口接收到的数据发送出来,Proteus中的连线为:
数据传输的图示为:
这样就模拟实现了单片机与串口之间的通信,可以实现两者之间的仿真设计。
同样实现该通信的数据流为:。