找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2980|回复: 4
收起左侧

关于单片机与上位机的通信系统设计的问题

[复制链接]
ID:196066 发表于 2017-5-3 16:03 | 显示全部楼层 |阅读模式
我们本次的作业是怎么用上位机通过串口操作控制单片机模块控制八个发光二极管的发光状态。
我是在单片机贴吧看的一个大神给出的答案,然后自己加工了一下,可是没法控制P2口的明灭
这是我的proteus图:
QQ截图20170503155852.png
这是程序图:
#include<reg51.h>
#define         uchar  unsigned char
uchar num=0;
void delayms(int z)
{
         int x,y;
        for(x=z;x>0;x--)
         for(y=110;y>0;y--);
}
void Uart_init()
{
        SCON=0xd0;          //SM1=1  REN=1
        TMOD=0x20;          //D5=1 D4=0 即M1=1 M0=0
        TH1=0xfd;         //TH1=0XFD TL1=0XFD 将波特率设为9600
        TL1=0xfd;
        TR1=1;        //启动定时器1
        ES=1;                //打开串口中断
        EA=1;        //打开总中断
}
void main()
{
        Uart_init();
        while(1);
}         
void interrupt_uart() interrupt 4                //串口中断优先等级为4
{
        if(TI)
        {
                 TI=0;
                 REN=1;   //不发送时允许接收        
        }
        if(RI)
        {
                 RI=0;     //先把接收标志位清零
                num=SBUF;  //把数据送给SBUF
                P2=num;
                num++;
                SBUF=num;  //SBUF再接收加1以后的数据
                REN=0;     //发送时不允许接收
                        
        }
}

可是还是没法通过串口调试助手发送指令控制二极管发光
PS:波特率,COM之类的都没问题
回复

使用道具 举报

ID:82765 发表于 2017-5-3 16:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ID:196125 发表于 2017-5-3 17:15 | 显示全部楼层
你这个能查看串口调试工具发送的数据的吗?
回复

使用道具 举报

ID:18297 发表于 2017-5-3 19:37 | 显示全部楼层
1、可以如图连接电路图并在proteus中选择波特率9600;
2、串口调试程序中需要选择十六进制发送;
3、经过仿真软件可以和串口通讯:功能为P2口输出输入的十六进制数值,并返回数值加1;
123.jpg
回复

使用道具 举报

ID:7485 发表于 2017-5-3 19:57 | 显示全部楼层
               RI=0;     //先把接收标志位清零
                num=SBUF;  //把数据送给SBUF    这是接收的语句  
                P2=num;
                num++;
                SBUF=num;  //SBUF再接收加1以后的数据   这是向外发送语句
            REN=0;     //发送时不允许接收

电脑上用的是什么串口工具?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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