|
我想串口發(fā)送20,數(shù)碼管就可以顯示20,但是現(xiàn)在它顯示的是32,求各位大佬指導(dǎo)代碼,代碼如下:
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) //延時(shí)子函數(shù)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(uint i) //顯示子函數(shù)
{
uchar sb,ss,sg;
sb=i/100; //分離數(shù)的百位
ss=i%100/10; //分離數(shù)的十位
sg=i%10; //分離數(shù)的個(gè)位
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) //定時(shí)器初始化(設(shè)置波特率)
{
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);
}
}
|
|