带校时和音乐报时功能实时时钟的设计与实现_第1页
带校时和音乐报时功能实时时钟的设计与实现_第2页
带校时和音乐报时功能实时时钟的设计与实现_第3页
带校时和音乐报时功能实时时钟的设计与实现_第4页
带校时和音乐报时功能实时时钟的设计与实现_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、带校时和音乐报时功能实时时钟的设计与实现1)硬件电路硬件电路如图11-2所示,PA 口为LED数码管的8段码输出,PC0-PC5共6个I/O 口, 作为控制时间显示的6个LED数码管的位扫描线。PC6、PC7分别接连接两个按键,用于设 置时钟的工作状态和校时时间的设置。图中音乐报时电路部分(未画出)与第8章中的图 8-20相同,由端口 PD5输出产生音乐的脉冲信号,经三极管驱动蜂鸣器发声。(ADCO)PAO (ADCl)PAl (ADC2)PA2 (ADC3)PA3 (ADC4)PA4 (ADC5)PA5 )(ADC6)PA6 (ADC7)PA7 AREF GND AVcc (TOSC2)PC

2、7 (TOSC1)PC6 (TDI)PC5 (TDO)PC4 (TMS)PC3 (TCK)PC2)(SDA)PC1 ) (SCL)PCO (OC2)PD7图11-2带校时功能的实时时钟电路图3938373635343332311329282726 25 j24 Xj23 722 721 70.0.0.0.0.0.LlPlod DPlod DPlod OPlod 心 P;Cjd DPlodATmegal6定义两个按键的功能为:K1用于设置转换时钟工作状态,K2用于设置校时时间(加1 操作)。时钟工作状态转换图如图11-3所示,具体每个状态的定义和功能如下:/ 平时时钟工作在时钟显示状态,每按一下

3、K1键,时钟依次进入校时时间的设置状 态。/ 时钟由“时钟显示”进入“秒低位设置”时,校时时间的初始值为转换时刻的时钟 值。/ 时钟由“时高位设置”回到(K1作用下)“时钟显示”时,时钟时间由校时时间代 替,确认完成校时的设置。/ 当时钟处在时间设置的6个状态时,每按一次K2键,相应的位上的数值加1,并 且要能根据具体所在的位置自动做相应的调整。如秒高位的数字只能在0-5之间, 而时高位的数值要限制在0、1、2 (时个位数小于3时),或时高位的数值要限制 在0、1(时个位数大于3时)。/ 当时钟处在时间设置的6个状态时,在20秒内无任何键按下,系统自动返回“时 间显示”状态,设置的时间无效,不

4、改变原时钟的计时时间。/ 在效时时间设置的操作过程中,时钟不停止其前时间的计时过程,除非当时钟由“时 高位设置”回到(K1作用下)“时钟显示”时,时钟的计时时间由确认的校时时间 代替而改变。/ 时钟显示亮度均匀、无闪烁。当设置相应时间位时,该位应闪烁提示。图11-3时钟工作状态转换图2)软件设计本示例的程序是在前几章所给例子的综合应用基础上实现的,代码中也给出了相应的解 释,因此本节中不再做更多的说明,留给读者去自行分析。希望能在真正掌握了前几章内容 的基础上,慢慢的去品味和体会,掌握如何更好的综合使用AVR硬件的功能,以及程序设计 的方法与技巧。File name:demo_11_4.cCh

5、ip type:ATmega16Program type:ApplicationClock frequency:1.000000 MHzMemory model: SmallExternal SRAM size: 0Data Stack size:256#include flash char led_710 = 0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F;flash char position6 = 0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf;flash unsigned int t9 =

6、0,956,865,759,716,638,568,506,470;flash unsigned char d9 = 0,105,116,132,140,157,176,198,209;#define Max_note 32flash unsigned char musicMax_note=5,2,8,2,5,2,4,2,3,2,2,2,1,4,1,2,1,2,2,2,3,2,3,2,1,2,3,2,4,2,5,8;unsigned char note_n;unsigned int int_n;bit play_on;char time3,time_set3;/时、分、秒计数和设置单元char

7、 dis_buff6;/显示缓冲区,存放要显示的6个字符的段码值char time_counter,key_stime_counter; / 时间计数单元,char clock_state = 6,return_time;bit point_on,set_on,time_1s_ok,key_stime_ok;void display(void)/ 6位LED数管动态扫描函数static char posit=0;PORTC = 0 xff;PORTA = led_7dis_buffposit;if (set_on & (posit=clock_state) PORTA= 0 x00;/ 校时闪

8、烁if (point_on & (posit=2|posit=4) PORTA |= 0 x80;/ 秒闪烁PORTC = positionposit; if (+posit =6 ) posit = 0; / Timer 0比较匹配中断服务,2ms定时interrupt TIM0_COMP void timer0_comp_isr(void) display();/ LED 扫描显示if (+key_stime_counter =5) key_stime_counter = 0; key_stime_ok = 1;/ 10ms 到if (!(+time_counter % 25) set_o

9、n = !set_on; / 设置校时闪烁标志 if (time_counter = 100) time_counter = 0; time_1s_ok = 1;/ 1s 到 / T/C1比较匹配A中断服务 interrupt TIM1_COMPA void timer1_compa_isr(void) if (!play_on) note_n = 0; int_n = 1; play_on = 1; else if (-int_n = 0) TCCR1B = 0 x08; if (note_n Max_note) OCR1A = tmusicnote_n; int_n = dmusicnot

10、e_n; note_n+; int_n = int_n * musicnote_n; note_n+; TCCR1B = 0 x09;elseplay_on = 0;void time_to_disbuffer(char *time)/时钟时间送显示缓冲区函数char i,j=0;for (i=0;i= 60)time0 = 0;(!play_on) TCCR1B =(+time1 = 60)/秒闪烁标志/秒加1,以下为时间调整ifif0 x09;/ 1分钟到,播放音乐time1 = 0;if (+time2 = 24) time2 = 0;if (+return_time = 20) & (

11、clock_state != 6) clock_state = 6;if (clock_state = 6) time_to_disbuffer(time);if (key_stime_ok)/ 10ms 到,键处理key_stime_ok = 0;/调用按键接口程序/确认有键按下key_temp = read_key();if (key_temp)return_time = 0;if (key_temp = key_k1) / K1 键按下,状态转换if (+clock_state = 7) clock_state = 0;if (clock_state = 0)for (i=0;i=2;i+) time_seti = 0;time_to_disbuffer(time_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论