51单片机学习笔记(五)_VSPD+Proteus+串口调试工具+Keil C51实现单片机串口通信仿真

【若有疑问错误或版权等问题请联系我】

【转载请注明出处:http://blog.csdn.net/leytton/article/details/35572631


1、效果图

51单片机学习笔记(五)_VSPD+Proteus+串口调试工具+Keil C51实现单片机串口通信仿真_第1张图片


2、虚拟串口

通过VSPD虚拟串口工具虚拟出两个串口用于通信

VSPD虚拟串口工具下载:http://download.csdn.net/detail/leytton/7565589

51单片机学习笔记(五)_VSPD+Proteus+串口调试工具+Keil C51实现单片机串口通信仿真_第2张图片


3、串口调试

打开两份串口调试工具个打开com1,二个打开com2,这时在任一串口调试工具发送信息,另一个串口调试工具中能接收到信息

串口调试工具下载:http://download.csdn.net/detail/leytton/7565561

51单片机学习笔记(五)_VSPD+Proteus+串口调试工具+Keil C51实现单片机串口通信仿真_第3张图片


4、Proteus电路设计图

P1串口:属性原件值COMPIM,Physical port为com2,Physical Baud rate为9600 

虚拟终端(Virtual Terminal):接RXD接口的虚拟终端显示单片机通过com2接收到的信息,接TXD接口的虚拟终端显示单片机传出的信息。


51单片机学习笔记(五)_VSPD+Proteus+串口调试工具+Keil C51实现单片机串口通信仿真_第4张图片

5、51单片机程序代码

#include <reg52.h>

void init();
void main(){
 unsigned char temp=0xff;
 init();
 while(1){
    if(RI){     //RI=1,判定为串口接收到了数据,RI要清零,
         RI=0;   
         temp=SBUF;  
     }else{
	  P1=temp; 
     }
 }
}
void init(){
 TMOD=0x20;   //设置T1工作方式为方式2
 TH1=0xfd; //给定时器高位装初值
 TL1=0xfd; //给定时器低位装初值
 TR1=1;  //开定时器
             //以上是设置波特率
 SM0=0;  //设置串口通讯方式为方式1
 SM1=1;  
 REN=1;  //串口是否接收数据的开关
}

6、运行

串口调试工具接com1口发送的数据,可在接RXD的虚拟终端显示;
但是单片机基本没反应,因为我写的代码是通过信息来控制灯亮灭,而信息格式不合法。
改进:在串口调试工具勾选“按十六进制发送”,虚拟终端勾选“Hex Display Mode”,发送“0”则灯全亮,发送“fe”则灯P1.0亮。


参考文章

1.Win7下虚拟串口 http://blog.sina.com.cn/s/blog_6163bdeb0102e8iy.html

2.利用Proteus,Serialnull,VB模拟串口通信的简单例子 http://hi.baidu.com/puda2007/item/2b2a53f33eb38e2f753c4c60 

3.Proteus通过虚拟串口程序仿真51单片机串口的实现 http://blog.sina.com.cn/s/blog_574d08530100hk8s.html

你可能感兴趣的:(单片机,串口通信,proteus,虚拟串口,串口调试工具)