指针式模拟时钟综述.docx

上传人:b****8 文档编号:8993477 上传时间:2023-05-16 格式:DOCX 页数:38 大小:253.12KB
下载 相关 举报
指针式模拟时钟综述.docx_第1页
第1页 / 共38页
指针式模拟时钟综述.docx_第2页
第2页 / 共38页
指针式模拟时钟综述.docx_第3页
第3页 / 共38页
指针式模拟时钟综述.docx_第4页
第4页 / 共38页
指针式模拟时钟综述.docx_第5页
第5页 / 共38页
指针式模拟时钟综述.docx_第6页
第6页 / 共38页
指针式模拟时钟综述.docx_第7页
第7页 / 共38页
指针式模拟时钟综述.docx_第8页
第8页 / 共38页
指针式模拟时钟综述.docx_第9页
第9页 / 共38页
指针式模拟时钟综述.docx_第10页
第10页 / 共38页
指针式模拟时钟综述.docx_第11页
第11页 / 共38页
指针式模拟时钟综述.docx_第12页
第12页 / 共38页
指针式模拟时钟综述.docx_第13页
第13页 / 共38页
指针式模拟时钟综述.docx_第14页
第14页 / 共38页
指针式模拟时钟综述.docx_第15页
第15页 / 共38页
指针式模拟时钟综述.docx_第16页
第16页 / 共38页
指针式模拟时钟综述.docx_第17页
第17页 / 共38页
指针式模拟时钟综述.docx_第18页
第18页 / 共38页
指针式模拟时钟综述.docx_第19页
第19页 / 共38页
指针式模拟时钟综述.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

指针式模拟时钟综述.docx

《指针式模拟时钟综述.docx》由会员分享,可在线阅读,更多相关《指针式模拟时钟综述.docx(38页珍藏版)》请在冰点文库上搜索。

指针式模拟时钟综述.docx

指针式模拟时钟综述

毕业设计

 

题目用PG12864LCD设计的指针式电子钟

学生姓名王康康学号1110064047

所在院(系)物理与电信工程学院

专业班级电子信息科学与技术1102

指导教师杨创华

完成地点实验楼1104教室

2015年5月

目录

引言1

1设计任务及方案论证1

1.1设计任务与要求1

1.2总体方案论证与设计1

2系统硬件设置1

2.1STC89C51单片机简介1

2.2显示模块设计3

2.2.1PG12864LCD的特性介绍4

2.2.2LCD12864引脚介绍4

2.2.312864内部功能器件及相关功能5

2.2.412864液晶与单片机接口电路6

2.3设置模块8

2.4振荡电路9

2.5复位电路9

3系统软件设计9

3.1总体软件设计9

3.2时钟函数模块10

3.3指针时钟设计11

3.3.1实现功能11

3.3.2实现算法11

3.3.3函数设计13

3.4显示函数模块15

3.4.1实现功能17

3.4.2函数设计17

3.5.1功能18

3.5.2函数18

3.6主函数模块19

4.设计结果20

5.使用方法20

6.设计进度20

7.教学单位可以提供的条件20

致谢21

参考文献21

 

用PG12864LCD设计的指针式电子钟

王康康

(陕西理工学院物理与电信工程学院电子信息科学与技术专业电信1102班,陕西汉中723000)

指导教师:

杨创华

[摘要]本设计采用的是STC89C51单片机,通过单片机内部定时器定时实现时钟定时计数功能,并以模拟时钟的形式显示在LCD_12864上。

同时可通过三个按键可实现时间的调节。

[关键词]时钟AT89C51单片机LCD12864液晶

 

ByusingtheanalogelectronicclockdesignPG12864LCD

Wangkangkang

(Grade11,Class2,MajorElectronicInformationScienceandTechnology,PhysicsDept.,ShaanxiUniversityofTechnology,Hanzhong723000,Shaanxi)

Tutor:

Yangchuanghua

Abstract:

ThisdesignusesSTC89C51microcontroller,throughtheMCUinternaltimerfromtimetotimetoachievetheclocktimingandcountingfunctionandintheformofanalogclockdisplayontheLCD12864.Atthesametimecanbeadjustedbythethreekeystorealizethetime.

Keywords:

AT89C51microcontrollerLCD12864LCDclock

 

引言

如今二十一电子钟、机械式手表等钟表已经普遍存在于市场,并且钟表已经成为人们生活中不可缺少的一部分。

在生活中到处都能看到其身影。

当穿行于马路上时总会看到几乎每个人手腕上戴着一块手表。

当大人家里做客时总能看到大厅里面挂着个钟表。

当打开手机时屏幕上依旧是钟表的画面。

时间伴随着我们钟表也成为我们生活中必不可少的一大部分。

当今市场有好多电子钟,但大多数是纯数字式的,指针式的电子钟比较新颖,而且具有真实表盘式时钟的效果。

用PG12864LCD设计的模拟电子钟采用PG12864LCD液晶屏,用来模拟表盘与时分秒指针指示当前时钟,此模拟指针式电子钟实现的功能为:

在PG12864显示屏上显示圆形表盘与时分秒三个指针表示当前时刻;三个按键,K1键用来选择工作模式;K2键用来选择调整时分秒;K3键用来调节大小。

1设计任务及方案论证

1.1设计任务与要求

利用单片机等器件做一个简易的模拟指针式时钟,硬件设计以单片机为主,主要包括显示模块、复位模块、时钟模块。

采用PG12864液晶屏作为显示单元,液晶屏上显示圆形表盘、时、分、秒指针,并且设置按钮可以调节时间,软件设计主要是通过单片机编程软件KeilC51设计,模拟仿真是利用仿真软件Proteus对所设计的硬件电路和程序进行调试。

1.2总体方案论证与设计

在设计中要包含显示模块,控制器,设置模块;

方案一:

利用基于MFC的Windows应用程序在屏幕上显示一个指针式时钟,并可通过菜单选项对时间调节,设计的时钟画面清晰,显示准确,但缺点是时间必须与系统机器时间一样,不可以随意设置时间,另外此方案涉及微软基础类库,对于不熟悉的我们难度较大。

方案二:

因此我们采用另一套方案,显示模块用LCD12864模块,可以显示系统时间;整个代码实现主要由51单片机来实现;设置模块为按键处理可自行调节时间,整体流程以AT89C51单片机为控制核心,将得到的数据通过LCD12864模块显示出来,同时通过相应的按键调整相应的值,此方案具有设计简单,成本低廉,可执行度高等优点,因此采用本方案。

2系统硬件设置

2.1STC89C51单片机简介

在设计中可用STC89C5代替AT89C51,此芯片具有速度

更高,功能更全,寿命更长,价格更低等优点;我们采用双

列直插40引脚的STC89C51,它可以实现ISP在线编程功能,

然而AT89C51则不可以,将AT89C51的程序通过软件直接下载

到STC89C51中后,就可以代替AT单片机直接工作,基本上

都不需要做修改就可以正常工作了,STC公司推出的51系列

单片机芯片是兼容其它51单片机的,而51单片机作为单片机

界的应用最广泛芯片,几乎每一个高等院校、普通学校、网

站、业余单片机培训都是用51单片机作为基础而学习的,正

是因为如此可以利用的参考资料和例子也是最多的,而且由

于STC89C51自带有EEPROM,其在程序中更是可以直接修改,

断电之后也不会丢失数据。

STC89C51单片机管脚图如图2.1所示:

STC89C51单片机的引脚介绍:

-VCC:

供电电压

-GND:

接地   

-P0口:

P0口是一个8位双向I/O口,当每个引脚第一次被写1时,定义其为高阻态输入,此外P0能够用来作为外部程序数据存储器,为此它可以被定义为数据/地址的第八位,在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此外P0作为数据口时,需外接上拉电阻。

-P1口:

P1口缓冲器能接收输出4TTL门电流,当P1口管脚写入1后,由于P1口是一个内部提供上拉电阻的8位双向I/O口,所以被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,正是由于内部上拉的缘故,在FLASH编程和校验时,P1口可以作为第八位地址接收;

-P2口:

P2口也是一个内部具有上拉电阻的8位双向I/O口,P2口缓冲器同样可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入,并因此在作为输入时,P2口的管脚被外部拉低,将输出电流,正是由于内部上拉的缘故,P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位,在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容,P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

    

-P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流,当P3口写入“1”后,它们被内部上拉为高电平,并用作输入,作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

此外P3口除了作为一般的I/O口外,更重要的用途是它还有复用功能,如下所示:

P3.0RXD第二功能可作为串行输入口;

P3.1TXD第二功能可作为串行输出口;

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

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

P3.6/WR第二功能可作为外部数据寄存器写选通;

P3.7/RD第二功能可作为外部数据寄存器读选通;

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

RST:

复位输入,当振荡器复位时,要保持RST脚两个机器周期的高电平,当STC89C51通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位;初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,指针堆栈写入07H,其它专用的寄存器被写“0”,RESET由高转低时,单片机内部即从0000H地址开始执行,但是,初始复位不改变RAM(包括工作寄存器R0-R7)的状态。

特殊功能寄存器

初始态

特殊功能寄存器

初始态

ACC

00H

B

00H

PSW

00H

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

AALE/PROG:

地址锁存允许的输出电平用于锁存地址的地位字节,当访问外部存储器时,在FLASH编程期间,此引脚用于输入编程脉冲;而在平常,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,因此它可用作对外部输出的脉冲或用于定时目的,然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲,如想禁止ALE的输出可在SFR8EH地址上置0,此时ALE只有在执行MOVX,MOVC指令时ALE才起作用;另外,该引脚被略微拉高,如果微处理器在外部执行状态ALE禁止,置位无效[1];

-PSEN:

外部程序存储器的选通信号,在由外部程序存储器取指期间,每个机器周期两次/PSEN有效,但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现;

-EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器,注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器,在FLASH编程期间,此引脚也用于施加12V编程电源(VPP);    

-XTAL1:

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

-XTAL2:

来自反向振荡器的输出;

振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器,石晶振荡和陶瓷振荡均可采用,如采用外部时钟源驱动器件,XTAL2应不接,有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度[1]。

2.2显示模块设计

本设计显示模块采用不带字库PGLCD12864。

2.2.1PG12864LCD的特性介绍

PG12864LCD是像素可寻址的图形液晶显示屏模块,PG12864LCD特性如下:

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

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

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

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

简单的操作指令;

数据口可以采用串行传输与并行传输

2.2.2LCD12864引脚介绍

表2.2LCD12864引脚

管脚号

管脚名称

管脚功能描述

1

VSS

接地

2

VDD

接电压

3

V0

液晶显示器驱动电压

4

RS

RS=“H”表示DB7-DB0为显示数据;RS=“L”表示DB7-DB0为显示指令数据

5

R/W

R/W=“H”,E=“H”数据被读到DB7-DB0R/W=“L”,E=“H→L”数据被写到IR或DR

6

E

R/W=“L”,E信号下降沿锁存DB7∽DB0R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0

7

DB0

数据线

8

DB1

数据线

9

DB2

数据线

10

DB3

数据线

11

DB4

数据线

12

DB5

数据线

13

DB6

数据线

14

DB7

数据线

15

CS1

H:

选择芯片(右半屏)信号

16

CS2

H:

选择芯片(左半屏)信号

17

RET

复位低电平有效

18

VOUT

驱动负电压

19

LED+

背光电源

20

LED-

背光接地

通过DB0-DB7数据线和AT89C51IO口连接,对应的管脚必须有效,在显示的时候,要通过列驱动和行驱动来控制液晶屏显示,在驱动时,对应的都有相应的控制器来控制[3],由于其显示分为左半屏和右半屏,当CS0为1时,左半屏开显示;CS1为1时,右半屏开显示,12864管脚功能如表2-2所示。

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

指令寄存器(IR)

指令寄存器是用于寄存指令码,与数据寄存器数据相对应;当D/I=0时,在E信号下降沿的作用下,指令码写入指令寄存器。

数据寄存器(DR)

数据寄存器是用于寄存数据的,与指令寄存器寄存指令相对应,当D/I=1时,在下降沿作用下,图形显示数据写入数据寄存器,或在E信号高电平作用下由数据寄存器读到DB0-DB7数据总线,DR和DDRAM之间的数据传输是12864模块内部自动执行的[4]。

忙标志(BF)

BF标志提供内部工作情况,BF=1表示模块内部操作在忙状态,此时模块不接受外部指令和数据;BF=0时,模块为准备状态,随时可接受外部指令和数据,利用STATUSREAD指令,可以将BF读到DB7总线,从而检验模块工作状态。

显示控制触发器DFF

 此触发器是用于模块屏幕显示开和关状态的控制,DFF=1为开显示(DISPLAYOFF),DDRAM的内容就显示在屏幕上;DFF=0为关显示(DISPLAYOFF),关闭屏幕,DDF的状态是由指令DISPLAYON/OFF和RST信号控制的。

XY地址计数器

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

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

Y地址计数器具有循环记数功能,当数据写进去时,Y的地址数据就会自动加1,Y地址指针可以表示从0-63;

显示数据RAM(DDRAM)

DDRAM是存储图形显示数据的。

数据为1表示显示选择,数据为0表示显示非选择,DDRAM与地址和显示位置的关系见DDRAM地址表。

Z地址计数器

Z地址计数器可以循环记数,共有六位,它是用于显示行扫描,当完成一行扫描,这个计数器的内容就会自动加1,并指向下一行数据扫描,当复位后Z地址计数器自动清0;Z地址计数器可以用DISPLAYSTARTLINE指令预置,所以,就由这条指令控制屏幕显示的起始行,因为DDRAM共64行,因此可以循环滚动显示64行[5]。

各功能指令介绍如下

█显示开/关指令

R/WRS

DB7DB6DB5DB4DB3DB2DB1DB0

00

00111111/0

DB0为1时,LCD开显示;DB0为0,关闭显示。

█显示起始行(ROW)设置指令

R/WRS

DB7DB6DB5DB4DB3DB2DB1DB0

00

11显示起始行(0~63)

该指令设置了屏幕最上一行显示RAM的行号,要想实现滚屏显示的效果,可以改变显示起始行

█设置指令

R/WRS

DB7DB6DB5DB4DB3DB2DB1DB0

00

10111页号(0~7)

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

R/WRS

DB7DB6DB5DB4DB3DB2DB1DB0

00

01显示列地址(0~63)

显示RAM的64行可按8行为一页将其分为8页;设置了页地址和列地址,就唯一确定了显示RAM中的一个单元,这样CPU就可以用读、写指令读出该单元中的内容或向该单元写进一个字节的数据。

█读状态指令

R/WRS

DB7DB6DB5DB4DB3DB2DB1DB0

10

BUSY0ON/OFFREST0000

该指令用来查询12864内部控制器的状态,各参量含义如下:

BUSY:

1-内部在工作,也就是忙状态;0-正常状态

ON/OFF:

1-显示关闭;0-显示打开

RESET:

1-复位状态;0-正常状态

在BUSY和RESET状态时,除读状态指令外,其它指令均对12864模块内部无效[5],除此之外在操作之前要查询BUSY状态,以确定是否可以对12864模块进行操作。

█写数据指令

R/WRS

DB7DB6DB5DB4DB3DB2DB1DB0

01

写显示数据

█读数据指令

R/WRS

DB7DB6DB5DB4DB3DB2DB1DB0

11

读显示数据

 要提醒的是,每次进行读数据之前,都要有一次空读操作,紧接着才会读出想要读的单元中的数据,而且每当完成一次读、写数据指令,内部的列地址就会自动加1,

2.2.412864液晶与单片机接口电路

在实际编程时,12864与单片机的连接有并行和串行两种方式可以选择,串行模式占用引脚较少(2个),速度较慢;并行模式占用引脚较多(11个),但传输速度较快,因为一次传8位,速度自然就快,因此我们采用并行传输。

12864的数据口DB0-DB7分别接单片机的P1.0-P1.7用来传输数据;控制口RS、RW、EN分别接P3.2、P3.1、P3.0。

顺便在此和大家分享一下调试中遇到的各种问题及如何应对:

一:

硬件问题

1:

这种情况是新手最常碰到的问题,碰到这种情况首先要确定你的接线没有任何问题,如果是51单片机,用P0口一定要加10K的上拉电阻,不然程序正常了也显示不出来。

2:

另外要注意第三脚VO的连接方式,这个是对比度电位引脚,实际中常采用10k的可变电阻滑动端连接VO脚,固定端的一段接VCC,另外一端应根据实际硬件连接。

如果用的是1602,另一端直接接到GND就可以了,但是对于12864就应该看18脚的标记了,如果写的是NC,那么另一端直接接地,如果是VEE,那么就应该接到18脚,因为这时的18脚是负压输出端。

根据这点确定你的对比对调节电路接法正确无误。

3:

关于串并行选择的问题。

串并行选择对于有字库的12864适用(1602的四线驱动也可以叫做串行驱动),如果有PSB引脚,那么你的屏应该可以支持串并行了。

串并行的选择决定于PSB引脚的电位,一般是低电平为串行模式,高电平为并行模式。

有些同志在使用的时候对PSB进行了电位定义但是没有任何显示,这是你应该注意一下LCM板上焊点,尤其是和PSB引脚相连的那些起跳线作用的焊点。

因为大多厂家在出厂的时候就预先设置为并行模式,也就是接到高电位上(VCC)。

碰到这种情况把焊点跳线重新焊接一下,接到低电位上就可以了。

模式选择错误不显示是小问题,由于屏电路的不同,可能你在驱动的时候损坏屏或者单片机,因为选择不对,定义的电位相当于短路。

二:

软件问题

软件问题一般也就是定义的引脚不对,这种情况出现于真正的初学者,在copy别人的程序或者屏本身的模板程序没有修改引脚的定义,这种情况比较简单,只需要把引脚对应的端口重新定义一下就可以了。

三:

显示不清楚

A:

屏上的VO引脚(3脚)电位不对如果你按照上面的说法接了对比度电路,这时你只需要调节电位器的旋钮就可以了,最终可以得到你满意的对比度,使显示最清晰。

一般这个脚的电压是-6.2V左右,这个电压的显示效果是最好的。

B:

电源问题

很多同学在现成的实验板上做试验,电源取自电脑USB口,这种情况容易出现显示不清楚的情况,原因是供电电流不够,因为电脑的USB口为500mA供电。

碰到此类情况,用外接电源,肯定可以解决。

所谓的网上的那些个底层驱动程序,个人觉得没有必要,所谓知其然知其所以然,就是这个道理。

图2-312864接口电路

引脚号

12864引脚

STC89C51引脚

7-14

DB0-DB7

P1.0-P1.7

5

WR

P3.1

4

RS

P3.2

6

CE

P3.0

17

RST

表2.312864引脚分配

 

2.3设置模块

设置模块采用三个按键与单片机与GND连接

按键与单片机的接口电路如图2-4所示。

 

按键一端与GND连接,另一端与单片机GPIO口连接(相应的引脚接到P3.0,P3.1.P3.3上),当I/O为低电平则按键按下;其中K1:

模式选择键(正常计时与调节时间模式)K2:

时分秒选择按键K3:

调节时/分/秒大小。

按键选用触动开关。

2.4振荡电路

振荡电路选为内部振荡方式。

由于所要设计的时间由内部自带的定时器中断和软件计数相结合产生的,故从计算方便以及系统的效率角度出发,设计选用12兆频率的晶振,其电路如图2-5所示。

 

2.5复位电路

单片机采用高电平(I/O口为1时)复位。

单片机选用12兆频率晶振,起振为一毫秒,所以两个机器周期的用时为两微秒。

单片机单次上电复位所需的最短延时应该大于上电延时与单片机起振延时两者之和。

延迟一个时间还太小,不能够促使单片机有一个较好的工作开始[7]。

复位电路使单片机保持在复位状态并且维持一个延时,这样可以给电源电压从上升到稳定的一个等待时间;在电压稳定,再进行一个延时状态,给时钟振荡器由起振到稳定的一个延时;在单片机开始进入运行状态之前,至少推迟2个机器周期的延时间。

当单片机RET端为高电平的时单片机复位,主要是复位电路由电阻、电容晶振组成;电容充电的时RST端为高电平,此时单片机开始复位;当该电容电充满,此时单片机完成复位。

 

3系统软件设计

3.1总体软件设计

软件设计是较难部分,利用keil软件编写程序,并生

成Hex文件,下载到单片机。

由于本程序涉及的模块较

多,所以编写程序采用模块化设计,C语言具有编写灵

活性好、移植方便、便于模块化设计的优点,所以采用

C语言给单片机编写程序。

框图如图3-1所示。

其中K1:

模式选择键(正常计时与调节时间模式)

K2:

用于时/分/秒选择按键K3:

用于调节时/分/

秒大小按键i:

用于统计K1键按下的次数

3.2时钟函数模块

时钟定时由单片机内部定时器中

断来完成。

中断50ms来一次,

20次为一秒。

因此20次中断

秒加一同时秒针转过一格。

理秒满60分加一同时分针转

一格。

当分满60时加一同时

时针走一下[6]。

时钟部分如图3-2所示。

 

3.3指针时钟设计

3.3.1实现功能

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

当前位置:首页 > 自然科学 > 物理

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

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