找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2081|回复: 1
收起左侧

单片机串口通讯控制LED亮灭的Proteus仿真怎么做?程序+实物已经完成了

[复制链接]
ID:514335 发表于 2019-4-20 18:58 | 显示全部楼层 |阅读模式
代码如下,功能是PC发送一个1到8的数字,控制LED一到八亮,程序应该没问题,已经在开发板上试过了,但是仿真原理图不会做,尝试了几次,不知是缺少部件,还是波特率有问题,总之调试不出来,请教各位大神,帮帮小弟。
下图是胡乱做的仿真图,以及我用的虚拟串口和串口助手。
QQ截图20190420185432.png QQ截图20190420185459.png

单片机源程序如下:
#include <REGX51.H>
#define uint unsigned int
#define uchar unsigned char
uchar i;
sbit led0=P2^0;
sbit led1=P2^1;
sbit led2=P2^2;
sbit led3=P2^3;
sbit led4=P2^4;
sbit led5=P2^5;
sbit led6=P2^6;
sbit led7=P2^7;
void uart_init() //串口初始化函数
{
        TMOD=0x20;         //设置计数器工作方式2
        TH1=0xF3;         //计数器初始值设置,注意波特率是4800
        TL1=0xF3;
        PCON=0x80;         //波特率加倍
        TR1=1;                 //打开计数器
        SCON=0x50;         //设置为工作方式1
        ES=1;                 //打开接收中断
        EA=1;                 //打开总中断
}
void uart() interrupt 4
{
        uchar receiveData;
        i=SBUF;                  
                switch(i)
        {
                case '1':led0=0;break;
                case '2':led1=0;break;
                case '3':led2=0;break;
                case '4':led3=0;break;
                case '5':led4=0;break;
                case '6':led5=0;break;
                case '7':led6=0;break;
                case '8':led7=0;break;
                default:P2=0XFF;break;
        }
//        if(i=='0') led0=0;
//        else if(i=='1') led1=0;
//        else if(i=='2') led2=0;
//        else if(i=='3') led3=0;
//        else if(i=='4') led4=0;
//        else if(i=='5') led5=0;
//        else if(i=='6') led6=0;
//        else if(i=='7') led7=0;
//        else if(i=='8') P2=0xff;
        receiveData=SBUF;        //出去接收到的数据
        RI=0;                            //清除接收中断标志位
        SBUF=receiveData;   //将接收到的数据放入到发送寄存器
        while(!TI);                    //等待发送数据完成
        TI=0;                            //清除发送完成标志位
}
void main()
{
          uart_init();        //串口初始化
          while(1);
}

回复

使用道具 举报

ID:96682 发表于 2019-4-21 02:54 | 显示全部楼层
串口与单片机的 RXD TXD 需交叉连接才能通讯
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表