基于51单片机的万年历设计(毕业设计)

分类号编号

烟台大学文经学院毕业论文(设计)

基于51单片机的万年历设计

Calendar Design Based On 51 SCM

申请学位:通信工程学士

系别:电子信息与计算机科学系

专业:通信工程

班级:文通084-2

姓名:贾昌征

学号:200890512213

指导老师:张志刚(副教授)

2012年 5 月20 日

烟台大学文经学院

基于51单片机的万年历设计

申请人:贾昌征

导师:张志刚

2011年5 月20 日

烟台大学文经学

烟台大学文经学院毕业论文(设计)任务书

院(系):电子信息与计算机科学系

姓名贾昌征学号200890512213 毕业届别专业通信工程毕业论文(设计)题目基于51单片机的万年历设计

指导教师张志刚学历研究生

职称副教授所学专业

具体要求(主要内容、基本要求、主要参考资料等):

主要内容:本课题立足于一个具体的制作实例,即以单片机为控制核心的电子万年历

的设计与制作。具体做法是以单片机及其最小系统为核心,AT89C51作为主控制系统,集时钟芯片DS1302,液晶12864显示, 按键电路,复位电路等为一体,通过对单片机进行C语言编程,设计一个电子万年历。

基本要求:

(1)显示公历年、月、日、星期、小时、分钟和秒;

(2)可随时可以调校年、月、日或时、分、秒;

(3)能够显示温度。

主要参考资料:

[1] 王质朴,吕运鹏.MCS-51单片机原理接口与应用,北京理工大学出版社,2009.

[2] 郑学坚;周斌.微型计算机原理及应用[M].北京:清华大学出版社,2001

[3] 谭浩强.C程序设计(第三版).北京清华大学出版社,2007.

[4] 康光华.电子技术基础(模拟部分).北京:高等教育出版社,2004.

[5] 王法能.单片机原理及应用[J].北京:科学出版社,2004

[6] 应锟.《中国科技博览》2011年第15期.

[7] 周民标.《电子世界》2002年第6期.

进度安排:

(1)熟悉资料,完成开题报告 2012.02.15—2012.03.25

(3)完成系统硬件设计 2012.03.25—2012.04.10

(4)编写系统软件流程图和程序及调试 2012.04.11—2012.04.25

(5)完成系统的硬件仿真 2012.04.25—2012.05.01

(6)整理资科,论文答辨准备和答辨 2012.05中旬

指导教师(签字):

2010年3月10日

院(系)意见:

教学院长(主任)(签字):

年月日备注:

摘要

电子万年历是一种非常广泛日常计时工具,给人们的带来了很大的方便,在社会上越来越流行。它可以对年、月、日、时、分、秒进行计时,采用直观的数字显示,可以同时显示年月日时分秒和温度等信息,还有时间校准等功能。该电子万年历主要采用AT89C51单片机作为主控核心,用DS1302时钟芯片作为时钟、液晶12864显示屏显示。AT89C51单片机是由Atmel公司推出的,功耗小,电压可选用4~6V电压供电;DS1302时钟芯片是美国DALLAS公司推出的具有细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;数字显示是采用的12864液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒和温度等信息。此外,该电子万年历还具有时间校准等功能。

关键词:单片机AT89C51 时钟芯片DS1302 液晶12864 温度

Abtract

E-calendar day time is a very wide range of tools,giving great convenience to people, increasingly popular in modern society. It can be year, month, day, Sunday, hours, minutes, seconds for time,using an intuitive digital display can simultaneously display year, month, day, Sunday, hours, minutes, seconds, and temperature and other information, but also a time-calibration and other functions. The main use of the electronic calendar AT89C51 single-chip microcomputer as the main core, provided by the DS1302 clock chip clock, DS18B20 the temperature chip acquisition transition temperature, LED display shows the dynamic scan. AT89C51 single-chip microcomputer is introduced by Atmel Corporation, a small power consumption, voltage can be selected 4 ~ 6V power supply voltage; DS1302 clock chip is introduced DALLAS fine with trickle charge function of current low-power real-time clock chip, which can of the year, month, day, week, hour, minute, second for time, also has multiple functions, such as a leap year compensation, and long life of the DS1302, a small error; DS18B20 temperature chip is a digital temperature sensor with a measurement accuracy high, a simple circuit to connect the characteristics of such sensors only need a data cable for data transmission; digital 12864 display is used to display LED screen, can display year, month, day, week, hour, minute, second and temperature, etc. information. In addition, the electronic calendar is also a time-calibration functions.

Keywords: single-chipAT89C51 clock chip DS1302 liquid crystal 12864 temperature

烟台大学文经学院毕业论文(设计)

一、绪论

随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。

二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时和月差从分级缩小到秒级。第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。

我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。

除了采用集成化的时钟芯片外,还有采用MCU的方案,利用AT89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制LED数码管输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。AT89C51是由ATMEL公司推出的一种小型单片机。95年出现在中国市场。其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受。

本文介绍了基于AT89C51单片机设计的电子万年历。可以同时显示年、月、日、星期、时、分、秒和温度等信息,还具有时间校准等功能。

二、设计要求与方案论证

2.1 设计要求:

基本要求

A. 具有年、月、日、星期、时、分、秒等功能;

B. 具备年、月、日、星期、时、分、秒校准功能;

C. 具备温度显示功能;

2.2 方案选择

1).单片机芯片的选择

AT89C51单片机的主要特性如下:

●与MCS-51产品指令系统完全兼容

●4K字节的在线编程Flash存储器,1000次擦写周期

● 4.0~5.5V的工作电压范围

●全静态工作模式:0~33MHz

●三级程序存储器锁

●128×8字节内部RAM

●32个可编程I/O口线

●2个16位定时/计数器

●6个中断源

●全双工串行UART通道

●低功耗空闲和掉电模式

●中断可从空闲模式唤醒系统

●看门狗(WDT)及双数据指针

●掉电标识和快速编程特性

●具有掉电状态下的中断恢复功能

●灵活的在系统编程(ISP字节或页写模式)

由于AT89C51单片机片内有4K字节的在线编程Flash存储器,可以擦写1000次,具有掉电模式,而且具有掉电状态下的中断恢复功能,对设计开发非常实用。

所以选用AT89C51单片机作为电子万年历芯片的控制单片机。

2).显示模块选择

在本万年历当中12864 液晶显示当前的实时时间重要的阴阳历节日等功能。12864 液晶具有如下的特性:

?提供8 位,4 位并行接口及串行接口可选

?并行接口适配M6800 时序

?自动电源启动复位功能

?内部自建振荡源

3).时钟芯片选择

采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。

4).温度传感器的选择

在本万年历当中温度的采集采用数字温度传感器DS18B20。它属于单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。

具有如下的经济特点:

(1)只要求一个端口即可实现通信。

(2)在DS18B20 中的每个器件上都有独一无二的序列号。

(3)实际应用中不需要外部任何元器件即可实现测温。

(4)测量温度范围在-55。C 到+125。C 之间。

(5)数字温度计的分辨率用户可以从9 位到12 位选择。

(6)内部有温度上、下限告警设置。

电路设计方案最终确定

综上各方案所述,对此次作品的方案选定: 采用AT89C51 作为主控制系统; DS1302 提供时钟;数字式温度传感器;液晶12864作为显示。

三、系统的硬件设计与实现

3.1 电路设计框图

蜂鸣报警模块

3.2 系统硬件概述

本电路是由STC89C52 单片机为控制核心,具有操作简单的优点;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V ~5.5V 。采用三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM 数据。DS1302 内部有一个31*8 的用于临时性存放数据的RAM 寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成。

3.3 主要单元电路的设计

3.3.1 单片机主控制模块的设计

本系统采用的是美国ATMEL 公司生产的AT89C51单片机,首先我们来熟悉一下AT89C51单片机的外部引脚和内部结构。 1.单片机的引脚功能

AT89C51单片机有40个引脚。 ● Vcc :电源电压+5V ● GND :接地

● P0口:P0口是一组8位漏极开路型双向I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL 逻辑门电路,对端口写“1”可作为高阻抗输入端用。

AT89C51

主控制模

DS1302时钟模块 液晶12864显示模块

温度采集模块

键盘模块

在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线服用,在访问期间激活内部上拉电阻。

在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻。

●P1口:P1口是一个带内部上拉电阻的8位双向I/O,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。

Flash 编程和程序校验期间,P1接收低8位地址。

●P2口:P2口是一个带内部上拉电阻的8位双向I/O,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR 指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(MOVX @Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。

Flash 编程和程序校验期间,P2亦接收低高位地址和其他控制信号。

●P3口:P3口是一组带内部上拉电阻的8位双向I/O,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部的上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,见表3-1所示:

P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

表3-1 P3口的第二功能图

端口引脚第二功能

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 INT0(外中断0)

P3.3 INT1(外中断1)

P3.4 T0(定时/计时器0外部输入)

P3.5 T1(定时/计时器1外部输入)

P3.6 WR(外部数据存储器写选通)

P3.7 RD(外部数据存储器读选通)

●RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使引脚输出高电平,设置SFR AUXR的DISRT0(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。

●ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存器允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。

对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。

如有必要,可通过多特殊功能寄存器(SFR)区中的8EH单元的D0位置,可禁止ALE操作。该位置后,只有一条MOVX和MOVC指令ALE才会被激活。另外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。

●PSEN:程序存储允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。

●EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H —FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。

Flash存储器编程时,该引脚加上+12V的变成电压Vpp.

●XTAL1:振荡器反相放大器及内部时钟发生器的输入端。

●XTAL2:振荡器反相放大器的输出端。

AT89C51单片机内部结构

2.AT89C51单片机与MCS-51完全兼容

●看门狗(WDT):WDT是一种需要软件控制的复位方式。WDT 由13位计数器和特殊功能寄存器中的看门狗定时器复位存储器(WDTRST)构成。WDT 在默认情况下无法工作;为了激活WDT,用户必须往WDTRST 寄存器(地址:0A6H)中依次写入01EH 和0E1H。当WDT激活后,晶振工作,WDT在每个机器周期都会增加。WDT计时周期依赖于外部时钟频率。除了复位(硬件复位或WDT溢出复位),没有办法停止WDT工作。当WDT溢出,它将驱动RSR引脚输出一个高电平。

●可编程串口(UART)在AT89C51中,UART 的操作与AT89C51 和AT89C52 一样。AT89C51系列单片机的串行通信口可以工作于同步和异步通信方式。当工作于异步方式时,它具有全双工的操作功能,也就是说,它可以同时进行数据的发送和接收。串行口内的接收器采用的是双缓冲结构,能够在接收到的第一个字节从接收寄存器读走之前就开始接收第二个字节(当然,如果第二个字节接收完

毕,而第一个字节仍然没有被读走,那将会丢掉一个字节)。串行口的发送和接收操作都是通过特殊功能寄存器中的数据缓冲寄存器SBUF进行的,但在SBUF的内部,接收寄存器和发送寄存器在物理结构上是完全独立的。如果将数据写入SBUF,数据会被送入发送寄存器准备发送。如果执行SBUF指令,则读出的数据一定来自接收缓存器。因此,CPU对SBUF的读写,实际上是分别访问2个不同的寄存器。这2个寄存器的功能决不能混淆。

●振荡电路:AT89C51系列单片机的内部振荡器,由一个单极反相器组成。XTAL1反相器的输入,XTAL2为反相器的输出。可以利用它内部的振荡器产生时钟,只要XTAL1和XTAL2引脚上一个晶体及电容组成的并联谐振电路,便构成一个完整的振荡信号发生器,此方式称为内部方式。另一种方式由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2端浮空。在组成一个单片机应用系统时,多数采用这种方式,这种方式结构紧凑,成本低廉,可靠性高。在电路中,对电容C1和C2的值要求不是很严格,如果使用高质的晶振,则不管频率为多少,C1、C2通常都选择30pF。

●定时/计数器:AT89C51单片机内含有2个16位的定时器/计数器。当用于定时器方式时,定时器的输入来自内部时钟发生电路,每过一个机器周期,定时器加1,而一个机器周期包含有12个振荡周期,所以,定时器的技术频率为晶振频率的1/12,而计数频率最高为晶振频率的1/24。为了实现定时和计数功能,定时器中含有3种基本的寄存器:控制寄存器、方式寄存器和定时器/计数器。控制寄存器是一个8位的寄存器,用于控制定时器的工作状态,方式寄存器是一个8位的寄存器,用于确定定时器的工作方式,定时器/计数器是16位的计数器,分为高字节和低字节两部分。

●RAM:高于7FH内部数据存储器的地址是8位的,也就是说其地址空间只有256字节,但内部RAM的寻址方式实际上可提供384字节。的直接地址访问同一个存储空间,高于7FH的间接地址访问另一个存储空间。这样,虽然高128字节区分与专用寄器,即特殊功能寄存器区的地址是重合的,但实际上它们是分开的。究竟访问哪一区,存是通过不同的寻址方式加以区分的。

●SFR:SFR是具有特殊功能的所有寄存器的集合,共含有22个不同寄存器,它们的地址分配在80H~FFH中。虽然如此,不是所有的单元都被特殊功能寄存器占用,未被占用的单元,其内容是不确定的。如对这些单元进行读操作,得到的是一些随机数,而写入则无效,所以在编程时不应该将数据写入这些未确定的地址单元中,特殊功能寄存器主要有累加器ACC、B寄存器、程序状态字寄存器PSW、堆栈指针SP、数据指针DPTR、I/O端口、串行口数据缓冲器SBUF、定时器寄存器、捕捉寄存器、控制寄存器。

中断系统:AT89C51单片机有6个中断源,中断系统主要由中断允许寄存器IE、中断优先级寄存器IP、优先级结构和一些逻辑门组成。IE寄存器用于允许或禁止中断;IP寄存器用于确定中断源的优先级别;优先级结构用于执行中断源的优先排序;有关逻辑门用于输入中断请求信号。在整个中断响应过程中CPU所执行的操作步骤如下:

(1)完成当前指令的操作

(2)将PC内容压入堆栈

(3)保存当前的中断状态

(4)阻止同级的中断请求

(5)将中断程序入口地址送PC寄存器

(6)执行中断服务程序

(7)返回

3.3.2时钟电路模块的设计

DS1302 是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。

图-1 示出DS1302 的引脚排列,其中Vcc1 为后备电源,Vcc2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302 由Vcc1 或Vcc2 两者中的较大者供电。当Vcc2大于Vcc1+0.2V 时,Vcc2 给DS1302 供电。当Vcc2 小于Vcc1 时,DS1302 由Vcc1 供电。X1和X2 是振荡源,外接32.768KHz 晶振。RST 是复位/片选线,通过把RST 输入驱动置高电平来启动所有的数据传送。RST 输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST 提供终止单字节或多字节数据的传送手段。当RST 为高电平时,所有的数据传送被初始化,允许对DS1302 进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。上电动行时,在Vcc 大于等于2.5V 之前,RST 必须保持低电平。中有在SCLK 为低电平时,才能将RST 置为高电平,I/O为串行数据输入端(双向)。SCLK 始终是输入端。

图-1 DS1302 的引脚图

3.3.3 显示模块的设计

在本万年历当中12864 液晶显示当前的实时时间重要的阴阳历节日等功能。12864 液晶具有如下的特性:

1) 提供8 位,4 位并行接口及串行接口可选

2) 并行接口适配M6800 时序

3) 自动电源启动复位功能

4) 内部自建振荡源

64×16 位字符显示RAM(DDRAM 最多16 字符×4 行,LCD 显示范围16×2 行)(改为半角输入)

2M 位中文字型ROM(CGROM),总共提供8192 个中文字型(16×16 点阵)

16K 位半宽字型ROM(HCGROM),总共提供126 个西文字型(16×8 点阵)

64×16 位字符产生RAM(CGRAM)

15×16 位总共240 点的ICON RAM(ICONRAM)

其与单片机的连接电路如下

图-2 12864 液晶显示接口电路图

3.3.4温度采集模块设计

如图-3所示。采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。

图-3 DS18B20温度采集

3.3.5 按键调整系统模块设计

按键采用4个独立的按键,一个功能键、一个确认键、一个加按键、一个减按键通过这四个按键可以来合理的设置时钟的调整和闹铃的设定温度报警的上下限数值。

与单片机的连接电路如下

3.3.6 蜂鸣器报警模块

当实际的温度高于设定温度时或者当前的时间等于设置闹钟时间时蜂鸣器便会发出声音进行提示。与单片机的连接电路如下:

四、系统的软件设计

4.1程序流程框图

开始

初始化

读、写日期、时间和温度

分离日期\时间\温度显示值

显示子程序

定时闹铃子程序

日期、时间修改子程序

农历自动更新子程序

闰月子程

返回

4.2 时间调整的程序流程图

相关文档
最新文档