数字钟课程设计程序_数字钟课程设计改的
数字钟课程设计程序由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数字钟课程设计改的”。
#include
void chuanshu(void);
void shuchu(void);
void saomiao(void);
void delay(void);
unsigned int t;
unsigned char m;
unsigned char shi,fen,miao;
unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char code wei[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned charxianshi[8]={0,0,0,0,0,0,0,0};
sbit DS=P2^2;
sbit ST_CP=P2^3;
sbit SH_CP=P2^4;
sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
sbit key4=P3^5;
sbit niaoling=P1^0;
sbit dingshi=P1^1;
void delay(void)
{
char i,j;
for(i=0;i
for(j=0;j
}
void chuanshu(void)
{
unsigned char b,c,num;
if(b==0)
{
b++;
num=wei[m];//把位选放在第二个74hc595芯片上
for(c=0;c
{SH_CP=0;
DS=num&0x80;
num=num
SH_CP=1;//上升沿发生移位
}
}
if(b==1)
{
b--;
if(m==2||m==5)
{num=0xbf;}
else
{
num=duan[xianshi[m]];}
for(c=0;c
{SH_CP=0;
DS=num&0x80;
num=num
SH_CP=1;//数据在SH_CP的上升沿输入}
}
m++;
if(m==8)
{m=0;
}
}
void shuchu(void)
{ ST_CP=0;
ST_CP=1;//上升沿将数据送到输出锁存器
}
void saomiao(void)
{
if(key1==0)
{
delay();
if(key1==0)
{
miao=0;
while(key1==0);
}
}
xianshi[0]=miao%10;xianshi[1]=miao/10;
if(key2==0){
delay();
if(key2==0){
fen++;
while(key2==0);if(fen==60){
fen=0;}
}
}
xianshi[3]=fen%10;xianshi[4]=fen/10;
if(key3==0){
delay();
if(key3==0){
shi++;
while(key3==0);if(shi==24){
shi=0;}
}
}
xianshi[6]=shi%10;xianshi[7]=shi/10;
if(key4==0){
delay();
if(key4==0){
miao=0;fen=0;shi=0;}
}
}
void main(void)
{
TMOD=0X01;
TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;
ET0=1;
TR0=1;
while(1)
{
saomiao();
chuanshu();shuchu();
}
}
void time0()interrupt 1{
t++;
if(t==20)
{t=0;
miao++;
if(miao==60){miao=0;fen++;
if(fen==60){fen=0;shi++;
if(shi==24){shi=0;}}}
}
}