基于80c51的实时时钟方案设计书.docx

上传人:b****5 文档编号:7473038 上传时间:2023-01-24 格式:DOCX 页数:27 大小:175.88KB
下载 相关 举报
基于80c51的实时时钟方案设计书.docx_第1页
第1页 / 共27页
基于80c51的实时时钟方案设计书.docx_第2页
第2页 / 共27页
基于80c51的实时时钟方案设计书.docx_第3页
第3页 / 共27页
基于80c51的实时时钟方案设计书.docx_第4页
第4页 / 共27页
基于80c51的实时时钟方案设计书.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

基于80c51的实时时钟方案设计书.docx

《基于80c51的实时时钟方案设计书.docx》由会员分享,可在线阅读,更多相关《基于80c51的实时时钟方案设计书.docx(27页珍藏版)》请在冰豆网上搜索。

基于80c51的实时时钟方案设计书.docx

基于80c51的实时时钟方案设计书

一、系统方案

1、实验目的

1.进一步熟悉和掌握单片机的结构及工作原理;

通过课程设计,掌握以单片机核心的电路设计的基本方法和技术;

2.了解有关电路参数的计算方法培养综合运用单片机课程课题及有关选修课程的基本知识去解决实际问题的基本训练;

3.掌握单片机的接口技术及相关外围芯片的外特性,控制方,从而加深对该课程知识的理解;

4.熟悉Ptoteus及Keil软件的调试和仿真,通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

2、实验要求

1、实时显示年、月、日等;

2、实时显示秒、分、时等。

二、硬件介绍

1、微控制器AT89C51

AT89C51单片机是一种低功耗,高性能的片内含有4KB可编程/擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的8位COMS微控制器,使用高密度,非易失存储技术制造,并且与AT89C51引脚和指令系统完全兼容。

芯片上的FPEROM允许在线编程或采用通用的非易失存储编程器对存储器重复编程。

AT89C51单片机带有2K字节闪烁可编程可擦除只读存储器的单片机,其内部的可擦除只读存储器可以反复擦除100次。

2.1.1单片机的构成

AT89C51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多种功能的I/O线等一台计算机所需要的基本功能部件,AT89C51单片机单片机内包含下列几个部件:

(1)一个8位CPU;

(2)一个片内振荡器及时钟电路;

(3)4K字节ROM程序存储器;

(4)128字节RAM数据存储器;

(5)两个16位定时器/计数器;

(6)可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;

(7)32条可编程的I/O线(四个8位并行I/O端口);

(8)一个可编程全双工串行口;

(9)具有五个中断源、两个优先级嵌套中断结构。

2.1.2AT89C51单片机的引脚说明

AT89C51单片机采用40条引脚双列直插式器件,引脚除5V(

40脚)和电源地(

20脚)外,其功能分为时钟电路、控制信号、输入/输出三大部分,逻辑框图及引脚图分别如图2.3(a)(b)所示

(a)(b)

图1-1AT89C51单片机逻辑图与引脚图

 

AT89C51单片机的内部硬件结构中除了程序存储器由FPEROM取代了87C51单片机的EPROM外,其余部分完全相同,其管脚说明如下:

(1)VCC:

供电电压

(2)GND:

接地

(3)时钟电路

  XTAL1(19脚)——芯片内部振荡电路(单级反相放大器)输入端。

 XTAL2(18脚)——芯片内部振荡电路(单级反相放大器)输出端。

(4)控制信号

RST(9脚)复位信号:

时钟电路工作后,在此引脚上将出现两个机器周期的高电平,芯片内部进行初始复位,P0口~P3口输出高电平,将初值07H写入堆栈指针。

ALE(30脚)地址锁存信号:

当访问外部存储器时,P0口输出的低8位地址由ALE输出的控制信号锁存到片外地址锁存器,P0口输出地址低8位后,又能与片外存储器之间传送信息。

(29脚)片外程序存储器读选通:

低电平有效,

作为程序存储器的读信号,输出负脉冲,将相应的存储单元的指令读出并送到P0口。

/Vpp(30脚):

为高电平且PC值小于0FFFH时,CPU执行内部程序存储器程序;当

为低电平时,CPU仅执行外部程序存储器程序。

(5)I/O接口

P0口(P0.0~P0.7,39~32脚)三态双向口:

P0口结构包括一个输出锁存器、两个三态缓冲器、一个输出驱动电路和一个输出控制端。

P0口做地址/数据复用总线使用。

P1口(P1.0~P1.7,1~8脚)准双向口:

P1口做通用I/O接口使用,P1口的每一位口线能独立地作用于输入线,P1口可驱动4个TTL门。

P2口(P2.0~P2.7,21~28脚)通用I/O接口:

它做通用I/O接口使用时,是一个准双向口,此时转换开关MUX倒向左边,输出极与锁存器相连,引脚可作为用户I/O口线使用,输入/输出操作与P1口完全相同,P2口做地址总线使用。

当系统中接有外部存储器时,P2口用于输出高8位地址A8~A15,这时在CPU控制下,转换开关MUX倒向右边,接通内部地址总线。

P3口(P3.0~P3.7,10~17脚)双功能口:

P3口做通用I/O接口使用,输出功能控制线为高电平,与非门的输出取决于锁存器的状态,此时锁存器Q端的状态与其引脚状态是一致的。

在这种情况下,P3口的结构和操作与P1口相同。

P3口第二功能是可作为系统具有控制功能的控制线,另外P3口可驱动4个LSTTL门电路。

P3口也可作为AT89C51的一些特殊功能口使用如:

P3.0RXD(串行输入口);

P3.1TXD(串行输出口);

P3.2/INT0(外部中断0);

P3.3/INT1(外部中断1);

P3.4T0(记时器0外部输入);

P3.5T1(记时器1外部输入);

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

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

2、时钟电路模块DS12887

DS12887芯片是时钟芯片中功能较强的一种,它将晶体振荡电路、充电电路和可充电锂电池等一起封装在芯片的上方,组成一个加厚的集成电路模块。

电路通电时其充电电路便自动对可充电电池充电,其内部包含非易失时钟、警报器、百年历、可编程中断、方波发生器和114个字的非易失静态RAM。

DS12887具有日历、时钟、低功耗静态RAM、输出方波信号等功能,石英晶振和写保护电路也封装在内,在断电情况下仍能保持时间和内存。

DS12887可以方便地与单片机接口,并由单片机系统对其进行操作得到日历、时钟信息,输出方波信号用于秒信号的显示。

其封装方式为24脚双排直列,如图2.5所示。

图1-2DS12887的封装形式

2.2.1DS12887主要功能介绍

(1)内含一个锂电池,断电后运行十年以上不丢失数据。

(2)计秒,分,时,天,星期,日,月,年,并有闰年补尝功能。

(3)二进制数码或BCD码表示时间,日历和定闹。

(4)12小时或24小时制,12小时时钟模式带有PM和AM指示,有夏令时功能。

(5)Motorola和Intel总线时序选择,可编程方波信号输出。

(6)有128个字节RAM单元与软件接口,其中14个字节作为时钟和控制寄存器,114字节为通用RAM,所有RAM单元数据都具有掉电保护功能。

(7)中断信号输出(IRQ)和总线兼容,周期性中断、时钟更新周期结束中断可分别由软件屏蔽,也可分别进行测试。

(8)工作电压:

+4.5~5.5V。

(9)工作温度范围:

0~70℃。

2.2.2更新周期

DS12887每一秒执行一次更新周期,保证时间、日历的准确。

DS12887内部RAM专用寄存器地址功能

DS12887的地址由114字节的用户RAM存放。

10字节的存放实时时钟时间,日历和控制和状态的4字节特殊寄存器组成,几乎所有的128个字节直接读写。

表2.2为DS12887内部RAM和各专用寄存器地址分布表,

表2.2DS12C887内部RAM和各专用寄存器地址

地址单元

用途

地址单元

用途

地址00H

地址01H

秒闹

地址02H

地址03H

分闹

地址04H

地址05H

时闹

地址06H

星期

地址07H

日(两位数)

地址08H

月(两位数)

地址09H

年(两位数)

地址0AH

寄存器A

地址0BH

寄存器B

地址0CH

寄存器C

地址0CH

寄存器D

0EH~7EH

不掉电RAM区,共114字节

寄存器A

寄存器A各位不受复位的影响,UIP位为只读位,其它各位均可读写,寄存器的控制字的格式如表2.3所列。

表2.3DS12887控制寄存器A各布尔位定义

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

UIP

DV2

DV1

DV0

RS3

RS2

RS1

RS0

(1)UIP位:

更新周期标志位。

该位为“1”时,表示芯片正处于或将开始更新周期,此时程序不准读写时标寄存器;该位为“0”时,表示至少在244us后才开始更新周期,此时程序可读芯片内时标寄存器,该位是只读位。

(2) DV0、DV1、DV2:

芯片内部振荡器RTC控制位。

当芯片解除复位状态,并将010写入DV0、DV1、DV2后,另一个更新周期将在500ms后开始。

因此,在程序初始化时可用这三位精确地使芯片在设定的时间开始工作。

这与MC146818不同的是,DS12887固定使用32768Hz的内部晶体,所以,DV0=“0”,DV1=“1”,DV2=“0”,即只有一种010的组合选择即可启动RTC。

(3)RS3、RS2、RS1、RS0:

周期中断可编程方波输出速率选择位。

各种不同的组合可以产生不同的输出。

程序可以通过设置寄存器B的SQWF和PIE位控制是否允许周期中断方波输出。

寄存器B

寄存器B允许读写,主要用于控制芯片的工作

状态。

寄存器B的控制字的格式如表4所列。

表4 DS12887控制寄存器B各布尔位定义

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

SET

PIE

AIE

UIE

SQWE

DM

24/12

DSE

(1)SET位:

当该位为“0”时,芯片处于正常工作状态,每秒产生一个更新周期来更新时标寄存器。

为“1”时,芯片停止工作,程序在此期间可初始化芯片的各个时标寄存器。

(2)PIE、AIE、UIE位:

分别为周期中断、报警中断、更新周期结束中断允许位。

各位为“1”时,允许芯片发相应的中断。

(3)SQWE位:

方波输出允许位。

SQWE=“1”,按寄存器A输速率选择位所确定的频率输出方波。

SQWE=“0”,脚SQW保持低电平。

(4)DM位:

时标寄存器用十进制BCD码表示或用二进制表示格式选择位。

DM=“0”时,为十进制BCD码。

DM=“1”时,为二进制码。

(5)24/12位:

24/12小时模式设置位。

24/12位=“1”时,为24小时工作模式。

24/12位=“0”时,为12小时工作模式。

(6)DSE位:

夏令时服务位。

DSE=“1”,夏时制设置有效,夏时制结束可自动刷新恢复时间。

DSE=“0”,无效。

2.2.3DS12887的中断和更新周期:

DS12887处于正常工作状态时,每秒钟将产生一个更新周期,芯片处于更新周期的标志是寄存器A中的UIP位为“1”。

在更新周期内,芯片内部时标寄存器数据处于更新阶段,故在该周期内,微处理器不能读芯片时标寄存器的内容,否则将得到不确定数据。

更新周期的基本功能主要是刷新各个时标寄存器中的内容,同时秒时标寄存器内容加1,并检查其他时标寄存器内容是否有溢出,如果有溢出则相应进位日、月、年。

2.2.4DS12887初始化方法:

DS12887采取连续工作制,一般无须每次都初始化,即使是系统复位时也如此。

但初始化时,首先应禁止芯片内部的更新周期操作,所以先将DS12887状态寄存器B中的SET位置“1”,然后初始化00H~09H时标参数寄存器和状态寄存器A,此后再通过读状态寄存器C,清除寄存器C中的周期中断标志位PF,报警中断标志位AF,更新周期结束中断标志位UF。

通过读寄存器口D中的VRT位,读状态寄存器口后VRT位将自动置“1”,最后将状态寄存器B中的SET位置“0”,芯片开始计时工作。

3、LCD显示

本次课程设计采用实验台的OCMJ4X8C作为显示设备

引脚功能分别为:

VSS:

电源地(GND)。

VCC:

电源电压(5V)。

V0:

LCD驱动电压,液晶显示器对比度调整端。

使用时可以通过一个10K的电位器调整对比度,接正电源时对比度最弱,接地电源时对比度最高。

RS:

寄存器选择输入端,选择模块内部寄存器类型信号。

RS=0,进行写模块操作时指向指令寄存器,进行读模块操作时指向地址计数器。

RS=1,无论进行读操作还是写操作均指向数据寄存器。

R/W:

读写控制输入端,选择读/写模块操作信号。

R/W=0,读操作;R/W=1,写操作。

本设计中只需往LCD里写数据即可,写时序见图3-4。

E:

使能信号输入端。

读操作时,高电平有效;写操作时,下降沿有效

DB0~DB7:

数据输入/输出口,单片机与模块之间的数据传送通道。

选择4位方式通讯时,不使用DB0~DB3。

BLA:

背光的正端+5V。

BLK:

背光的负端0V。

4X8C模块内部主要由LCD显示屏、控制器、列驱动器和偏压产生电路构成。

控制器接受来自MPU的指令和数据,控制着整个模块的工作。

主要由显示数据缓冲区DDRAM,字符发生器CGROM,字符发生器CGRAM,指令寄存器IR,地址寄存器DR,忙标志BF,地址计数器AC以及时序发生电路组成。

模块通过数据总线DB0~DB7和E、R/W、RS三个输入控制端与MPU接口。

这三根控制线按照规定的时序相互协调作用,使控制器通过数据总线接受MPU发来的数据和指令,从CGROM中找到欲显示字符的字符码,送入DDRAM,在LCD显示屏上与DDRAM存储单元对应的规定位置显示出该字符。

控制器还可以根据MPU的指令,实现字符的显示,闪烁和移位等显示效果。

CGROM内提供的是内置字符码,CGRAM则是供用户存储自定义的点阵图形字符。

模块字符在LCD显示屏上的显示位置与该字符的字符代码在显示缓冲区DDRAM内的存储地址一一对应。

LCD4X8C模块内部具有两个8位寄存器:

指令寄存器IR和地址寄存器DR,用户可以通过RS和R/W输入信号的组合选择指定的寄存器,进行相应的操作。

表3-1中列出了组合选择方式:

表3-1寄存器选择组合

RS

R/W

操作

0

0

将DB0~DB7的指令代码写入指令寄存器IR中

0

1

分别将状态标志BF和地址计数器AC内容读到DB7和DB6~DB0

1

0

将DB0~DB7的数据写入数据寄存器中,模块的内部操作将数据写到DDRAM或者CGRAM中的数据送入数据寄存器中

1

1

将数据寄存器内的数据读到DB0~DB7,模块的内部操作自动将DDRAM或者CGRAM中的数据送入数据寄存器中

4X8C提供了较为丰富的指令设置,通过选择相应的指令设置,用户可以实现多种字符显示样式。

下面仅简要介绍本次设计中需要用到的一些指令设置。

清屏指令Cleardisplay

清显示指令将空位字符码20H送入全部DDRAM地址中,时DDRAM中的内容全部清除,显示消失,地址计数器AC=0,自动增一模式。

显示归位,光标闪烁回到原点(显示屏左上角),但不改变移位设置模式。

清屏指令码见表3-2。

表3-2清屏指令码

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

0

0

0

1

进入模式设置指令Entrymodeset

见表3-3,进入模式设置指令用于设定光标移动方向和整体显示是否移动。

表3-3模式设置指令码

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

0

1

I/D

S

I/D:

字符码写入或者读出DDRAM后DDRAM地址指针AC变化方向标志。

I/D=1,完成一个字符码传送后,AC自动加1。

I/D=0,完成一个字符码传送后,AC自动减1。

S:

显示移位标志。

S=1,完成一个字符码传送后显示屏整体向右(I/D=0)或向左(I/D=1)移位。

S=0,完成一个字符码传送后显示屏不移动。

显示开关控制指令Displayon/offcontrol

指令码见表3-4,该指令功能为控制整体显示开关,光标显示开关和光标闪烁开关。

表3-4显示开关控制指令码

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

1

D

C

B

D:

显示开/关标志。

D=1,开显示;D=0,关显示。

关显示后,显示数据仍保持在DDRAM中,开显示即可再现。

C:

光标显示控制标志。

C=1,光标显示;C=0,光标不显示。

不显示光标并不影响模块其他显示功能。

显示5*8点阵字体时,光标在第八行显示;显示5*10点阵字符时,光标在第11行显示。

B:

闪烁显示控制标志。

B=1,光标所在位置会交替显示全黑点阵和显示字符,产生闪烁效果;B=0,光标不闪烁。

功能设置指令Functionset

功能设置指令用于设置接口数据位数,显示行数以及字形。

指令码见表3-5。

表3-5功能设置指令码

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

1

DL

N

F

*

*

DL:

数据接口宽度标志。

DL=1,8位数据总线DB7~DB0;DL=0,4位数据总线DB7~DB4,DB3~DB0不使用,此方式传送数据需分两次进行。

N:

显示行数标志。

N=0,显示一行;N=1,显示两行。

F:

显示字符点阵字体标志。

F=0,显示5*7点阵字符;F=1,显示5*10点阵字符。

表3-6地址归位(02H)

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

0

0

1

*

功能:

把DDRAM地址计数器调整为“00H”,光标回原点,该功能不影响显示DDRAM

表3-7功能设定(20H/24H/26H/30H/34H/36H)

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

1

DL

*

RE

*

*

功能:

DL=1:

8-BIT控制接口DL=0:

4-BIT控制接口

RE=1:

扩充指令集动作RE=0:

基本指令集动作

初始化进行的指令操作为:

清显示

功能显示

DL=1:

8位数据接口。

N=0:

显示一行。

F=0:

显示5*10点阵字符字体。

显示开/关控制

D=0:

关显示。

C=0:

不显示光标。

B=0:

光标不闪烁。

输入模式设置

I/D=1:

AC自动增一。

S=0:

显示不移位。

三、理论分析及程序设计

1、系统功能

该系统实现了日期时间年月日十分秒的显示功能,一天24小时的计时方法,用DS12887来进行时间计时,通过AT89C51将所得到的时间显示到LCD当中。

DS12887可以自动进行时间年月日十分秒的计时,将初始时间通过单片机写入DS12887芯片,该芯片读出时间后,进行一次时间延时的调用,然后回到主程序进行自动计时,然后不断得循环得到准确的时间。

2程序流程图

图3-1主程序流程图

图3-2从DS12887读时间

 

图3-3设置DS12887时间流程图

3、主程序清单

定义DS12887的地址

------------------------------------------------------

SECONDEQU7f00H。

秒寄存器

MINUTEEQU7f02H。

分寄存器

HOUREQU7f04H。

时寄存器

DATEEQU7f07H。

日寄存器

MONTHEQU7f08H。

月寄存器

YEAREQU7f09H。

年寄存器

REG_AEQU7f0AH。

寄存器A

REG_BEQU7f0BH。

寄存器B

REG_CEQU7f0CH。

寄存器C

REG_DEQU7f0DH。

寄存器D

-------------------------------------------------------

SECOND_BUFFEREQU51H。

秒缓冲区

MINUTE_BUFFEREQU52H。

分缓冲区

HOUR_BUFFEREQU53H。

时缓冲区

DATE_BUFFEREQU54H。

日缓冲区

MONTH_BUFFEREQU55H。

月缓冲区

YEAR_BUFFEREQU56H。

年缓冲区

-------------------------------------------------------

MIAO1EQU40H

MIAO2EQU41H

FEN1EQU42H

FEN2EQU43H

SHI1EQU44H

SHI2EQU45H

RI1EQU46H

RI2EQU47H

YUE1EQU48H

YUE2EQU49H

NIAN1EQU4AH

NIAN2EQU4BH

-----------------------------------------------------

COUNTEQU4EH

COUNT1EQU4DH

COUNT2EQU4CH

COUNT3EQU4BH

COUNT4EQU4AH

COUNT5EQU49H

RSBITP2.0。

使能端,读操作时,高电平有效。

写操作时,下降沿有效

RWBITP2.1。

读操作为0,写操作为1

EBITP2.2。

寄存器选择输入端

PSBEQUP2.3。

低电平串行,高电平并行

-----------------------------主程序-----------------------------

ORG0000H

START:

----------------------LCD初始化--------------------

MOVSP,#60H

MOVA,#34H。

34H--扩充指令操作001101008位数据总线显示一行显示5*10点阵字符

LCALLENABLE

MOVA,#30H。

30H--基本指令操作00110000

LCALLENABLE

MOVA,#01H。

清除显示00000001

LCALLENABLE

MOVA,#06H。

指定在资料写入或读取时,光标的移动方向00000110AC自动加1显示屏不移动

LCALLENABLE

MOVA,#0CH。

开显示,关光标,不闪烁00001011

LCALLENABLE

SETBPSB;设置并行

CHU:

MOV51H,#50H。

MOV52H,#05H。

MOV53H,#09H。

MOV54H,#24H。

MOV55

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

当前位置:首页 > 幼儿教育 > 育儿理论经验

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

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