标题: 单片机串口+数码管显示程序问题 [打印本页]

作者: wsxwsx    时间: 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);                       

                }
}



作者: wulin    时间: 2020-5-13 05:29
串口在HEX模式下发送20是16进制0x20,转换成10进制当然是32。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1