课程设计课程名称单片机原理及应用课题名称基于1602电子时钟设计专业电子信息工程班级学号姓名指导老师2017年12月21日电气信息学院课程设计任务书课题名称基于1602电子时钟设计姓名专业电子信息工程班级学号指导老师课程设计时间2017年12月4日-2017年12月15日(14、15周)教研室意见意见:审核人:一、任务及要求设计任务:以单片机为核心设计一个电子时钟。
能焊接开发板的同学,在开发板上进行调试。
(1)时间显示在1602液晶上,并且按秒实时更新。
(2)使用按键随时调节时钟的时、分、秒,按键可设计三个有效键,分别为功能选择键、数值增大键和数值减小键。
(3)每次有键按下时地,蜂鸣器都以短“滴”声报警。
(4)如何继续断电前的时间。
设计要求:(1)确定系统设计方案;(2)进行系统的硬件设计;(3)完成必要的参数计算与元器件选择;(4)开发板焊接及测试(5)完成应用程序设计;(6)应用系统的硬件和软件的调试。
二、进度安排第一周:周一:集中布置课程设计相关事宜,并查阅、收集相关设计资料。
周二:系统方案设计。
周三~周五:实验室进行硬件设计,软件设计及调试。
第二周:周一~周二:实验室系统仿真及硬件调试。
周三:实验室检查调试结果。
周四:撰写设计报告。
周五:进行答辩和上交设计说明书。
三、参考资料1、周向红.51系列单片机应用与实践教程.北京航空航天大学出版社.2008.52、周向红.51单片机课程设计.华中科技大学出版社.2011.13、王迎旭.单片机原理及应用(第2版).机械工业出版社.2012.24、郭天祥.51单片机C语言教程(入门提高开发拓展全攻略).电子工业出版社.2012.15、樊思奇.80C51单片机C语言程序设计完全手册.电子工业出版社.2014.56、彭伟.单片机C语言程序设计实训100例基于8051+Proteus仿真.电子工业出版社.2009.67、孙安青.MCS-51单片机C语言编程100例(第二版).中国电力出版社.2017.68、赵建领.零基础学单片机C语言程序设计.机械工业出版社.2012.9目录第1章课题设计 (1)第2章系统方案设计 (1)2.1单片机芯片选择 (1)2.2 显示模块的选择 (1)2.3 时间计算模块的选择 (2)2.4 电路设计最终方案 (2)第3章系统硬件设计 (3)3.1 主控模块 (3)3.2 1602液晶显示模块 (3)3.3 时间计算模块设计 (4)3.4 报警模块 (4)3.5 设置模块 (5)3.6 电源接口(USB供电电路) (5)3.7 晶振电路及复位电路 (6)3.8 单片机与P0口的排阻 (7)第4章系统软件设计 (7)4.1 主函数 (7)4.2 1602液晶屏 (8)4.3 软件原理图 (8)第5章系统调试过程 (9)4.2 1602液晶屏 (9)4.3 软件原理图 (9)总结 (10)参考文献 (10)附录(软件原理图及程序清单) (11)第1章课题设计设计任务:以单片机为核心设计一个电子时钟。
能焊接开发板的同学,在开发板上进行调试。
(1)时间显示在1602液晶上,并且按秒实时更新。
(2)使用按键随时调节时钟的时、分、秒,按键可设计三个有效键,分别为功能选择键、数值增大键和数值减小键。
(3)每次有键按下时地,蜂鸣器都以短“滴”声报警。
(4)如何继续断电前的时间。
第2章系统方案设计2.1单片机芯片选择采用传统的STC89C52RC芯片作为硬件核心:该芯片具有 8KB 在线系统可编程Flash存储器。
STC89C52RC使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能,并且可直接使用串口下载。
2.2 显示模块的选择1602液晶屏显示:1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块采用液晶显示。
液晶显示功耗低,轻便防震。
由于设计显示信息比较多,占用的系统资源少,操作方便。
因本设计显示的字符较多,1602LCD可以显示32个字符,而8段数码管显示的字符较少,且操作比液晶显示略显繁琐,所以采用1602液晶屏组成本设计的显示模块。
流程:LCD初始化-检测忙碌状态-写指令-写数据-显示数据显示模式:16X2显示,5X7点阵,8位数据接口;开显示,无光标,无闪烁;光标右移、文字移动无效。
1602型读写操作规定:因为LCD是个慢显示器件,在写每条指令前要先读其忙碌状态。
忙碌标志位为BF,位于DB7位,BF=0,表示不再执行写指令,BF=1,忙碌就等待。
2.3 时间计算模块的选择方案(1):采用STC89C52RC芯片STC89C52RC单片机内部带有定时/计数功能,此定时功能是通过对外部晶振的脉冲进行计数,从而达到计时功能,只要使用12MHZ实现零误差的计时。
方案(2):采用DS1302芯片DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片。
该芯片采用3线串行接口方式,可提供年月日、星期、时分秒等时间信息,并可根据月份和闰年的情况自动调整月份的结束日期。
内部带有31个字节RAM,用于存放临时性数据,同时具有可编程涓细电流充电能力。
在跟其他组的对比中,方案(2)的效果更好,但是需要不同的方案做这个电子时钟,于是我们选择了方案(1)。
2.4 电路设计最终方案综上各方案所述,本系统以STC89C52RC单片机为控制核心,通过单片机内部的计时功能,并将得到的数据通过1602液晶显示出来,同时通过对应的按键调整相应的值,并且通过蜂鸣器实现报警功能。
因此本设计的总体方案组成框图如图2-1所示:图2-1 总体方案组成框图第3章系统硬件设计3.1 主控模块本次课程设计主要用到STC89C52RC单片机,硬件原理图(见附录图一)。
端口分配表如3-1所示:表3-1 端口分配表3.2 1602液晶显示模块1602液晶功耗较小可直接与单片机接口相接,电源直接与电源电路相接为+5V,对比度可调。
本设计使用单片机的P0口和P2口与1602进行通信。
另外1602有2行显示,每行显示的字符数为16个,可以用于显示字母、数字、符号等,并具有简单且功能较强的指令集,可以实现字符显示、移动、闪烁等功能。
1602液晶与单片机接口电路如图3-2所示:图3-2 1602液晶显示3.3 时间计算模块设计计时统计和键盘扫描功能均由单片机内部定时器T0的中断服务程序的完成的,即定时器T0每50ms发送中断请求一次,再进行键盘扫描。
时分秒显示共同由一个子函数完成。
定时器中断:定时器T0每50ms产生一次中断,再建立中断次数累计变量。
若中断次数满20次,则秒计数变量S加1即(50ms*20=1s);若秒计数满60,分钟计数变量M 加1,同时将秒计数变量清零;若分钟计数变量满60,小时计数变量H加1,同时将分钟计数变量清零;同理,若小时计数变量满24,将小时计数变量清零。
由此我们时间计算模块得以设计。
3.4 报警模块在本设计中蜂鸣器直接接在单片机P3.0上。
报警模块采用单片机输出1.25KHZ的频率从而使蜂鸣器发出声音。
方波图如图3-4所示:图3-4 方波图3.5 设置模块设置模块采用四个按键K1-K4与单片机P1.0、P1.1、P1.2、P1.3接口相接,其中K1为设置模块的选择位(时分秒),K2是增加键,K3是减少键,K4为确认键。
独立按键与单片机接口电路如图3-5所示:图3-5 独立按键与单片机接口3.6 电源接口(USB供电电路)采用USB接口从电脑接到电源接口中,拨动开关可控制电路的接通和关闭,并用一个发光二极管作电源指示。
电源接口如图3-6所示:图3-6 电源接口3.7 晶振电路及复位电路晶振电路:图3-7-1单片机的工作时间基准是由时钟电路提供的,在单片机的XTAL1和XTAL2两个管脚接一只晶振及两只电容就构成了单片机的时钟电路,电路中对电容器C1和C2对振荡频率有微调作用,通常取30pF石英晶体选择12MHZ,如图3-7-1所示。
复位电路:图3-7-2复位电路主要是由型号为10uF/16V的电解电容,1K,10K的电阻以及按键构成,RST 接芯片的相应引脚RST,构成上电复位和手动复位。
上电复位是经过电容与10K电阻上电之后就进行复位。
手动复位是按下开关为高电平1进行复位,如图3-7-2所示。
3.8 单片机与P0口的排阻本设计主要的硬件89C52以及上拉电阻连接的线路图图3-8 单片机与P0的排阻第4章系统软件设计软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运行情况的良好。
本系统采用具有编写灵活、移植方便、便于模块化设计的C语言编写,并通过Proteus 软件进行仿真,完成各种实质性功能的设计。
4.1 主函数主函数是程序功能总结显示的函数,其主要显示的是时间主要部分;当蜂鸣功能打开,每设置时间时就会发出嘀嘀的响声并且在液晶屏上有相应的提示,此时按按键4确认退出;当进入设置状态完成后退出就回到设置时间显示状态。
主函数程序框图如图4-1所示:图4-14.21602液晶屏1602液晶屏是此设计的主要输出部分,有2行显示,每行16个字符,根据写入的位置而显示,当显示欢迎界面时是流动的,整个屏幕向右移动。
1602LCD流程图如图4-2所示:图4-24.3 软件原理图软件原理图如附录图所示:这个设计中,STC89C52RC主要功能是储存程序、根据程序的内容对各个端口进行判断并作出相应的处理;LCD1602主要功能是将所要显示的显示出来。
通电后,进入欢迎界面,前后延时2.8s,,后显示当前时间,若按下按键1就进入调节状态,此时在按下按键1为设置时间状态,按下按键2为加按下按键3为减,按下按键4为确认调节状态。
第5章系统调试过程系统调试共分为两大部分:一个是软件调试,另一个是硬件调试。
其中软件仿真通过Protues实现;硬件部分现在Protel99SE上设计出硬件电路图,画出PCB图,然后再制造出实物。
调试方法采用先分别调试各单元模块,调通后再进行整体调试的方法,以提高调试效率。
5.1软件调试先根据仿真检测当中的元件是否符合电路的设计,在KeilC51写入程序并且修改至编译正确,在将写好的程序入入到Protues软件单片机芯片上,进行仿真。
仿真结果如下所示:图a : 显示时间图b: 显示调节秒图c:显示调节分图d:显示调节时5.2硬件调试根据仿真后的电路图进行做板,先用万用表检测各元器件是否正确,再焊接电路,完成后检查无误就将程序用单片机板下载到芯片上,后把芯片拔下插入实物板上,即可工作。
上电后,拨动电源开关就进入欢迎界面,2.8s后进入当前时间状态,按下按键1进入调节状态,此时按下按键1为设置时间状态(时分秒),按下按键2为设置为加,按按键3为设置为减,按下按键4为确认调节状态。