万年历课程设计报告.doc_第1页
万年历课程设计报告.doc_第2页
万年历课程设计报告.doc_第3页
万年历课程设计报告.doc_第4页
万年历课程设计报告.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

运城学院单片机课程设计报告课题名称 基于单片机的电子万年历的设计与实现单 位 运城学院 所在院(系) 计算机科学与技术系 班 级 1201 班 指导教师 学生姓名 高慧明 尹 鑫 孟 凯 陈海明 王武杰 叶 帅 2015年 5 月 28 日- 4 -目 录1.引言1 2.课程设计总体设计方案 22.1设计思路 22.2 设计方框图 23.设计原理分析 33.1时钟电路的设计 33.2控制电路的设计33.3电路原理图 5 4.软件设计64.1程序流程图 6 4.2软件仿真 64.3功能测试 75.程序代码 76.设计心得 117.参考文献 11电子万年历引言在日新月异的21世纪里,家用电子产品得到了迅速发展。许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有CPU控制器或者是单片机。单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。并且已经深入到工业生产的各个环节以及人民生活的各个方面,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等。用单片机来控制的小型家电产品具有便携实用,操作简单的特点。本文设计的电子万年历属于小型智能家用电子产品。利用单片机进行控制,实时时钟芯片进行记时,外加显示电路,和温度显示电路,可实现时间的调整和和温度的显示。电子万年历既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业、商店等相关行业的大厅,以及单位会议室、门卫等场所。因而,此设计具有相当重要的现实意义和实用价值。关键词:电子万年历 52系列单片机时钟芯片FLASH存储器液晶显示第2章 总体设计方案2.1设计思路 2.1.1方案1基于AT89S52单片机的电子万年历设计不使用时钟芯片,而直接用AT89S52单片机来实现电子万年历设计。AT89S52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦写1000余次。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。若采用单片机计时,利用它的一个16位定时器/计数器每50ms产生一个中断信号,中断20次后产生一个秒信号,然后根据时间进制关系依次向分、时、日、星期、月、年进位。这样就实现了直接用单片机来实现电子万年历设计。2.1.2方案2基于DS1302的电子万年历设计在以单片机为核心构成的装置中,经常需要一个实时的时钟和日历,以便对一些实时发生事件记录时给予时标,实时时钟芯片便可起到这一作用。过去多用并行接口的时钟芯片,如MC146818,DS12887等。它们已能完全满足单片机系统对实时时钟的要求,但是这些芯片与单片机接口复杂、占用地址, 数据总线接线多、芯片体积大占用空间多、近年来串行接口的各种芯片在单片机系统中应用愈来愈多,串行接口的实时时钟芯片也出现了不少,DS1302是一个综合性能较好且价格便宜的串行接口实时时钟芯片。利用单片机AT89C52进行控制,采用DS1302作为实时时钟芯片,其三线接口SCLK、I/O、/RST与单片机进行同步通信,外加掉电存储电路、显示电路、键盘电路,即构成一个基本的电子万年历系统,若还要添加其他功能,在这基础上外扩电路即可。由于在系统设计时,需要考虑以下几点因素:功耗低、精确度高、软件编程较简单,芯片的体积小、芯片成本低等,而DS1302芯片有上面所述的诸多优点,所以本设计采用方案2。2.1.3方案3基于AT89C52单片机的电子万年历设计本方案选用的是单片机(AT89C52)来实现电子万年历的功能,DS1302作为实时时钟芯片。共具备两个功能:(1)显示年月日及时分秒、星期、温度、农历日期等信息(2)具有可调整日期和时间功能(具有闹钟调节模块,但是未能成功实现闹钟功能)。2.2设计方框图该设计的硬件电路的总体框图如图1所示:图1 设计方框图第3章 设计原理分析3.1 时钟电路的设计实时时钟芯片DS1302采用串行数据传输,可为掉电保护电源提供可编程的充电功能,也可以关闭充电功能,芯片采用32768Hz晶振。要特别说明的是,备用电源BT1可以用电池或超级电容(10万F以上)。虽然DS1302在主电源掉电后耗电很小,但如果要长时间保证时钟正常,最好选用小型充电电池。如果断电时间较短(几小时或几天),可以用漏电较小的普通电解电容代替(100F就可以保证1小时的正常走时)。DS1302在第一次加电后,需进行初始化操作。初始化后就可以按正常方法调整时间及闹铃。DS1302的时钟电路如图2所示。图2 DS1302时钟电路3.2 控制电路的设计AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端。如图3所示:图3 万年历控制电路(1)微处理器在设计过程中我使用单片机AT89C52,通过软件编程的方法实现了以24小时为一个周期同时显示小时,分钟和秒的要求,该定时闹钟设有四个按键,使之具备了校时、定时功能。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据。同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。在PROTEUS软件环境下的AT89C52单片机如图4所示:图4 PROTEUS软件环境下的AT89C52芯片(2)显示电路就时钟而言,通常可采用液晶显示或数码管显示。由于一般的段式液晶屏,需要专门的驱动电路,而且液晶显示作为一种被动显示,可视性相对较差;对于具有驱动电路和微处理器接口的液晶显示模块(字符或点阵),一般多采用并行接口,对微处理器的接口要求较高,占用资源多。另外,AT89C52本身无专门的液晶驱动接口,故使用液晶显示LGM12641BS1R,对于显示文字比较适合。初始化时,由软件编写的指令就集中在显示功能的设置上。LGM12641BS1R的指令可带一个、两个参数,或无参数。若指令中含有参数,则每条指令执行时均须先送入参数,再送入指令代码。由于状态位作用不一样,因此执行不同指令必须检测不同状态位。液晶显示模块LGM12641BS1R如图5所示:图5 液晶显示电路LGM12641BS1R(3)按键电路由于设计的是电子万年历,需要实现多种功能的显示,并要能够切换显示和调节年月日,故在设计过程中按键的设计就显得尤为重要。在设计过程中我一共采用了4个按键,尽量在小的空间里实现最多的功能。其中return键是设置功能返回键,按下一次就能够直接退出功能设置模块。在调整显示环境下UP和DOWN键是显示调整位的的加1和减1键,FUNCTION键进入模块设置界面,以及“确定”功能。按键电路如图6所示:图6 按键电路3.3 电路原理图电路原理图如图7所示:图7 万年历设计总原理图第4章软件设计4.1 程序流程图该设计主程序流程图如图8所示:初始化定时器初始化定时器初始化串口初始化显示待机指示符设定月设置年显示刷新启动走时变量初始化刷新显示判时分变化否?秒指示判秒到否?年代显示时间显示星期显示YYYY图8 主程序流程图4.2 软件仿真加载源程序运行,顺利实现了单片机数字电子钟的“小时”、“分钟”、“秒”的显示。该电子万年历的显示效果及电子万年历时间和日期的调节效果分别如图9和图10所示:图9 电子万年历的运行效果图10 电子万年历时间和日期的调节效果4.3 功能测试表1 功能测试计时功能LCD能显示当前的时、分、和秒,具体是时跟分一起显示,分跟秒一起显示,通过按键来切换星期显示功能通过按键可以切换到星期显示的界面,按返回键则重新回到主界面显示时间调整功能通过按键可以调整或设定年、月、日、星期、时、分,且能实现秒的微调功能室温检测并显示功能通过智能传感器DS18B20能够实现检测功能,并通过LCD能完成液晶显示功能闰年功能能计时到万年,且能自动判断闰年与平年,并实现正确的计时操作第5章 程序代码主程序代码#include #include #include #include #include #include #include /*预定义*/#define uchar unsigned char#define uint unsigned int/*/sbit bell = P2 0; /定义蜂鸣器端口sbit in = P2 7; /定义红外检测端口/* 名称: Timer0_Service() inturrupt 1* 功能: 中断服务程序 整点报时 3声嘟嘟的声音*/void Timer0_Service() interrupt 1 static uchar count = 0; static uchar flag = 0; /记录鸣叫的次数 count = 0; TR0 = 0; /关闭Timer0 TH0 = 0x3c; TL0 = 0XB0; /延时 50 ms TR0 = 1 ; /启动Timer0 count +; if( count = 20 ) /鸣叫 1 秒 bell = bell; count = 0; flag +; if( flag = 6 ) flag = 0; TR0 = 0; /关闭Timer0 /* 名称: Timer2_Servie() interrupt 5* 功能: 中断服务程序 整点报时 一分钟*/void Timer3_Service() interrupt 5 static uchar count; TF2 = 0; /软件清除中断标志 count +; if( in = 1 ) count = 0; /计算清0 TR2 = 0; /关闭Timer2 bell = 1; /关闭蜂鸣器 if( count = 120 ) / 一分钟后 关闭报警 count = 0; /计算清0 TR2 = 0; /关闭Timer2 bell = 1; /关闭蜂鸣器 /* 函数名称:main()*/void main( void ) uchar clock_time7 = 0x00, 0x00, 0x12, 0x29, 0x06, 0x08 ; /定义时间变量 秒 分 时 日 月 年 uchar alarm_time2 = 0, 0; /闹钟设置 alarm_time0: 分钟 alarm_time1 :小时uchar temperature2; /定义温度变量 temperature0 低8位 temperature1 高8位 Lcd_Initial(); /LCD初始化clock_Initial( clock_time ); /时钟初试化 /*中断初始化*/ EA = 1; /开总中断 ET0 = 1; /Timer0 开中断ET2 = 1; /Timer2 开中断 TMOD = 0x01 ; /Timer0 工作方式 1RCAP2H = 0x3c; RCAP2L = 0xb0; /Timer2 延时 50 ms while( 1 ) switch( Key_Scan() ) case up_array: Key_Idle(); break; case down_array: Key_Idle(); break; case clear_array: Key_Idle(); break; case function_array: Key_Function( clock_time, alarm_time ); case null: Clock_Fresh( clock_time ); /时间刷新 Lcd_Clock( clock_time ); /时间显示 Sensor_Fresh( temperature ); /温度更新 Lcd_Temperture( temperature ); /温度显示 Calendar_Convert( 0 , clock_time ); Week_Convert( 0, clock_time ); /整点报时 if( ( * clock_time = 0x59 ) & ( * ( clock_time + 1 ) = 0x59 ) ) bell = 0; TR2 = 1; /启动Timer2 /闹钟报警 if( * alarm_time = * ( clock_time + 1 ) ) /分钟相吻合 if( * ( alarm_time + 1 ) = *( clock_time + 2 ) ) /小时相吻合 bell = 0; TR2 = 1; /启动Timer2 break; 第6章 设计心得这次课程设计,我们组分工合作。经过这次设计,大家都有了很大的收获,对单片机编程控制有了进一步的了解。该设计涉及到了单片机的时序控制,数据接口包括并行数据接口以及串行通信接口,同时用到了控制按键、环境信息检测、数据显示处理等。这次设计,基本上涉及到了

温馨提示

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

评论

0/150

提交评论