为什么我的数码管是一位一位显示的,求大佬帮忙,我是逻辑哪里错误了吗?
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
char code map[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};
//共阴数码管段位显示
sbit duan=P0^0; //段显示寄存器位
sbit wei=P0^1; //选择数码管位
sbit shiwei=P1^0; //时位调整
sbit fenwei=P1^1; //分位调整
sbit miaowei=P1^2; //秒位调整
unsigned int t;
uchar shige,shi,fenge,fen,miaoge,miao;
void delay(uint t)
{
int i,j;
for(i=t;i>0;i++)
{
for(j=30;j>0;j--);
}
}
void main()
{
P1=0x00;
duan=1;
duan=0;
P1=0xff;
wei=1;
wei=0;
//数码管初始化
TH0=(65536-50000)/256;
TH1=(65536-50000)%256;
TMOD=0x01;
TR0=1;
ET0=1;
EA=1;
//计时中断设置,选择定时模式0,TR0置1,开中断
while(1)//扫描按键
{
display(shige,shi,fenge,fen,miaoge,miao);
};
shige=shi/10;
fenge=fen/10;
miaoge=miao/10;
display(shige,shi,fenge,fen,miaoge,miao);
}
void time interrupt 1 //中断正常计时
{
int num;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num==20)
{
miao++;
num=0;
if(miao==60)
{
fen++;
miao=0;
if(fen==60)
{
shi++;
fen=0;
if(shi==0)
{s=0;}
}
}
}
}
void display(uchar a0,uchar a1,uchar a2,uchar a3,uchar a4,uchar a5)
{
P1=map[a0];
duan=1;
duan=0;
P1=0x01;
wei=1;
wei=0;
delay(10);
delay(5);
P1=map[a1];
duan=1;
duan=0;
P1=0x02;
wei=1;
wei=0;
delay(10);
delay(5);
P1=map[a2];
duan=1;
duan=0;
P1=0x04;
wei=1;
wei=0;
delay(10);
delay(5);
P1=map[a3];
duan=1;
duan=0;
P1=0x08;
wei=1;
wei=0;
delay(10);
delay(5);
P1=map[a4];
duan=1;
duan=0;
P1=0x10;
wei=1;
wei=0;
delay(10);
delay(5);
P1=map[a5];
duan=1;
duan=0;
P1=0x20;
wei=1;
wei=0;
delay(10);
delay(5);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论