首页 基于单片机的万年历设计

基于单片机的万年历设计

举报
开通vip

基于单片机的万年历设计万年历设计 (计算机科学与技术13-2班 高慧) 摘要:时间是科学技术中最基本的物理量之一,无论是农业生产,还是工业自动控制,都与时间息息相关。随着科技的发展,人们生活水平不断提高,人们所关心的不仅仅是时间,还有其他一些像室内温度、农历日期、星期等和人们生活联系紧密的数据,万年历集合了定时闹铃、整点报时、温度显示、农历日期和节日的显示等,它的设计和实现对人们的生活提供了更多的方便。此次万年历设计选用的是C语言实现的,所用到的原理非常简单,他是由软件实现时间,利用外部中断,和定时计数器中断来完成的。时间的走动主要是...

基于单片机的万年历设计
万年历设计 (计算机科学与技术13-2班 高慧) 摘要:时间是科学技术中最基本的物理量之一,无论是农业生产,还是工业自动控制,都与时间息息相关。随着科技的发展,人们生活水平不断提高,人们所关心的不仅仅是时间,还有其他一些像室内温度、农历日期、星期等和人们生活联系紧密的数据,万年历集合了定时闹铃、整点报时、温度显示、农历日期和节日的显示等,它的设计和实现对人们的生活提供了更多的方便。此次万年历设计选用的是C语言实现的,所用到的原理非常简单,他是由软件实现时间,利用外部中断,和定时计数器中断来完成的。时间的走动主要是有程序执行时的延时来完成的,设计的结果是基本完成万年历的功能。 关键字:万年历  单片机  仿真 1 选题背景 万年历是我国古代传说中最古老的一部太阳历。为纪念历法编撰者万年的 功绩,便将这部历法命名为“万年历”[1]。而现在所使用的万年历,实际上就是 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 一定时间范围内的具体阳历或阴历的日期的年历,方便有需要的人查询使用,与原始历法并无直接联系。随着新技术的不断开发与应用,近年来单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起。单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低,可靠性高,抗干扰能力强和使用方便等独特优点,在数字、智能化方面有广泛的用途。单片机的应用已经渗透到工业控制、家用电器、通信设备、 信息处理、尖端武器等各个领域。而随着单片机的发展,人类用于计时的工具也在不断发 展更新,单片机技术使得万年历有了新的发展方向。目前世界上单片机年产量已达十多亿片,通常是当年微处理器产量的4-5 倍以上。用最少的芯片就能实现最强大的功能,这是 将来电子产品的主流方向,它将无可置疑地一步步取代其它同类产品,其数量之大和应用面之广,是其它任何类型的计算机所无法比拟的。 电子万年历是一种非常广泛的日常计时工具,它具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 的发展趋势,具有广阔的市场前景。万年历采用24小时制方式显示年、月、日、星期、小时、分钟、秒和闹钟等功能。整个万年历通过简易的键盘来实现各个功能,界面简洁、直观、易于操作,在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面认识[2]。本设计运用代码的延时功能来实现时间的功能。在时间的实现过程中,运用晶振时间的累加构成秒,由秒的累加构成分、星期、年、月、日,最终实现万年历时间的功能。再由外部中断0实现对时间和闹钟的调整和设定,用定时中断1实现闹钟时间到时启动闹钟,用外部中断1实现停止的功能。这三个中断实现了万年历的人性化设计,这在整个万年历工程中充当着硬件的灵魂。整机电路使用+5V稳压电源,可稳定正常工作。 2 设计的目的和意义 本设计的主要目的: 1、了解单片机技术的发展现状,熟悉万年历各模的工作原理。 2、选择适当的芯片和元器件,确定系统电路,绘制电路原理图,尤其是各接口电路。 3、熟悉单片机使用方法和C语言的编程规则,编写出相应模块的应用程序。 这次课程设计的实现意义所在就是,通过这次的课程设计,使我们巩固了所学的知识,更进一步了解了单片机的结构,加强了我们的编程能力、锻炼了我们每个人的动手能力,是我们所学的知识得到了应用。其次就是编程问题了,编程的实现与算法的关系是密不可分的,所以寻找一个好的算法是至关重要的,这就要求我们对所学语言掌握的能力了[3]。 3 目标与总体 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 3.1设计目标 设计的目标是用LCD液晶准确的显示年月日、星期几和时分秒,并且可以对时间进行校对,对年月日进行调整。最终实现2000-2099任一天的年月日对应的星期[4]。另外所加的一个功能就是闹钟的功能,此功能可以实现对闹钟的设定和是否开启闹钟。 3.2设计总体方案 独立设计一个万年历,运用已学课程的基本知识,独立进行单片机应用技术和开发工作,掌握单片机程序设计、调试和应用电路设计、分析及调试检测[5]。 要求如下: (1)显示年、月、日、时、分、秒及星期等信息。 (2)具有年、月、日、星期、时、分、秒校准功能。 (3)显示闹钟等功能。 3.3设计方法和内容 3.3.1开发环境 操作系统:Windows 98/ME/2000/XP 仿真软件:Proteus 7 Professional 编译软件:Keil uVision4 开发语言:C语言 3.3.2程序流程框图 图3-1万年历程序流程图 4 详细设计 此次设计运用了C语言来实现万年历的各个功能。秒的产生是由定时器T0产生的,他把单片机晶振的时间通过累加,最后产生秒[6]。再通过秒的累加产生分钟,最后产生年。其中按键1的作用是产生中断信号,通过按键1的中断进入到调挑时间的界面,然后由第一个按键来选择要调的内容下方,把光标移过去,再通过按键2来调用子函数,实现所调内容的改变[7]。 接着又运用两个中断实现闹钟的开启和关闭,当当前时间和闹钟所设定的时间一致的时候,通过定时器中断来请求CPU中断,由CPU的响应来启动闹钟。但人们按按键的时候,又会通过外部中断1来完成脑中的关闭[8]。 4.1秒数的产生由定时器T0产生 0置10ms定时初值dc00H(2^16=65536D,dc00H=56320D) 定时时间=(65536-56320)*(1/11.0592)*12=10ms (单片机晶振f0=11.0592Mhz) 用累加的方法让定时时间累加一百次即可产生一秒时间:100*10ms=1000ms=1s T 4.2 总天数的算法 首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,则该年份的二月为29天,否则,为28天。然后判断每月是大月还是小月,如果是大月则为31天,否则为30天,用累加法由天数计算到年,若为闰年,则总天数为366天,否则为365天,再由天数累加为年[9]。 4.3 输出月份第一天为星期几的算法 使总天数除以7取余加2得几既为星期几,若是7,则为星期日[10]。 4.4单片机主控制模块的设计 AT89C52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入[11],XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端,如图3-2 所示 图3-2 主控制系统 4.5显示模块的设计 LCD1602液晶显示屏是工业字符型液晶,能够同时显示16x02即32个字符。(16列2行),有16个引脚,通过D0~D7的8位数据端传输数据和指令,引脚图如图3-3。 图3-3 LCD1602引脚示意图 LCD1602液晶显示屏引脚功能如表3-1所示: 表3-1  LCD1602引脚功能 管脚1 Vss 一般接地 管脚2 Vdd 接电源(+5V) 管脚3 V0 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高 管脚4 RS RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器 管脚5 R/W R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 管脚6 E E(或EN)端为使能(enable)端,下降沿使能。 管脚7 DB0 底4位三态、 双向数据总线 0位 管脚8 DB1 底4位三态、 双向数据总线 1位 管脚9 DB2 底4位三态、 双向数据总线 2位 管脚10 DB3 底4位三态、 双向数据总线 3位 管脚11 DB4 高4位三态、 双向数据总线 4位 管脚12 DB5 高4位三态、 双向数据总线 5位 管脚13 DB6 高4位三态、 双向数据总线 6位 管脚14 DB7 高4位三态、 双向数据总线 7位 管脚15 BLA 背光电源正极 管脚16 BLK 背光 电源负极       1602液晶模块内部的控制器共有11条控制指令如下表3-2所示 表3-2  LCD的控制指令 序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 置输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示开/关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到CGRAM或写数到DDRAM 1 0 要写的数据内容 11 从CGRAM或DDRAM读数 1 1 读出的数据内容                         1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现。(说明:1为高电平、0为低电平)如下表3-3所示 表3-3LCD的控制命令表 指令1 清显示,指令码01H,光标复位到地址00H位置 指令2 光标复位,光标返回到地址00H 指令3 光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 指令4 显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 指令5 光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。 指令6 功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符 指令7 字符发生器RAM地址设置 指令8 DDRAM地址设置 指令9 读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙 指令10 写数据 指令11 读数据     将lcd的引脚与单片机连接,通过单片机实现对显示的输出,电路图实现如下: 图3-4LCD的引脚与单片机连接 4.6闹钟模块的设计 闹钟模块采用蜂鸣器实现,蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电[12]。 通过单片机的p1.2引脚输出的电平变化来控制蜂鸣器的导通与否,设计如下: 图3-5闹钟蜂鸣器与AT89C52芯片连接图 5设计创新与特点难点 5.1关键技术 本次课程设计的创新点在于增加了闹钟的功能,这使得万年历的用途得到更大的推广,运用闹钟的功能可以提醒用户所设定的时间已经到了,提醒用户该做自己应该做的事情了[13]。 另外此万年历使用的是LCD1602显示时间,改掉了以往使用的数码管,这使得万年历的功能更完善,显示的更清晰,而且省电,耐用,可靠性强[14]。 设计的关键技术在于时间的生成、调时间时的中断、闹钟中断的自动启用。这是完成整个编程的关键所在。本次课程设计使用的中断有外部中断0、外部中断1和定时中断0[15]。 5.2设计的特点难点 这次课程设计主要的特点在于它的显示部分,它的显示部分采用的是LCD1602液晶,使用液晶的优势在于它显示清晰,能显示各种字符。难点主要在两个反面,一个就是它秒的产生,无论是年月日,还是星期,都是由秒积累累加产生的,所以秒的产生是至关重要的[16]。本设计是通过软件实现的秒,这样的优点是节约硬件资源,充分发挥了软件的作用。另一个难点就是中断的设计,中断不仅节约CPU的资源,而且可以实现人机接口,是人们更方便的智能的控制万年历的使用。本设计的中断部分采用三个中断,分别为外部中断0、外部中断1和定时中断2,这三个中断实现了时间和闹钟的调整、闹铃的开启、闹铃的关闭[17]。 6 调试与结果分析 程序调试完成后,把生成的hex文件下载到仿真软件上,在仿真软件上可以正常运行,担当下载到开发板上以后发现,并不显示,经过仔细的分析,才发现仿真图和开发板上的电路不一致,错在这一定的出入,主要是LCD1602的RS、RW和E所接的位置不一致造成的[18]。于是为了使程序适应开发板,我们把程序和仿真软件图作了相应的修改,最终实现了运行。 3.6.3调试结果 1、设置闹钟如图所示 图3-8设置闹钟的时间 2、设置万年历的时间如图所示 图3-9设置时间 3、整体设计如图所示 总结 课程设计是我们的一学期学习生活的最后一项学习任务,是对我们学习一学期学习的综合考核。此次设计过程中,我们不仅较为系统的复习了以前学的知识,而且又学习了许多新知识,使我们的知识更加系统化,更加完善。同时,也提高了独立分析问题、解决问题的能力。相信课程设计一定会为我们在不久的将来踏上工作岗位打下了良好的实践基础。通过软件编程,实现了对年、月、日、时、分、秒、星期、闰年和阴历的自动调整,用按键进行控制,用液晶模块进行显示,并具有闹铃功能。电子万年历可以正常显示时间并进行时间调整,基本完成了预期要实现的目标。当然需要改进的地方也是有的,在万年历中可以增添温度监控,这样就能实现对温度的时时监控。 在整个设计过程中,学到了许多没学到的知识,较好的完成了作品,达到了预期的目的。相互学习、相互讨论、研究,完成了最初的设想。在遇到困难时,不能心急,一个个慢慢来不能急于求成,反而达到事半功倍的效果。对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,理清了思路,反而更加得心应手。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。也练就了我们的耐心,做什么事都在有耐心,这才是最重要的。 参考文献 [1]秦威,魏东方等.基于实时时钟芯片与LCD屏的万年历的设计.云南大学学报.2009(S2) [2]赵建伟,张昆.单片机应用技术课程基于工作过程教学的探索[J]:煤炭技术.2010(07) [3]郑丽丽,谢磊.一种公历到农历日期转换算法的实现[J]:微计算机信息.2005(10) [4]杜高明,王锐.一种改进的微控制器FPGA原型芯片设计与验证:仪器仪表学报.2006(S3) [5]苏勋文.单片机系统仿真策略的研究[J]:煤矿机械. 2004(03) [6]于永,戴佳. 51单片机C语言常用模块与综合系统设计实例精讲.电子工业出版社.2008 [7]张天凡.51单片机C语言开发详解.电子工业出版社.2008     [8]戴佳,戴卫恒等.51单片机C语言应用程序设计实例精讲.电子工业出版社.2008     [9]江志红.51单片机技术与应用系统开发案例精选.清华大学出版社.2008     [10]王守中.51单片机开发入门与典型实例.人民邮电出版社.2007     [11]赵建领,薛园园.51单片机开发与应用技术详解.电子工业出版社.2009     [12]兰吉昌.51单片机应用设计百例.化学工业出版社.2009     [13]高卫东,辛友顺.51单片机原理与实践.北京航空航天大学出版社.2008     [14]李强.51系列单片机应用软件编程技术.北京航空航天大学出版社.2009 [15]周向红.51系列单片机应用与实践教程.北京航空航天大学出版社.2008     [16]刘海涛,赵金波.8051单片机C语言程序设计与实例解析.清华大学出版社.2009     [17]钟富昭,张晨.8051单片机典型模块设计与应用.人民邮电出版社.2007     [18]吴金戍.8051单片机实践与应用.清华大学出版社.2002
本文档为【基于单片机的万年历设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_215732
暂无简介~
格式:doc
大小:74KB
软件:Word
页数:15
分类:互联网
上传时间:2019-02-21
浏览量:83