基于AT89c52单片机电子万年历设计(带程序)_第1页
基于AT89c52单片机电子万年历设计(带程序)_第2页
基于AT89c52单片机电子万年历设计(带程序)_第3页
基于AT89c52单片机电子万年历设计(带程序)_第4页
基于AT89c52单片机电子万年历设计(带程序)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

目 录一、摘要2二、设计3三、设计任务. 2四、设计要求3五、系统方案设计31、系统3 1)原理构成框图3 2)设计思路4 2、主程序设计4 3、中断程序设计55、时间调整电路的设计7六、系统评价7七、c语言程序注释及说明8一、摘要单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。将它嵌入到形形色色的应用系统中,就构成了众多产品、设备的智能化核心。本设计是基于AVR单片机强大的控制功能制作而成的电子万年历,该电子万年历包括四大功能:实时显示年、月、日、时、分、秒、星期;人为的校正年、月、日、时、分、星期;第一次开机显示12-00-30。二、设计目的1、掌握C52程序用于实践并实现相应的功能;2、掌握时钟程序的使用方法;3、掌握时间函数的使用方法;4、掌握键盘的程序使用方法;三、设计任务通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期等功能,并能准确计算闰年闰月的显示,七个按钮连接P0口可以精确调整每一个时间数值,通过对所设计的万年历时钟电路进行实验测试,达到了动态显示时间,随时调整时间等技术指标。四、设计要求(1)能够准确的计时,时间可在数码管上显示出来,默认显示为时、分、秒,每隔一分钟自动显示年、月、日及星期,也可通过按键控制显示,并可通过按键调节时间。(2) 第一次开机显示12-30-30。(3) 每半秒led彩灯闪烁一次 五、系统方案设计: 1、系统总体设计:1) 原理构成框图本设计用AT89C52作为核心控制部分,外接晶振电路与复位电路,以两个四位数码管作为显示部分,开关控制显示时间与日期,具体框图如图1所示,数码管框图如图2所示:晶振电路P3口开关控制调整时间部分单片机AT89C52八数码管显示部分数码管段选部分 复位电路P1口Led彩灯部分图1 原理框图 图2:数码管模块2)设计思路通过一段时间对专业书籍及多种设计方案的研究分析,我采用了比较常用的AT89C52作为核心控制芯片,用C语言进行编程来满足设计的要求。用LED数码管来实现年、月、日、时、分、秒、星期的显示,通过按键开关可以在日期与时间间切换和对时钟进行调整。2、 主程序的设计系统程序采用C语言按模块化方式进行设计,然后通过KeilC51L软件开发平台将程序转变成十六进制程序语言,得到HEX文件,经过USB转串口线下载到单片机板上即可实现。系统程序主要包括主程序、延时程序、显示处理程序、中断程序。主程序流程图如图3所示:开始清显示缓冲区 初始化定时计数器赋时钟初值开定时器调整时间数码管显示当前时钟值勤 图3 主程序框图3、中断程序设计 本设计中还有两个中断程序定时器0中断和定时器1中断,定时器1用来动态扫描,定时0零用来计时并且控制led灯的闪烁及年月日时分秒的自加一。动态扫描框图这里不再画出。定时器0中断框图如下:定时中断恢复初值,保留中断10ms加1 N Y秒加1秒单元清零,60秒到 N Y分加1秒单元清零,60分到 N Y分单元清零,24小时到时加1 N Y日加一时单元清零,月条件 N Y月加一月单元清零,24月到 NY年单元加一 返回图4 中断程序框图4、 时间调整电路的设计采用按键设计,该单片机有四个独立按键,分别为P30、P31、P32、P33独立式按键直接与单片机I/O口相连构成键盘,每个按键不会相互影响,这四个按键可控制时于分的加和减, 调节年月日及星期时需要按键组合控制(具体方法见程序注释),键盘模块框图如下: 图5:键盘模块六、系统评价该设计利用单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时,该方案节省硬件成本,且能使设计者对单片机的指令系统能有更深入的了解,从而掌握单片机应用技术MCS-52 c语言程序设计方法,因此,本系统设计采用此种软件控制方法来实现时,而由于ATMEL公司的AT89C52单片机是低功耗的具有4KB在线可编程FLASH存储器的单片机。它与通用80C52系列单片机的指令第和引脚兼容。片内的FLASH集成在一个芯片上,形成了功能强大、使用灵活和具有较高性能价格比的微控制器。它的功能强大,而且也较容易购买。总结:所要实现的功能通过单片机编程就可以达到,不需要额外的时钟芯片来增加成本,并使外围电路更加简单明了。七、c语言程序及注释说明: /*1、按键可以调整当时时间2、按键可以调节定时时间3、定时时间到继电器吸合*8位数码管显示 时间格式格式 12-30-30 表示:12点30分30秒S1 用于小时 加1操作 S2 用于小时减1操作S3 用于分钟 加1操作S4 用于分钟减1操作*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit KEY1=P30; /定义端口参数sbit KEY2=P31;sbit KEY3=P32;sbit KEY4=P33;sbit KEY5=P36;sbit KEY6=P37;sbit KEY7=P35;sbit LED=P12; /定义指示灯参数code unsigned char tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /共阴数码管 0-9unsigned char StrTab8;/定义缓冲区Unsigned char minute=30,hour=12, second=45, month=12,day=26,yea=2012r,week=1; /*/* 延时函数 */*/void delay(unsigned int cnt) while(-cnt);/*/* 显示处理函数 */*/void Displaypro(void) if(((second=0)&(second=3)&(second=29)&(month=2)&(year%4!=0) day=1; if (day=30)&(month=2)&(year%4=0) day=1; if(day=31)&(month=4|month=6|month=9|month=11) day=1; if (day=32)&(month=1|month=3|month=5|month=7|month=8|month=10|month=12) day=1; Displaypro(); if(!KEY3)&(!KEY5) delay(10000); if(!KEY3)&(!KEY5) month+;if(month=13)month=1; Displaypro(); if(!KEY4)&(!KEY5) delay(10000); if(!KEY4)&(!KEY5) year0+;if(year0=100)year0=00;year1+; Displaypro(); if(!KEY7)&(!KEY5) delay(10000); if(!KEY7)&(!KEY5) year0-;if(year0=255)year0=99;year1-; Displaypro(); /*/* 定时器1中断 */*/void time1_isr(void) interrupt 3 using 0/定时器1用来动态扫描 static unsigned char num; TH1=0xF8;/重入初值TL1=0xf0;switch (num) case 0:P2=0;P0=StrTabnum;break; /分别调用缓冲区的值进行扫描 case 1:P2=1;P0=StrTabnum;break; case 2:P2=2;P0=StrTabnum;break; case 3:P2=3;P0=StrTabnum;break; case 4:P2=4;P0=StrTabnum;break; case 5:P2=5;P0=StrTabnum;break; case 6:P2=6;P0=StrTabnum;break; case 7:P2=7;P0=StrTabnum;break; default:break;num+; /扫描8次,使用8个数码管if(num=8) num=0;/*/* 定时器0中断 */*/void tim(void) interrupt 1 using 1static unsigned char count;/定义内部静态变量TH0=0xd8; /重新赋值TL0=0xf0;count+; switch (count) case 0: case 20: case 40: case 60: case 80:Displaypro(); /隔一定时间调用显示处理 break; case 50:P1=P1; /半秒 LED闪烁 break; default:break; if (count=100) year=year1*100+year0; count=0; second+; if(second=60) second=0; minute+; if(minute=60) minute=0; hour+; if(hour=24) hour=0; day+; week+; if(week=8) week=1; if(day=29)&(month=2)&(year%4!=0) day=1; month+; if (day=30)&(month=2)&(year%4=0) day=1; mo

温馨提示

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

评论

0/150

提交评论