指针式电子钟.docx

上传人:b****8 文档编号:10820770 上传时间:2023-02-23 格式:DOCX 页数:44 大小:419.73KB
下载 相关 举报
指针式电子钟.docx_第1页
第1页 / 共44页
指针式电子钟.docx_第2页
第2页 / 共44页
指针式电子钟.docx_第3页
第3页 / 共44页
指针式电子钟.docx_第4页
第4页 / 共44页
指针式电子钟.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

指针式电子钟.docx

《指针式电子钟.docx》由会员分享,可在线阅读,更多相关《指针式电子钟.docx(44页珍藏版)》请在冰豆网上搜索。

指针式电子钟.docx

指针式电子钟

指针式电子钟

第一章引言2

1.1设计任务2

1.2设计要求2

3.1AT89C51单片机简介4

3.2时钟模块设计8

3.2.1DS1302特性介绍8

3.2.2DS1302引脚介绍9

3.2.3DS1302有关日历,时间的寄存器10

3.2.4DS1302与单片机接口电路10

3.3显示模块设计11

3.3.1PG12864LCD的特性介绍12

3.3.2LCD12864引脚介绍13

3.3.3LCD12864的原理简图14

3.3.412864内部功能器件及相关功能14

3.3.512864液晶与单片机接口电路18

3.4设置模块20

3.5振荡电路21

3.6复位电路22

第四章系统软件设计23

4.1时钟函数模块24

4.1.1实现功能25

4.1.2函数设计25

4.2指针时钟设计32

4.2.1实现功能32

4.2.3小结35

4.3显示函数模块36

4.3.1实现功能36

4.3.2函数设计36

4.3.3小结39

4.4.2函数设计40

4.4.3小结40

4.5主函数模块41

附录1元器件表43

附录2仿真图44

附录3参考文献45

摘要

单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。

单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。

本设计就是应用单片机强大的控制功能制作而成的指针式电子钟,该指针式电子钟实现如下功能:

液晶屏模拟表盘与时分秒指针显示当前时钟,K1键用于选择调

节对象,K2键用于调整时分秒,在按下K4键时确定调节值,时钟继续运行。

銚銻縵哜鳗鸿锓謎諏涼。

本设计采用的是AT89C51单片机,AT89C51单片机内部带有定时/计数功能,此定时功能是通过对外部晶振的脉冲进行计数,从而达到计时功能,只要使用11.0592的晶振就能实现零误差的计时,因此可以利用此功能实现计时。

芯片采用DALLAS公司的涓细充电时钟芯片DS1302,该芯片通过简单的串行通信与单片机进行通信,时钟/日历电路能够实时提供年、月、日、时分、秒信息,采用双电源供电,当外部电源掉电时能够利用后备电池准确计时。

挤貼綬电麥结鈺贖哓类。

显示器件采用LCD12864液晶,12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128X64全点阵液晶显示器组成。

可完成图形显示,也可以显示8X4个(16X16点阵)汉字。

赔荊紳谘侖驟辽輩袜錈。

通过此次设计能够更加牢固的掌握单片机的应用技术,增强动手能力、硬件设计能力以及软件设计能力。

关键词单片机AT89C51单片机

时钟芯片DS1302LCD12864液晶

第一章引言

本例采用PG12864LCD液晶作为显示元件,液晶屏模拟表盘与时分秒指针显示当前时钟。

该指针式电子钟实现如下功能:

液晶屏模拟表盘与时分秒指针显示当前时钟,K1键用于选择调节对象,K2键用于调整时分秒,在按下K4键时确定调节值,时钟继续运行。

本例程序包含main.c,lcd_12864.c,lcd_12864.h三个文件。

塤礙籟馐决穩賽釙冊庫。

1.1设计任务

利用单片机等实现一个简单的指针式电子钟。

1.2设计要求

a.实现时分秒指针式显示功能

b•用三个按键来实现调整时分秒的功能

第二章总体方案论证与设计

组成框图中包含显示模块,控制器,时间模块,设置模块。

显示模块有LCD12864来控制显示,整个代码实现主要由控制器来实现,时间模块有DS1302来实现,

可以显示系统时间,也可自行调整,设置模块为按键处理。

具体模块分析在相关的软硬件设计中详细介绍。

裊樣祕廬廂颤谚鍘芈蔺。

本系统以AT89C51单片机为控制核心,通过与DS1302信获取实时时间,并将得到的数据通过LCD12864液晶显示出来,同时通过相应的按键调整相应的值。

因此本设计可分为一下模块:

显示模块、实时时间计算模块、设置模块(时间设置模块)。

下面对各个模块逐一进行论证分析。

仓嫗盤紲嘱珑詁鍬齊驚。

第三章系统硬件设置

3.1AT89C51单片机简介

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPERO—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS位微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL勺AT89S51是一种高效微控制器,为很多嵌入式控

制系统提供了一种灵活性高且价廉的方案。

绽萬璉轆娛閬蛏鬮绾瀧。

ATBBC51

VCC供电电压

GND接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

骁顾燁鶚巯瀆蕪領鲡赙。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

瑣钋濺暧惲锟缟馭篩凉。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“T时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“T时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASHS程和校验时接收高八位地址信号和控制信号。

鎦诗涇艳损楼紲鯗

餳類。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

栉缏歐锄棗鈕种鵑瑶锬。

P3口除了作为一般的I/O口外,更重要的用途是他的第二功能,如下所示:

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INTO(外部中断0)

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

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

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

P3口同时为闪烁编程和编程校验接受一些控制信号。

RST复位输入。

当振荡器复位器件时,要保持RSTW两个机器周期的高电平时当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。

初始化后,程序计数器PC指向0000H,P0-P3输出口

全部为高电平,堆栈指钟写入07H,其它专用寄存器被清“0”。

RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。

然而,初始复位不改变RAM

(包括工作寄存器R0-R7)的状态,辔烨棟剛殓攬瑤丽阄应。

特殊功能寄存器

初始态

特殊功能寄存器

初始态

ACC

OOH

B

00H

PSW

OOH

SP

07H

DPH

00H

TH0

00H

DPL

00H

TL0

00H

IP

xxx00000B

TH1

00H

IE

0xx00000B

TL1

00H

TMOD

00H

TCON

00H

SCON

xxxxxxxxB

SBUF

00H

P0-P3

1111111B

PCON

0xxxxxxxB

8051的初始态(表2.1)

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

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不

变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外

部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOV,MOV指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

峴扬爛滾澗辐滠兴渙藺。

PSEN外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将

不出现

EA/VPP:

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

注意加密方式1时,/EA将内部

锁定为RESET当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP。

詩叁撻訥烬忧毀厉鋨骜。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2来自反向振荡器的输出。

振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

则鯤愜韋瘓賈晖园栋泷。

3.2时钟模块设计

实时时间计算模块

方案

(1):

AT89C51单片机内部带有定时/计数功能,此定时功能是通过对外部晶振的脉冲进行计数,从而达到计时功能,只要使用11.0592的晶振就能实现

零误差的计时,因此可以利用此功能实现计时,但因为只有单一的计时功能要实现“万年历”的功能需要较复杂的程序,而且如果单片机掉电无法继续进行计时,所以使用不便。

胀鏝彈奥秘孫戶孪钇賻。

方案

(2):

DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。

实时时钟可提供秒、分、

时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。

工作电压宽达2.5〜5.5V。

采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。

利用单片机强大的控制功能就可实现实时计时的功能,而且消耗的系统资源少,程序简单。

鳃躋峽祷紉诵

帮废掃減。

综合上述两种方案,宜采用方案

(2)实现实时计时功能。

3.2.1DS1302特性介绍

DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。

实时时钟可提供秒、分、时、日、

星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。

工作电压宽达2.5〜5.5V。

采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。

利用单片机强大的控制功能

就可实现实时计时的功能,而且消耗的系统资源少,程序简单。

稟虛嬪赈维哜妝扩踴粜。

DS1302可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿等多种功能DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式;采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而采用时钟芯片DS1302。

陽簍埡鮭罷規呜旧岿錟。

3.2.2DS1302引脚介绍

VqC2C

i5

JVcci

XI匸

2^7

JSCLK

X2匸

3$26

JI/O

GNDQ

4§5

JCE

图3-1

8、Vcc1:

备用电池端;

1、Vcc2:

5V电源。

当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2

沩氣嘮戇苌鑿鑿槠谔應。

7、SCLK:

串行时钟,输入;

6I/O:

数据输入输出口;

5、CE/RST复位脚

23、X1、X2是外接晶振脚(32.768KHZ的晶振)

4、地(GND

323DS1302有关日历,时间的寄存器

表3-1

BIT?

GIT6

BITS

BIT4

BIT3

BIT2

BIT1

BITO

aih

1sF'

CH

10if

OG-5&

|82h

12."-:

0

10

31

W

MM

wfl

fflPM

86h

C

0

101

[

i

0

0

0

1C冃

f-l2

:

0

0

0

G

0

1-7

oDh

801

10$

8刊

fiEh

0

00

0

0

0

0

3.2.4DS1302与单片机接口电路

图3-2

由于DS1302是依靠外部晶振与其内部的电容配合来产生时钟脉冲,因为

DS1302在芯片本身已经集成了6pF电容。

所以,为了获得稳定的可靠的时钟,必须选用具有6pF负载电容的晶振。

当它工作于所要求的负载电容时,所以要选用32768HZ的晶振。

钡嵐縣緱虜荣产涛團蔺。

石英晶振用12M,因为一个机器周期为1/12时钟周期,所以这样用12M的话,一个时钟周期为12us那么定时器计一次数就是1us了,电容范围是在20-40pf之间的都行。

表3-2懨俠劑鈍触乐鹇烬觶騮。

引脚号

DS1302

AT89C51

1

I/O

P1.0

2

SCLK

P1.1

3

RST

P1.2

3.3显示模块设计

液晶显示模块

方案

(1):

数码管是利用发光二极管的特性组合而成数字显示器件,通过控制相应的二极管的状态显示相应的数字。

要使数码管正常显示就得有驱动电路驱动相应的段码,数码管的现实方式可分为静态显示和动态显示,静态显示方式只适合显示单个的数字,因此本设计应采用动态显示方式。

由于动态显示方式利用的是人眼视觉暂留的特性,扫描的时间应不大于20毫秒,占用系统资源大,而且显示的个数和字型有限,在本设计中不易采用。

謾饱兗争詣繚鮐癞别濾。

方案

(2):

12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128X64全点阵液晶显示器组成。

可完成图形显示,也可以显示8X4个(16X16

点阵)汉字。

该类液晶显示模块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种。

关于行列和页的解释:

从上向下共64行,每8行为一

页,共八页,从左到右共128列,左半屏0到63列,右半屏0到63列。

显示时,每页以列为单位显示。

呙铉們欤谦鸪饺竞荡赚。

综合比较上述两种方案,应采用12864液晶组成本设计的显示模块。

3.3.1PG12864LCD的特性介绍

PG12864LC是像素可寻址的图形液晶显示屏模块

芯片特性:

1.工作电压为+5V,可自带驱动LCD所需的负电压。

2.全屏幕点阵,点阵数为128列*64行,可显示8行*4行个(16*16点阵)汉字,也可完成图像,字符的显示。

莹谐龌蕲賞组靄绉嚴减。

3•与CPU接口采用5条位控制总线和8位并行数据总线输入输出。

4.内部有显示数据锁存器,自带EL驱动。

5.简单的操作指令,显示开关设置,显示起始行设置,地址指针设置和数据读/写等指令。

3.3.2LCD12864引脚介绍

表3-3

管脚号

管脚名称

LEVER

管脚功能描述

1

VSS

0

电源地

2

VDD

+5.0V

电源电压

3:

V0

-

液晶显示器驱动电压

4

D/I(RS)

H/L

D/I=“H表示DB"DB0为显示数据

D/I=“L”表示DB"DB0为显示指令数据

5

R/W

H/L

R/W=“H',E=“H数据被读到

DB"DB0R/W“'L”,E=“FHL”数据被写至UIR或DR

6

E

H/L

R/W=“L”,E信号下降沿锁存

DB"DB0R/W“'H,E=“HDDRAM数据读至U

DB"DB0

7t

DB0

H/L「

数据线

8

DB1

H/L

数据线

9

DB2

H/L

数据线

10t

DB3

H/L「

数据线

11

DB4

H/L

数据线

12

DB5

H/L

数据线

13n

DB6

H/L:

数据线

14

DB7

H/L

数据线

15

CS1

H/L

H:

选择芯片(右半屏)信号

16「

CS2

H/L「

H:

选择芯片(左半屏)信号

17

RET

H/L

复位信号,低电平复位

18

VOUT

-10V

LCD驱动负电压

19n

LED+

-

LED背光板电源

20

LED-

-

LED背光板电源

3.3.3

LCD12864的原理简图

图3-3

通过DBO-DB7数据线和AT89C51连接,对应的管脚必须有效。

在显示的时候,要通过列驱动和行驱动来控制液晶屏显示。

在各个驱动时,对应的都有相应的控制器来控制。

麸肃鹏镟轿騍镣缚縟糶。

显示部分分为左右半屏,当CSO为有效电平时,左半屏显示,CS1为有效电平时,右半屏显示。

3.3.412864内部功能器件及相关功能

1.指令寄存器(IR)

IR是用于寄存指令码,与数据寄存器数据相对应。

当D/I=0时,在E信号下

降沿的作用下,指令码写入IR。

納畴鳗吶鄖禎銣腻鰲锬。

2•数据寄存器(DR)

DR是用于寄存数据的,与指令寄存器寄存指令相对应。

当D/I=1时,在下降

沿作用下,图形显示数据写入DR或在E信号高电平作用下由DR读到DB"DB0数据总线。

DR和DDRAM之间的数据传输是模块内部自动执行的。

風撵鲔貓铁频钙蓟纠庙。

3.忙标志:

BF

BF标志提供内部工作情况。

BF=1表示模块在内部操作,此时模块不接受外部指令和数据。

BF=0时,模块为准备状态,随时可接受外部指令和数据。

灭暧骇諗鋅猎輛觏馊藹。

利用STATUSREA指令,可以将BF读到DB7总线,从检验模块之工作状态。

4.显示控制触发器DFF

此触发器是用于模块屏幕显示开和关的控制。

DFF=1为开显示(DISPLAY

OFF,DDRA的内容就显示在屏幕上,DFF=0为关显示(DISPLAYOFF。

铹鸝饷飾镡閌赀诨癱骝。

DDF的状态是指令DISPLAYON/OF和RST1号控制的。

5.XY地址计数器

XY地址计数器是一个9位计数器。

高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRA的地址指针,X地址计数器为DDRAM的页指针,丫地址计数器为DDRA的丫地址指针。

攙閿频嵘陣澇諗谴隴泸。

X地址计数器是没有记数功能的,只能用指令设置。

Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地

址指针从0到63。

6.显示数据RAM(DDRAM

DDRAM!

存储图形显示数据的。

数据为1表示显示选择,数据为0表示显示非选择。

DDRA与地址和显示位置的关系见DDRAI地址表。

趕輾雏纨颗锊讨跃满賺。

7.Z地址计数器

Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。

当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,

RST复位后Z地址计数器为0。

夹覡闾辁駁档驀迁锬減。

Z地址计数器可以用指令DISPLAYSTARTLIN预置。

因此,显示屏幕的起始行就由此指令控制,即DDRA啲数据从哪一行开始显示在屏幕的第一行。

此模块的DDRAI共64行,屏幕可以循环滚动显示64行。

视絀镘鸸鲚鐘脑钧欖粝。

各功能指令分别介绍如下

«显示开/关指令

R/WRSDB7DB6DB5DB4DB3DB2DB1DB0

0000111111/0

当DB0=1时,LCD显示RAM中的内容;DB0=0时,关闭显示。

2、显示起始行(ROW设置指令

R/WRSDB7DB6DB5DB4DB3DB2DB1DB0

0011显示起始行(0〜63)

该指令设置了对应液晶屏最上一行的显示RAM的行号,有规律地改变显示起

始行,可以使LCD实现显示滚屏的效果。

偽澀锟攢鴛擋緬铹鈞錠。

3、页(PAGE设置指令

R/WRSDB7DB6DB5DB4DB3DB2DB1DB0

0010111页号(0〜7)

显示RAh共64行,分8页,每页8行。

4、列地址(YAddress)设置指令

R/WRSDB7DB6DB5DB4DB3DB2DB1DB0

0001显示列地址(0〜63)

设置了页地址和列地址,就唯一确定了显示RAM中的一个单元,这样MPL就

可以

用读、写指令读出该单元中的内容或向该单元写进一个字节数据。

5、读状态指令

R/WRSDB7DB6DB5DB4DB3DB2DB1DB0

该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下:

BUSY1-内部在工作0-正常状态

ON/OFF1-显示关闭0-显示打开

RESET1-复位状态0-正常状态

在BUSY和RESET犬态时,除读状态指令外,其它指令均不对液晶显示模块产生作用。

在对液晶显示模块操作之前要查询BUSY状态,以确定是否可以对液晶显示模块进行操作。

6写数据指令

R/WRSDB7DB6DB5DB4DB3DB2DB1DB0

01写数据

•读数据指令

R/WRSDB7DB6DB5DB4DB3DB2DB1DB0

11读显示数据

读、写数据指令每执行完一次读、写操作,列地址就自动增一。

必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据緦徑铫膾龋轿级镗挢廟。

33512864液晶与单片机接口电路

Pdowa

M.1H1叩202

Pn^D3

PQ.4AD4

PDM5

391

33X

33r

32a

PDj6^D6

PI17AD7

P2DN5

P22*1D

—0CD

图3-4

引脚号

12864引脚

AT89C51引脚

1

数据线DB0-DB7

P0.0-P0.7

2

寄存器选择CD

P2.0

3

写WR

P3.6

4

读RD

P3.7

5

P使能端CE

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

当前位置:首页 > 小学教育 > 其它课程

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

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