#include <reg52.h>
#include "declare.h"
sbit k1=P1^3;
sbit k2=P1^4;
sbit k3=P1^5;
char count,daymax,timetemp;
void delay(int);
void write_clock(unsigned char,unsigned char);
void displayalarm();
void refreshtime();
unsigned char read_clock(unsigned char);
void write7219one(unsigned char,unsigned char);
void calcdaymax()
{
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
daymax=31;
else if(month==4||month==6||month==9||month==11)
daymax=30;
else if(month==2)
{
if((year+2000)%4!=0)
daymax=28;
else
daymax=29;
}
}
void keyscan()
{
if(k1==0)
{
delay(50);
if(k1==0&&mode==0)
{
mode++;
}
if(k1==0&&mode!=0)
{
count++;
timetemp=0;
switch(count)
{
case 1 : timetemp=readyear; P0=0x01; break;
case 2 : timetemp=readmonth; P0=0x02; break;
case 3 : timetemp=readday; P0=0x04; calcdaymax(); break;
case 4 : timetemp=readweek; P0=0x08; break;
case 5 : timetemp=readhour; P0=0x10; break;
case 6 : timetemp=readminute; P0=0x20; break;
case 7 : timetemp=readsecond; P0=0x40; break;
case 8 : mode=2; timetemp=alarmhour; P0=0x10; break;
case 9 : timetemp=alarmminute; P0=0x20; break;
case 10 : count=0; mode=0; P0=0x00; break;
}
delay(5);
}
if(k1==1) delay(30);
while(k1==0);
}
if(k2==0)
{
delay(50);
if(k2==0&&mode==0)
{
displayalarm();
delay(3000);
write7219one(0x09,0x0ff);
refreshtime();
}
if(k2==0&&mode!=0)
{
switch(count)
{
case 1 : timetemp++; if(timetemp>=100) timetemp=0; if(timetemp<0) timetemp=99; year=timetemp; writeyear; break;
case 2 : timetemp++; if(timetemp>=13) timetemp=1; if(timetemp<1) timetemp=12; month=timetemp; writemonth; break;
case 3 : timetemp++; if(timetemp>daymax) timetemp=1; if(timetemp<1) timetemp=daymax; day=timetemp; writeday; break;
case 5 : timetemp++; if(timetemp>=24) timetemp=0; if(timetemp<0) timetemp=23; hour=timetemp; writehour; break;
case 6 : timetemp++; if(timetemp>=60) timetemp=0; if(timetemp<0) timetemp=59; minute=timetemp; writeminute; break;
case 7 : timetemp++; if(timetemp>=60) timetemp=0; if(timetemp<0) timetemp=59; second=timetemp; writesecond; break;
case 4 : timetemp++; if(timetemp>=8) timetemp=1; if(timetemp<=0) timetemp=7; week=timetemp; writeweek; break;
case 8 : timetemp++; if(timetemp>=24) timetemp=0; if(timetemp<0) timetemp=23; alarmhour=timetemp; break;
case 9 : timetemp++; if(timetemp>=60) timetemp=0; if(timetemp<0) timetemp=59; alarmminute=timetemp; break;
}
if(k2==1) delay(30);
while(k2==0);
}
}
if(k3==0)
{
delay(50);
if(k3==0&&mode!=0)
{
switch(count)
{
case 1 : timetemp--; if(timetemp>=100) timetemp=0; if(timetemp<0) timetemp=99; year=timetemp; writeyear; break;
case 2 : timetemp--; if(timetemp>=13) timetemp=1; if(timetemp<1) timetemp=12; month=timetemp; writemonth; break;
case 3 : timetemp--; if(timetemp>daymax) timetemp=1; if(timetemp<1) timetemp=daymax; day=timetemp; writeday; break;
case 5 : timetemp--; if(timetemp>=24) timetemp=0; if(timetemp<0) timetemp=23; hour=timetemp; writehour; break;
case 6 : timetemp--; if(timetemp>=60) timetemp=0; if(timetemp<0) timetemp=59; minute=timetemp; writeminute; break;
case 7 : timetemp--; if(timetemp>=60) timetemp=0; if(timetemp<0) timetemp=59; second=timetemp; writesecond; break;
case 4 : timetemp--; if(timetemp>=8) timetemp=1; if(timetemp<=0) timetemp=7; week=timetemp; writeweek; break;
case 8 : timetemp--; if(timetemp>=24) timetemp=0; if(timetemp<0) timetemp=23; alarmhour=timetemp; break;
case 9 : timetemp--; if(timetemp>=60) timetemp=0; if(timetemp<0) timetemp=59; alarmminute=timetemp; break;
}
if(k3==1) delay(30);
while(k3==0);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
电子钟 原理图 仿真通过 源程序 c
共56个文件
obj:11个
lst:11个
c:10个
需积分: 10 10 下载量 78 浏览量
2010-06-13
10:09:02
上传
评论
收藏 117KB RAR 举报
温馨提示
随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS1302。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小
资源推荐
资源详情
资源评论
收起资源包目录
时钟带温度显示.rar (56个子文件)
时钟带温度显示
Design.DSN 151KB
MyDesign14.Bkp 482KB
Design.PWI 1KB
MyDesign14.ddb 216KB
DESIGN
main.c 715B
declare.LST 2KB
Design.plg 0B
delay.OBJ 1KB
keyscan.LST 6KB
Design.M51 52KB
declare.h 696B
ds1302_driver.c 2KB
delay.LST 921B
display.c 3KB
Design.lnp 155B
display.OBJ 5KB
keyscan.c 4KB
7219级联
main.c 257B
7219_Opt.Bak 1KB
delay.OBJ 1KB
7219 4KB
7219.M51 14KB
delay.LST 921B
__C51_2 0B
7219.lnp 67B
7219.plg 0B
delay.c 110B
7219.Uv2 2KB
7219.LST 3KB
main.LST 1KB
7219.hex 826B
7219_Uv2.Bak 0B
7219.OBJ 2KB
main.OBJ 1KB
7219.Opt 1KB
7219.c 1KB
ds18b20.OBJ 4KB
Design.Opt 2KB
declare.OBJ 176B
display.LST 6KB
Design_Uv2.Bak 2KB
Design_Opt.Bak 2KB
Design.hex 10KB
ds18b20.LST 5KB
delay.c 110B
keyscan.OBJ 5KB
Design.Uv2 2KB
ds1302_driver.OBJ 3KB
7219.LST 3KB
main.LST 2KB
7219.OBJ 2KB
ds1302_driver.LST 4KB
main.OBJ 2KB
Design 15KB
7219.c 1KB
ds18b20.c 3KB
共 56 条
- 1
资源评论
yangkunbaobao
- 粉丝: 3
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- TG-2024-04-26-183849310.mp4
- 汇编语言的概要介绍与分析
- 个人博客系统设计与开发.zip
- 2023-04-06-项目笔记 - 第一百十五阶段 - 4.4.2.113全局变量的作用域-113 -2024.04.26
- 2023-04-06-项目笔记 - 第一百十五阶段 - 4.4.2.113全局变量的作用域-113 -2024.04.26
- htmlzwbjq_downyi.com.zip
- 无头单向非循环链表的实现(Test.c)
- 无头单向非循环链表的实现(SList.c)
- 浏览器重定向插件更新文件
- SSA-BP麻雀算法优化BP神经网络多特征分类预测(Matlab实现完整源码和数据)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功