基于单片机的万年历设计课程设计.docx

上传人:b****5 文档编号:8025208 上传时间:2023-01-28 格式:DOCX 页数:60 大小:708.65KB
下载 相关 举报
基于单片机的万年历设计课程设计.docx_第1页
第1页 / 共60页
基于单片机的万年历设计课程设计.docx_第2页
第2页 / 共60页
基于单片机的万年历设计课程设计.docx_第3页
第3页 / 共60页
基于单片机的万年历设计课程设计.docx_第4页
第4页 / 共60页
基于单片机的万年历设计课程设计.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

基于单片机的万年历设计课程设计.docx

《基于单片机的万年历设计课程设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的万年历设计课程设计.docx(60页珍藏版)》请在冰豆网上搜索。

基于单片机的万年历设计课程设计.docx

基于单片机的万年历设计课程设计

基于单片机的万年历设计课程设计

摘要

电子万年历是一种非常广泛的日常计时工具,它不仅能够对时间技术,还能够对日期、温度、湿度等进行显示,所以在现代社会受到广泛应用。

本设计是一个基于AT89C51单片机的多功能日历显示系统,本设计能显示公历年、月、日,以及时、分、秒、温度、星期等信息,而且还具有日期调整、时间校准以及温度采集等功能。

系统所用的时钟日历芯片DS1302和数字式温度传感器DS18B20具有高性能、低功耗、接口简单的特点,使本系统电路简化,编程方便,同时功能也很强。

采用AT89C51单片机的万年历系统可以很好的改善传统采用模拟电路引起的计时不准确,不可靠,一致性差等问题。

本文设计是用单片机为主控制,通过电路仿真而实现的。

在Proteus7软件绘制硬件电路原理图,用Keil软件进行编程与调试,最终生成hex文件,载入单片机,从而实现仿真效果。

本文设计经过最终调试,能够正确显示年、月、日、周、时、分、秒以及温度等所需信息,并能正常使用对日期与时间的调整与校正功能。

系统使用1602LCD液晶屏显示信息,界面简洁、直观、易于操作。

关键词:

万年历;单片机;AT89C51;DS1302;DS18B20

 

1引言

人类的日常生活离不开时间,任何具有周期变化的自然现象都可用来测量时间。

而现在人们日常生活中广泛使用的是机械表、电子表、电子中等。

随着科技的发展,电子技术和计算机应用领域不断扩大,特别是单片机的出现,是近代计算机技术发展史上的一个重要里程碑。

基于单片机的万年历结合了时钟和日立的功能,将其二者融为一体,在现实时间的同时还能显示日期和年月,它主要通过单片机来读取时钟芯片的时间、日期,然后送给显示设备显示出来。

本系统的万年历除了显示年月日外还能准确显示温度它所处环境的温度。

本设计采用的测温元件是美国DALLAS半导体公司生产的一种智能温度传感器DS18B21,测温范围为-55~125C,最高分辨率达到0.0625C。

1.1研究的目的和意义

随着电子技术的迅速发展,特别是大规模集成电路出现,给人类生活带来了根本性的变化,尤其是单片机技术的应用产品已经走进了千家万户。

近年来,我国科技不断发展,我国经济发展的支柱产业——电子产业获得长足发展,各种电子产品琳琅满目,随处可见,随着电子产品的更新速度的加快,各种功能强大,款式新颖的电子产品不断问世。

万年历便是这一发展趋势中的代表,万年历则顺应了人们对时间方面的要求。

它的出现给人们的生活带来的诸多方便,在时间极显宝贵的现代生活中,起作用更是不言而喻的。

他在学校、车站、码头、剧院、医院、办公室等公共场所的应用非常广泛。

但传统的万年历除了显示时间之外,功能较为单一,逐渐失去了市场。

顺应技术发展和人们生产生活需求,各种功能的新式万年历不断涌现,且功能不断更新。

万年历作为电子类的小产品以其方便、实用等优势成为市场上的宠儿,同时也成为单片机设计培训中一个很实用的课题。

因为这个课题有很好的开发性和可发挥性,因此对设计者的要求比较高,不仅考察了队单片机的掌握能力更加强调了对单片机扩展的应用。

而且要求设计的万年历在操作上力求简洁,功能上尽量齐全,显示界面也要出色。

所以万年历不论从实用角度还是培养能力角度都很有价值。

1.2本系统主要研究的内容

本系统的主要研究内容是:

(1)选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、抗断电的器件。

(2)根据选用的电子万年历芯片设计外围电路和单片机的接口电路。

(3)在硬件设计时,结构要尽量简单实用,易于实现,是系统电路尽量简单。

(4)根据硬件电路,编写控制AT89C51芯片的单片机程序。

(5)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。

2系统方案论证

2.1控制部分的选择方案与论证

方案一:

用可编程逻辑器件设计

可采用PLD器件,设计起来结构清晰,各个模块从硬件上设计起来相对简单,控制与显示的模块间连接也会比较方便。

但是考虑到本设计的特点,EDA在能够扩展上比较受局限,占用的资源也多。

从成本上讲,可编程逻辑器件价格比较高。

方案二:

用单片机设计

单片机芯片作为控制部分,单片机有丰富的中断源,它的准确度相当高,并且C语言的灵活运用,给编程带来了方便。

单片机I/O功能也比较强大,容易对其进行扩展,使设计更加完善,此外单片机的成本也比较低。

综上所述,

资源丰富,程序编写也灵活简单,可移植性强,性价比也高,所以选择

作为主控芯片。

2.2显示部分的选择方案与论证

方案一:

采用点阵式数码管显示

点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较合适,但是基于电子万年历主要是显示数字,就显得太浪费了,且价格相对较高。

方案二:

采用LCD液晶显示屏

LCD液晶显示屏的显示功能特别强大,可以显示大量文字、图形,显示多样清晰可见,使得万年历的内容更加丰富,加上动态显示效果,更加吸引观众的眼球。

2.3时钟芯片的选择方案与论证

方案一:

直接采用单片机定时计数器

直接采用单片机定时计数器提供时间单位秒,使用程序实现年、月、日、星期、时、分、秒计数。

采用此种方案虽然减少芯片的使用,节约成本,但是,实现时间误差较大,而且不具有实时性,必须用到断电存贮资料,否则一断电,时钟就不会准确,误差太大。

方案二:

采用DS1302时钟芯片实现时钟

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

此外可以外接电池,具有实时性,断电后时间还会走,比较精准。

2.4温度传感器的选择方案与论证

方案一:

使用热敏电阻作为传感器

用热敏电阻与一个相应该阻值相串联分压,用热敏电阻随温度变化的特性,采集这两个电阻变化的分压值,并用A/D转换。

此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的温性曲线并不是严格线性的,会产生较大测量误差。

方案二:

采用数字式温度传感器DS18B20

此类传感器为数字式传感器,而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路,测量温度精度高。

2.5电路设计最终方案系统原理及总体结构图

本系统包括主控模块,显示模块,时钟模块,温度采集模块,综上各方案所述,电路设计最终方案:

采用

作为主控制系统,1602LCD液晶作为显示部分,DS1302作为时钟模块,DS18B20传感器来采集温度信息。

根据上述电路设计最终方案,系统总体设计方案如图2-1所示

设计的电路主要由四大模块构成:

温度传感器电路,单片机控制电路,显示电路以及校正电路。

图2-1系统总体结构图

当温度传感器接受到外面的信号,送入单片机,单片机将接受到的信号输出,让它在液晶上显示。

同时由单片机控制的万年历以及时间显示,当时间及秒计数计满60时就向分进位,分计数器计满60分后向时计数器进位,小时计数器按“24翻1”规律计数。

时、分、秒的计数结果经过数据处理可直接送显示器显示。

当计时发生误差的时候可以用校时电路进行校正。

时计数器计满24小时后自动向日计数器进一,日计数器由平年、闰年的28/30/31对大、小月和二月的判断应与当月相应的日期相一致,当日计数器计满时,向月计数器进位,月计数器计满12月向年计数器进位,

当年计数器计满100时所以计数器清零。

设计采用的是年、月、日和时、分、星期显示,所以在单片机通过对数据处理进行同时在液晶上显示。

3系统设计

3.1系统硬件仿真原理图

本次设计是在Proteus软件绘制的硬件图,如下图3-1所示

图3-1硬件仿真原理图

3.2单片机89C51控制模块的设计

AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含4KB的可反复擦除的只读程序存储器(PEROM)和128B随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和FLASH存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合。

主要性能参数:

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

②4K字节可重擦写FLASH闪速存储器

③1000次擦写周期

④全静态操作:

0HZ-24MHZ

⑤三级加密程序存储器

⑥128

8字节内部RAM

⑦32个可编程I/O口线

⑧2个16位定时/计数器

⑨6个中断源

⑩可编程串行UART通道

图3-2AT89C51引脚封装图

芯片引脚介绍:

(1)主电源引脚

①VCC:

+5V电源

②VSS:

地线。

(2)时钟电路引脚

XTAL1和XTAL2:

外接晶体引线端。

当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

(3)控制信号引脚

①RST/VPD:

复位信号。

当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作;当单片机掉电时,此引脚上可接备用电源,由VPD向片内RAM提供备用电源,一保持片内RAM中的数据不丢失。

②ALE/PROG:

地址锁存控制信号。

在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。

此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。

对于EPROM型单片机,在EPRAM编程期间,此引脚接收编程脉冲。

③PSEN:

片外程序存储器读选通信号输出端。

④EA/VPP:

访问程序存储控制信号。

当EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。

对于EPROM型单片机,在EPRAM编程期间,此引脚接上加21VEPROM编程电源VPP。

(4)I/O引脚

P0.0~P0.7:

P0口8位双向口线,P1.0~P1.7:

P1口8位双向口线,

P2.0~P2.7:

P2口8位双向口线,P3.0~P3.7:

P3口8位双向口线。

P3口线的第二功能。

P3的8条口线都定义有第二功能,详见表3-21。

表3-1P3口各引脚与第二功能表

引脚

第二功能

信号名称

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

外部RAM写选通

P3.7

RD

外部RAM读选通

以上把8051单片机的全部信号引脚分别以第一功能和第二功能的形式列出。

对于各种型号的芯片,其引脚的第一功能信号是相同的,所不同的只在引脚的第二功能信号。

对于9、30和31三个引脚,由于第一功能信号与第二功能信号是单片机在不同工作方式下的信号,因此不会发生使用上的矛盾。

但是P3口的情况却有所不同,它的第二功能信号都是单片机的重要控制信号。

因此,在实际使用时,都是先按需要选用第二功能信号,剩下的才以第一功能的身份作数据位的输入/输出使用。

图3-3单片机控制模块

3.3LCD液晶显示模块设计

显示模块主要是用来显示公历年、月、日以及时、分、秒、温度、星期等信息。

LCD智能型显示模块则是一种低功耗、低价值、低损耗的显示器件,它不但可以显示各式各样的字符、汉子和图形,同时具有可编程能力,且与单片机接口方便,基于以上优点,LCD智能型显示模块获得了广泛的应用。

1602LCD点阵液晶显示模块是由16*2个液晶显示点组成的一个16列*2行的阵列。

每个显示点对应一位二进制数,1表示亮,0表示灭。

存储这些点阵信息的RAM称为显示数据存储器,要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。

图形或汉字的点阵信息当然有自己设计,问题的关键就是显示点在液晶屏上的位置(行或列)与其在存储器中的地址之间的关系。

每个存储单元存储8个液晶点的显示信息。

下面是关于1602LCD液晶相关信息:

(1)引脚说明如下表所示

表3-21602LCD引脚说明

引脚

符号

功能说明

1

VSS

一般接地

2

VDD

接电源(+5V)

3

V0

液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

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位(最高位)(也是busyflag)

15

BLA

背光电源正极

16

BLK

背光电源负极

①请在DB0~DB7数据线中加入10K上拉电阻,特别是使用单片机中的三态I/O口时。

②V0需要一个外部的0V~10V负压输入,是液晶显示,可串入电位器调整液晶灰度。

(2)下面为1602LCD的指令集表:

表3-31602LCD指令集

3.4DS1302时钟模块的设计

DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。

DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。

⑴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进行操作。

如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。

上电运行时,在Vcc>2.0V之前,RST必须保持低电平。

只有在SCLK为低电平时,才能将RST置为高电平。

I/O为串行数据输入输出端(双向),后面有详细说明。

SCLK为时钟输入端。

下图为DS1302的引脚功能图:

图3-4DS1302的引脚功能图

⑵DS1302的控制字节

DS1302的控制字如表3-4所示。

控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。

表3-4DS1302的控制字格式

⑶DS1302数据的输入输出

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。

同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

图3-5DS1302读写时序图

⑷DS1302的寄存器

DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见下表。

此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。

时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。

DS1302与RAM相关的寄存器分为两类:

一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

表3-5DS1302的日历、时钟寄存器及其控制字

寄存器

命令字

取值

范围

各位内容

写操作

读操作

7

6

5

4

3

2

1

0

秒寄存器

80H

81H

00-59

CH

10SEC

SEC

分钟寄存器

82H

83H

00-59

0

10MIN

MIN

小时

寄存器

84H

85H

01-12或

00-23

12/

24

0

10

AP

HR

HR

日期

寄存器

86H

87H

01-28,29,

30,31

0

0

10DATE

DATE

月份寄存器

88H

89H

01-12

0

0

0

IOM

MONTH

周日寄存器

8AH

8BH

01-07

0

0

0

0

0

DAY

年份寄存器

8CH

8DH

00-99

10YEAR

YEAR

DS1302时钟芯片与AT89C51的连接图如下:

图3-6DS1302时钟芯片与AT89C51的连接图

3.5DS18B20温度采集模块的设计

采用数字式温度传感器DS18B20,有DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事领域的温度测量及控制仪器、测量系统和大型设备中。

(1)DS18B20的性能特点可归纳如下:

1)独特的单线接口仅需一个端口引脚进行通信;

2)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;

3)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;

4)测温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃;

5)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;

6)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快;

7)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;

8)负压特性:

电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。

(2)电路设计

如下图所示。

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

图3-7DS18B20温度采集

(3)DS18B20工作时序

1.复位时序图

图3-8复位时序图

2.读时序图

图3-9读时序图

3.写时序图

图3-10写时序图

4系统调试

4.1硬件调试

硬件调试是测试焊接完成后的成品的硬件电路的功能,发现及排除相关故障,主要包括主控芯片的调试以及各模块电路的调试。

由于本次设计仅仅处于软件仿真阶段,并没有去设计焊接电路,故该部分略。

在不久的毕业设计论文中一定会完善该部分。

4.2软件调试

本设计的软件编译是在KeiluVision4上进行的,此软件可以生成HEX文件用于下载到单片机上工作。

生成HEX文件后可以在PROTEUS上进行仿真调试。

5结论

经过将近三周的时间,课程设计终于完成了,心里顿时轻松不少,这段时间经历了从茫然不知从哪里下手到收集资料,小组讨论,有了些头绪再到理出思路,开始设计各部分电路,再到调试解决各个问题,期间经过老师的指导又修改电路,最后完成整个电路设计,心情也跟着起起伏伏,有调试成功的喜悦,有试了好多次却不知道哪儿出了问题的迷惑,也有突然有了新想法想尝试的冲动,总之,从畏惧渐渐喜欢上了设计,从设计中学到了好多实用的知识。

 

 

参考文献

[1]蔡美琴等.MCS-51系列单片机系统极其应用.北京:

高等教育出版社,2004

[2]林伸茂.8051单片机彻底研究实习篇.北京:

人民邮电出版社,2004

[3]胡学海.单片机原理极其应用系统设计.北京:

电子工业出版社,2005

[4]张毅刚.单片机原理极其应用.哈尔滨:

哈尔滨工业大学出版社,2004

[5]韩志军等.单片机应用系统设计.北京:

机械工业出版社,2005

[6]舒怀林.单片机原理与接口技术.武汉:

华中科技大学出版社,2001

附录

课程设计中的程序如下:

#include

#include

#include"SoundPlay.h"

#defineucharunsignedchar

#defineuintunsignedint

sbitSCK=P3^6;//时钟

sbitSDA=P3^4;//数据

sbitRST=P3^5;//DS1302复位

sbitlcdrs=P2^6;

sbitlcdrw=P2^5;

sbitlcden=P2^7;

sbitkey1=P1^0;//开调时键

sbitkey2=P1^1;//调时加键

sbitkey3=P1^2;//调时减键

sbitkey4=P1^3;//开设定闹铃键

sbitkey5=P1^4;//返回正常显示键

sbitkey6=P1^5;//闹铃开关键

sbitDQ=P3^7;//温度传感器数据通信位

sbitbeep=P2^1;//蜂鸣器控制IO口

sbitled1=P2^0;//led灯,闹铃响标志

bitReadRTC_Flag,Display_Flag,Alarm_Flag,flag;//定义标志位

ucharmiao,fen,shi,ri,yue,week,nian,T,C=0,k=0,m=0,n=0;

ucharset_miao,set_fen,set_shi,set_ri,set_yue,set_nian,TempBuffer[5],temp_value;

charl_tmpdate[7]={0x50,0x08,0x011,0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1