#include<reg51.h>
#define u8 unsigned char
#define u16 unsigned short
u8 a,b,c,second,s_A1,g_A2=0;
u16 i,j,k=0;
sbit DULA = P2^6;
sbit WELA = P2^7;//LED片选
u8 model0[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,};//数码管0-9
void delay(i) //延时函数
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display(u8 s_c,u8 g_c){
DULA=1;
P0=model0[g_c];
DULA=0;
WELA=1;
P0=0XFD;//LED2开起
WELA=0;
delay(5);
DULA=1;
P0=model0[s_c];//LED1 0-9
DULA=0;
WELA=1;
P0=0XFE;//LED6开起
WELA=0;
delay(5);
}
main(){
while(1){
second++;
if(second==60)
second=0;
else
s_A1=second/10;
g_A2=second%10;
for(a=0;a<=50;a++){
display(s_A1,g_A2);
delay(10);
}
}
}
使用软件延时的方法实现
0-59
秒自动计数器,用数码管的前两位显示出来
74hc573片选段选。练习进位操作,数码管动态显示。