欢迎来到天天文库
浏览记录
ID:41886585
大小:132.40 KB
页数:5页
时间:2019-09-04
《AVR单片机的时钟设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于AVR单片机Mega16的时钟设计报告1摘要近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个领域.本文的电子钟系统是以单片机(ATmegal6)为核心,时钟芯片、数码管显示驱动芯片等元器件组成。具体介绍应用Proteus的ISIS软件进行单片机系统的电子钟设计与仿真的实现方法。该方法既能准确验证所设计的系统是否满足技术要求,又能提高系统设计的效率和质量,降低开发成本,具有推广价值。关键词:单片机;时钟芯片;数码管显示
2、驱动芯片;电子钟2引言单片机电子时钟系统可以用多种技术手段实现。本文借助于Proteus仿真系统进行系统虚拟开发成功之后再进行实际操作,可以节约开发时间,降低开发成本,具有很大的灵活性和可扩展性。在国外有包扌舌斯坦福、剑桥等在内的儿千家高校将Proteus作为电子工程学位的教学和实验平台;在国内也有众多大学正在体验Proteus的独一无二的功能并申报大学计划。该方法具有普遍意义。通过实际应用发现,釆用该方法可以大大简化硕件电路测试和系统调试过程中电路板制作、元器件安装、焊接等过程。很明显,使用该方法可以提高开发效率、降低开发成本、提升开发…AVR系列的
3、单片机不仅具有良好的集成性能,而且都具备在线编程接口,其中的MEGA系列还具备仿真和下载功能;含有片内看门狗电路、片内程序FLASH、同步串行接口SPI;多数AVR单片机还内嵌了A/D转换器、EEPR0M、模拟比较器、PWM定时计数器等多种功能;AVR单片机的I/O接口具有很强的驱动能力,灌人电流可直接驱动继电器、LED等元件,从而省去驱动电路,节约系统成本。3设计思路利用单片机(ATmegal6)制作简易电子时钟,由六个LED数码管分别显示小时十位、小吋个位、分钟十位、分钟个位、秒钟十位、秒钟个位。6个PNP管分别控制六个数码管的亮灭,此外还可以实现
4、时间调整、等多种实用功能。整个设计分硬件和软件两大部分。硬件部分采用MEGA16单片机作为可编程芯片,字符液晶作为信号显示;软件部分利用C语言作为设计语言,对MEGA16进行编程实现各种功能。硬件设计电路分解为MEGA16单片机、晶体振荡器和数码管3个部分,其结构简单,经济实惠。MEGA16单片机内部晶体振荡器的外接电路。由两个电容和晶体振荡器构成,其电路如图1所示。图屮X1和X2分别接MEGA16的两个脉冲控制端,使得MEGA16的内部脉冲电路为电子时钟和整个系统时钟提供脉冲。图1所示给出了采用MEGA16单片机外加电源及晶体振荡器构成最小单片机系统
5、。配合单片机开发的设计、调试和下载,最终将时钟信息从端口输出到字符液晶显示。TTKTkt.uj,ZQfK4:xr.uL:Z20・nK"JMXpfivtcQjSC・・〒■■HlmmHlMrtl:zriaMBOZVOmrr^r.UlR图2给出的字符液品作为信号显示部分。字符液品采用6位模式与单片机的端口相连。153HHH4软件设计及调试过程软件设计包括Proteus的ISIS软件、CodeVisionAVR编辑软件和AVRStudio4调试。利用ISP将生成程序timer.cof下载到目标板。其主要程序如下:voiddisplay(void)//6位LED
6、数码管动态扫描函数PORTC=Oxff;PORTA=led_7[dis_buff[posit]];if(point_on&&(posit==2
7、
8、posit==4))PORTA
9、=0x80;PORTC=position[posit];if(++posit>=6)posit=0;}//Timer0比较匹配中断服务interrupt[TIMO_COMP]voidtimerO_comp_isr(void){display();//调用LED扫描显示if(++time_counter>=100){time_counter=0;time1sok=1;}}void
10、time_to_disbuffer(void)//时钟时间送显示缓冲区函数{chari,j=0;for(i=0;i<=2;i++){dis_buff[j++]=time[i]%10;dis_buff[j++]=time[i]/10;}}//INTO中断服务程序interrupt[EXTJNT0]voidext_intO_isr(void){if(++time[2]>=24)time[2]=0;}//INT1中断服务程序interrupt[EXTJNT1]voidext_int1Jsr(void)if(++time[1]>=60)time[1]=0;}v
11、oidmain(void)PORTA=OxOO;//显示控制I/O端口初始化DDRA=0xFF
此文档下载收益归作者所有