基于单片机设计的多功能数字钟设计报告.doc
《基于单片机设计的多功能数字钟设计报告.doc》由会员分享,可在线阅读,更多相关《基于单片机设计的多功能数字钟设计报告.doc(17页珍藏版)》请在三一办公上搜索。
1、多功能数字钟设计报告目录1. 设计任务与要求2. 设计原理及方案3. 主要元器件清单4. 电路原理图5. 原理说明6. 系统软件部分7. 整机调整过程8. 总结六位多功能数字钟制作报告一设计任务与要求。1.任务。设计制作一个24小时制多功能数字钟。示意图如下(仅供参考): 2要求.基本要求(1)具有时间设置(小时和分钟)、闹钟时间设置、闹钟开、闹钟关功能。(2)数字显示小时、分钟,有AM、PM指示器,闹钟就绪灯,蜂鸣器。(3)220V供电。发挥部分(1)键盘切换现场环境温度显示。(060 1)(2)键盘切换电网频率、电压显示。 (3)电压欠压、过压报警(220V 10)功能。二,设计原理及方案
2、1,计数原理 数字计中是一个对标准频率进行校准的计数电路。它的计时周期是24小时,由于计数器的起始时间不可能与标准时间一致,所以采用校准功能和报时功能。 数字钟电路主要由译码显示器、校准电路、报时电路、时计数、分计数、秒计数器,振荡器和单脉冲产生组成。其中电路系统由秒信号产生器是整个系统基本信号,它直接决定计数器的精度,用石英振荡器加分频器来实现,将标准秒信号送入秒计数器。分、秒计数器采用60进制,时计数器采用24进制,。译码器显示电路将时、分、秒计数器的输出状态通过三个两位共阳数码管显示出来。整点报时电路根据计时系统的输出状态产生一个脉冲信号,用蜂鸣器输出。二、模块电路设计与比较1、 时钟方
3、案选择采用带 RAM的时钟芯片AT89C2051。该芯片可以进行时分秒的计数,可编程接口,还具有报警功能和掉电保存功能,并且可以对其方便的进行程序控制,完全能满足题目的要求。C程序:#includecode senen_seg10=0x81,0xe7,0x92,0xa2,0xe4,0xa8,0x88,0xe3,0x80,0xa0; /P1.7(冒号)口高电平bit key1_enter=0,key2_enter=0,key3_enter=0,countdown_mark=0,stopwatch_mark=0,count_mark=0,bell_mark=0; /状态标志unsigned cha
4、r program=0,program_variable=0,count_bit=0,count=0;unsigned char hour=10,minute=10,second=0; /时间变量unsigned char delayed_hour=22,delayed_minute=10,delayed_second=0;/定时变量 unsigned char count_hour=0,count_minute=0,count_second=0; /计时计数变量unsigned char count_time=0,count_count=0; void delay(unsigned int
5、t)/延时子程序 unsigned int i,j; for(i=0;it;i+) for(j=0;j=199) count_time=0; second+; if(second=60) second=0; minute+; if(minute=60) minute=0; hour+; if(hour=24)hour=0; if(delayed_hour=hour & delayed_minute=minute & second=199 & (count_second!=0|count_minute!=0|count_hour!=0)count_count=0;count_second-;if
6、(count_second=60) count_second=59; count_minute-; if(count_minute=60) count_minute=59; count_hour-; if(count_hour=100) count_hour=99; if(count_second=0&count_minute=0&count_hour=0&count_count=15000) count_count=14000; if(stopwatch_mark=1) /秒表程序 count_count+; if(count_count=2)count_count=0;count_seco
7、nd+;if(count_second=100) count_second=0; count_minute+; if(count_minute=60) count_minute=0; count_hour+; if(count_hour=60) count_hour=0; unsigned char show_key (void)unsigned char x=0,y=0;switch (program)case 0: P1&=senen_segsecond%10; /时钟秒的个位 break;case 1: if(count_time=90) P1&=senen_segsecond%10;
8、/校正秒的个位 break;case 2: if(delayed_hour=24) P1=0xfe;/闹钟秒的个位 else P1&=senen_segdelayed_second%10; break;case 3: if(count_bit=0) P1&=senen_segcount_second%10;/倒计时秒的个位 else P1=0xff; break;case 4: P1&=senen_segcount_second%10; /秒表秒的个位break;case 5: P1&=senen_segcount_second%10; /计数器个位break; P3_3=0; delay(1
9、0); if(P3_5=0)/功能键1识别 key1_enter=1;if(count=90) P1&=senen_segsecond/10; /校正秒的十位 break;case 2: if(delayed_hour=24) P1=0xfe; /闹钟秒的十位 else P1&=senen_segdelayed_second/10; break;case 3: if(count_bit=1) P1&=senen_segcount_second/10;/倒计时秒的十位else P1=0xff; break;case 4: P1&=senen_segcount_second/10; /秒表秒的十位
10、break;case 5: P1&=senen_segcount_second/10; /计数器十位break; P3_1=0; delay(10); P3_1=1; P1|=0xff;switch (program) case 0: P1&=senen_segminute%10; /时钟分的个位break;case 1: if(count_time=90) P1&=senen_segminute%10; /校正分的个位break;case 2: if(delayed_hour=24) P1=0xfe;/闹钟分的个位 else P1&=senen_segdelayed_minute%10; b
11、reak;case 3: if(count_bit=2) P1&=senen_segcount_minute%10;/倒计时分的个位else P1=0xff;break;case 4: P1&=senen_segcount_minute%10; /秒表分的个位break;case 5: P1&=senen_segcount_minute%10; /计数器百位break; P3_2=0; delay(10); P3_2=1; P1|=0xff;switch (program)case 0: P1&=senen_segminute/10; /时钟秒的个位break;case 1: if(count
12、_time=90) P1&=senen_segminute/10; /校正秒的个位 break;case 2: if(delayed_hour=24) P1=0xfe;/闹钟秒的个位 else P1&=senen_segdelayed_minute/10; break;case 3: if(count_bit=3) P1&=senen_segcount_minute/10;/倒计时秒的个位else P1=0xff;break; case 4: P1&=senen_segcount_minute/10; /秒表秒的个位break;case 5: P1&=senen_segcount_minute
13、/10; /计数器千位break; P3_5=0; delay(10); P3_5=1; P1|=0xff;switch (program)case 0: P1&=senen_seghour%10; /时钟时的个位break;case 1: if(count_time=90) P1&=senen_seghour%10; /校正时的个位break;case 2: if(delayed_hour=24) P1=0xfe; /闹钟时的个位 else P1&=senen_segdelayed_hour%10; break;case 3: if(count_bit=4) P1&=senen_segcou
14、nt_hour%10;/倒计时时的个位else P1=0xff;break;case 4: P1&=senen_segcount_hour%10; /秒表时的个位break;case 5: P1&=senen_segcount_hour%10; /计数器万位break; P3_0=0; delay(10); if(P3_4=1 & key2_enter=1) x=3; /确认功能键2识别,返回3 key2_enter=0; P3_0=1; P1|=0xff;switch (program) case 0: P1&=senen_seghour/10; /时钟时的个位break;case 1: i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 设计 多功能 数字 报告
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4148786.html