指针式电子钟毕业论文docWord格式文档下载.docx
- 文档编号:22739720
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:37
- 大小:322.64KB
指针式电子钟毕业论文docWord格式文档下载.docx
《指针式电子钟毕业论文docWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《指针式电子钟毕业论文docWord格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。
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口被写“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脚两个机器周期的高电平时当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指钟写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,
特殊功能寄存器
初始态
ACC
00H
B
PSW
SP
07H
DPH
TH0
DPL
TL0
IP
xxx00000B
TH1
IE
0xx00000B
TL1
TMOD
TCON
SCON
xxxxxxxxB
SBUF
P0-P3
1111111B
PCON
0xxxxxxxB
8051的初始态(表2.1)
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-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可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿等多种功能DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式;
采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而采用时钟芯片DS1302。
3.2.2DS1302引脚介绍
图3-1
8、Vcc1:
备用电池端;
1、Vcc2:
5V电源。
当Vcc2>
Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2<
Vcc1时,由Vcc1向DS1302供电。
7、SCLK:
串行时钟,输入;
6、I/O:
数据输入输出口;
5、CE/RST:
复位脚
23、X1、X2是外接晶振脚(32.768KHZ的晶振)
4、地(GND)
3.2.3DS1302有关日历,时间的寄存器
表3-1
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显示模块设计
液晶显示模块
数码管是利用发光二极管的特性组合而成数字显示器件,通过控制相应的二极管的状态显示相应的数字。
要使数码管正常显示就得有驱动电路驱动相应的段码,数码管的现实方式可分为静态显示和动态显示,静态显示方式只适合显示单个的数字,因此本设计应采用动态显示方式。
由于动态显示方式利用的是人眼视觉暂留的特性,扫描的时间应不大于20毫秒,占用系统资源大,而且显示的个数和字型有限,在本设计中不易采用。
12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×
该类液晶显示模块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种。
关于行列和页的解释:
从上向下共64行,每8行为一页,共八页,从左到右共128列,左半屏0到63列,右半屏0到63列。
显示时,每页以列为单位显示。
综合比较上述两种方案,应采用12864液晶组成本设计的显示模块。
3.3.1PG12864LCD的特性介绍
PG12864LCD是像素可寻址的图形液晶显示屏模块
芯片特性:
1.工作电压为+5V,可自带驱动LCD所需的负电压。
2.全屏幕点阵,点阵数为128列*64行,可显示8行*4行个(16*16点阵)汉字,也可完成图像,字符的显示。
3.与CPU接口采用5条位控制总线和8位并行数据总线输入输出。
4.内部有显示数据锁存器,自带EL驱动。
5.简单的操作指令,显示开关设置,显示起始行设置,地址指针设置和数据读/写等指令。
3.3.2LCD12864引脚介绍
表3-3
管脚号
管脚名称
LEVER
管脚功能描述
VSS
电源地
VDD
+5.0V
电源电压
V0
-
液晶显示器驱动电压
4
D/I(RS)
H/L
D/I=“H”表示DB7∽DB0为显示数据D/I=“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
选择芯片(左半屏)信号
17
RET
复位信号,低电平复位
18
VOUT
-10V
LCD驱动负电压
19
LED+
LED背光板电源
20
LED-
3.3.3LCD12864的原理简图
图3-3
通过DB0-DB7数据线和AT89C51连接,对应的管脚必须有效。
在显示的时候,要通过列驱动和行驱动来控制液晶屏显示。
在各个驱动时,对应的都有相应的控制器来控制。
显示部分分为左右半屏,当CS0为有效电平时,左半屏显示,CS1为有效电平时,右半屏显示。
3.3.412864内部功能器件及相关功能
1.指令寄存器(IR)
IR是用于寄存指令码,与数据寄存器数据相对应。
当D/I=0时,在E信号下降沿的作用下,指令码写入IR。
2.数据寄存器(DR)
DR是用于寄存数据的,与指令寄存器寄存指令相对应。
当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。
DR和DDRAM之间的数据传输是模块内部自动执行的。
3.忙标志:
BF
BF标志提供内部工作情况。
BF=1表示模块在内部操作,此时模块不接受外部指令和数据。
BF=0时,模块为准备状态,随时可接受外部指令和数据。
利用STATUSREAD指令,可以将BF读到DB7总线,从检验模块之工作状态。
4.显示控制触发器DFF
此触发器是用于模块屏幕显示开和关的控制。
DFF=1为开显示(DISPLAYOFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAYOFF)。
DDF的状态是指令DISPLAYON/OFF和RST信号控制的。
5.XY地址计数器
XY地址计数器是一个9位计数器。
高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。
X地址计数器是没有记数功能的,只能用指令设置。
Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。
6.显示数据RAM(DDRAM)
DDRAM是存储图形显示数据的。
数据为1表示显示选择,数据为0表示显示非选择。
DDRAM与地址和显示位置的关系见DDRAM地址表。
7.Z地址计数器
Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。
当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。
Z地址计数器可以用指令DISPLAYSTARTLINE预置。
因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。
此模块的DDRAM共64行,屏幕可以循环滚动显示64行。
各功能指令分别介绍如下
∙显示开/关指令
R/WRS
DB7DB6DB5DB4DB3DB2DB1DB0
00
00111111/0
当DB0=1时,LCD显示RAM中的内容;
DB0=0时,关闭显示。
2、显示起始行(ROW)设置指令
11显示起始行(0~63)
该指令设置了对应液晶屏最上一行的显示RAM的行号,有规律地改变显示起始行,可以使LCD实现显示滚屏的效果。
3、页(PAGE)设置指令
10111页号(0~7)
显示RAM共64行,分8页,每页8行。
4、列地址(YAddress)设置指令
01显示列地址(0~63)
设置了页地址和列地址,就唯一确定了显示RAM中的一个单元,这样MPU就可以
用读、写指令读出该单元中的内容或向该单元写进一个字节数据。
5、读状态指令
BUSY0ON/OFFREST0000
该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下:
BUSY:
1-内部在工作0-正常状态
ON/OFF:
1-显示关闭0-显示打开
RESET:
1-复位状态0-正常状态
在BUSY和RESET状态时,除读状态指令外,其它指令均不对液晶显示模块产生作用。
在对液晶显示模块操作之前要查询BUSY状态,以确定是否可以对液晶显示模块进行操作。
6、写数据指令
01
写数据
∙读数据指令
读显示数据
读、写数据指令每执行完一次读、写操作,列地址就自动增一。
必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据
3.3.512864液晶与单片机接口电路
图3-4
表3-4
12864引脚
AT89C51引脚
数据线DB0-DB7
P0.0-P0.7
寄存器选择CD
P2.0
写WR
P3.6
读RD
P3.7
使能端CE
P2.7
复位RST
低电平
排阻的计算公式:
上拉电源/(硬件额定电流—单片机输出电流)
一、最大值的计算原则:
要保证上拉电阻明显小于负载的阻抗,以使高电平时输出有效。
例如:
负载阻抗是10K,供电电压是5V,如果要求高电平不小于4.5V,那么,上拉电阻最大值R大5-4.5)=10:
5
R大=1K
也就是最大值1k,(如果超过了1k,输出的高电平就小于4.5V了)
二、最小值的计算原则:
保证不超过管子的额定电流(如果不是场效应管而是三极管也可依照饱和电流来计算)
例:
管子的额定电流150mA,放大倍数100,基极限流电阻10k,工作在5v的系统中。
那么,算法如下:
Ib=U/R=(5-0.7)/10=0.47(mA)
Ic=100*0.47=47mA小于额定的150,所以可以按饱和法来算最小值。
上拉电阻最小值
R小=5v/47mA=106欧姆(如果小于这个电阻,管子就会过饱和而没有意义了。
如果大于这个值,管子的导体电阻就会变大一些,所以太高也不利于低电平的输出)
3.4设置模块
设置模块采用三个按键与P3.2经过与门连接
按键与单片机的接口电路
图3-5
按键问题:
通过与门来控制,程序是中断驱动的,其中K1为选择按键,K2为调整按键,K3是确定按钮,实现时分秒的调整。
相应的引脚接到P3.0,P3.1.P3.3上,共同控制电子时钟的调整。
选用轻触按钮型号为XDJT1102S(轻触开关贴系列)。
3.5振荡电路
本设计51芯片选用内部振荡器方式。
由于本设计的时间由内部定时器中断与软件计数相结合产生的,所以从计算方便以及系统的效率上考虑,本设计选用12MHz频率的晶振,电路原理图如下:
图3-6AT89C51的振荡电路
经厂家推荐稳定电路的电容C1,C2=30pF+-10p(附录资料AT89C51.PDF第4-32页)。
3.6复位电路
本设计使用上电复位电路。
单片机晶振为12MHz,起振时间将近1ms,单片机2个机器周期的时间为2us。
单片机每次上电复位所需的最短延时应该不小于treset。
这里,treset等于上电延时与起振延时之和。
从实际上讲,延迟一个treset往往还不够,不能够保障单片机有一个良好的工作开端。
复位电路把单片机锁定在复位状态上并且维持一个延时(记作TRST),以便给予电源电压从上升到稳定的一个等待时间;
在电源电压稳定之后,再插入一个延时,给予时钟振荡器从起振到稳定的一个等待时间;
在单片机开始进入运行状态之前,还要至少推迟2个机器周期的延时间。
单片机是高电平的时候复位,一般是用电阻和电容组成的,电容充电的时RST复位端为高电平,此时单片机开始复位..电容充电完成,此时单片机复位完成。
由此电容值可取22uf,电阻值取10KΩ。
详细见附录文件(电容充电时间的计算方法.pdf)
图3-7AT89C51上电复位电路
第四章系统软件设计
软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运行情况的良好。
因本程序涉及的模块较多,所以程序编写也采用模块化设计,C语言具有编写灵活、移植方便、便于模块化设计的特点,所以本系统的软件采用C51编写。
程序框图如下:
4-1
4.1时钟函数模块
具体实现含有向DS1302串行写入一字节即Write_A_Byte_T0_DS1302,从DS1302读取一字节即Get_A_Byte_FROM_DS1302,从DS1302指定位置读数据Read_Data,向DS1302某地址写入数据Write_DS1302,设置时间SET_DS1302,从DS1302获取时间(读取当前时间)GetTime,利用这些函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指针 电子钟 毕业论文 doc