首先需要在Proteus中将环境建立起来。我这里使用的版本是8.8。
利用两个元器件就可以建立VIRTUAL TERMINAL和COMPIM的连接。如上图所示,两个VIRTUAL TERMINAL的RXD与COMPIM的RXD与TXD相连。单片机的RXD与TXD与COMPIM的TXD与RXD对应相连接。
VIRTUAL TERMINAL是串口监视仪器,可以通过它将数据线上的符合RS232协议的波形捕捉到,并显示出来,也可以往数据线上发送RS232协议的波形;COMPIM为串口元件,可设置占用计算机上哪一个串口。然后就要设置通信速率以及通信格式了,在属性框中实现设置相同的就行了。这样就可实现数据的通信了。下图为VIRTUAL TERMINAL和COMPIM的设置。
接下来要安装虚拟串口。运行虚拟串口程序,配置虚拟串口,这里我增加COM2,COM4两个虚拟串口。
增加之后,左边会出现COM2,COM4,并且在设备管理器的端口中也可以看到这两个相互连接的端口,此时我们的虚拟串口就配置好了。
之后可以打开串口调试助手调试测试串口是否正常工作。打开两个串口调试助手窗口,一个将端口设置为COM2,另一个将端口设置为COM4,相互之间发送信息。信息接收正常,则表示虚拟串口已经可以正常工作了。
然后将Proteus中晶振的频率与单片机的频率设置为11.0592MHz。
在导入相应的hex文件后点击运行仿真。此时Proteus的单片机串口为COM2,设置串口调试助手为COM4。以16进制的发送方式发送AA,则可点亮相应的LED灯。虚拟终端在十六进制的显示下也可接收到。
测试代码:/*控制LED的亮灭*/
#include
#define uchar unsigned char
uchar a;
void uart_init();
void main()
{
uart_init();
while(1) {
}
}
void serial() interrupt 4 // 串口中断服务函数
{
if(RI)
{
a=SBUF; // 读出接收到的数据
RI=0; // 清零接收标志位
P0=a; //将接受到的数据给P0端口
}
}
void uart_init()
{
SCON = 0x50;//配置SM0/1,并允许接收
TMOD=0x20; // 设置定时器1 为方式2
TH1=0xfd; //装入初值 对应波特率9600
TL1=0xfd;
TR1=1; //启动定时器1
EA=1; // 打开总中断开关
ES=1; // 打开串口中断开关
}