找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机串口+数码管显示程序问题

[复制链接]
ID:509085 发表于 2020-5-12 23:26 | 显示全部楼层 |阅读模式
我想串口发送20,数码管就可以显示20,但是现在它显示的是32,求各位大佬指导代码,代码如下:
12M晶振,波特率1200.
#include<reg51.h>

#define  uchar unsigned char        //定义变量
#define  uint  unsigned int
uchar  sb,ss,sg;

uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x807F,0x6F};        //0~F字模




void delay(uint z)          //延时子函数
{
        uint x,y;
        for(x=z;x>0;x--)
          for(y=110;y>0;y--);
}



       void display(uint i)          //显示子函数
{
        uchar sb,ss,sg;

        sb=i/100;                         //分离数的百位
        ss=i%100/10;                 //分离数的十位
        sg=i%10;                     //分离数的个位


        P0=table[sb];
        P1=0x08;                  
        delay(5);
        P0=table[ss];         
        P1=0x04;                  
        delay(5);
        P0=table[sg];
        P1=0x02;                 
        delay(5);




}

void        Init_Uart(void)                 //定时器初始化(设置波特率)
{
        TMOD = 0x20;
        TH1 = 0xE6;
        TL1 = 0xE6;
        TR1 = 1;
        SCON = 0x50;
        PCON = 0;
        EA = 1;
}

void main(void)
{
        uchar i   ;
        Init_Uart();
        while(1)
                {

                        if(RI==1)      
                   {
                        RI = 0;
                        i = SBUF;

                        
                        }
                        else  display(i);                       

                }
}


回复

使用道具 举报

ID:213173 发表于 2020-5-13 05:29 | 显示全部楼层
串口在HEX模式下发送20是16进制0x20,转换成10进制当然是32。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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