100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Proteus的51单片机串口通信

Proteus的51单片机串口通信

时间:2023-05-16 15:24:54

相关推荐

Proteus的51单片机串口通信

首先需要在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 <reg52.h> #define uchar unsigned charuchar 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 为方式2TH1=0xfd; //装入初值 对应波特率9600TL1=0xfd; TR1=1; //启动定时器1 EA=1; // 打开总中断开关ES=1; // 打开串口中断开关 }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。