目前本人能做到让两位数码管正常显示,例如发送1234,数码管正常显示xx34。但是无法做到让4位数码管显示。
所以想请教下怎么做到,甚至输入任意8位数都能在数码管显示。下面附代码。
#include<reg52.h>
#define uc unsigned char
#define ui unsigned int
sbit duan=P2^6;
sbit wei=P2^7;
uc code table[]= //代码表
{
/*0 1 2 3*/
0x3f,0x06,0x5b,0x4f,
/*4 5 6 7*/
0x66,0x6d,0x7d,0x07,
/*8 9 A B*/
0x7f,0x6f,0x77,0x7c,
/*C D E F 不显示*/
0x39,0x5e,0x79,0x71,0
};
ui a;
uc qian,bai,shi,ge;
void delay(uc z)
{
uc x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
void init()
{
TMOD=0x20; //设置定时器1 工作方式2:八位自动重装
TH1=0xfd; //波特率9600bps/s
TL1=0xfd; //
TR1=1;
REN=1; //允许接收
SM1=1; //设置串口工作方式1:10位异步
通信
SM0=0; //
EA=1;
ES=1;
}
void main()
{
init();
while(1)
{
qian=a/0x1000;
bai=a%0x1000/0x100;
shi=a%0x1000%0x100/0x10;
ge=a%0x1000%0x100%0x10;
P0=0xff;
wei=1;
P0=0xfe;
wei=0;
duan=1;
P0=table[qian];
duan=0;
delay(5);
P0=0xff;
wei=1;
P0=0xfd;
wei=0;
duan=1;
P0=table[bai];
duan=0;
delay(5);
P0=0xff;
wei=1;
P0=0xfb;
wei=0;
duan=1;
P0=table[shi];
duan=0;
delay(5);
P0=0xff;
wei=1;
P0=0xf7;
wei=0;
duan=1;
P0=table[ge];
duan=0;
delay(5);
}
}
void uart() interrupt 4
{
if(RI)
{
a=SBUF; //
单片机从缓冲区取出接收到的数据a
RI=0;
SBUF=a; //单片机把数据a送到缓冲区 即发送数据给上位机
while(!
ti);
TI=0;
}
}
需要将数据一位一位的发送
一周热门 更多>