基于单片机C语言电子时钟完整版(闹钟,整点报时) - 图文(4)

2019-08-03 14:35

if(flag==3) //闹钟对时 { if(KEY2==0) { delay(10); if(KEY2==0) { hour1++;if(hour1==24)hour1=0; } //闹钟时间 小时 加1 while(!KEY2){ alarm(); } } if(KEY3==0) { delay(10); if(KEY3==0) { hour1--;if(hour1==0)hour1=23; } //闹钟时间 小时 减 while(!KEY3) { alarm();} } } if(flag==4) { if(KEY2==0) //按键去抖以及动作 { delay(10); if(KEY2==0) { minute1++;if(minute1==60)minute1=0; //闹钟分加1 }while(!KEY2){ alarm(); } }

if(KEY3==0) //按键去抖以及动作 {

delay(10); if(KEY3==0) { minute1--;if(minute1==0)minute1=59; } //闹钟分减1 }while(!KEY3) {alarm();} } }

/*******************蜂鸣器子程序****************************/ void beng() {

bear=1; P3=0xfd; delay(100); bear=0; P3=0XFf; delay(100); }

/*****************整点报警子程序***************************/ void zhengdian (void) { uchar i=0; if((second==0)&(minute==0))//整点报时 { for(i=0;i<10;i++) { TR0=1; beng();dispaly(ms); } } }

/********************************定时闹钟****************/ void alarm() { uint i; if((hour==hour1&&second1==minute1&&(second>=second1&&second

/**************************中断子程序*********************************/ void time_() interrupt 1 //中断程序 { count++; TH0=(65536-50000)/256; //0.5ms重新送初值 TL0=(65536-50000)%6; if(count==20) //定时器计数,定时50ms,count满20,秒加1 { second++; count=0; if(second==60) //秒值等于60,秒清零,分加1 { second=0;minute++;

}

/***********************主函数***************************/ void main() { P1=0XFF; TMOD = 0x11; //time0为定时器,方式1 TH0=(65536-50000)/256; //预置计数初值,50ms TL0=(65536-50000)%6; EA=1; //总中断开 ET0=1; //允许定时器0中断 TR0=1; //开启定时器0

while(1) //主循环 {

if(flag==0) { TR0=0; dispaly(ms);} if(P1!=0XFF) { keycan(); } if(flag>0)

{ if(flag==1||flag==2){ TR0=1; dispaly(StrTab); zhengdian ();} if(flag==3||flag==4) { TR0=0;alarm(); } if(flag==5) { dispaly(StrTab); } if(flag==6) { TR0=0; flag=0; dispaly(ms); }} } }

if(minute==60) { minute=0; hour++; if(hour==24) {hour=0;} } } }

xianshishuzu();

//分值等于60,分清零,时加1

//时值等于24,时清零,返回,全部归零

4 设计结论、仿真结果、误差分析、教学建议

4.1 设计课题的设计结论及使用说明

本设计为基于单片机的电子钟的设计。刚开始,我们很多地方理不清头绪,无从下手,但通过认真研究设计课题,找书上网查资料买元件,确定基本设计方案,对所用芯片功能进行查找、调试,然后画电路图制PCB板、打孔、溶铜、焊接等,真的经历了许多困难,却积累了很多宝贵的经验,本设计用2个四位一体的共阳数码管做为显示器,它显示时间值;设计中有三个按键,其中KEY1为启动键,KEY2为加控制键 KEY3为减控制键 。

4.2 设计课题的仿真结果

在Proteus ISIS的Debug菜单中选择Execute,运行程序,系统仿真结果如图 所示。

仿真结果图见附录D

实现功能:

可调整运行的电子钟具有三种工作状态:“d.1004-22”状态、运行状态、调整状态。

(1)、“d.1004-22”状态,依靠上电或按复位键进入,在此状态下,按KEY2、KEY3

键均无效,

按KEY1键有效,进入运行状态;

(2)、运行状态,在此状态下,按KET2、KEY3键均无效,只有按KEY1键有效,

按下KEY1键后,退出运行状态,进入调整状态;

(3)、调整状态,按KEY1键进入时、分、秒的闪烁,在此状态下,按KEY2(+1

键)、

KEY3(-1键)键均有效;调整结束后必须按KEY1键,即可退出调整状态,进入

运行状态。在调整状态时长按KRY2、KEY3时可以连加及连减。 时间显示格式为:时-分-秒;

图4-2 “d.1004-22”上电初始化运行状态仿真结果

图4-3 时钟正常运行状态仿真结果

图4-4 闹钟定时调整状态仿真结果


基于单片机C语言电子时钟完整版(闹钟,整点报时) - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中级经济师金融复习材料

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: