(完整版)单片机毕业论文81102637.doc_第1页
(完整版)单片机毕业论文81102637.doc_第2页
(完整版)单片机毕业论文81102637.doc_第3页
(完整版)单片机毕业论文81102637.doc_第4页
(完整版)单片机毕业论文81102637.doc_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

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

文档简介

1、专科毕业设计(论文)题目 基于 51 单片机的可调数码日历钟的设计与制作院(系部)电子与信息工程系专业名称电子信息技术年级班级学生姓名指导教师摘要单片机以其体积小、编程灵活、控制功能强大、价格低廉等特点被广泛应用在各种电子电器产品中。单片机技术的出现和发展带来了电子技术和控制领域的一场革命。单片机课程作为职业院校电子信息类专业一门重要的基础课程,它既是一门很有实用价值、 实践性很强且很有趣味性的课程,同时它又是一门集硬件电路设计与软件编程于一体的学科, 既要求我们有较好的电工电子技术基础知识, 又要求有一定的逻辑思维和软件开发(编程)能力。通过近几年对单片机的学习,我已掌握单片机的基本知识,并

2、具备了单片机应用系统的初步开发能力。即将毕业之际,我运用我所掌握的单片机知识设计和制作了一个基于 51 单片机的可调数码日历钟, 这既是对我所学知识的总结与高度概括, 同时也将自己所掌握的知识与实际应用结合起来,进一步提高工程实践能力。数码日历钟是实际生活中应用较多的一个电子计时装置,可供人们查询日期、星期及掌握时间。本文首先从数码日历钟的功能要求入手,对设计任务进行了分析,并将任务分解为若干个模块,提出在设计与制作过程中要用到的相关知识点,给出了本设计的硬件电路及软件流程,还给出了部分模块的源程序代码。本设计经过多次调试运行无误,最终提交出一个完整的应用系统产品。本次毕业设计的数码日历钟能在

3、 12864 液晶屏上显示出年月日时分秒以及星期几,还能显示当前环境温度,并能通过按键调整日期和时间,在调整日期的同时通过相应算法自动实现星期几的调整,而且无论是否闰年、任何月份,当日期调整时都保证不会出现非法日期。数码日历钟是一个非常实用的设计与制作,成本低廉,如能进一步完善,具有一定的推广使用价值。本设计任务比较复杂,要考虑的问题很多,C 语言的模块化程序设计思想较好地解决了这个问题,故本设计任务采用C 语言编程。关键词: 51 单片机, C 语言,数码日历钟,毕业设计,制作目录摘要 . .1 概述.11.1毕业设计的选题背景及制作意义 .11.1.1毕业设计的选题背景 .11.1.2毕业

4、设计的制作意义 .11.2数码日历钟的功能要求 .11.3本设计制作的主要内容 .22 数码日历钟的设计与制作任务分析.32.1 数码日历钟的设计与制作任务分析与分解 .32.2 设计方案的论证及选择 . .33 相关知识链接 .63.1 51单片机简介 . .63.1.151单片机简介 . .63.1.251单片机引脚功能介绍 .83.2 由已知日期推算星期几 . .113.2.1如何判断一个年份是否闰年.113.2.2由已知日期如何推算星期几.113.3 12864图形液晶的使用 . .133.3.1液晶概述 .133.3.2LCM 引脚功能介绍 . .143.3.3LCD12864图形液

5、晶显示模块指令集 .153.3.4LCD12864图形液晶显示模块与单片机的接口 .173.3.5LCD12864 图形液晶显示模块的基础函数 . . 173.4 51单片机中的中断与定时 .193.4.151单片机中的中断 .193.4.251单片机中的定时计数器 .223.5 数字温度传感器 DS18B20的使用 .283.5.1DS18B20 概述 .283.5.2DS18B20 的内部结构 .293.5.3DS18B20 与单片机的接口电路 .323.5.4DS18B20 的操作命令 .323.5.5DS18B20 的时序 .333.6矩阵式按键的检测 .364 系统设计与调试 .44

6、4.1硬件系统设计与调试 .444.1.1硬件系统设计原理图 .444.1.2硬件系统元器件清单 .444.1.3硬件系统组装与调试 .454.2软件系统设计与调试 .454.2.1软件系统设计 .454.2.2软件系统调试与仿真 .475 结束语 .49参考文献 . . 50致谢 .511、 概述1.1毕业设计的选题背景及制作意义1.1.1毕业设计的选题背景单片机以其体积小、编程灵活、控制功能强大、价格低廉等特点被广泛地应用在各种电子电器产品中。单片机技术的出现和发展带来了电子技术和控制领域的一场革命。单片机课程作为职业院校电子信息类专业一门重要的基础课程,它既是一门很有实用价值、 实践性很

7、强且很有趣味性的课程,同时它又是一门集硬件电路设计与软件编程于一体的学科,既要求我们有较好的电工电子技术基础知识,又要求有一定的逻辑思维和软件开发(编程)能力。通过近几年对单片机的学习, 我已掌握单片机的基本知识,并具备了单片机应用系统的初步开发能力。即将毕业之际,为了将自己所掌握的知识与实际应用结合起来, 进一步提高工程实践能力,同时也对自己所学知识作以总结及高度概括向老师汇报, 我决定将我的毕业设计课题选作基于 51 单片机的可调数码日历钟的设计与制作,并以此向老师作毕业汇报。1.1.2毕业设计的制作意义数码日历钟是实际生活中应用较多的一个电子计时产品,广泛地应用在酒店、宾馆、车站、家庭及

8、办公室中,可供人们查询日期、星期,掌握当前时间及环境温度。在上述背景下,需要我运用近几年在学校学到的单片机知识及开发技巧设计和制作出一个功能完善的可调数码日历钟。通过这个设计的制作,必将进一步提高我的工程实践能力和单片机应用系统开发能力,将我所学到的理论知识与实际应用结合起来,做到理论与实践相结合,同时也能对我高职阶段所学知识作以梳理和总结。这是一个非常实用的设计与制作,成本低廉,若将它稍加改进安装在镜框或其它工艺品中, 则更加实用。 如能进一步完善其功能,具有一定的实际推广使用价值。1.2 数码日历钟的功能要求本设计制作出来的数码日历钟要求能在12864 液晶显示屏上显示出年月日及对应的星期

9、几,当前时间及环境。 而且要求日期和时间可通过按键调整, 当日期调整时, 通过相应算法自动实现星期几的调整,无论是否闰年、任何月份,当日期调整时都保证不会出现非法的日期。本设计制作出来的数码日历钟显示如图1-1 所示。图 1-1毕业设计作品数码日历钟的显示效果图1.3本设计制作的主要内容本设计制作需要完成的主要内容有:(1) 对设计与制作任务进行分析、分解;(2) 对设计与制作方案进行可行性论证,选择一种较为现实可行的方案;(3) 根据所选方案列出所需硬件元器件、制作与调试工具(软硬件)清单;(4) 准备制作与调试工具 (软硬件),照单购买所需元器件并进行逐一测试,保证完好;(5) 根据所选方

10、案,画出硬件电路原理图;(6) 逐一完成每个软件模块的编写与调试,最终编译生成目标程序;(7) 整机联调。在 Proteus 中进行软件仿真,直至实现所有预先设定的功能要求。(8) 根据硬件电路原理图搭建电路,并进行电路焊接;(9) 对硬件电路进行测试与调试,保证无虚焊、短路等故障,将目标程序写入单片机,再次整机联调(实物) ;(10) 完成毕业设计论文的撰写, 提交完整的毕业设计作品, 由指导老师审阅,完成毕业设计论文答辩。2、 数码日历钟的设计与制作任务分析2.1数码日历钟的设计与制作任务的分析与分解本设计任务比较复杂,要考虑的问题很多,故需对设计与制作任务进行分析和分解,使分解后的每一个

11、子任务都在能够容易解决的范围之内。为此,通过对本设计任务的分析,将其按硬件和软件两个方面各分解为几个模块。它们分别是:(1) 硬件根据所选方案画出硬件电路原理图;根据所选方案,列出所需硬件元器件、 制作与调试工具清单(软硬件);准备制作与调试工具(软硬件) ;照单购买所需元器件并进行逐一测试,保证完好;根据硬件电路原理图搭建电路,并进行电路焊接;对硬件电路进行测试与调试,保证无虚焊、短路等故障;(2) 软件 12864 液晶的显示,编写 12864 液晶的基础显示函数;根据已知日期推算出相应的星期几;利用实时时钟芯片 DS1302提供日期和时间,从而实现电子钟功能;编写按键扫描程序, 能够识别

12、按键, 并通过相应的按键调整年份、月份、日期、时、分;数字温度传感器18B20的使用;所测温度结果数据的处理及显示。2.2 设计方案的论证及选择(1) 硬件方面:主控模块:单片机芯片的选择:考虑到本程序较为复杂,目标程序可能占用存储空间较大,故应选择程序存储器容量稍大一些的单片机芯片较好,但又要顾及尽量降低成本,程序开发、调试、载入方便。综合考虑,决定选用目前占有较大市场份额、技术成熟、资料丰富的Atmel 公司生产的 AT89S52 单片机。晶振的选择:由于本设计中读取时间和温度的时刻由定时计数器控制,为便于计算定时计数器的初值和定时时长,故采用稳定性较高的、固有振荡频率为 12MHz 的石

13、英晶体振荡器。显示模块:显示模块既可采用数码管显示, 也可采用液晶显示。 数码管的优点是价格便宜,显示亮度高,但它也有不少不足之处:当显示的信息量较大时,所用数码管较多,接口电路复杂,编程麻烦;而且其体积较大,不宜用于便携式产品,显示也不够美观;当其中某一段出现劣化而不能正常显示时, 需整体更换。图形液晶显示模块的优点是价格适中,与单片机的接口电路简单,便于编程控制其显示,体积小、质量轻、功耗低(功率为 10mW ,5V 电源供电、工作电流只有 2mA)、寿命长、可靠性高、显示操作简单,显示美观,且显示的信息量大,特别适合用于便携式电子产品中作显示器件。 故本设计中的显示模块决定采用 1286

14、4 点阵图形液晶显示器。实时时钟模块:我们固然可以利用单片机本身自带的定时计数器提供秒信号实现电子日历钟, 但这过于消耗单片机资源, 且由于中断响应影响到时钟的精度,而且一旦主机掉电后重新启动时系统的时间日期必将再次初始化,每次上电后必须重新调整日期和时间初始值。本设计决定采用美国 Dallas 半导体公司的 DS1302 实时时钟芯片实现日历钟功能。DS1302 可以在主机掉电后由后备电源为其供电,从而保证日期和时间在主机掉电后依旧保持运行,不需每次上电调整。而且DS1302 还提供了为后备电源涓流充电的功能。DS1302 自身还有31 个字节的RAM 空间,可以存储其他数据,从而为系统功能

15、进一步拓展提供了空间。温度测量模块:温度测量模块当然可以采用较为简单的热敏电阻,其阻值会随着周围环境温度的变化而变化。 热敏电阻的优点是电路及其工作原理都较为简单,但其测量结果为模拟量,要让单片机去处理其测量结果,需通过 ADC (模数转换器)电路,这样又增加了不少成本,且需熟悉 ADC 与单片机的接口电路及其编程,这就增加了开发的难度和时间,比较麻烦。当然也可采用模拟温度传感器,如LM35 ,它测得的结果同样是模拟量,也需通过AD 转换,单片机才能处理,既提高了开发成本,又增加了开发难度,故本设计放弃采用以上这两种方案,决定采用DALLAS公司的“一线式”接口的数字化温度传感器DS18B20

16、。相比热敏电阻,该传感器的优点是可谓多多:首先,它与单片机的接口非常简单, 只需一根线即可实现和单片机之间的数据传输。测温范围为55 125,固有测温分辨率0.5 。具有耐磨耐碰,体积小,工作电源: 35VDC 。非常适合要求。按键调整控制模块:为了便于用户识记各按键的功能,本设计中只用3 个按键来实现对日期和时间的调整。 由于所用按键数目较少, 为便于编程 , 按键采用独立式按键的接法,独立式按键接口电路简单,编程方便。硬件系统的组成框图如图2-1 所示:图 2-1 数码日历钟硬件系统组成框图(2) 软件方面:编程语言选择:考虑到本设计任务较为复杂, C 语言的模块化程序设计思想能够较好地解

17、决这个问题,且用 C 语言编写程序,开发效率高,生成的目标代码质量也较高,执行效率高,综上所述,故本设计任务采用C 语言编程。编译环境软件选择:本设计选用目前单片机应用系统开发使用最泛的集成开发编译软件 Keil 公司的 Keil C ,它既可用于汇编程言源程序的编辑、 编译,生成目标程序,也可用于 C 语言源程序的编辑、编译、连接并生成目标代码。仿真软件选择:在焊接硬件电路之前, 为避免不必要的麻烦, 要对本设计系统进行软件仿真,直到仿真运行无误后, 再焊接元器件,搭建本设计硬件电路。本设计选用目前单片机应用系统仿真中最受欢迎的一款软件 英国 Labcenter Electronics公司开

18、发的电子电路设计与仿真软件 Proteus。它包括 ISISARES 等软件模块, ARES模块主要用来完成PCB的设计,而 ISIS 模块用来完成电路原理图的制图与仿真。Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片以及单片机外围电路,例如键盘、LED、LCD等等。通过 Proteus 软件的使用,我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。Proteus 软件有十多年的历史,在全球广泛使用,除了具有和其它 EDA工具一样的原理图制图、 PCB自动或人工布线及电路仿真的功能外,其革命性的功能在于其电路仿真是互动的, 针对

19、微处理器的应用,还可以直接在基于原理图的虚拟原型上编程, 并实现软件源码级别的实时调试,如果显示及输出,还能看到运行后输入输出的效果,此外系统还配置有丰富的虚拟仪器,如示波器、逻辑分析仪等。3、 相关知识链接3.1 51单片机简介3.1.1 51单片机简介单片机就是将中央处理器 (CPU )、存储器(包括程序存储器 ROM 和数据存储器 RAM )、IO 接口电路、定时计数器、中断系统和时钟电路等计算机基本部件集成在一块芯片上, 具有独特功能的单片微型计算机( Single Chip Microcomputer,简写为 SCM )。由于其体积小,主要应用在控制领域,所以又被称为微控制器( Mi

20、cro Controller Unit,简写为 MCU )。单片机出现的历史并不长,其前身起源于上世纪70 年代研制成功的微处理器(利用大规模集成电路制造技术将计算机的运算器和控制器集成为一体)。作为一门非常有前途的计算机技术,单片机一经出现就迅速发展起来。一路走来,单片机的性能在不断提高,存储容量也在不断增大, 而体积、价格、功耗却在不断降低。 由于其体积小、控制功能强大、编程灵活、 价格低廉,所以在控制领域得到了广泛的应用。可以说,凡是与控制或简单计算有关的场合,都可以用单片机来实现。目前,单片机已得到了大力推广和广泛应用,从工业控制系统到日常工作和生活的方方面面, 单片机的应用几乎无处不

21、在。 从形形色色的家用电器、电子玩具、数码产品,到各种医疗器械、智能仪器仪表、通信设备,大到航空航天、雷达、导弹等现代化武器装备,单片机的身影无处不在。 复杂的工业控制系统中甚至有上百台单片机在同时工作。单片机的应用从根本上改变了传统的控制系统的设计思想和设计方法,可以说,单片机技术的出现和发展给现代电子技术和控制领域带来了一场新的革命。 以往由硬件电路实现的大部分控制功能现在都能够使用单片机通过软件方式来实现, 这种以软件取代硬件并能够提高系统性能的微控制技术, 随着单片机应用的推广普及, 不断发展,日益完善。因此,学习单片机,掌握其应用和开发技术,也成为当今职业院校电子信息专业的学生必须具

22、备的一项基本技能。下面谈谈单片机的发展情况及其常用系列。虽然单片机出现的历史并不长, 至今也不到四十年的时间, 但其发展却十分迅猛。1976 年,美国的 Intel 公司在 8 位微处理器的基础上首先研制成功了最早的单片机产品 MCS-48 系列单片机,这是一种低档的 8 位单片机,但它以其体积小、功能全、价格低、容易嵌入到其他控制产品中等特点得到了广泛的应用。 现在 MCS-48 系列单片机已经完全退出了历史舞台。 20 世纪 80 年代,Intel 公司在总结 MCS-48 系列单片机的基础上推出了 8 位单片机的第二代产品 MCS-51 系列单片机。虽然它仍然是 8 位单片机,但其功能有

23、了很大的增强。其系列产品包括基本型8951、80C3180C51,增强型,改进型等,其中 80C3180C51采用 CHMOS工艺制造,功耗更低。上述单片机产品的内核均是8051内核,它们是高档的8 位单片机。由于 Intel 公司主要致力于计算机的 CPU 的研究和开发,所以该公司在推出 MCS-51 体系结构后不久,开放了 8051 内核技术,授权一些厂商以 MCS-51 系列单片机为核心生产各自的单片机, 为单片机的发展起了很大作用。 随后世界各大半导体公司依靠自己的优势, 争相研究和开发单片机, 发展了 MCS-51 单片机,创造了许多各具特色的单片机产品, 成为事实上的 8 位单片机

24、主流和经典。 这些单片机统称 MCS-51 系列单片机,它们与 MCS-51 单片机兼容,又各具特点。目前,全世界生产单片机的厂家不计其数, 单片机的型号也五花八门。值得一提的是,本设计中所采用的 AT89S52 单片机是 Atmel 公司的产品,它拥有与 MCS-51 单片机同样的内核和引脚排列, 它除了具有和 MCS-51 单片机的全部功能外, 还内置了一些非常实用的功能。例如,它采用 Flash ROM 、支持 ISP(在系统可编程)功能,可以反复快速擦写, 因此程序写入和调试非常方便, 使得我们在写入程序时不需再依靠传统的编程器, 只需使用它所支持的专用ISP 软件就可轻易将程序写入,

25、 它改变了单片机应用系统的结构模式和开发运行条件,此外它还增加了一些外部接口功能,内置有看门狗。AT89S52是目前占有较大市场份额、性能卓越的典型的51 系列单片机。AT89S52 单片机的主要参数如下:8KB 在系统可编程 Flash ROM 存储器。片内 256B RAM 存储器。工作电源电压: 4.0V5.5V。可重复擦写 1000 次。时钟频率 0Hz33MHz 。加密结构:三级。可编程并行 IO 口: 4×8 位。定时计数器: 3 个 16 位可编程定时计数器。中断源: 8 个可编程中断源。全双工 UART 串行通道。具有低功耗空闲工作模式和掉电保持模式。内置看门狗定时器

26、和复位电路。双数据指针。3.1.2 51单片机引脚功能介绍单片机就是一块集成电路, 在使用其之前, 必须先了解其外部引脚功能。 51单片机有多种封装方式, 下面以 DIP-40 封装为例介绍其引脚功能。 DIP-40 封装的 AT89S52单片机实物图如图 3-1所示。图 3-1 DIP-40 封装的 AT89S52 单片机实物图由于受到集成电路芯片引脚数目的限制,许多引脚具有双重功能。 AT89S52单片机的引脚排列如图 3-2所示。按其功能类别来划分,这 40个引脚可分为以下四类:电源引脚、时钟引脚、IO 接口引脚、编程控制引脚。各引脚功能介绍如下。(1) 电源引脚 Vcc和 GND集成电

27、路都需要电源供电才能正常工作, 单片机也不例外。 采用 DIP-40 封装的 AT89S52单片机的第 40脚Vcc为电源正极输入端,一般接 +5V,第20脚GND 为电源负极输入端,接电源负极, 也作为电路中的公共接地端。图 3-2 DIP-40 封装的 AT89S52 单片机外部引脚图(2) 时钟引脚 XTAL1 和XTAL2第 19脚XTAL1 为片内振荡电路输入端,第 18脚 XTAL2 为片内振荡电路输出端。 在使用片内时钟发生电路时, 这两个引脚用于外接石英晶体和振荡电容(取值一般为 10p30p),此时晶振频率即为时钟振荡频率;在使用片外时钟电路时, 这两个引脚用于外接外部时钟源

28、。需要说明的是: 本设计采用单片机内部时钟振荡电路, 所以这两个引脚外接石英晶体和振荡电容。为便于计算定时器的初始值及定时时间,晶振频率为 12MHz 。(3) 并行 IO 接口引脚AT89S52单片机共有 4个8位并行 IO 口,分别为 P0、P1、P2、P3(字母P为英文单词 Port( 意为“端口” ) 的第一个字母 ) ,每个 IO口均有 8 位,分别表示成 Pm.n的形式( m=; n=6,7 ), 在用 C语言写程序时则应写成 Pmn的形式。P0口(第 3930脚,其中第 39脚为 P0.0,即最低位,第 32脚为 P0.7,即最高位,其余依此递推)为 8位双向三态 IO 口。值得

29、注意的是, P0 口内部没有上拉电阻, 不能正常输出高电平, 因此 P0口在作为通用 IO口作基本输入输出使用时必须外接上拉电阻,否则应输出高电平时为高阻态,无法正常输出高电平。上拉电阻阻值一般取10K。 P0口除了作为 IO 口使用外,在系统扩展时还作为低8位地址总线和数据总线分时复用。本设计中的 12864液晶显示器的数据总线就是与P0口连接的,已外接上拉电阻。P1口(第 18脚,其中第 1脚为 P1.0,即最低位,第 8脚为 P1.7,即最高位,其余递推)为 8位准双向并行 IO 口。 P1口内部已接有上拉电阻,故在使用时无需再接上拉电阻。 P1口功能较为简单, 仅作基本 IO 口使用,

30、没有第二功能。本设计中用 P1口作为矩阵式按键接口使用。P2口(第 2128脚,其中第 21脚为 P2.0,即最低位,第 28脚为 P2.7,即最高位,其余递推)为 8位准双向并行 IO 口。 P2口内部也已接有上拉电阻,故在使用时无需再接上拉电阻。P2口除了作为 IO 口使用外,在系统扩展时还作为高 8位地址总线使用。P3口(第 1017脚,其中第 10脚为 P3.0,即最低位,第 17脚为 P3.7,即最高位,其余递推)作为第一功能使用时为普通的8位并行 IO 口,在使用时也无需再接上拉电阻。需要强调的是: P3口的每个引脚又各自具有非常重要的第二功能。P3口的每个引脚的第二功能如表3-1

31、所示。表 3-1 AT89S52单片机 P3 口的第二功能引脚名称第二功能功能描述P3.0RXD串行数据输入P3.1TXD串行数据输出P3.2外部中断0 中断请求输入P3.3外部中断1 中断请求输入P3.4T0定时计数器 0外部时钟输入P3.5T1定时计数器 1外部时钟输入P3.6外部 RAM写选通信号P3.7外部 RAM读选通信号注意: P3 口每个引脚各自具有的第二功能都是比较重要的控制信号,在实际应用中应优先满足第二功能使用需要,然后再用剩余的口线作为数据的输入和输出使用。由于本设计中不涉及到P3 口第二功能的使用,故不再对P3 口的第二功能作详细介绍。以上四个 IO 口既可字节操作(

32、8位同时并行输入输出),亦可位操作(即每根口线均可独立控制)(4) 编程控制引脚第 9脚 RSTVpd 为复位信号输入端。当 RST 端保持两个机器周期以上的高电平时即可使单片机进入复位状态,完成一系列初始化操作。单片机复位时,使片内各特殊功能寄存器的内容复位到初始状态,程序计数器 PC的值归零,即指向 ROM 的第一个单元。复位操作还使4个并行 IO 口的每根口线都置为高电平状态。除作为复位信号输入外,该引脚也具有不太常用的第二功能,即作为片内RAM 的备用电源输入端。一旦电源断电或者电压降到一定值时,可通过该引脚为片内RAM 供电,以保护片内 RAM 中的数据不丢失,且上电后能够继续工作。

33、第 29脚为外部 ROM 的读选通信号,当访问片外扩展 ROM 时,只有该引脚为低电平有效信号, 才能选通片外程序存储器对其进行读操作。本设计中无外接扩展 ROM ,不涉及对该引脚的使用,故悬空。第 30脚ALE 为地址锁存使能片内 ROM 编程脉冲信号输入端。在单片机扩展外部存储器时,该引脚作第一功能使用,用于控制把P0口提供的低 8位地址送锁存器锁存起来, 以实现低 8位地址和数据的隔离。在没有访问外部存储器时,该引脚以时钟周期频率的6分频固定频率输出,因此可作为外部时钟,或可作为外部定时脉冲使用。该引脚的第二功能为片内 ROM 的编程脉冲输入端。这是为兼容以往的低版本单片机而设置的。以往

34、低版本单片机的片内ROM 要靠编程脉冲才能将程序写入,而 AT89S52支持 ISP功能,无需编程脉冲输入。本设计中既没有扩展外部存储器,往片内ROM 写入程序时也无需编程脉冲输入,故不涉及该引脚的使用,故闲置。第 31脚 Vpp 具有双重功能。其第一功能为访问片内、片外ROM的控制信号,当该引脚接低电平时,CPU 对 ROM 的访问限定在片外ROM (对于片内没有 ROM 的单片机,如 8031, CPU 只能访问片外ROM ,则该引脚一直是接低电平的);当该引脚接高电平时,CPU对ROM 的访问方式为,如果地址不超过片内 ROM 的存储单元范围,则访问片内 ROM (低端地址),当地址信号

35、所标志的存储单元超出片内 ROM 范围时(高端地址),则自动延伸至片外ROM (即只能访问片外 ROM 的高端存储单元)。该引脚的第二功能Vpp 用于对片内含有 EPROM 的单片机(如 8751),对其内部 EPROM 写入程序时作编程电压输入端。本设计中采用的AT89S52单片机片内含有8KBFlash ROM ,其存储容量已能满足需求,无需扩展片外ROM ,且AT89S52单片机支持 ISP(在系统可编程)功能,无需编程电压输入,故此引脚直接接高电平(与第 40脚电源正极相连), 仅限于对片内程序存储器的访问。3.2由已知日期推算星期几3.2.1如何判断一个年份是否是闰年数码日历钟显示的

36、年份如果是闰年,则2 月为 29 天,否则为 28天。在本设计任务中,无论是日期的调整,还是星期几的推算,都涉及到闰年的判断。查阅相关资料可知,如果一个年份是闰年, 则该年份必然满足以下两个条件其中之一:(1) 年份是 4 的整数倍但不是 100 的整数倍;(2) 年份是 400 的整数倍。只要年份能满足以上两个条件其中之一, 便可判定是闰年, 否则不是闰年。于是,不难写出判断一个年份是否闰年的函数如下:bitleap(int year)判断是否闰年函数return(year%4=0&&year%100!=0|year%400=0); 闰年的条件该函数的类型为 C51 中扩展的

37、 bit 型(即位类型),这种类型的函数的返回值只能是 0 或 1,不能为其它值。具体到本函数,若年份能满足闰年的条件则返回 1,否则返回 0。3.2.2由已知日期如何推算星期几我们在日常生活中经常会遇到这样的问题,忘记了某年某月某日是星期几,特别是一些重大节日或是一些值得纪念的日子,这就是星期几的推算问题。那么,如何由一个已知日期推算出是星期几呢?人们一般会采用这样的方法:从一个已知星期几的某天开始推算,先计算已知星期几的这一天距要推算的那天共相差几天, 由于星期是 7 天一轮回的, 故可以将相差的天数除以 7 取余数,再用已知的那天星期几加上余数, 就可以推算出要计算的这天是星期几了。 在

38、此,我们也采用类似的方法进行推算。 已知公元元年 1 月 1 日正好是星期一,那么,只需计算出从公元元年 1 月 1 日到要推算的这一天总共多少天(s),再用天数 s 除以 7 取余数,余 0 则说明正好够整数个星期,则要推算的这一天正好就是一个星期的最后一天, 也就是星期日; 余1 则说明整数个星期还多一天,那么要推算的这一天就是星期一了;依次类推,余 2 就是星期二,余 3 就是星期三 ., 。但是我们在计算天数时会发现由于中间会经历平年( 365 天)、闰年( 366 天),每年的不同月份天数也不相同,这样算来, 计算量是很大的,计算也十分不便。有没有改进的方法呢?我们不妨这样来考虑:

39、如果一个年份是平年,则该年有 365 天,也就是 52 个星期多一天;如果一个年份是闰年,则该年有 366 天,也就是 52 个星期多两天;于是,对于以前的年份,如果是平年,则只计为一天(扣除其中的整数个星期) ,同理,如果是闰年,则计为两天。这样一来,则计算量大大减少。再进一步,把要推算的这一年之前的所有年份都先按平年计算,则之前有多少年,就有多少天(一个平年只计一天,其中的整数个星期已扣除)。设要推算的年份为 y,则之前有 y-1 个年份,就计为 y-1 天。其中 y-1 个年份中有若干个年份是闰年,由于闰年比平年多一天(平年 2 月 28 天,闰年 2 月 29 天,闰年和平年的其它相应

40、月份的天数是一样的,只有 2 月份不同),则需再加上闰年的个数,于是可以算出 y 年之前有 (y-1) +(y-1)4-(y-1)100+(y-1)400 天。注意:先把之前y-1 年中凡是 4 的整数倍的年份都暂按闰年计算,然后再去掉是 100 的整数倍的年份, 再加上是 400 的整数倍的年份, 即可算出 y 年之前有之少天了(整数个星期已扣除) 。然后再计算要推算的这一天是当年的第多少天,这个不难计算。如果要推算的日子在该年的前两个月, 则与该年是否闰年无关; 如果是 2 月份以后的月份, 可以先按平年计算, 如果是闰年,则再加上一天(因为闰年的 2 月份比平年的 2 月份多一天)。这样

41、,就可以对要推算的日子所在的月份进行测试, 并按各种情况计算出要推算的这一天所在的月份之前当年已过了多少天, 再加上要推算的这一天是当月的第几天,就可以算出要推算的这一天是当年的第多少天了。 用之前所算出的当年之前的总天数加上要推算的这一天是当年的多少天, 如此计算出总天数,再用这个总天数除以 7 取余数,余 0 则是星期日,余 1 则是星期一,余 2 则是星期二, , 如此等等。由已知日期推算星期几的函数的参考源代码如下:char tuisuan(int y, char m, char d) 根据已知日期推算星期几 int s; 变量 s 用于存放总天数 switch (m) case 1:

42、 s=0; break;如果欲推算的这一天在1 月份,则当月之前经历了0 天case 2: s=31;break;case 3: s=59; break;case 4: s=90;break;case 5: s=120; break;case 6: s=151;break;case 7: s=181; break;case 8: s=212;break;case 9: s=243; break;case 10: s=273;break;case 11: s=304; break;case 12: s=334;break;if(m>2&&leap(y) s=s+1;s=s+

43、d;s=s+(y-1)+(y-1)4-(y-1)100+(y-1)400;return(s%7);程序运行期间,通过按键调整日期, 运行结果测试如表3-2 所示:表 3-2星期计算问题测试数据表测试数据运行结果第一组2000年1月1日星期六第二组2008年8月8日星期五第三组2014年 4月 19日星期六3.3 12864点阵图形液晶的使用3.3.1液晶概述液晶 (Liquid Crystal)是一种高分子材料,由于它具有特殊的物理、化学、光学特性,被广泛地应用在各种轻薄型显示器上,如手机屏幕、笔记本电脑显示屏及各种便携式电子信息产品中。液晶显示器 (Liquid Crystal Displa

44、y,简写为 LCD) 的主要显示原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面。为叙述方便,通常把各种液晶显示器都直接叫做液晶。液晶显示器具有体积小、质量轻、功耗低(功率为 10mW ,5V电源供电、工作电流只有 2mA)、可靠性高、显示操作简单等优点,被广泛地应用在各种便携式电子信息产品中作显示器件。 特别是电池供电的单片机产品中,液晶显示器几乎是必选的显示器件。但是, 液晶也有一个致命的弱点, 那就是其使用的温度范围很窄, 通用型液晶正常工作温度范围为 0 +55 ,存储温度范围为 -20 +60 。即使是宽温级液晶,其正常工作温度范围也仅为 -20+70 ,存储温度范围为

45、-30+80 。(高寒地区难以正常工作) 。因此在设计相应产品时务必要考虑周全,选取合适的液晶。按照能够显示的字符个数和行数,液晶有多种型号(如 1602、 0801 等,它们属于字符液晶,只能用于显示英文字母、阿拉伯数字及其他一些 ASCII 字符,不可用来显示汉字) 。也有的液晶型号是按照液晶显示点阵的行、列数来命名的,如: 12232、12864,这些都是图形液晶,可用于显示图形与汉字。 12864 意即横向有 128 列、竖向有 64 行的点阵,通过编程控制让其中哪些点亮、哪些点不亮,就可以显示一个特定的画面。根据显示的色彩,液晶还可分为单(色)显液晶和彩(色)显液晶。根据操作的方式不同, 液晶还可分为串行操作方式与并行操作方式。目前,市场上的 12864 液晶以并行操作方式居多。3.3.2 LCM 引脚功能介绍通常将 LCD 控制器、显示器及 RAM (用于存储显示的数据) 、ROM (用于存放指令)连接在一块印刷电路板上,称为液晶显示控制模块( LCM )。12864液晶显示模块有 20个引脚,其引脚功能介绍如表 3-3所示:表 3-3 12864液晶显示模块引脚功能表引脚编号符号功能说明引脚编号符号功能说明1电源地(负极)11数据和命令通道2电源正极12数据和命令通道3液晶显示对比度调节端13数据和命令通道4

温馨提示

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

评论

0/150

提交评论