Proteus通过虚拟串口程序仿真51单片机串口的实现
扫描二维码
随时随地手机看文章
1.参考文章下载地址:http://download.csdn.net/source/1927624
2.虚拟串口
3.串口调试助手
4.Proteus 7.5 sp3
实现方法
1.参考文章(参考文章是从CSDN下载的一篇PDF文件)已经很详细的说明了怎么实现,我就不想啰嗦了,我只提供几个关键的截图和串口调试程序代码
如果参考文章打不开我提供参考文章的下载连接
2.提供Proteus的连线图如下:(值得注意的是单片机的RXD和TXD分别和串口的RXD和TXD一一对应相连,这和用Proteus的虚拟终端给串口输入信号时,单片机和串口的连接方式是不一样的,用Proteus的虚拟终端作为串口输入信号的时候单片机的RXD和串口的TXD相连,是交错连接的)
注意:1.51单片机的晶振频率我设置的是11.0592MHz,单片机载入的program file可以是HEX,也可以是BIN
2.SCMR表示单片机接收到的内容,SCMT代表单片机发送出去的内容
3.我的串口设置如下图(主要设置波特率,这里是9600)
4.我的虚拟串口程序的抓图如下
6.我串口调试工具的截图如下:
7.最后附上串口调试所使用到的程序代码(只写了输入调试的程序)
#include
void init();
void main()
{
init();
while(1)
{
while(!RI);//RI=1,判定为串口接收到了数据,RI要清零,
RI=0;//否则就会进入中断,如果没接收数据就一直在while循环
P1=SBUF;//如果介绍到数据就点亮第一个发光二极管
}
}
void init()
{
TMOD=0x20;//设置T1工作方式为方式2
TH1=0xfd;//给定时器高位装初值
TL1=0xfd;//给定时器低位装初值
TR1=1;//开定时器
//以上是设置波特率
SM0=0;//设置串口通讯方式为方式1
SM1=1;
REN=1;//串口是否接收数据的开关
}
8.最后提供一张调试成功的截图