600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 51单片机数码显示时钟c语言程序 [单片机]ACT89C51数码管时钟程序

51单片机数码显示时钟c语言程序 [单片机]ACT89C51数码管时钟程序

时间:2020-09-15 02:12:08

相关推荐

51单片机数码显示时钟c语言程序 [单片机]ACT89C51数码管时钟程序

该楼层疑似违规已被系统折叠隐藏此楼查看此楼

#include

#define uchar unsigned char

#define uint unsigned int

#define data P0

sbit wr=P3^0;

sbit cs1=P3^1;

sbit cs2=P3^2;

sbit m=P2^0;

sbit add=P2^1;

sbit jian=P2^2;

bit flag,flag1,flag2,flag3;

uchar shi,fen,miao,mm;

uchar a,b;

char c;

uchar dm[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};

uchar buff[]={0,0,10,0,0,10,0,0}; void delay(char t)

{

while(t)

{

uchar i;

for(i=0;i<120;i++);

t--;

}

} void ms()

{

if(c==1)

{

mm=1;

if(b>10) buff[6]=buff[7]=11;

} if(c==2)

{

if(b>10) buff[3]=buff[4]=11;

} if(c==3)

{

if(b>10) buff[0]=buff[1]=11;

} if(c==4) c=mm=0;

} void smg()

{

char i;

buff[0]=shi/10;

buff[1]=shi%10;

buff[3]=fen/10;

buff[4]=fen%10;

buff[6]=miao/10;

buff[7]=miao%10;

ms();

for(i=0;i<8;i++)

{

data=~(0x01<

cs2=0;

wr=0;

wr=1;

cs2=1; data=dm[buff[i]];

cs1=0;

wr=0;

wr=1;

cs1=0;

delay(2); data=0xff;

cs1=cs2=0;

wr=0;

wr=1;

cs1=cs2=1;

}

} void key()

{

if((!m)&&(!flag))

{

c++;

flag=1;

}

if(m) flag=0; if((!add)&&(!flag1)&&(mm))

{

if(c==1) miao++;

if(c==2) fen++;

if(c==3) shi++;

flag1=1;

}

if(add) flag1=0; if((!jian)&&(!flag2)&&(mm))

{

if((c==1)&&(miao>0)) miao--;

if((c==2)&&(fen>0)) fen--;

if((c==3)&&(shi>0)) shi--;

flag2=1;

}

if(jian) flag2=0;

} main()

{

EA=1;

ET0=1;

TMOD=0x01;

TH0=0x4c;

TL0=0x00;

TR0=1;

while(1)

{

smg();

key();

}

} void time() interrupt 1

{

TH0=0x4c;

TL0=0x00;

if(mm==0) a++;

b++;

if(a==20) a=0,miao++;

if(miao==60) miao=0,fen++;

if(fen==60) fen=0,shi++;

if(shi==12) miao=fen=shi=0; if((b>10)&&(!mm)) buff[2]=buff[5]=11;

else buff[2]=buff[5]=10;

if(b==20) b=0;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。