资源描述
基于AVR单片机的数字时钟设计摘要:本设计是基于ATmeg16单片机开发平台和自动控制原理的基础上实现的一种高精度、智能化的数字时钟系统。该系统采用ATmeg16单片机作为控制核心,通过编程去驱动8个数码管实现的。时钟芯片、数码管显示驱动芯片的配合使用,使时钟性能更完美,通过Proteus型ISIS实物仿真软件对单片机控制的电子时钟进行仿真和调试检测,这样既能准确验证所设计的时钟是否满足技术要求,又能提高时钟设计的效率和质量,降低试验成本,具有推广价值。本设计采用了完善的按键控制,具有手动调节和闹钟设置的功能。关键字:ATmeg16; 时钟芯片 ;数码管显示驱动芯片 (1)理论分析与电路设计按键分析通过6个开关控制,从上到下6个开关KEY1KEY6的功能分别为:KEY1,切换至秒表;KEY2,调节时间,每调一次时加1;KEY3, 调节时间,每调一次分加1;KEY4,从其它状态切换至时钟状态;KEY5,切换至闹钟设置状态,也可以对秒表清零;KEY6,秒表暂停.控制键分别与P1.0P1.5口连接其中:A.通过P2口和P3口去控制数码管的显示如图所示P2口接数码管的ag端,是控制输出编码,P3口接数码管的18端,是控制动态扫描输出B.从P0.0输出一个信号使二极管发光,二极管在设置的闹钟时间到了时候发光,若有乐曲可以去驱动扬声器实现。其实验程序流程图为:开始定时器及中断寄存器初始化是否设定参数执行显示程序执行时钟、秒表、闹钟设定程序推荐精选1. 时钟中断程序流程图:推荐精选推荐精选2. 按键程序流程图:第一图为时钟和闹钟的调节.(2)实物仿真图:以下为ISIS软件仿真图,验证设计是成功的!推荐精选 图A 图B (3)软件设计及调试过程 在这次设计中用到Proteus的ISIS软件、Code Vision AVR编辑软件和AVRStudio4调试。调试结果如上图所示。其主要程序如下:void display(void) / 6 位LED 数码管动态扫描函数PORTC = 0xff;PORTA = led_7dis_buffposit;if (point_on & (posit=2|posit=4) PORTA |= 0x80;PORTC = positionposit;if (+posit =6 ) posit = 0;/ Timer 0 比较匹配中断服务interrupt TIM0_COMP void timer0_comp_isr(void)display(); / 调用LED 扫描显示if (+time_counter=100)time_counter = 0;time_1s_ok = 1;void time_to_disbuffer(void) / 时钟时间送显示缓冲区函数char i,j=0;推荐精选for (i=0;i=24) time2 = 0;/ INT1 中断服务程序interrupt EXT_INT1 void ext_int1_isr(void)if (+time1=60) time1=0;void main(void)PORTA=0x00; / 显示控制I/O 端口初始化DDRA=0xFF;PORTC=0x3F;DDRC=0x3F;/ T/C0 初始化PORTA=0xFF;DDRA=0xFF;GICR|=0xC0; / 允许INT0、INT1 中断MCUCR=0x0A; / INT0、INT1 下降沿触发GIFR=0xC0; / 清除INT0、INT1 中断标志位TCCR0=0x0B; / 内部时钟,64 分频(4M/64=62.5KHz),CTC 模式TCNT0=0x00;OCR0=0x7C; / OCR0 = 0x7C(124),(124+1)/62.5=2msTIMSK=0x02; / 允许T/C0 比较匹配中断time2 = 14; time1 = 01; time0 = 55; / 设时间初值23:58:55posit = 0;time_to_disbuffer();#asm(sei) / 开放全局中断推荐精选while (1)if (time_1s_ok) / 1 秒到time_1s_ok = 0;point_on = point_on;if (+time0 = 60) / 以下时间调整time0 = 0;if (+time1 = 60)time1 = 0;if (+time2 = 24) time2 = 0;(4) 结束语 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。尤其是AVR单片机可以用高级语言编程,极容易地实现系统移植,并且加快了软件的开发过程。这次设计通过对它的学习、应用,以Mage16单片机为核心,辅以必要的电路,采用高级C语言编程,设汁了一个简易的电子时钟,由4.5 V直流电源供电,通过数码管能够准确显示时间。 (注:可编辑下载,若有不当之处,请指正,谢谢!) 推荐精选
展开阅读全文