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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值