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

上传人:b****6 文档编号:7506824 上传时间:2023-05-11 格式:DOCX 页数:53 大小:595.36KB
下载 相关 举报
基于AT89S52单片机的万年历设计.docx_第1页
第1页 / 共53页
基于AT89S52单片机的万年历设计.docx_第2页
第2页 / 共53页
基于AT89S52单片机的万年历设计.docx_第3页
第3页 / 共53页
基于AT89S52单片机的万年历设计.docx_第4页
第4页 / 共53页
基于AT89S52单片机的万年历设计.docx_第5页
第5页 / 共53页
基于AT89S52单片机的万年历设计.docx_第6页
第6页 / 共53页
基于AT89S52单片机的万年历设计.docx_第7页
第7页 / 共53页
基于AT89S52单片机的万年历设计.docx_第8页
第8页 / 共53页
基于AT89S52单片机的万年历设计.docx_第9页
第9页 / 共53页
基于AT89S52单片机的万年历设计.docx_第10页
第10页 / 共53页
基于AT89S52单片机的万年历设计.docx_第11页
第11页 / 共53页
基于AT89S52单片机的万年历设计.docx_第12页
第12页 / 共53页
基于AT89S52单片机的万年历设计.docx_第13页
第13页 / 共53页
基于AT89S52单片机的万年历设计.docx_第14页
第14页 / 共53页
基于AT89S52单片机的万年历设计.docx_第15页
第15页 / 共53页
基于AT89S52单片机的万年历设计.docx_第16页
第16页 / 共53页
基于AT89S52单片机的万年历设计.docx_第17页
第17页 / 共53页
基于AT89S52单片机的万年历设计.docx_第18页
第18页 / 共53页
基于AT89S52单片机的万年历设计.docx_第19页
第19页 / 共53页
基于AT89S52单片机的万年历设计.docx_第20页
第20页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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

南通纺织职业技术学院毕业设计(论文)

 

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

 

董刚

 

班级:

09电子信息

专业:

电子信息工程

教学系:

机电系

指导老师:

荀磊

 

完成时间:

年月日至年月日

摘要

电子万年历是一种非常广泛日常计时工具。

它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能,对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、时、分、秒和温度等信息,还具有时间校准等功能。

该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3---5V电压供电。

此次是基于52系列的单片机进行的电子万年历设计,相比传统的万年历来说,精确度更高。

可以显示温度、年、月、日、时、分、秒及周信息,具有可调整日期和时间功能。

对单片机的理论基础和外围扩展知识进行了比较全面准备。

在硬件与软件方面进行同步设计。

硬件部分主要由单片机,LED显示电路,以及调时按键电路等组成。

在单片机的选择上使用了AT89S52单片机,该单片机适合于许多较为复杂控制应用场合。

显示器使用共阴极的数码管。

使用MAX7219来驱动显示,然后并行输出。

软件方面主要包括日历程序、时间调整程序、温度程序、显示程序等。

程序采用汇编语言编写,以便更简单地实现调整时间及阴历显示功能。

所有程序编写完成后,在keil软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。

关键词:

时钟芯片、MAX7219、DS18B20、动态扫描、单片机。

 

5.3实物展示38

1绪论

1.1设计背景

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

二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。

第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。

第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。

第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!

因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。

目前流行的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基础于该程序所开发的各种应用程序中的日历程序。

然而,这些程序都千篇一律的局限在一个很短的时间范围内。

(Windows各个版本一般都局限在1980年至2099年这一范围内),但是,在很多情况下,一个时间跨度较大的日历程序是很有参考价值的,本程序在这种背景下开始编辑,其中集成了国际通用日历和中国农历,此外还可以显示星期和加载了部分节日,显示本机准确日期等功能。

1.2设计思想

众所周知,地球绕太阳公转,公转一周历时365天5小时48分46秒。

现代国际上普遍采用罗马历法,在罗马历法中人为地规定一年365天,也就是我们所说的平年,为了弥补每一年多出的5小时48分46秒,同时又规定4年中有一年是闰年,闰年为366天(平年的2月份为28天,而闰年的2月份为29天),这样4年有365*3+366=1461天,而地球绕太阳公转4周历时1460天23小时15分4秒,这样,每4年又产生了44分56秒的误差,为了减小影响,历法上又规定,每400年中只存在97个闰年,这样400年中共有365*400+97=146097天,

而地球绕太阳公转400周历时146096天21小时6分40秒,较好的弥补了这一缺陷,这样几乎3300年才产生一天的误差。

1.3设计框图

本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

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

晶振电路是给主控模块提供脉冲信号;温度的采集由DS18B20构成;显示部分由8个数码管,MAX7219译码器构成。

使用动态扫描显示方式对数字的显示。

本设计系统框图如图1.1所示。

图1.1基于AT89S52单片机的电子万年历系统框图

 

2系统硬件设计

2.1最小化电路设计

在单片机使用中有必须的最小化电路,它是单片机工作的前提。

其中包括电源电路、晶振电路、复位电路。

下面就简单介绍最小化电路。

2.1.1主控芯片简介

(1)主要功能的简介

●拥有灵巧的8位CPU和在系统可编程Flash

●晶片内部具有时钟振荡器(传统最高工作频率可至12MHz)

●内部(ROM)程序存储)为8KB

●内部(RAM)数据存储器为256字节

●32个可编程I/O口线

●8个中断向量源

●三个16位定时器/计数器

●三级加密程序存储器

●全双工UART串行通道

(2)引脚功能简介

图2.1AT89S52单片机的引脚图

VCC:

电源正端输入,接+5V。

VSS:

电源地端。

XTAL1:

单芯片系统时钟的反相放大器输入端。

XTAL2:

系统时钟的反相放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF的小电容,可以使系统更稳定,避免噪声干扰而死机。

RESET:

重置引脚,高电平动作。

EA/Vpp:

"EA"表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。

ALE/PROG:

ALE是表示地址锁存器启用信号。

PSEN:

此为"ProgramStoreEnable"的缩写,其意为程序储存启用。

PORT0(P0.0~P0.7):

端口0是一个8位宽的开路汲极(OpenDrain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。

其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。

PORT1(P1.0~P1.7):

端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LSTTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。

PORT3(P3.0~P3.7):

端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。

其引脚分配如下:

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脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

/EA/VPP:

当/EA保持低电平时,在此期间外部程序存器(0000H-FFFFH),不管是否有内部程序存储器。

  

.2.1.2复位电路、晶振电路的设计

单片机工作需要3个基本条件:

接电源、接石英晶体振荡器和复位电路。

如图2.2所示。

图2.2单片机的基本电路

(1)接电源

将单片机第40脚Vcc接电源+5V,第20脚Vss接地(电源负极),为单片机工作提供电源。

由于AT89S52片内带有程序存储器,当使用片内程序存储器时要将EA(31脚)接高电平,即接到电源+5V。

(2)接石英晶体振荡器

将单片机第19脚(XTAL1)与18脚(XTAL2)分别接外部晶体的两个引脚,由石英晶体组成振荡器,保证单片机内部各部分有序工作。

图2.3晶振电路

单片机运行程序的速度与振荡器的频率有关。

单片机在读、写操作时都需要消耗一定的时间。

机器周期是指单片机完成一个基本操作所用的时间,当外接石英晶体为12MHz时,1个机器周期为1ms;当外接石英晶体为6MHz时,1个机器周期为1ms。

(3)复位电路

在实际应用中,复位电路有两种基本形式:

一种是上电复位,另一种是上电与按键均有效的复位如图2.4所示。

上电复位要求接通电源后,单片机自动实现复位操作。

常用的上电复位电路如图2-4(a)所示。

上电瞬间RST引脚获得高电平,随着电容C1的充电,RST引脚的高电平将逐渐下降。

RST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。

该电路典型的电阻和电容参数为:

晶振为12MHz时,C1为10uF,R1为8.2KΩ;晶振为6MHz时,电容C1为22uF,R1为1KΩ。

上电与按键均有效的复位电路如图2.4(b)所示。

上电与按键均有效的复位电路原理与上电复位原理相同,不同的是上电与按键均有效的复位电路在单片机运行期间,能用按键来控制复位操作晶振为6MHz时,电容C1为22uF,R2为200Ω

 

2.4(a)上电复位电路图2.4(b)上电与按键均有效复位电路

本设计中使用后者电路复位,就是可以在单片机运行期间可以人工的复位。

这样是比较方便。

2.2显示电路设计

.2.2.1显示器的简介

发光二极管LED是简单常用的输出设备,通常用来指示机器的状态或其它信息。

它的优点是价格低,寿命长,对电压电流的要求低及容易实现多路等,因而在测量控制仪器中获得了广泛的应用。

LED是近似于恒压的元器件,到导电时(发光)的正向压降一般约为1.6V或2.4V,反向击穿电压一般≥5V。

工作电流通常在10---20mA,故电路中需要串联适当的限流电阻。

发光强度基本上与正向电流成正比。

发光效率和颜色取决于制造的材料,一般常用红色,偶尔也用于黄色或绿色。

多个LED可接成共阴或共阳极形式。

通过驱动器接到系统的并行输出口上,由CPU输出适当的代码来点亮或熄灭相应的LED。

发光二级管显示驱动(点亮)的方法有如下2种:

●静态驱动方法:

即给欲点亮的LED通过恒定的定流。

这种驱动方法需要显示的位数增加时,所需的逻辑部件及连线也相应增加,成本也增加。

●动态驱动方法:

是给欲点亮的LED通过脉冲电流,此时LED的脉冲电流倍数于其额定电流值。

利用动态驱动方法可以减少需要的逻辑部件和连线。

7段LED数码显示器

最常用的一种数码显示器是由7段条形的LED组成,如图2.5所示。

图2.5(a)共阴极接法图2.5(b)共阳极接法

点亮适当的字段,就可以出不同的数字。

此外不少于7段数码管显示器在右下角带有一个圆形的LED作小数点用,这样一共有8段,恰好适用于8位的并行系统。

图2.5(a)为共阴极接法,公共阴极接地。

当各段阳极上的电平为“1”时,该段点亮;电平为“0”时,段就熄灭。

图2.5(b)为共阳极接法+5V电源。

当各段阴极上的电平为“0”时,该段就点亮;电平为“1”时,段就熄灭。

图中的电阻是限流电阻。

 

图2.67段LED数码管显示器内部段的排列

为了在7段(图2.6)LED上显示不同的数字或字符,首先要把数字或字符转换成相应的段码(又称字型码),由于电路接法不同,形成的段码也不相同,如表2-1所示。

表2-17段数码显示器的段位码

存储器地址

显示数字

共阴极接法的7段状态

gfedcba

共阴极接法段码(十六进制数)

共阳极接法段码(十六进制数)

SEG

0

0111111

3F

40

SEG+1

1

0000110

06

79

SEG+2

2

1011011

5B

24

SEG+3

3

1001111

4F

30

SEG+4

4

1100110

66

19

SEG+5

5

1101101

6D

12

SEG+6

6

1111101

7D

02

SEG+7

7

0000111

07

78

SEG+8

8

1111111

7F

00

SEG+9

9

1100111

67

18

SEG+10

A

1110111

77

08

SEG+11

B

1111100

7C

03

SEG+12

C

0111001

39

46

SEG+13

D

1011110

5E

21

SEG+14

E

1111001

79

06

SEG+15

F

1110001

71

0E

注:

由于用MAX7219驱动译码,所以,本文选用共阴极数码管,只显示0---9,如果要用7段数码显示器显示多位数字,就用MAX7219来驱动,下一节MAX7219的驱动。

详情请参考上一节。

2.2.2驱动芯片的简介

MAX7219是MAXMI公司生产的一种串行接口方式7段共阴极LED显示驱动器。

其片内包含有一个BCD码到B码的译码器、多路复用扫描电路、字段和字位驱动器,以及存储每个数字的8X8RAM。

每位数字都可以被寻址和更新,允许对每一位数字选择B码译码或不译码。

采用三线串行方式与单片机接口。

电路十分简单,只需要一个10KΩ左右的外接电阻来设置所有LED的段电流。

MAX7219的引脚排列如图2.7所示。

图2.7MAX7219的引脚排列

(1)引脚功能简介

DIN:

串行数据输入。

在CLK时钟的上升沿,串行数据被移入内部移位寄存器。

移入时最高位(MSB)在前。

DIG0-7:

8根字位驱动引脚,它从LED显示器吸入电流。

GND:

接地,两根GND引脚必须相连。

LOAD:

装载数据输入。

在LOAD的上升沿,串行输入数据的最后16位被锁存。

CLK:

时钟输入。

它是串行数据输入时所需的移位脉冲。

最高时钟频率为10MHz,在CLK地上升沿串行数据被移入内部移位寄存器,在CLK的下降沿数据从DOUT移出。

SEGA-SEGG,DP:

七段和小数点驱动输出,它提供LED显示器源电流。

ISET:

通过一个10KΩ电阻Rset接到V+以设置峰值段电流。

V+:

+5V电源电压。

DOUT:

串行数据输出。

输入到DIN的数据经过16.5个时钟周期后,在DOUT端有效。

(2)MAX7219的传输方式:

采用串行数据传输方式,由16位数据包发送到DIN引脚的串行数据在每个CLK的上升沿被移入的内部16位移位寄存器,然后在LOAD的上升沿将数据所存到数字或控制寄存器中。

LOAD信号必须在第16个时钟上升沿同时或之后,但在下一个时钟上升沿之前变高;否则将会丢失数据。

DIN端的数据通过移位寄存器传送,并在16.5个时钟周期之后出现在DOUT端。

DOUT端的数据在CLK的下降沿输出。

串行数据以16位为一帧,其中,D11-D8为内部寄存器地址,D7-D0为寄存器数据,格式如表2-2所示。

表2-2MAX7219的串行数据格式

D15

D14

D13

D12

D11

D10

D9

D8

D7

D6

D5

D4

D3

D2

D1

D0

X

X

X

X

地址

MSN数据LSB

(3)MAX7219的内部寄存器:

MAX7219具有14个可寻址的内部数字和控制寄存器。

8个数字寄存器由一个片内8X8双端口SRAM实现,它们可以直接寻址;因此,可以对单个数字进行更新;并且只要V+超过2V,数据就可以保留下去。

控制寄存器有5个,分别为译码方式、显示亮度、扫描界限(扫描数位的个数)、停机和显示测试。

另外还有一个空操作寄存器(NO-OP),在不改变显示或影响任一控制寄存器的条件下器件级联时,它允许数据从DIN传到DOUT。

表2.3所列为MAX7219的内部寄存器及其地址。

表2-3MAX7219的内部寄存器及其地址

寄存器

地址

D15-D12

D11D10D9D8

十六进制代码

NO–OP

X

0000

X0H

数字0

X

0001

X1H

数字1

X

0010

X2H

数字2

X

0011

X3H

数字3

X

0100

X4H

数字4

X

0101

X5H

数字5

X

0110

X6H

数字6

X

0111

X7H

数字7

X

1000

X8H

译码方式

X

1001

X9H

亮度

X

1010

XAH

扫描界限

X

1011

XBH

停机

X

1100

XCH

显示测试

X

1111

XFH

下面以表格形式对MAX7219内部寄存器中不同数据所表示的含义进行说明。

表2-4为译码方式寄存器中数据的含义。

从表中可见,寄存器中的每一位与一个数字位相对应,逻辑高电平选择B译码,而逻辑低电平则选择旁路译码器。

表2-4译码方式寄存器(地址=X9H)

含义

D7D6D5D4D3D2D1D0

十六进制代码

7–0位均不译码

00000000

00H

0位译成B码,7–1均不译码

00000001

01H

3–0译成B码,7–4均不译

00001111

0FH

7–0位译成B码

11111111

FFH

MAX7219可用V+和ISET之间所接外部电阻Rset来控制显示亮度。

来自段驱动器的峰值电流通常为进入ISET电流的100倍。

Rset既可以为固定电阻,也可以为可变电阻,以提供来自面板的亮度调节,其最小值为9.52KΩ。

段电流的数字控制由内部脉宽调制DAC控制。

该DAC通过亮度寄存器向低4位加载,将平均峰值电流按16级比例设计,从Rset设置峰值电流的31/32的最大值到1/32的最小值,如表2-5所列,最大亮度出现在占空比为31/32时。

表2-5亮度寄存器(地址=XAH)

占空比(亮度)

D7D6D5D4D3D2D1D0

十六进制代码

1/32(最小亮度)

XXXX0000

X0H

3/32

XXXX0001

X1H

5/32

XXXX0010

X2H

29/32

XXXX1110

XEH

31/32(最大亮度)

XXXX1111

XFH

扫描界限寄存器用于设置所显示的数字位,可以为1-8。

通常以扫描频率为1300Hz、8位数字、多路方式显示。

因为所扫描数字的多少会影响显示亮度,所以要注意调整。

如果扫描界限寄存器被设置为3个数字或更少,各数值驱动器将消耗过量的功率。

因此,Rset电阻的值必须按所显示数字的位数多少适当调整,以限制各个数字驱动器的功耗。

表2-6为扫描界限寄存器中数据的含义。

表2-6扫描界限寄存器(地址=XBH)

显示数字位

D7D6D5D4D3D2D1D0

十六进制代码

只显示第0位

XXXXX000

X0H

显示第0位-第1位数字

XXXX0001

X1H

显示第0位-第2位数字

XXXX0010

X2H

显示第0位-第6位数字

XXXXX011

X6H

显示第0位-第7位数字

XXXXX111

X7H

当MAX7219处于停机方式时,扫描振荡器停止工作,所有的段电流源被拉到地,而所有的位驱动器被拉到V+,此时LED将不显示。

在数字和控制寄存器中的数据保持不变。

停机方式可用于节省功耗或使LED处于闪烁。

MAX7219退出停机方式的时间不到250uS,在停机方式下显示驱动器还可以进行编程。

停机方式可以被显示测试功能取消。

表2-7为停机寄存器中数据的含义。

表2-7停机寄存器(地址=XCH)

工作方式

D7D6D5D4D3D2D1D0

十六进制代码

停机

XXXXXXX0

X0H

正常

XXXXXXX1

X1H

显示测试寄存器有两种工作方式:

正常和显示测试。

在显示测试方式下8位数字被扫描,占空比为31/32。

通常不考虑(但不改变)所有控制寄存器和数据寄存器(包括停机寄存器)内的控制器来接通所有的LED显示器。

表2-8为显示测试寄存器中数据的含义。

表2-8显示测试寄存器(地址=XFH)

工作方式

D7D6D5D4D3D2D1D0

十六进制代码

停机

XXXXXXX0

X0H

显示设置

XXXXXXX1

X1H

数字0-7寄存器受译码器寄存器的控制:

译码或不译码。

数据将寄存器可将BCD码译成B码(0-9、-、E、L、P),如表2-9所列。

如果不译码,则数字寄存器中数据的D6-D0为=位分别对应7段LED显示器的A-G段,D7位对应LED的小数点DP。

某一位数据为1,则点亮与该位对应的LED段;数据为0,则熄灭该段。

表2-9数字0-7寄存器(地址=X1H–X8H)

7段

字形

寄存器数据

点亮段

D7D6-D4D3D2D1D0

DPABCDEFG

0

X0000

1111110

1

X0001

0110000

2

X0010

1101101

3

X0011

1111001

4

X0100

0110011

5

X0101

1011011

6

X0110

1011111

7

X0111

1110000

8

X1000

1111111

9

X1001

1111011

-

X1010

0000001

E

X1011

1001111

H

X1100

0110111

L

X1101

0001110

P

X1110

1100111

X1111

0000000

注:

小数点DP由D7位控制,D7=1点亮小数点

.2.2.3显示电路

图2.8为89S52单片机与MAX7219的一种接口。

89S52的P1.0口连接到

图2.8MAX7219与89S52单片机接口

MAX7219的DIN端,P1.1口连到LOAD端,P1.2连到CLK端。

采用软件模拟方式产生MAX7219所需的工作时序。

图2.8为数据传输时序设计的MA

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2