找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1642|回复: 1
打印 上一主题 下一主题
收起左侧

电子时钟代码,具备闹钟功能

[复制链接]
跳转到指定楼层
楼主
ID:398312 发表于 2018-9-15 14:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#define uchar unsigned char
#define unit unsigned int
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit Bueer=P1^5;
sbit key1=P3^1;
sbit key2=P3^2;
sbit key3=P3^3;
sbit key4=P3^4;
sbit key5=P3^5;
sbit key6=P3^6;
sbit key7=P3^7;
sbit key0=P3^0;
uchar aa,h,m,s,n,i,sec,min,hour;
void delay(unit z)
{
unit x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display()
{
if(key0==1)
{
P2=0xfe;
P0=table[s%10];
delay(1);
P2=0xfb;
P0=40;
delay(1);
P2=0xf7;
P0=table[m%10];
delay(1);

P2=0xef;

P0=table[m/10];

delay(1);

P2=0xdf;

P0=0x40;

delay(1);

P2=0xbf;

P0=table[h%10];

delay(1);

P2=0x7f;

P0=table[h/10];

delay(1);

}

}

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

aa++;

if(aa==20)

{

aa=0;

s++;

if(s==60)

{

s=0;

m++;

if(m==60)

{

m=0;

h++;

if(h==24)

h=0;

}

}

}

}

void keyscan()

{

if(key1==0)

{

delay(10);

if(key1==0)

{

while(!key1);

n++;

TR0=0;

if(n==1)

{

P2=0xfe;

P0=table[s%10];

delay(1);

P2=0xfd;

P0=table[s/10];

delay(1);

}

if(n==2)

{

P2=0xf7;

P0=table[m%10];

delay(1);

P2=0xef;

P0=table[m/10];

delay(1);

}

if(n==3)

{

P2=0xbf;

P0=table[h%10];

delay(1);

P2=0x7f;

P0=table[h/10];

delay(1);

}

if(n==4)

{

TR0=1;

n=0;
  }
  }
  }

if(n!=0)

{

if(key2==0)

{

delay(10);

if(key2==0)

{

while(!key2);

if(n==1)

{

s++;

if(s==60)

s=0;

}

if(n==2)

{

m++;

if(m==60)

m=0;

}

if(n==3)

{

h++;

if(h==24)

h=0;
  }
  }
  }

if(key3==0)

{

delay(10);

if(key3==0)

{

while(!key3);

if(n==1)

{

if(s==0)

s=60;

s--;

}

if(n==2)

{

if(m==0)

m=60;

m--;

}

if(n==3)

{

if(h==0)
h=24;

h--;
  }
  }
  }
  }
  }

void keyscan2()

{

if(key0==0)

{

P2=0xfe;

P0=table[sec%10];

delay(1);

P2=0xfd;

P0=table[sec/10];

delay(1);

P2=0xfb;

P0=0x40;

delay(1);

P2=0xf7;

P0=table[min%10];

delay(1);

P2=0xef;

P0=table[min/10];

delay(1);

P2=0xdf;

P0=0x40;

delay(1);

P2=0xbf;

P0=table[hour%10];

delay(1);

P2=0x7f;

P0=table[hour/10];

delay(1);

}

if(key4==0)

{

delay(10);

if(key4==0)

{

while(!key4);

{

min++;

if(min==60)

min=0;

}

}

}

if(key5==0)

{

delay(10);

if(key5==0)

{

while(!key5);

{

hour++;

if(hour==24)

hour=0;

}

}

}

if(key6==0)

{

delay(10);

if(key6==0)

{

while(!key6);

{
if(min==0)

min=60;

min--;

}

}

}

if(key7==0)

{

delay(10);

if(key7==0)

{

while(!key7);
{

if(hour==0)

hour=24;

hour--;

}

}

}

Bueer=1;

if((h==hour)&(m==min)&(s==sec))

{

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

{
Bueer=!Bueer;

delay(40);

}

}

}

void init()
{
TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

void main()

{

init();

while(1)

{

keyscan();

keyscan2();

display();

}
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-9-15 15:58 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表