问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Proteus 8.15和51单片机的UART串口通讯点亮LED

创作时间:
作者:
@小白创作中心

Proteus 8.15和51单片机的UART串口通讯点亮LED

引用
CSDN
1.
https://blog.csdn.net/zhenxixianzai00/article/details/137967170

本文将详细介绍如何使用Proteus 8.15仿真51单片机与电脑端上位机的UART串口通讯。通过这个实验,你可以实现上位机发送数字来控制LED灯的点亮,如果不是数值1-8蜂鸣器就会报警,同时将发送的数值进行回传。

1. 电路连接

1.1 整体电路连接

其中的时钟和复位电路可以不需要连接也可以使用。其中51单片机的RXD需要和COMPIM的RXT相连接,TXD与TXD连接。

1.2 元器件载入

在侧边栏找到元件图标,在搜索栏输入AT89得到51芯片,其他元器件的名字为:10WATT10R-电阻,02013A0R5CAT2A-电容,BUTTON-按键,BUZZER-蜂鸣器,COMPIM-计算机接口,CRYSTAY-晶振,LED-灯,PNP-三极管。

虚拟终端在侧边栏的虚拟仪器模式里面的VIRTUAL TERMINAL。

1.3 设置51单片机程序和频率

在程序文件中选择keil编译的.hex文件,设置频率的时候要注意单位。因为通信使用9600的波特率,所以设置频率为11.0592MHz,如果加了外部晶振也不要忘记设置频率。

1.3 设置虚拟终端和计算机接口的终端

双击虚拟终端配置波特率为9600,设置数据位数为8位,截止位1位,计算机接口也要进行配置。

2. 程序部分

2.1 串口初始化

配置波特率率为9600,允许串口中断。

//设置波特率9600
SCON=0x50;           //设定串口工作方式
PCON=0x00;           //波特率不倍增

TMOD=0x20;           //定时器1工作于8位自动重载模式, 用于产生波特率
EA=1;
ES = 1;              //允许串口中断
TL1=0xfd;
TH1=0xfd;             //波特率9600
TR1=1;  

2.2 发送数据

u8 UART_Receive_Data()
{
    u8 temp;
    while(!RI);//等待串口接收到数据(RI被置1)
    temp=SBUF;
    RI=0;//清空接收中断标志位,为下次接收做准备
    return temp;
}  

2.3 串口中断程序

void serial() interrupt 4 
{
   ES = 0;                //关闭串行中断
   RI = 0;                //清除串行接受标志位
   buf = SBUF;            //从串口缓冲区取得数据
   UART_Send_Data(SBUF);//将数据发回电脑

  switch(buf)
   {
      case 0x31:  P1=0xfe;beep=1;break;  //接受到1,第一个LED亮         
      case 0x32:  P1=0xfd;beep=1;break;  //接受到2,第二个LED亮        
      case 0x33:  P1=0xfb;beep=1;break;  //接受到3,第三个LED亮        
      case 0x34:  P1=0xf7;beep=1;break;  //接受到4,第四个LED亮       
      case 0x35:  P1=0xef;beep=1;break;  //接受到5,第五个LED亮            
      case 0x36:  P1=0xdf;beep=1;break;  //接受到6,第六个LED亮                   
      case 0x37:  P1=0xbf;beep=1;break;  //接受到7,第七个LED亮
      case 0x38:  P1=0x7f;beep=1;break;  //接受到8,第八个LED亮
      default:    beep=0;P1=0xff;break;  //接受到其它数据,蜂鸣器响         
   }
   ES = 1;    //允许串口中断
}  

3. 虚拟串口驱动

使用Virtual Serial Port Driver 6.9来配置虚拟串口,将Proteus里面的计算机接口和你的电脑进行连接。因为我已经添加了COM1和COM2两个虚拟端口,所以添加那里自动变成了COM5和COM6,而前面的COM3和COM4是电脑自带的端口。可以看到Virtual ports下面的COM2有一个后缀[9600-N-8-1],那是因为我打开了串口调试助手连接COM2后就会自动显示。

配置Proteus里面的计算机接口连接COM1。

4. 实验结果

当我们使用串口调试助手发送数字2时,第二个LED亮起,并且回传了一个数值2。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号