基于51单片机的可调数码日历钟的设计与制作毕业设计论文Word文件下载.docx
《基于51单片机的可调数码日历钟的设计与制作毕业设计论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机的可调数码日历钟的设计与制作毕业设计论文Word文件下载.docx(57页珍藏版)》请在冰豆网上搜索。
3相关知识链接6
3.151单片机简介6
3.1.151单片机简介6
3.1.251单片机引脚功能介绍8
3.2由已知日期推算星期几11
3.2.1如何判断一个年份是否闰年11
3.2.2由已知日期如何推算星期几11
3.312864图形液晶的使用13
3.3.1液晶概述13
3.3.2LCM引脚功能介绍14
3.3.3LCD12864图形液晶显示模块指令集15
3.3.4LCD12864图形液晶显示模块与单片机的接口17
3.3.5LCD12864图形液晶显示模块的基础函数17
3.451单片机中的中断与定时19
3.4.151单片机中的中断19
3.4.251单片机中的定时/计数器22
3.5数字温度传感器DS18B20的使用28
3.5.1DS18B20概述28
3.5.2DS18B20的内部结构29
3.5.3DS18B20与单片机的接口电路32
3.5.4DS18B20的操作命令32
3.5.5DS18B20的时序33
3.6矩阵式按键的检测36
4系统设计与调试44
4.1硬件系统设计与调试44
4.1.1硬件系统设计原理图44
4.1.2硬件系统元器件清单44
4.1.3硬件系统组装与调试45
4.2软件系统设计与调试45
4.2.1软件系统设计45
4.2.2软件系统调试与仿真47
5结束语49
参考文献50
致谢51
1、概述
1.1毕业设计的选题背景及制作意义
1.1.1毕业设计的选题背景
单片机以其体积小、编程灵活、控制功能强大、价格低廉等特点被广泛地应用在各种电子电器产品中。
即将毕业之际,为了将自己所掌握的知识与实际应用结合起来,进一步提高工程实践能力,同时也对自己所学知识作以总结及高度概括向老师汇报,我决定将我的毕业设计课题选作基于51单片机的可调数码日历钟的设计与制作,并以此向老师作毕业汇报。
1.1.2毕业设计的制作意义
数码日历钟是实际生活中应用较多的一个电子计时产品,广泛地应用在酒店、宾馆、车站、家庭及办公室中,可供人们查询日期、星期,掌握当前时间及环境温度。
在上述背景下,需要我运用近几年在学校学到的单片机知识及开发技巧设计和制作出一个功能完善的可调数码日历钟。
通过这个设计的制作,必将进一步提高我的工程实践能力和单片机应用系统开发能力,将我所学到的理论知识与实际应用结合起来,做到理论与实践相结合,同时也能对我高职阶段所学知识作以梳理和总结。
这是一个非常实用的设计与制作,成本低廉,若将它稍加改进安装在镜框或其它工艺品中,则更加实用。
如能进一步完善其功能,具有一定的实际推广使用价值。
1.2数码日历钟的功能要求
本设计制作出来的数码日历钟要求能在12864液晶显示屏上显示出年月日及对应的星期几,当前时间及环境。
而且要求日期和时间可通过按键调整,当日期调整时,通过相应算法自动实现星期几的调整,无论是否闰年、任何月份,当日期调整时都保证不会出现非法的日期。
本设计制作出来的数码日历钟显示如图1-1所示。
图1-1毕业设计作品——数码日历钟的显示效果图
1.3本设计制作的主要内容
本设计制作需要完成的主要内容有:
(1)对设计与制作任务进行分析、分解;
(2)对设计与制作方案进行可行性论证,选择一种较为现实可行的方案;
(3)根据所选方案列出所需硬件元器件、制作与调试工具(软硬件)清单;
(4)准备制作与调试工具(软硬件),照单购买所需元器件并进行逐一测试,保证完好;
(5)根据所选方案,画出硬件电路原理图;
(6)逐一完成每个软件模块的编写与调试,最终编译生成目标程序;
(7)整机联调。
在Proteus中进行软件仿真,直至实现所有预先设定的功能要求。
(8)根据硬件电路原理图搭建电路,并进行电路焊接;
(9)对硬件电路进行测试与调试,保证无虚焊、短路等故障,将目标程序写入单片机,再次整机联调(实物);
(10)完成毕业设计论文的撰写,提交完整的毕业设计作品,由指导老师审阅,完成毕业设计论文答辩。
2、数码日历钟的设计与制作任务分析
2.1数码日历钟的设计与制作任务的分析与分解
本设计任务比较复杂,要考虑的问题很多,故需对设计与制作任务进行分析和分解,使分解后的每一个子任务都在能够容易解决的范围之内。
为此,通过对本设计任务的分析,将其按硬件和软件两个方面各分解为几个模块。
它们分别是:
(1)硬件
①根据所选方案画出硬件电路原理图;
②根据所选方案,列出所需硬件元器件、制作与调试工具清单(软硬件);
③准备制作与调试工具(软硬件);
④照单购买所需元器件并进行逐一测试,保证完好;
⑤根据硬件电路原理图搭建电路,并进行电路焊接;
⑥对硬件电路进行测试与调试,保证无虚焊、短路等故障;
(2)软件
①12864液晶的显示,编写12864液晶的基础显示函数;
②根据已知日期推算出相应的星期几;
③利用实时时钟芯片DS1302提供日期和时间,从而实现电子钟功能;
④编写按键扫描程序,能够识别按键,并通过相应的按键调整年份、月份、日期、时、分;
⑤数字温度传感器18B20的使用;
⑥所测温度结果数据的处理及显示。
2.2设计方案的论证及选择
(1)硬件方面:
●主控模块:
单片机芯片的选择:
考虑到本程序较为复杂,目标程序可能占用存储空间较大,故应选择程序存储器容量稍大一些的单片机芯片较好,但又要顾及尽量降低成本,程序开发、调试、载入方便。
综合考虑,决定选用目前占有较大市场份额、技术成熟、资料丰富的Atmel公司生产的AT89S52单片机。
晶振的选择:
由于本设计中读取时间和温度的时刻由定时/计数器控制,为便于计算定时/计数器的初值和定时时长,故采用稳定性较高的、固有振荡频率为12MHz的石英晶体振荡器。
●显示模块:
显示模块既可采用数码管显示,也可采用液晶显示。
数码管的优点是价格便宜,显示亮度高,但它也有不少不足之处:
当显示的信息量较大时,所用数码管较多,接口电路复杂,编程麻烦;
而且其体积较大,不宜用于便携式产品,显示也不够美观;
当其中某一段出现劣化而不能正常显示时,需整体更换。
图形液晶显示模块的优点是价格适中,与单片机的接口电路简单,便于编程控制其显示,体积小、质量轻、功耗低(功率为10mW,5V电源供电、工作电流只有2mA)、寿命长、可靠性高、显示操作简单,显示美观,且显示的信息量大,特别适合用于便携式电子产品中作显示器件。
故本设计中的显示模块决定采用12864点阵图形液晶显示器。
●实时时钟模块:
我们固然可以利用单片机本身自带的定时/计数器提供秒信号实现电子日历钟,但这过于消耗单片机资源,且由于中断响应影响到时钟的精度,而且一旦主机掉电后重新启动时系统的时间日期必将再次初始化,每次上电后必须重新调整日期和时间初始值。
本设计决定采用美国Dallas半导体公司的DS1302实时时钟芯片实现日历钟功能。
DS1302可以在主机掉电后由后备电源为其供电,从而保证日期和时间在主机掉电后依旧保持运行,不需每次上电调整。
而且DS1302还提供了为后备电源涓流充电的功能。
DS1302自身还有31个字节的RAM空间,可以存储其他数据,从而为系统功能进一步拓展提供了空间。
●温度测量模块:
温度测量模块当然可以采用较为简单的热敏电阻,其阻值会随着周围环境温度的变化而变化。
热敏电阻的优点是电路及其工作原理都较为简单,但其测量结果为模拟量,要让单片机去处理其测量结果,需通过ADC(模数转换器)电路,这样又增加了不少成本,且需熟悉ADC与单片机的接口电路及其编程,这就增加了开发的难度和时间,比较麻烦。
当然也可采用模拟温度传感器,如LM35,它测得的结果同样是模拟量,也需通过A/D转换,单片机才能处理,既提高了开发成本,又增加了开发难度,故本设计放弃采用以上这两种方案,决定采用DALLAS公司的“一线式”接口的数字化温度传感器DS18B20。
相比热敏电阻,该传感器的优点是可谓多多:
首先,它与单片机的接口非常简单,只需一根线即可实现和单片机之间的数据传输。
测温范围为-55℃~+125℃,固有测温分辨率0.5℃。
具有耐磨耐碰,体积小,工作电源:
3~5V/DC。
非常适合要求。
●按键调整控制模块:
为了便于用户识记各按键的功能,本设计中只用3个按键来实现对日期和时间的调整。
由于所用按键数目较少,为便于编程,按键采用独立式按键的接法,独立式按键接口电路简单,编程方便。
硬件系统的组成框图如图2-1所示:
图2-1数码日历钟硬件系统组成框图
(2)软件方面:
●编程语言选择:
考虑到本设计任务较为复杂,C语言的模块化程序设计思想能够较好地解决这个问题,且用C语言编写程序,开发效率高,生成的目标代码质量也较高,执行效率高,综上所述,故本设计任务采用C语言编程。
●编译环境软件选择:
本设计选用目前单片机应用系统开发使用最泛的集成开发编译软件——Keil公司的KeilC,它既可用于汇编程言源程序的编辑、编译,生成目标程序,也可用于C语言源程序的编辑、编译、连接并生成目标代码。
●仿真软件选择:
在焊接硬件电路之前,为避免不必要的麻烦,要对本设计系统进行软件仿真,直到仿真运行无误后,再焊接元器件,搭建本设计硬件电路。
本设计选用目前单片机应用系统仿真中最受欢迎的一款软件——英国LabcenterElectronics公司开发的电子电路设计与仿真软件——Proteus。
它包括ISIS\ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的制图与仿真。
Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片以及单片机外围电路,例如键盘、LED、LCD等等。
通过Proteus软件的使用,我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。
Proteus软件有十多年的历史,在全球广泛使用,除了具有和其它EDA工具一样的原理图制图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能在于其电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级别的实时调试,如果显示及输出,还能看到运行后输入输出的效果,此外系统还配置有丰富的虚拟仪器,如示波器、逻辑分析仪等。
3、相关知识链接
3.151单片机简介
3.1.151单片机简介
单片机就是将中央处理器(CPU)、存储器(包括程序存储器ROM和数据存储器RAM)、I/O接口电路、定时/计数器、中断系统和时钟电路等计算机基本部件集成在一块芯片上,具有独特功能的单片微型计算机(SingleChipMicrocomputer,简写为SCM)。
由于其体积小,主要应用在控制领域,所以又被称为微控制器(MicroControllerUnit,简写为MCU)。
单片机出现的历史并不长,其前身起源于上世纪70年代研制成功的微处理器(利用大规模集成电路制造技术将计算机的运算器和控制器集成为一体)。
作为一门非常有前途的计算机技术,单片机一经出现就迅速发展起来。
一路走来,单片机的性能在不断提高,存储容量也在不断增大,而体积、价格、功耗却在不断降低。
由于其体积小、控制功能强大、编程灵活、价格低廉,所以在控制领域得到了广泛的应用。
可以说,凡是与控制或简单计算有关的场合,都可以用单片机来实现。
目前,单片机已得到了大力推广和广泛应用,从工业控制系统到日常工作和生活的方方面面,单片机的应用几乎无处不在。
从形形色色的家用电器、电子玩具、数码产品,到各种医疗器械、智能仪器仪表、通信设备,大到航空航天、雷达、导弹等现代化武器装备,单片机的身影无处不在。
复杂的工业控制系统中甚至有上百台单片机在同时工作。
单片机的应用从根本上改变了传统的控制系统的设计思想和设计方法,可以说,单片机技术的出现和发展给现代电子技术和控制领域带来了一场新的革命。
以往由硬件电路实现的大部分控制功能现在都能够使用单片机通过软件方式来实现,这种以软件取代硬件并能够提高系统性能的微控制技术,随着单片机应用的推广普及,不断发展,日益完善。
因此,学习单片机,掌握其应用和开发技术,也成为当今职业院校电子信息专业的学生必须具备的一项基本技能。
下面谈谈单片机的发展情况及其常用系列。
虽然单片机出现的历史并不长,至今也不到四十年的时间,但其发展却十分迅猛。
1976年,美国的Intel公司在8位微处理器的基础上首先研制成功了最早的单片机产品——MCS-48系列单片机,这是一种低档的8位单片机,但它以其体积小、功能全、价格低、容易嵌入到其他控制产品中等特点得到了广泛的应用。
现在MCS-48系列单片机已经完全退出了历史舞台。
20世纪80年代,Intel公司在总结MCS-48系列单片机的基础上推出了8位单片机的第二代产品——MCS-51系列单片机。
虽然它仍然是8位单片机,但其功能有了很大的增强。
其系列产品包括基本型8031/8051/8751/8951、80C31/80C51,增强型8032/8052,改进型8044/8344/8744等,其中80C31/80C51采用CHMOS工艺制造,功耗更低。
上述单片机产品的内核均是8051内核,它们是高档的8位单片机。
由于Intel公司主要致力于计算机的CPU的研究和开发,所以该公司在推出MCS-51体系结构后不久,开放了8051内核技术,授权一些厂商以MCS-51系列单片机为核心生产各自的单片机,为单片机的发展起了很大作用。
随后世界各大半导体公司依靠自己的优势,争相研究和开发单片机,发展了MCS-51单片机,创造了许多各具特色的单片机产品,成为事实上的8位单片机主流和经典。
这些单片机统称MCS-51系列单片机,它们与MCS-51单片机兼容,又各具特点。
目前,全世界生产单片机的厂家不计其数,单片机的型号也五花八门。
值得一提的是,本设计中所采用的AT89S52单片机是Atmel公司的产品,它拥有与MCS-51单片机同样的内核和引脚排列,它除了具有和MCS-51单片机的全部功能外,还内置了一些非常实用的功能。
例如,它采用FlashROM、支持ISP(在系统可编程)功能,可以反复快速擦写,因此程序写入和调试非常方便,使得我们在写入程序时不需再依靠传统的编程器,只需使用它所支持的专用ISP软件就可轻易将程序写入,它改变了单片机应用系统的结构模式和开发运行条件,此外它还增加了一些外部接口功能,内置有看门狗。
AT89S52是目前占有较大市场份额、性能卓越的典型的51系列单片机。
AT89S52单片机的主要参数如下:
●8KB在系统可编程FlashROM存储器。
●片内256BRAM存储器。
●工作电源电压:
4.0V~5.5V。
●可重复擦写1000次。
●时钟频率0Hz~33MHz。
●加密结构:
三级。
●可编程并行I/O口:
4×
8位。
●定时/计数器:
3个16位可编程定时/计数器。
●中断源:
8个可编程中断源。
●全双工UART串行通道。
●具有低功耗空闲工作模式和掉电保持模式。
●内置看门狗定时器和复位电路。
●双数据指针。
3.1.251单片机引脚功能介绍
单片机就是一块集成电路,在使用其之前,必须先了解其外部引脚功能。
51单片机有多种封装方式,下面以DIP-40封装为例介绍其引脚功能。
DIP-40封装的AT89S52单片机实物图如图3-1所示。
图3-1DIP-40封装的AT89S52单片机实物图
由于受到集成电路芯片引脚数目的限制,许多引脚具有双重功能。
AT89S52单片机的引脚排列如图3-2所示。
按其功能类别来划分,这40个引脚可分为以下四类:
电源引脚、时钟引脚、I/O接口引脚、编程控制引脚。
各引脚功能介绍如下。
(1)电源引脚Vcc和GND
集成电路都需要电源供电才能正常工作,单片机也不例外。
采用DIP-40封装的AT89S52单片机的第40脚Vcc为电源正极输入端,一般接+5V,第20脚GND为电源负极输入端,接电源负极,也作为电路中的公共接地端。
图3-2DIP-40封装的AT89S52单片机外部引脚图
(2)时钟引脚XTAL1和XTAL2
第19脚XTAL1为片内振荡电路输入端,第18脚XTAL2为片内振荡电路输出端。
在使用片内时钟发生电路时,这两个引脚用于外接石英晶体和振荡电容(取值一般为10p~30p),此时晶振频率即为时钟振荡频率;
在使用片外时钟电路时,这两个引脚用于外接外部时钟源。
需要说明的是:
本设计采用单片机内部时钟振荡电路,所以这两个引脚外接石英晶体和振荡电容。
为便于计算定时器的初始值及定时时间,晶振频率为12MHz。
(3)并行I/O接口引脚
AT89S52单片机共有4个8位并行I/O口,分别为P0、P1、P2、P3(字母P为英文单词Port(意为“端口”)的第一个字母),每个I/O口均有8位,分别表示成Pm.n的形式(m=0,1,2,3;
n=0,1,2,3,4,5,6,7),在用C语言写程序时则应写成Pm^n的形式。
P0口(第39~30脚,其中第39脚为P0.0,即最低位,第32脚为P0.7,即最高位,其余依此递推)为8位双向三态I/O口。
值得注意的是,P0口内部没有上拉电阻,不能正常输出高电平,因此P0口在作为通用I/O口作基本输入输出使用时必须外接上拉电阻,否则应输出高电平时为高阻态,无法正常输出高电平。
上拉电阻阻值一般取10K。
P0口除了作为I/O口使用外,在系统扩展时还作为低8位地址总线和数据总线分时复用。
本设计中的12864液晶显示器的数据总线就是与P0口连接的,已外接上拉电阻。
P1口(第1~8脚,其中第1脚为P1.0,即最低位,第8脚为P1.7,即最高位,其余递推)为8位准双向并行I/O口。
P1口内部已接有上拉电阻,故在使用时无需再接上拉电阻。
P1口功能较为简单,仅作基本I/O口使用,没有第二功能。
本设计中用P1口作为矩阵式按键接口使用。
P2口(第21~28脚,其中第21脚为P2.0,即最低位,第28脚为P2.7,即最高位,其余递推)为8位准双向并行I/O口。
P2口内部也已接有上拉电阻,故在使用时无需再接上拉电阻。
P2口除了作为I/O口使用外,在系统扩展时还作为高8位地址总线使用。
P3口(第10~17脚,其中第10脚为P3.0,即最低位,第17脚为P3.7,即最高位,其余递推)作为第一功能使用时为普通的8位并行I/O口,在使用时也无需再接上拉电阻。
需要强调的是:
P3口的每个引脚又各自具有非常重要的第二功能。
P3口的每个引脚的第二功能如表3-1所示。
表3-1AT89S52单片机P3口的第二功能
引脚名称
第二功能
功能描述
P3.0
RXD
串行数据输入
P3.1
TXD
串行数据输出
P3.2
外部中断0中断请求输入
P3.3
外部中断1中断请求输入
P3.4
T0
定时/计数器0外部时钟输入
P3.5
T1
定时/计数器1外部时钟输入
P3.6
外部RAM写选通信号
P3.7
外部RAM读选通信号
注意:
P3口每个引脚各自具有的第二功能都是比较重要的控制信号,在实际应用中应优先满足第二功能使用需要,然后再用剩余的口线作为数据的输入和输出使用。
由于本设计中不涉及到P3口第二功能的使用,故不再对P3口的第二功能作详细介绍。
以上四个I/O口既可字节操作(8位同时并行输入输出),亦可位操作(即每根口线均可独立控制)
(4)编程控制引脚
第9脚RST/Vpd为复位信号输入端。
当RST端保持两个机器周期以上的高电平时即可使单片机进入复位状态,完成一系列初始化操作。
单片机复位时,使片内各特殊功能寄存器的内容复位到初始状态,程序计数器PC的值归零,即指向ROM的第一个单元。
复位操作还使4个并行I/O口的每根口线都置为高电平状态。
除作为复位信号输入外,该引脚也具有不太常用的第二功能,即作为片内RAM的备用电源输入端。
一旦电源断电或者电压降到一定值时,可通过该引脚为片内RAM供电,以保护片内RAM中的数据不丢失,且上电后能够继续工作。
第29脚
为外部ROM的读选通信号,当访问片外扩展ROM时,只有该引脚为低电平有效信号,才能选通片外程序存储器对其进行读操作。
本设计中无外接扩展ROM,不涉及对该引脚的使用,故悬空。
第30脚ALE/
为地址锁存使能/片内ROM编程脉冲信号输入端。
在单片机扩展外部存储器时,该引脚作第一功能使用,用于控制把P0口提供的低8位地址送锁存器锁存起来,以实现低8位地址和数据的隔离。
在没有访问外部存储器时,该引脚以时钟周期频率的6分频固定频率输出,因此可作为外部时钟,或可作为外部定时脉冲使用。
该引脚的第二功能
为片内ROM的