大神们求指教
我用74hc573驱动数码管做一个时钟显示时分秒
仿真后数码管从右往左依次显示0,最后停在最左边数码管上,常亮并且显示0
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit P3_1=P3^1;
sbit P3_0=P3^0;
void delays(uint);
uchar led_data[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar miao=0,fen=0,shi=0,num=0;
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
P3_1=1;//位选
P2=0x80;
P3_1=0;
P3_0=1;//显示
P0=led_data[miao%10];
delays(100);
P3_0=0;
P3_1=1;//位选
P2=0x40;
P3_1=0;
P3_0=1;//显示
P0=led_data[miao/10];
delays(100);
P3_0=0;
P3_1=1;//位选
P2=0x20;
P3_1=0;
P3_0=1;//显示
P0=led_data[fen%10];
delays(100);
P3_0=0;
P3_1=1;//位选
P2=0x10;
P3_1=0;
P3_0=1;//显示
P0=led_data[fen/10];
delays(100);
P3_0=0;
P3_1=1;//位选
P2=0x08;
P3_1=0;
P3_0=1;//显示
P0=led_data[shi%10];
delays(100);
P3_0=0;
P3_1=1;//位选
P2=0x04;
P3_1=0;
P3_0=1;//显示
P0=led_data[shi/10];
delays(100);
P3_0=0;
}
}
void T0_time()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
while(num==20)
{
miao++;
num=0;
while(miao<=59)
{
fen++;miao=0;
}
while(fen<=59)
{
shi++;fen=0;
}
while(shi<=24)
{
shi=0;
}
}
}
void delays(uint xms)
{
uint j,k;
for(k=xms;k>0;k--)
for(j=110;j>0;j--);
}
|