hao基于DS1302时钟芯片数字钟报告.docx
- 文档编号:7176535
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:34
- 大小:323.59KB
hao基于DS1302时钟芯片数字钟报告.docx
《hao基于DS1302时钟芯片数字钟报告.docx》由会员分享,可在线阅读,更多相关《hao基于DS1302时钟芯片数字钟报告.docx(34页珍藏版)》请在冰豆网上搜索。
hao基于DS1302时钟芯片数字钟报告
第一章数字钟设计的意义及任务
1.2设计任务
本设计利用AT89C52的特点及DS1302的特点,提出一种基DS1302单片机控制,再利用数码管显示的数字钟。
本系统硬件利用AT89S52作为CPU进行总体控制,通过DS1302时钟芯片获取准确详细的时间(年、月、日、周、日、时、分、秒准确时间),对时钟信号进行控制,同时利用液晶显示芯片LCD1602对时间进行准确显示年、月、日、周、日、时、分、秒。
该数字钟硬件电路简单,使用灵活,功能稳定,显示准确且无论对于社会或者科研也有一定的研究价值。
第二章系统的硬件设计和方案对比选择
本章重点主要是从系统结构图来阐述了硬件的设计以及从方案上对比选择各个电路部分的元件,目的是使系统达到一个低成本、高质量、稳定可靠的设计。
2.1系统设计结构图
根据系统设计的要求和设计思路,确定该系统的系统设计结构图。
如图2.1所示。
硬件电路主要由MCU微处理控制器单元、DS1302时钟电路、储存器、复位电路、晶振电路、数码管显示模块构成。
图2.1系统结构图设计
2.2系统设计方案对比选择
根据设计要求,结合实际情况和设计成本要求,对系统主要部分的电路方案叙述如下。
2.2.1MCU微处理控制器的方案对比选择
方案一:
MCU微处理控制器的种类很多,有ATMEL公司生产的AT89SXX系列单片机,其中有8位的单片机,也有16位的单片机。
AT89S52为8位的单片机,它是一种低损耗、高性能的CMOS微处理器,片内有8K字节的存储空间,128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器,寻址范围64K。
并且可以在线进行重复编程、快速擦除、快速写入程序,能重复擦除/写入1000次左右,数据保存时间为十年。
方案二:
微处理控制器也有凌阳公司生产的,同样有8位的CPU和16位的CPU。
它也有很多特点,比如:
体积小、集成度高、可靠性好、易于扩展;具有较强的中断处理能力;功能强、效率高的指令系统及低功耗、低电压。
但是其应用领域主要是为控制处理数据处理以及数字信号处理等领域,其中凌阳的16位单片机就是为适应这种发展而设计的。
综上所述,在本设计中,考虑到本人对单片机的运用熟练度和单片机的功能领域,选择ATMEL公司生产的AT89S52单片机作为本设计的微控制器。
2.2.2LCD液晶显示模块的方案对比选择
方案一:
显示的方法有很多种,其中LED数码管是常用的一种显示方法。
在这个设计中,可以用LED数码管来显示相应站台的站号,提醒司机知道是去向或者是回向的第几站,让司机心里有数,同时增加显示数字的可读性。
该设计中,显示站号至少要2个LED数码管,显示时间信息要12个,显示星期信息要1个,总共需要15个LED数码管。
单价是1.2元,那15个共需要15×1.2=18(元)。
另外在PCB布线过程中很困难,给设计带来很不方便的使用。
方案二:
LCD1602液晶显示器是一块价廉物美的器件,其体积小,控制简单,使用方便。
它能显示2行16列的数字或英文信息,另外连接它的线很少,只要8根数据线和3根控制线,这样给使用带来很大的方便,节约单片机I/O口。
市场上一块LCD1602的价格也只在15元左右,比数码管便宜。
方案三:
功能强大、可以显示中文文字的LCD12864液晶显示器,其价格贵,体积大,控制比LCD1602稍微复杂点,但是使用也是很方便的。
在控制使用上,需要8根数据线和3根控制线,其余的PSB、
和BLA直接与VCC相连接。
但是在本设计中使用它的性价比不高,体积大,占用覆铜板面积大,而且笨拙。
综上所述,在LCD液晶显示模块上,选择方案二中的LCD1602液晶显示器作为本设计的显示模块。
显示时间年、月、日、周、日、时、分、秒
2.2.3实时时钟电路的方案对比选择
方案一:
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路芯片,它可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是有主电源/后背电源双电源引脚,可以同时对后背电源进行涓细电流充电。
方案二:
DS12887也是是美国DALLAS半导体公司最新推出的串行接口实时时钟芯片,采用CMOS技术制成,内部具有晶振和时钟芯片备份锂电池。
采用DS12887芯片设计的时钟电路无需任何外围电路和器件,并具有良好的微机接口。
DS12887芯片具有微功耗、外围接口简单、精度高、工作稳定可靠等优点,可广泛用于各种需要较高精度的实时时钟系统中。
但是由于它是串行接口的,外接单片机需要接很多引脚,才能对它达到一个很好的控制。
综上所述,结合本设计的实际问题及单片机的I/O口线,选择方案一中的DS1302作为本设计的实时时钟电路的芯片。
其控制方便、占单片机I/O口线少、体积小、价格便宜,方便本设计的使用。
第三章系统的硬件设计电路及元件说明
本章根据系统设计结构图来对每个部分的电路进行分析和说明,重点讲述微控制器AT89S52、数码管显示模块、实时时钟芯片DS1302。
该系统中AT89S52是核心器件,系统的设计原理图如附录二所示。
3.1MCU微控制器电路
AT89S52的塑封图如图3.1所示,它为DIP40双列直插塑料封装。
AT89S52作为系统的核心控制元件,只有它能正常工作后才能使其它的元件进入正常工作状态。
因此,下面对AT89S52进行必要的说明,AT89S52的管脚如图3.2所示。
图3.1AT89C52封装图图3.2AT89C52引脚图
1)VCC:
40脚,供电电压,一般接+5V电压。
2)GND:
20脚,接工作地。
3)P0口:
1~8脚,P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上电阻。
但是P0口在程序校验作为输出指令字节时,需要外部加上拉电阻,一般上拉电阻选4.7K~10K为宜。
本设计中用5.1K的排阻对P0口进行上拉电平。
4)P1口:
32~39脚,P1口是一个内部具有上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。
P1端口写入“1”后,被内部上拉电阻把端口拉高,此时可以作为作输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
5)P2口:
20~27脚,P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
6)P3口:
10~17脚,P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
7)RESET:
9脚,复位输入端。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
8)
:
30脚,当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于系统校验。
9)PSEN:
29脚,外部程序存储器的选通信号。
10)
:
31脚,访问外部程序存储器控制信号。
当
为低电平时,读取外部程序存储器;当
端为高电平时,则读取内部程序存储器,设计中一般接高电平。
11)XTAL1:
19脚,振荡器反相放大器和内部时钟发生电路的输入端。
如采用外部时钟源时,XTAL1为输入端。
12)XTAL2:
18脚,振荡器反相放大器的输出端。
如采用外部时钟源时,XTAL2应悬空不接。
3.2LCD液晶显示电路
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各种小系统中得到了更广泛的应用。
本设计中使用的液晶显示模块是LCD1602。
图3.3所示为本设计LCD1602的连接图。
图3.3LCD1602连接图
LCD1602是一种用5x7点阵图形来显示字符的液晶显示器模块,它显示的容量为2行16个字。
其实物如图3.4和图3.5所示,它的显示内容丰富、体积小、美观和易于控制都是本设计选择作为显示模块的原因。
其引脚结构图如图3.6所示。
图3.6LCD1602引脚结构图
关于LCD1602的引脚说明如下:
1)第1脚:
GND为地电源。
2)第2脚:
VCC接+5V电源。
3)第3脚:
VEE为液晶显示器对比度调整端。
接+5V电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的精密电位器调整对比度,一般对比电压为0.7V左右。
4)第4脚:
RS为寄存器选择。
高电平时选择数据寄存器,否则选择指令寄存器。
5)第5脚:
为读写信号线。
高电平时进行读操作,低电平时进行写操作。
当RS和
共同为低电平时可以写入指令或者显示地址,当RS为低电平
为高电平时可以读出忙信号,当RS为高电平
为低电平时可以写入数据。
6)第6脚:
E端为使能端。
当E端由高电平跳变成低电平时,液晶模块执行命令。
7)第7~14脚:
D0~D7为8位双向数据线。
8)第15脚:
背光灯VCC,一般直接和+5V电源相连接。
9)第16脚:
背光灯GND。
LCD1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符图有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
LCD1602液晶模块内部的控制器共有11条控制指令,如表3.1所示。
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清显示
0
0
0
0
0
0
0
0
0
1
光标返回
0
0
0
0
0
0
0
0
1
*
置输入模式
0
0
0
0
0
0
0
1
I/D
S
显示开/关控制
0
0
0
0
0
0
1
D
C
B
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
置功能
0
0
0
0
1
DL
N
F
*
*
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
置数据存贮器地址
0
0
1
显示数据存贮器地址(ADD)
读忙标志或地址
0
1
BF
计数器地址(AC)
写数到CGRAMD或DRAM
1
0
要写的数
从CGRAMD或DRAM读数
1
1
读出的数据
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的(说明:
1为高电平,0为低电平)。
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移。
S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示。
C:
控制光标的开与关,高电平表示有光标,低电平表示无光标。
B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线。
N:
低电平时为单行显示,高电平时双行显示。
F:
低电平时显示5X7的点阵字符,高电平时显示5x10的点阵字符(有些模块是DL:
高电平时为8位总线,低电平时为4位总线)。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读出忙信号和光标地址。
BF为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙,模块就能接收相应的命令或者数据。
指令10:
写数据。
指令11:
读数据。
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志位是不是为低电平,是低电平则表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。
表3.2为LCD1602的内部显示地址。
表3.2LCD1602的内部显示地址
3.3实时时钟电路
本设计使用的实时时钟电路芯片是美国DALLAS公司生产的一种高性能、低功耗、带RAM的实时时钟电路芯片DS1302,其引脚如图3.14所示。
VCC1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由VCC1或VCC2两者中的较大者供电;当VCC2大于VCC1+0.2V时,VCC2给DS1302供电;当VCC2小于VCC1时,DS1302由VCC1供电。
X1和X2是振荡源,外接32.768kHz晶振。
是复位/片选线,通过把
输入驱动置高电平来启动所有的数据传送。
图3.14DS1302引脚图
输入有两种功能。
首先,
接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,
提供终止单字节或多字节数据的传送手段。
当
为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中
置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时在Vcc≥2.5V之前,
必须保持低电平。
只有在SCLK为低电平时,才能将
置为高电平。
I/O为串行数据输入输出端(双向),SCLK始终是输入端。
本设计入端。
本设计连接图如图3.15所示,其中C1和C2起微调晶振的作用。
DS1302接线图
3.4复位电路
在AT89S52单片机中的振荡器运行时,
引脚上保持到少2个机器周期的高电平输入信号,复位过程即可完成。
根据此原理,本设计采用上电复位和按键复位嵌套在系统中,增强了系统的实用性。
本设计的具体复位图如下。
3.5晶振电路
AT89S52在工作时需要外部提供时钟信号,因此,本设计选择在其18脚19脚之间接上12MHz的晶振,为单片机提供1μs的机器振荡周期。
其电路连接图如图所示。
在图中,电容器C3.C4起稳定振荡频率、快速起振的作用,其电容值一般在20~50pF
第四章系统的软件设计。
5.2利用学习板进行调试
三、数字钟软件和硬件设计
3.1硬件电路设计
数字钟的电路主要有电源模块、显示模块、按键模块、复位电路模块、时钟芯片模块、主控芯片STC89C52模块和闹铃模块等7大模块组成。
3.1.1电源
电源模块采用7805进行稳压,保证+5V电压的稳定输出,进一步提高系统的抗干扰能力和稳定性。
3.1.2独立按键模块
系统有三个独立按键,独立按键S1、S2、S3分别接至单片机P3.2、P3.3、P3.4口。
S1用来功能选择,其功能可以用按键次数N来表示:
N=1:
校准计时的小时位N=2:
校准计时的分钟位
N=3:
校准闹铃的小时位N=1:
校准闹铃的分钟位
N=5:
退出
S2主要功能用来进行加一操作。
在有功能选择的情况下,无论选中那一种功能操作,按下S2即进行一次加一操作,在没有功能选择的情况下,系统不响应此按键的任何操作。
S3用来控制闹铃的开或者关,在任意时间只要按下此键即可打开(或关闭)闹铃,在按键一次就可以关闭(或打开)闹铃。
3.1.6主控模块
主控模块的核心组成部分是单片机STC89C52,承担着所有操作任务的调控与分派工作。
3.1.7闹铃模块
闹铃模块由蜂鸣器和蜂鸣器的驱动组成。
在有闹铃发生的时候,蜂鸣器的驱动电路驱动蜂鸣器发声,产生闹铃的效果。
3.2软件设计
3.2.1程序设计流程图
1、主程序流图
2、读DS1302中断及闹铃检测流程图
3、功能选择中断操作的程序流程图
4、加一中断操作的程序流程图
3.2.2源程序
/*本程序主要实现的功能:
利用时钟芯片DS1302和STC89C52进行高精度计时,能够实现时、分、秒的显示,具有校时,调整闹铃的功能。
设计者:
****2011/1/24*/
ORG0000H
SJMPMAIN;主程序入口地址
ORG0003H
AJMPANJIAN_FUNCTION;功能选择操作入口
ORG000BH
AJMPDELAY_10MS;防抖延时以及闹铃
ORG0013H
AJMPCOUNT_UP;按键加1操作入口
ORG001BH
AJMPDU_1302;每300ms读ds1302中断入口
MAIN:
T_CLKBITP1.7;实时时钟
T_IOBITP3.5;数据线
T_RSTBITP1.6;复位线
MOVTMOD,#11H
MOVTH1,#15H;设置扫描ds1302的计数初值
MOVTL1,#0A0H
MOVTH0,#0C5H;设置按键防抖延时
MOVTL0,#68H
SEC0DATA40H;定义秒显示的个位
SEC1DATA41H;定义秒显示的十位
LINE0DATA42H;定义秒-时分隔符
MIN0DATA43H;定义分显示个位
MIN1DATA44H;定义分显示十位
LINE1DATA45H;定义时-分分隔符
HOUR0DATA46H;定义时显示个位
HOUR1DATA47H;定义时显示十位
;--------预读计数位寄存器-----------
SECONDDATA52H;秒寄存器,用于暂存当前由DS1302读的的秒的数据
MINUTEDATA53H;分-用于暂存当前由DS1302读的的分的数据
HOURDATA54H;时-用于暂存当前由DS1302读的的时的数据
SMJSDATA55H;设置ds1302扫描定时控制位(扫描计数)
FUNCDATA56H;定义按键功能选择控制位
ZANCUN0DATA57H;定义按键操作时存储校准值的个位
ZANCUN1DATA58H;定义按键操作时存储校准值的十位
ZANCUN_SECONDDATA59H;用于校时和对闹铃时对秒的显示值清零
NLHOUR_0DATA60H;闹铃小时值存储单元
NLMINUTE_0DATA61H;闹铃分值存储单元
;NLHOUR_1DATA62H
;NLMINUTE_1DATA63H
TEMPDATA64H;闹铃发生标志位
NLJSDATA65H;闹铃计时标志
MOVTEMP,#00H;闹铃发生标志位初始化为0,表示没有闹铃的发生
MOVNLJS,#00H;闹铃铃声长短控制单元
MOVNLHOUR_0,#08H;闹铃符初值
MOVNLMINUTE_0,#30H
MOVLINE0,#40H;显示分和秒的间隔符
MOVLINE1,#40H;显示小时和分的间隔符
MOVSMJS,#00H
MOVSECOND,#00H;时钟计时初始化值
MOVMINUTE,#25H
MOVHOUR,#08H
MOVZANCUN_SECOND,#00H
MOVR1,#40H;--------------------------------R1
MOVR3,#07H;确定当前选通的显示位------R3
SETBEX0
SETBIT0;外部中断葿边沿触发
SETBIT1
SETBET0
SETBET1
SETBPT0;设置定时器T0中断位高优先级
SETBPX1;外部中断1中断为高优先级,用来在有功能操作
;时来中断功能选择的中断
SETBEA;开总中断
SETBTR1;T1主要进行显示扫描中断
LCALLSET1302;DS1302初始化
;--------------------数码管显示程序------------------
XIANSHI:
;-----检测闹铃是否发生-------------------------
MOVZANCUN0,R6
PUSHZANCUN0;R6压栈
MOVR6,TEMP
CJNER6,#01H,XIANSHI_1;检测闹零定时是否到时
SETBTR0;
XIANSHI_1:
MOVA,@R1;读计数位的计数值----R1
CJNER3,#05H,NEXTWEI;判断当前为是否需要显示分隔符"-"
MOVP2,R3
MOVP0,LINE0
NEXTWEI:
CJNER3,#02H,SEL_0
MOVP2,R3
MOVP0,LINE1
SEL_0:
MOVP2,R3;送位选信号
/*--对计数位的计数值译码输出--开始-*/
CJNEA,#00H,SEL_1
MOVP0,#3FH;0,如果当前计数位的计数值位0,则将0的共阴极七段数码管编码3FH送出显示
SJMPSEL_10
SEL_1:
CJNEA,#01H,SEL_2
MOVP0,#06H;1
SJMPSEL_10
SEL_2:
CJNEA,#02H,SEL_3
MOVP0,#5BH;2
SJMPSEL_10
SEL_3:
CJNEA,#03H,SEL_4
MOVP0,#4FH;3
SJMPSEL_10
SEL_4:
CJNEA,#04H,SEL_5
MOVP0,#66H;4
SJMPSEL_10
SEL_5:
CJNEA,#05H,SEL_6
MOVP0,#6DH;5
SJMPSEL_10
SEL_6:
CJNEA,#06H,SEL_7
MOVP0,#7DH;6
SJMPSEL_10
SEL_7:
CJNEA,#07H,SEL_8
MOVP0,#07H;7
SJMPSEL_10
SEL_8:
CJNEA,#08H,SEL_9
MOVP0,#7FH;8
SJMPSEL_10
SEL_9:
CJNEA,#09H,SEL_10
MOVP0,#6FH;9
SJMPSEL_10
/*--对计数位的计数值译码输出--结束-*/
SEL_10:
INCR1;R1加一,使当前计数位后移一位
DECR3;位扫描控制位减一,因为初始位扫描是从111开始的
ACALLDELAY
CJNER3,#0FFH,SEL_11
MOVR3,#07H
SEL_11:
CJNER1,#48H,SEL_12
MOVR1,#40H
SEL_12:
POPZANCUN0
MOVR6,ZANCUN0
AJMPXIANSHI
;------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hao 基于 DS1302 时钟 芯片 数字 报告