浙江成人本科《电气工程及其自动化》专业

时间:2022/03/03 编辑:admin 热度:

电气工程及其自动化》毕业论文
摘  要
万年历的主要作用就是确定日期,辅助人们管理自己的行程安排,有很重要的社会意义。传统的月份牌、石英钟等计时工具,需要人为的干预,内容单一且可靠性差。因此需要一种可靠性强、内容丰富且成本不高的万年历来便利生活。
本文设计了基于单片机的电子万年历,该单片机采用STC89C52,从硬件仿真、软件设计和电路连接焊接完成了本课题。以STC89C52单片机为核心控制器,DS1302来完成时钟获取、采集时间信息,并采用专门的子程序计算星期、阴历日期。显示部分采用LCD12864,行显示电子万年历的信息,月日和温度占一行,时分秒和星期占一行;农历干支纪年、月日、信息占一行;闹钟单独占一行,总共四行信息。
关键词:单片机;STC89C52;万年历;LCD12864
Abstract
The main function of the perpetual calendar is to determine the date and assist people in managing their own itinerary, which has very important social significance. Traditional timing tools such as month cards and quartz clocks require human intervention, with single content and poor reliability. Therefore, a kind of Wannian calendar with strong reliability, rich content and low cost is needed to facilitate life.
This paper designs an electronic perpetual calendar based on a single-chip microcomputer. The single-chip microcomputer uses STC89C52 to complete the subject from hardware simulation, software design and circuit connection welding. With STC89C52 single-chip microcomputer as the core controller, DS1302 completes the clock acquisition and collection of time information, and uses special subroutines to calculate the week and lunar calendar dates. The display part adopts LCD12864 to display the information of the electronic perpetual calendar. Month, day and temperature are on one line, hour, minute, second and week are on one line; Lunar calendar, year, month, day, and information are on one line; alarm clock is on one line, totaling four lines of information.
Keywords: MCU; STC89C52; perpetual calendar; LCD12864

1.绪论
1.1研究背景
万年历的主要作用就是确定日期,辅助人们管理自己的行程安排,在各行各业都有意义,有很重要的社会意义。从开始借助太阳、星星等自然现象确定时间,到月份牌、石英钟等计时工具的应用,摆脱了经验的依赖,但依然需要人为的干预,内容单一且可靠性差。因此需要一种可靠性强、内容丰富且成本不高的万年历来便利生活。
电子技术的发展带来人类社会颠覆性改革,电子产品以一种爆炸式的增长趋势,迅速霸占人们的生活。生活中随处可见手机、电视机、洗衣机等等,电子产品竞争日渐丰富,带来技术的革新,也带来生活的极大便利。可以说电子产品已经成为人们日常生活不可或缺的一部分。
1971年单片机的产生带来可编程应用的改革性发展,但现在嵌入式技术的日益成熟,基于单片机的电子产品也越来越多。电子万年历就是基于单片机的一类典型的应用,成本低廉、计时准确,而且丰富了传统计时仪器的功能,将日历、钟表、温度计等功能集成到一件电子产品上,极大的便利了生活,因此从诞生就受到了广泛的关注,发展迅速。随着技术的发展,越多越多功能更齐全的电子万年历也会产生。
数字电子万年历现在已经是一个相对成熟的电子产品,市场上随处可见,且功能多样、交互性强。这些电子万年历大都依赖嵌入式硬核,像FPGA、SDP、单片机等,以及外加外设设备完善电子万年历的功能。除了万年历常见的功能,还有动画效果、年画效果等符合万年历应用特色的外观出现,配合万年历的使用。除了功能的完善,现在的万年历还在趋向成本的降低,性价比合适的万年历更能抢占市场。制作利润可观的电子万年历是现在厂商的关注重点,倒逼研发,使得电子万年历的技术日益更新,发展逐渐成熟,集实用性和娱乐性一体的低消费万年历产品是市场的重点。
随着互联网的发展,智能家居概念的提出,数字电子万年历的发展也将推向新的高度,体积更小、集成度更高、功能更强大、功耗更低,这些都是数字万年历的发展方向。响应时代的要求,网络对时、记忆用户操作习惯的智能型电子万年历也不无可能。
1.2研究内容与论文结构安排
本设计是一个采用通用单片机做主控系统,外设温度传感器、时钟模块和显示模块的电子万年历,实现温度、时间和日期的同时显示,同时还具备闹钟等功能。
本研究首先进行了基于单片机的电子万年历的总体设计,从设计流程、任务需求以及各个模块的选材方案几个方面做好设计的准备工作。通过多种方案的对比,选择相对最优化的设计方案,包括电子万年历的硬件设计、软件设计以及制作和调试,最终实现了基于单片机的电子万年历的功能。
本文将从总体设计、硬件设计和软件设计三个方面对电子万年历的设计做一个详细的介绍,同时对制作和调试过程也做了一个简单的记录。
2.总体设计
根据设计与实现任务书,基于单片机的电子万年历设计系统要求采用合适的主控方式,使系统可以实时测量并显示环境温度,显示公历日期和时间信息,并具有闹钟等功能。本章主要介绍基于设计要求,系统总体及各模块的设计方案并确定最终的设计方案。
2.1设计流程
一个好的计划可以起到事半功倍的效果,因此一个好的设计也需要一个设计流程来协助完成设计,还能起到监督督促的作用。
提出设计课题之后,首先要明确设计目标是什么,也就是设计需要完成什么功能和特殊的设计要求。目标明确也就确认了设计任务,接下来就是根据任务要求确定出整个设计的框架,需要哪些模块来实现功能。然后就需要根据每和模块的功能和特点确认器件的选择,实现性价比最优化。至此准备阶段算是完成。
设计阶段可以分为软件设计和硬件设计,硬件设计需要设计的是电路、布局和外观,本设计对外观没有过多的要求,简介就好,因此关注更多的是电路。本文选用Proteus作为电路仿真软件来协助硬件设计,用Proteus绘制电路原理图,因为电路设计简单,所以没有PCB板,直接用洞洞板完成焊接,这就是硬件设计的过程。软件设计采用C语言作为主要设计语言,协助硬件设计部分完成电子万年历的功能。程序编译测试通过后,烧制进焊接好的电路板即可。
2.2任务分析
万年历的概念已经很明确,但是电子万年历的功能可以根据需求和市场做各种个性化设计,所以首先要制定好设计任务,根据设计任务来确定设计方案、设计流程,软硬件选择等等。本设计想要完成的电子万年历应该有以下的功能:
(1)时间显示。万年历的时间应该同时有日历和时钟两种时间显示,精确到秒,而且本设计的电子万年历可以实现阳历和阴历的日期转换,需要有一个干支纪年的程序设计。
(2)时间校准。精度是保证万年历使用可靠性的重要标志,我们的设计可以通过按键的方式支持时间校准,模式转换等功能。
(3)闹钟模式。除了时间的显示以外,我们的设计还有闹钟的功能,同时简单的按键就可制定和取消闹钟。
(4)温度检测。电子万年历除了时间功能外,我们还个性化的加入了温度计的功能,可以随时显示温度且具备高温报警功能。
以上就是设计的任务要求,通过单片机做主控电路,实现上述所有的功能,就是本文介绍的电子万年历。除了基本任务要求外,电子万年历还应满足功耗低、操作简便、美观大方等等。
 
2.3系统概述
为了满足系统设计要求,如图2-1所示整个基于单片机的电子万年历系统应包括主控电路、键盘模块、温度采集模块、时钟模块、蜂鸣模块和显示模块。主控电路也就是单片机负责控制整个系统,相当于电脑的CPU作用。时钟模块主要用于时间的获取和校准,温度采集模块主要用于问题的获取,而键盘模块负责万年历的输入,这所有信息的显示就需要显示模块。此外我们的电子万年历还有报时和闹钟的功能,因此就需要蜂鸣模块。
图2-1 基于单片机的电子万年历系统总体框图
2.4各模块方案选择
完整电子万年历的设计完成需要每个模块的设计方案相互配合,做到性价比最优化,本节将讲述每个模块的方案指定过程。
(1)主控模块
本文的设计是基于单片机,单片机又称为微处理器,是单个集成电路上的小型计算机。单片机种类繁多,功能成本各不相同,作为电子万年历的主控部分,单片机的选择很重要。万年历的设计并不复杂,出于成本和知识的掌握情况,51单片机是首选,既能完成基本任务需求,又不会很复杂。本设计选用的是国产宏晶的STC89C52,满足功耗低且可实现要求的功能。
(2)时钟模块
作为电子万年历最重要的功能,时间要同时保证精度和稳定性,时钟模块方案的选择对系统的性能有很大的影响。
如果不加外设,单靠单片机也可以实现这个功能,51单片机自带两个定时器功能,所以可以通过纯软件的方式产生时钟信号。定时器产生1s的中断,一次为时钟信号,60次则为一分钟,预定义的分钟变量可以加1,满一小时时,预定义的小时变量可以加1,此时的分钟变量则归零。以此为基准,则可以实现时间变量的定义。
51单片机的定时器分16位和8位两种不同的工作模式,每种模式都有显著的缺陷。首先16位工作模式的中断需重装初值,而软件实现初值的重装需要运行时间,会带来累计误差。8位工作模式,没有初值重装的运行时间,但中断服务子程序耗费时间不一致,也会造成累计误差的产生。除此之外,软件定义还存在掉电丢失的问题,重新上电计时就会重新开始。
所以我们选择外设芯片完成计时功能,DS1302是一种用于读取时间数据的串行时钟芯片,集成度高且易编程,本设计采用的就是DS1302芯片。DS1302芯片的封装有8个引脚,为双列直插式,所以DS1302芯片的硬件设计也很简便。DS1302芯片的精度高达10ms/年,精度高,而且只需外加电源就可以实现单片机掉电不丢失,重新上电则继续。DS1302芯片能耗低,3V纽扣电池姐可以保证运行一年。所以DS1302芯片精度高、能耗低且价格低廉,满足设计基于单片机的电子万年历的需求。
(3)显示模块
常见的显示模块有数码管、LED点阵和LCD三种选择。数码管是用于数字显示最常用的方式,价格低廉,但在电子万年历的设计里除了数字还有汉字的显示,这对数码管而言就不适用了。
LED点阵也是现在常用的显示方式,由发光二极管密集分布组成,因其拼接接缝小,被常用于大型指挥中心墙体显示。但当显示屏小不需要拼接的情况,LED点阵姐不如LCD合适了,因为同等相比,LCD价格更低廉,且显示清晰度更高,电子万年历的显示屏很小,因此选择LCD更合适。
LCD显示有液晶LCD1602显示屏和液晶LCD12864显示屏两种方案。两种显示屏都能实现数字和汉字同时显示的要求,而且能耗都很低、体积小、界面友好,都可以作为电子万年历的显示模块。但是在显示时1602显示的字体大小是寿险的,而LCD12864在内容显示上更丰富,有自己的字体库,这对电子万年历的显示模块而言,显示界面更友好一点,所以本设计采用液晶LCD12864显示屏作为显示模块的选择。
(4)温度采集模块
热敏电阻是一种可低廉的获取温度信息的方式,主要特性就是电阻值会随着温度的改变而呈现一种近似线性的变化,因此可以通过电压值的测量经模数变换之后形成温度信息。但是这种线性变换的稳定性极差,因此精度低,且模数变换也会有误差的产生。热敏电阻的设备成本低,但是使用成本并不低,利用热敏电阻作为温度的输入,外围电路复杂且编程难度高,因此不适用于本设计。
除了热敏电阻,温度传感器是另外一个温度采集的有效方式。数字温度芯片DS18B20是业内公认的性价比很高的一款温度传感器,应用广泛。DS18B20的测温精度可调,测温范围大,完全可满足空气温度测量的需求。DS18B20在应用时,满足单总线协议,可扩展性强,而且编程易实现。除此外,DS18B20的高温报警功能还可以成为电子万年历的扩展功能。因此,DS18B20是本设计温度采集模块的选择。
(5)键盘模块
作为电子万年历的输入设备,键盘既要满足基本功能需求,又要简洁大方美观。电子万年历的所有功能输入大约需要13个,如果每个输入配置一个按键来完成,则矩阵键盘是最合适的选择。矩阵键盘在应用中需要单片机的对按键端口不断扫描,资源占用太多,且13键的键盘对电子万里表而言,使用复杂且不美观,所以设计时想到按键功能复用。
按键功能复用是指同一个按键可以有多个功能,按照万年历的实际应用要求,只需要调节位、增、减和确认四种调节方式,所以四个独立按键就可以满足要求。按键功能复用极大地节省了按键的需求,减少了硬件成本,而且软件实现简单,同时满足简介美观的要求。
(6)报时模块
像手机一样可以实现音乐闹钟和报时,可以使电子万年历更人性化,交互更友好,因此需要外设扬声器来配合。但一般扬声器的功耗很大,且占内存大,这对我们的单片机而言是个不小的负担。我们设计的万年历力求简洁、能耗低,因此扬声器对本设计而言不切实际。
除了扬声器外,蜂鸣器也可以实现报时和闹钟的作用。本设计采用的是有源蜂鸣器,不需要方波驱动,上电即发声,软件设计简便。在软件设计中给定时间标志,蜂鸣器就可完成预定的报时和闹钟功能。
3.硬件设计
本系统硬件主要有单片机系统和相应的外围电路组成,外围电路又包括键盘模块、温度采集模块、时钟模块、蜂鸣模块和显示模块。Proteus是一种典型的仿真集成软件,可以完成电路原理图绘制,代码仿真等等,本章设计的所有电路图都是由Proteus软件绘制的。
3.1硬件框架
本系统的硬件框架围绕单片机系统,外设外围电路实现电子万年历的主要功能,图3.1为基于单片机的电子万年历系统整体框架。PCB的设计相对复杂,且厂家不单独印刷一张PCB,而且万年历的电路很简单,综合成本和实际应用选择9x15万用板焊接电路。
图3.1 单片机电子万年历系统整体框架
 
3.2单片机系统
本设计采用的是STC89C52单片机做主控,一个单片机系统能够正常运作至少需要电源、晶振和复位电路,这些组成的单片机系统称为单片机最小系统。电源很容易理解,就是给单片机供电的,作为一种电子器件,肯定有电才能工作,单片机有专门的接电的管脚。晶振主要的作用称为起振,单片机的每一个指令的完成都是以晶振为时钟信号的,它的频率决定了单片机的运行速率,本设计采用的是12Mhz的晶振,配合电容用的是30pF。复位电路一般由按键控制,它的作用等同于电脑的重启作用,在单片机受到不可控干扰时,可通过复位电路,使程序重新从头开始。图3.2所示的就是单片机最小系统,截图省略了接电源的部分。
图3.2 单片机最小系统
3.3外围电路
在第二章中已经详细介绍了电子万年历每个模块的方案选择,本节就每个模块中的器件在硬件电路中的布局和连接做一个介绍。
3.3.1DS18B20电路
温度传感器DS18B20是“一线器件”,即只需通过单总线直接与单片机相连即可,如图3.3所示就是DS18B20与单片机的连接图,单片机的单总线需要上拉电阻,本设计采用的是4.7K的电阻。 
图3.3 DS18B20电路
3.3.2DS1302电路
DS1302与单片机相连需要三根线,占用单片机三个管脚,如图3.4所示为DS1302的电路连接图。DS1302需要两个外接电源,以保证单片机掉电时钟不受影响,DS1302主要提供时钟信号,因此引脚需要晶振。 
图3.4 DS1302电路
3.3.3蜂鸣器电路与按键电路
蜂鸣器电路如图3.5所示,蜂鸣器所需电流一般比单片机接口可提供的电流要大,因此不与单片机的I/O连接,且需要三极管放大器满足驱动要求。 
图3.5 蜂鸣器电路
每个按键独立占用单片机的一个I/O口,以实现互相不打扰,本设计占用的是P2口,而且采用上拉电阻来实现输入端高低电平的切换,如图3.6所示,为独立按键电路。 
图3.6 独立按键电路
3.3.412864电路
本设计留单片机的P0口连接LCD显示屏,P0口需要外接上拉电阻,本设计采用排阻完成,然后与LCD12864管脚一一相连,电路简单,因此不再赘述。
4.软件设计
单片机程序既可以用汇编语言实现,又可以用C语言实现。汇编语言指令难记但优化绝对可控,执行速度快但指令功能弱,很适合老式单片机,因此本设计采用编程学习更容易一点的C语言完成软件设计。本设计采用keil软件实现软件代码的编写和调试。
基于单片机的电子万年历在总体设计时就将每个功能模块化,各司其职然后整体配合完成功能,因此软件设计我们也采用模块化程序设计。所谓的模块化程序设计就是将程序分块,主程序负责描述整体流程,而每个模块的具体功能完成则在不同的子程序完成,每个子程序只负责一个模块。这种模块化的程序设计更符合逻辑思维,而且更利于分工合作,效率高。每个模块只有一个功能实现,复杂度低且易维护。只需知道子程序的全局变量、函数名称和接口就可调用,移植性强。综上所述,模块化程序设计更适合万年历这种多功能且需要功能扩展的设计,因此本章节的软件设计就采用的模块化程序设计。
4.1总体程序流程
在模块化程序设计模式里,总体的程序流程其实就是主程序的流程,也就是功能实现的整个流程,如图4.1所示就是基于单片机的电子万年历的主程序流程图。
程序开始需要先初始化,准备好程序开始,然后进入主程序的大循环。从子程序DS1302模块读取时间,包括时钟、日期获取换算,子程序DS18B20模块读取温度,完成基本的数据读取,因为本设计有个阳历和阴历的转换功能,所以需要干支纪年法计算,换算成阴历的日期信息,所有信息将由子程序12864模块负责显示。信息读取之后就是按键扫描,查验是否有按键按下的情况,如果有则按找按键按下的情况调整相关变量参数,信息也要由子程序12864模块负责显示。这样完成了一个循环,这个循环内的读取顺序可以根据个人习惯调整,在本次程序设计时为了防止跳变的发生,将一次循环的时间限制在了1s之内,有效地保证程序的准确性。
程序不断循环,就可以实现电子万年历正确的显示当前的时间信息和温度信息等等功能所需信息。
图4.1 程序总体流程图
4.2子程序设计
子程序主要负责的是单个模块功能实现,需要单独占用一个.c子程序文件,除此之外,对外的接口、声明等等还需要占用一个相应的.h头文件,两者配合完成一个完整的子程序。每种语言都有自己的规则以方便书写和读取,头文件的格式一般如下:
#ifndef __XXXX_H__
#define __XXXX_H__
#endif
主程序调用各个模块的子程序就可以实现功能,调用时主需要包含想要调用的子程序的头文件即可。本设计采用的器件大都是数字器件,都有自己的协议,因此在设计时需要参考各个器件的使用规则。本小节设计所有的关于器件的图标信息均来自器件的使用手册。
4.2.1时钟子程序
DS1302计时芯片包含一个实时时钟、日历和31字节的静态RAM。它通过简单的串行接口与单片机通信。DS1302有自己的通信协议,实时时钟和日历信息通过时钟同步受单片机控制。月末日期自动调整为少于31天的月份,包括闰年的更正。时钟以24小时或12小时格式运行,带有AM/PM指示器。 
图4.2 DS1302主要寄存器及读写命令
DS1302有7个寄存器与时间信息有关,相关寄存器的作用如图4.2左边的图片,右边的图片表达了DS1302的数据范围。DS1302有读写两种工作状态,从图4.2左图可以看出是由最后一位决定的,读写指令单独占一个字节。要想完成一个读写的操作还需要一个数据字节,表示要读或者写的数据。对于单字节写,是在SCLK下降沿时写入数据。CE置高的必要条件是SCLK为低电平,所以初始化时SCLK置低、CE置高。需要写入的字节送入I/O口后SCLK跳变,完成写操作
图4.2可以看出DS1302不包含星期信息,因此需要专门的算法计算获取。从右图可以看出芯片的年份信息包含99年,本设计的时间是从2000年到2099年。
4.2.2显示子程序
LCD12864是128*64点阵液晶,可以分为有字库和没有字库的两种。不带字库的12864显示汉字的方式可以理解为“画”,用一个个点“画”出汉字。带字库的LCD12864有一个自己的汉字表,可以直接查询或许,同时还可以实现“画”汉字的功能,因此带字库的LCD12864更方便,本设计采用的就是带字库的。
LCD12864一共可以显示4行8列共32个16×16点阵的汉字,每个字符显示都有自己专属的RAM的地址,表4.1就是使用手册提供的RAM地址表。在设计重软件设计分四行显示电子万年历的信息,月日和温度占一行,时分秒和星期占一行;农历干支纪年、月日、信息占一行;闹钟单独占一行,总共四行信息。
表4.1 带字库12864显示RAM地址
汉字显示坐标
X坐标
Line1 80H 81H 82H 83H 84H 85H 86H 87H
Line2 90H 91H 92H 93H 94H 95H 96H 97H
Line3 88H 89H 8AH 8BH 8CH 8DH 8EH 8FH
Line4 98H 99H 9AH 9BH 9CH 9DH 9EH 9FH
12864同样有串行和并行两种操作方法,出于性价比最大化,本课题选择了并行方法。如图4.3所示为12864时序图,采用并行模式,RS先置为1,R/W置为0。在操作方式上,存在写入命令和写入数据两类,在实际应用时注意两者的不同。
12864的本设计的应用需要有几点特别注意的。中文的显示,要写入信息前先写入地址信息,当字符编码不止一位时,应遵循先高后低的原则。接受新命令的必要条件是BF为“0”,因此在每一个指令发布前先确认BF的状态。“RE”表达同一指令集,因此在同一指令集工作时,不对“RE”做处理。 
图4.3 12864时序图
4.2.3温度获取子程序
DS18B20满足单总线协议,因此操作简单,易上手。DS18B20内部有低温系数晶体振荡器和高温系数晶体振荡器,两个计数器处理后给温度寄存器。DS18B20默认精度为四位小数,每个小数位表示0.0625℃,每完成一次温度转换耗时为750ms。输入输出受DQ管脚控制,图4.4为使用手册中DS18B20的数据字节定义。 
图4.4 DS18B20的数据字节定义
电子万年历的温度精度要求到1℃即可,因此做了四位位移,程序设计时没有考虑四舍五入进位的问题,所以本设计的成本存在1℃的误差。此子函数需要反复被调用,以便随时可以获取空气的温度信息。

宁波成人教育网   宁波成人考试网站  成人教育网址

声明:优质内容创作不易,转载务必注明出处:http://www.nepuzs.com/notice/1064.html

分享:

0

① 扫二维码:进行在线报名

② 报考攻略、高校推荐、专业测评

③ 赶紧扫一扫添加吧,学子们~

舟山成人高考 | 舟山函授专升本 | 舟山成人本科 | 舟山函授本科 | 舟山成人专升本 | 函授本科报名 | 成教学院 | 成考专升本报名 | 成人高考专升本 | 学历提升 | 化学工程函授本科 | 石油化工技术 | 化学工程专业 | 杭州函授本科化学工程 | 宁波函授本科化学工程 | 绍兴函授本科化学工程 | 温州函授本科化学工程 | 台州函授本科化学工程 | 舟山函授本科化学工程 | 嘉兴函授本科化学工程 | 湖州函授本科化学工程 | 金华函授本科化学工程 | 浙石化化学工程函授本科 | 北仑函授本科化学工程 | 慈溪函授本科化学工程 | 余姚函授本科化学工程 | 镇海函授本科化学工程 | 上虞函授本科化学工程 | 乍浦函授本科化学工程 | 衢州函授本科化学工程 | 宁波专升本函授 | 宁波成人高考 | 浙江大学 | 宁波高考日语培训 宁波雅思培训

Copyright ©2020 All rights reserved. 宁波金顺培训学校官网 ICP备案:浙ICP备10034111号-5