#include<reg52.h>
#include<definit.h>
void init();//初始化
void disp();//数码管动态显示
void keyscan();//按键扫描
void work0();//时间设置模式
void work1();//时钟模式
void main()
{
init();
while(1)
{
while(!TF0);//2.5ms到?
{
TF0=0;//清除标志位
TH0=0XF6;//2.5ms重赋初值
TL0=0X3B;
cs0=cs1=cs2=cs3=cs4=cs5=1;//关位选
led=0;
mcnt++;
keyscan();//按键扫描
disp();//动态显示
switch(msta)//根据状态值散转
{
case 0:work0();//时间设置
break;
case 1:work1();//时钟模式
break;
}
}
}
}
void init()
{
dis=mcnt=0;
cs0=cs1=cs2=cs3=cs4=cs5=1;
msta=1;
led=1;
buzzer=1;
TMOD=0X01;//定时器T0工作方式1
TH0=0XF6;//2.5ms初值
TL0=0X3B;
TR0=1;//开定时器
}
void keyscan()
{
uchar r1;
static uchar keycnt;
r1=P1;
r1&=0xff;//P1设为输入口
r1^=0xff;
if(r1)//有键?
{
keycnt++;
if(keycnt>=4)//20ms到?
{
keycnt=0;
key1=r1;
}
else
{
key1=lastkey1;
}
}
else
{
key1=0;
keycnt=0;
}
r1=key1;
key1=key1&(lastkey1^key1);
lastkey1=r1;
}
void disp()
{
switch(dis)
{
case 0:P0=disp_sm[buf0];//秒低位
cs0=0;
dis=1;
break;
case 1:P0=disp_sm[buf1];//秒高位
cs1=0;
dis=2;
break;
case 2:P0=disp_sm[buf2];//分低位
cs2=0;
dis=3;
break;
case 3:P0=disp_sm[buf3];//分高位
cs3=0;
dis=4;
break;
case 4:P0=disp_sm[buf4];//时低位
cs4=0;
dis=5;
break;
case 5:P0=disp_sm[buf5];//时高位
cs5=0;
dis=0;
break;
}
}
void work0()
{
if(k6)//调整键按下
{
msta=1;
}
if(k5)//秒+
{
buf0++;
if(buf0>=10)
{
buf0=0;
buf1++;
if(buf1>=6)
buf1=0;
}
}
if(k4)//秒-
{
buf0--;
if(buf0<0)
{
buf0=9;
buf1--;
if(buf1<0)
{
buf1=5;
buf0=9;
}
}
}
if(k3)//分+
{
buf2++;
if(buf2>=10)
{
buf2=0;
buf3++;
if(buf3>=6)
buf3=0;
}
}
if(k2)//分-
{
buf2--;
if(buf2<0)
{
buf2=9;
buf3--;
if(buf3<0)
{
buf3=5;
buf2=9;
}
}
}
if(k1)//时+
{
buf4++;
if(buf5>=2 && buf4>=4)
buf5=buf4=0;
if(buf4>=10)
{
buf4=0;
buf5++;
if(buf5>=6)
buf5=0;
}
}
if(k0)//时-
{
buf4--;
if(buf5<0 && buf4<0)
{
buf5=2;
buf4=3;
}
if(buf4<0)
{
buf4=9;
buf5--;
if(buf5<0)
{
buf5=2;
buf4=3;
}
}
}
}
void work1()
{
if(k6)
{
msta=0;
buf0=buf1=buf2=buf3=buf4=buf5=0;
}
if(mcnt>=400)//1s到?
{
mcnt=0;
buf0++;
if(buf0>=10)
{
buf0=0;
buf1++;
if(buf1>=6)
{
buf1=0;
buf2++;
if(buf2>=10)
{
buf2=0;
buf3++;
if(buf3>=6)
{
buf3=0;
buf4++;
hourbuf++;
if(buf5>=2 && buf4>=4)
buf5=buf4=0;
if(buf4>=10)
{
buf4=0;
buf5++;
}
}
}
}
}
}
if(hour!=hourbuf)//小时+1?
{
buzzer=0;//开蜂鸣器
buzzersta++;
if(buzzersta>=200)//0.5s到?
{
buzzersta=0;
hour=hourbuf;
buzzer=1;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于C51单片机电子时钟6位数码管显示AD09设计硬件(原理图+PCB)+MCU软件源代码.zip
共48个文件
log:29个
schdocpreview:2个
h:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 48 浏览量
2024-04-30
15:24:49
上传
评论
收藏 694KB ZIP 举报
温馨提示
基于C51单片机电子时钟6位数码管显示AD09设计硬件(原理图+PCB)+MCU软件源代码,,2层板设计,大小为124*100mm,包括硬件及KEIL软件源码工程文件,可以做为你的学习设计参考。 void main() { init(); while(1) { while(!TF0);//2.5ms到? { TF0=0;//清除标志位 TH0=0XF6;//2.5ms重赋初值 TL0=0X3B; cs0=cs1=cs2=cs3=cs4=cs5=1;//关位选 led=0; mcnt++; keyscan();//按键扫描 disp();//动态显示 switch(msta)//根据状态值散转 { case 0:work0();//时间设置 break; case 1:work1();//时钟模式 break; } } } } void init() { dis=mcnt=0; cs0=cs1=cs2=cs3=cs4=cs5=1; msta=1;
资源推荐
资源详情
资源评论
收起资源包目录
基于C51单片机电子时钟6位数码管显示AD09设计硬件(原理图+PCB)+MCU软件源代码.zip (48个子文件)
时钟程序
work2.uvgui.Administrator 69KB
work2.M51 14KB
work2 9KB
work2.uvproj 13KB
work2.uvopt 5KB
disp.h 608B
work2.c 3KB
work2.hex 2KB
work2.uvgui.46794 69KB
definit.h 839B
原理图&PCB
PCB1.PcbDocPreview 65KB
Project Logs for 时钟
PCB1 PCB ECO 2016-11-10 23-35-19.LOG 111B
PCB1 PCB ECO 2016-11-20 18-17-25.LOG 619B
PCB1 PCB ECO 2016-10-27 19-16-38.LOG 25B
PCB1 PCB ECO 2016-10-27 18-37-23.LOG 0B
PCB1 PCB ECO 2017-3-25 23-05-58.LOG 1KB
PCB1 PCB ECO 2016-11-18 15-40-16.LOG 25B
PCB1 PCB ECO 2016-10-27 18-36-40.LOG 303B
PCB1 PCB ECO 2016-10-27 19-18-33.LOG 130B
PCB1 PCB ECO 2016-10-27 18-58-35.LOG 25B
PCB1 PCB ECO 2016-11-20 18-18-21.LOG 176B
PCB1 PCB ECO 2016-10-27 20-08-48.LOG 314B
PCB1 PCB ECO 2016-10-27 20-37-00.LOG 25B
Sheet1 SCH ECO 2016-10-26 17-03-53.LOG 4KB
PCB1 PCB ECO 2017-3-25 23-18-44.LOG 75B
PCB1 PCB ECO 2017-2-26 14-40-30.LOG 1KB
PCB1 PCB ECO 2016-10-27 18-40-31.LOG 10KB
PCB1 PCB ECO 2016-10-27 20-05-22.LOG 426B
PCB1 PCB ECO 2016-10-27 18-31-55.LOG 10KB
PCB1 PCB ECO 2016-10-27 20-04-27.LOG 5KB
PCB1 PCB ECO 2016-10-27 20-39-09.LOG 266B
Sheet1 SCH ECO 2016-10-27 20-04-14.LOG 2KB
PCB1 PCB ECO 2017-3-25 23-09-28.LOG 212B
PCB1 PCB ECO 2016-10-27 19-03-13.LOG 11KB
PCB1 PCB ECO 2017-2-26 14-49-55.LOG 1KB
PCB1 PCB ECO 2017-1-25 16-54-44.LOG 655B
Sheet2 SCH ECO 2016-10-29 10-14-04.LOG 664B
PCB1 PCB ECO 2016-10-27 19-41-31.LOG 1KB
PCB1 PCB ECO 2016-11-18 15-43-00.LOG 305B
PCB1 PCB ECO 2016-10-27 20-44-50.LOG 82B
PCB1.PcbDoc 794KB
__Previews
PCB1.PcbDocPreview 60KB
Sheet1.SchDocPreview 66KB
Sheet1.SchDoc 394KB
时钟.PrjPcbStructure 48B
PCB1.PcbDoc.htm 10KB
Sheet1.SchDocPreview 65KB
时钟.PrjPcb 40KB
共 48 条
- 1
资源评论
- csp0209092024-05-10资源使用价值高,内容详实,给了我很多新想法,感谢大佬分享~
GJZGRB
- 粉丝: 1440
- 资源: 6184
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功