ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:323.59KB ,
资源ID:7176535      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7176535.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(hao基于DS1302时钟芯片数字钟报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

hao基于DS1302时钟芯片数字钟报告.docx

1、hao基于DS1302时钟芯片数字钟报告第一章 数字钟设计的意义及任务1.2 设计任务本设计利用AT89C52的特点及DS1302的特点,提出一种基DS1302单片机控制,再利用数码管显示的数字钟。本系统硬件利用AT89S52作为CPU进行总体控制,通过DS1302时钟芯片获取准确详细的时间(年、月、日、周、日、时、分、秒准确时间),对时钟信号进行控制,同时利用液晶显示芯片LCD1602对时间进行准确显示年、月、日、周、日、时、分、秒。该数字钟硬件电路简单,使用灵活,功能稳定,显示准确且无论对于社会或者科研也有一定的研究价值。第二章 系统的硬件设计和方案对比选择 本章重点主要是从系统结构图来阐

2、述了硬件的设计以及从方案上对比选择各个电路部分的元件,目的是使系统达到一个低成本、高质量、稳定可靠的设计。2.1 系统设计结构图根据系统设计的要求和设计思路,确定该系统的系统设计结构图。如图2.1所示。硬件电路主要由MCU微处理控制器单元、DS1302时钟电路、储存器、复位电路、晶振电路、数码管显示模块构成。图2.1 系统结构图设计2.2系统设计方案对比选择根据设计要求,结合实际情况和设计成本要求,对系统主要部分的电路方案叙述如下。2.2.1 MCU微处理控制器的方案对比选择方案一:MCU微处理控制器的种类很多,有ATMEL公司生产的AT89SXX系列单片机,其中有8位的单片机,也有16位的单

3、片机。AT89S52为8位的单片机,它是一种低损耗、高性能的CMOS微处理器,片内有8K字节的存储空间,128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器,寻址范围64K。并且可以在线进行重复编程、快速擦除、快速写入程序,能重复擦除 / 写入1000次左右,数据保存时间为十年。方案二:微处理控制器也有凌阳公司生产的,同样有8位的CPU和16位的CPU。它也有很多特点,比如:体积小 、集成度高、可靠性好、易于扩展;具有较强的中断处理能力;功能强、效率高的指令系统及低功耗、低电压。但是其应用领域主要是为控制处理数据处理以及数字信号处理等领域,其中凌阳的16位单片机就是为适应这

4、种发展而设计的。综上所述,在本设计中,考虑到本人对单片机的运用熟练度和单片机的功能领域,选择ATMEL公司生产的AT89S52单片机作为本设计的微控制器。2.2.2 LCD液晶显示模块的方案对比选择方案一:显示的方法有很多种,其中LED数码管是常用的一种显示方法。在这个设计中,可以用LED数码管来显示相应站台的站号,提醒司机知道是去向或者是回向的第几站,让司机心里有数,同时增加显示数字的可读性。该设计中,显示站号至少要2个LED数码管,显示时间信息要12个,显示星期信息要1个,总共需要15个LED数码管。单价是1.2元,那15个共需要151.2=18(元)。另外在PCB布线过程中很困难,给设计

5、带来很不方便的使用。方案二:LCD1602液晶显示器是一块价廉物美的器件,其体积小,控制简单,使用方便。它能显示2行16列的数字或英文信息,另外连接它的线很少,只要8根数据线和3根控制线,这样给使用带来很大的方便,节约单片机I/O口。市场上一块LCD1602的价格也只在15元左右,比数码管便宜。方案三:功能强大、可以显示中文文字的LCD12864液晶显示器,其价格贵,体积大,控制比LCD1602稍微复杂点,但是使用也是很方便的。在控制使用上,需要8根数据线和3根控制线,其余的PSB、和BLA直接与VCC相连接。但是在本设计中使用它的性价比不高,体积大,占用覆铜板面积大,而且笨拙。综上所述,在L

6、CD液晶显示模块上,选择方案二中的LCD1602液晶显示器作为本设计的显示模块。显示时间年、月、日、周、日、时、分、秒2.2.3 实时时钟电路的方案对比选择方案一:DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路芯片,它可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是有主电源/后背电源双电源引脚,可以同时对后背电源进行涓细电流充电。方案二:DS1288

7、7也是是美国DALLAS半导体公司最新推出的串行接口实时时钟芯片,采用CMOS技术制成,内部具有晶振和时钟芯片备份锂电池。采用DS12887芯片设计的时钟电路无需任何外围电路和器件,并具有良好的微机接口。DS12887芯片具有微功耗、外围接口简单、精度高、工作稳定可靠等优点,可广泛用于各种需要较高精度的实时时钟系统中。但是由于它是串行接口的,外接单片机需要接很多引脚,才能对它达到一个很好的控制。综上所述,结合本设计的实际问题及单片机的I/O口线,选择方案一中的DS1302作为本设计的实时时钟电路的芯片。其控制方便、占单片机I/O口线少、体积小、价格便宜,方便本设计的使用。第三章 系统的硬件设计

8、电路及元件说明本章根据系统设计结构图来对每个部分的电路进行分析和说明,重点讲述微控制器AT89S52、数码管显示模块、实时时钟芯片DS1302。该系统中AT89S52是核心器件,系统的设计原理图如附录二所示。3.1 MCU微控制器电路AT89S52的塑封图如图3.1所示,它为DIP40双列直插塑料封装。AT89S52作为系统的核心控制元件,只有它能正常工作后才能使其它的元件进入正常工作状态。因此,下面对AT89S52进行必要的说明,AT89S52的管脚如图3.2所示。图3.1 AT89C52封装图 图3.2 AT89C52引脚图1)VCC:40脚,供电电压,一般接+5V电压。2)GND:20脚

9、,接工作地。3)P0口:18脚,P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上电阻。但是P0口在程序校验作为输出指令字节时,需要外部加上拉电阻,一般上拉电阻选4.7K10K为宜。本设计中用5.1K的排阻对P0口进行上拉电平。4)P1口:3239脚,P1口是一个内部具有上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。P1端口写入“1”后,被内部上拉电阻把端口拉高,此时可以作为作输入口使用。作为输入使用时,被

10、外部拉低的引脚由于内部电阻的原因,将输出电流。5)P2口:2027脚,P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。6)P3口:1017脚,P3 口是一个具有内部上拉电阻的8 位双向I/O 口,P3 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。7)RESET:9脚,复位输入端。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。8):30脚,当访问外部存储器时,地址锁存允许的输出电平用于锁存地址

11、的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于系统校验。9)PSEN:29脚,外部程序存储器的选通信号。10):31脚,访问外部程序存储器控制信号。当为低电平时,读取外部程序存储器;当端为高电平时,则读取内部程序存储器,设计中一般接高电平。11)XTAL1:19脚,振荡器反相放大器和内部时钟发生电路的输入端。如采用外部时钟源时,XTAL1为输入端。12)XTAL2:18脚,振荡器反相放大器的输出端。如采用外部时钟源时,XTAL2应悬空不接。3.2 LCD液晶显示电路 液晶显

12、示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各种小系统中得到了更广泛的应用。本设计中使用的液晶显示模块是LCD1602。图3.3所示为本设计LCD1602的连接图。 图3.3 LCD1602连接图LCD1602是一种用5x7点阵图形来显示字符的液晶显示器模块,它显示的容量为2行16个字。其实物如图3.4和图3.5所示,它的显示内容丰富、体积小、美观和易于控制都是本设计选择作为显示模块的原因。其引脚结构图如图3.6所示。图3.6 LCD1602引脚结构图关于LCD1602的引脚说明如下:1)第1脚:GND为地电源。2)第2脚:VCC接+5V电源。3)第3脚:VEE为液晶显示器对比

13、度调整端。接+5V电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的精密电位器调整对比度,一般对比电压为0.7V左右。4)第4脚:RS为寄存器选择。高电平时选择数据寄存器,否则选择指令寄存器。5)第5脚:为读写信号线。高电平时进行读操作,低电平时进行写操作。当RS和共同为低电平时可以写入指令或者显示地址,当RS为低电平为高电平时可以读出忙信号,当RS为高电平为低电平时可以写入数据。6)第6脚:E端为使能端。当E端由高电平跳变成低电平时,液晶模块执行命令。7)第714脚:D0D7为8位双向数据线。 8)第15脚:背光灯VCC,一般直接和+5V电源相连接

14、。9)第16脚:背光灯GND。 LCD1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符图有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。LCD1602液晶模块内部的控制器共有11条控制指令,如表3.1所示。指令RSR/WD7D6D5D4D3D2D1D0清显示0000000001光标返回000000001*置输入模式00000001I/DS显示开/关控制0000001DCB光标或字符移位0

15、00001S/CR/L*置功能00001DLNF*置字符发生存贮器地址0001字符发生存贮器地址置数据存贮器地址001显示数据存贮器地址(ADD)读忙标志或地址01BF计数器地址(AC)写数到CGRAMD或DRAM10要写的数从CGRAMD或DRAM读数11读出的数据它的读写操作、屏幕和光标的操作都是通过指令编程来实现的(说明:1为高电平,0为低电平)。指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H 。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 。S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 。指

16、令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示。 C:控制光标的开与关,高电平表示有光标,低电平表示无光标。 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标 。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线。 N:低电平时为单行显示,高电平时双行显示。 F:低电平时显示5X7的点阵字符,高电平时显示5x10的点阵字符 (有些模块是 DL:高电平时为8位总线,低电平时为4位总线)。指令7:字符发生器RAM地址设置 。指令8:DDRAM地址设置 。指令9:读出忙信号和

17、光标地址。 BF为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙,模块就能接收相应的命令或者数据。指令10:写数据 。指令11:读数据 。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志位是不是为低电平,是低电平则表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。表3.2为 LCD1602的内部显示地址。表3.2 LCD1602的内部显示地址3.3 实时时钟电路本设计使用的实时时钟电路芯片是美国DALLAS公司生产的一种高性能、低功耗、带RAM的实时时钟电路芯片DS1302,其引脚如图3.14所示。V

18、CC1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由VCC1或VCC2两者中的较大 者供电;当VCC2大于VCC10.2V时,VCC2给DS1302供电;当VCC2小于VCC1时,DS1302由VCC1供电。X1和X2是振荡源,外接32.768kHz晶振。是复位/片选线,通过把输 入驱动置高电平来启动所有的数据传送。 图3.14 DS1302引脚图输入有两种功能。首先,接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,提供终止单字节或多字节数据的传送手段。当为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置为低电平

19、,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时在Vcc2.5V之前,必须保持低电平。只有在SCLK为低电平时,才能将置为高电平。I/O为串行数据输入输出端(双向),SCLK始终是输入端。本设计入端。本设计连接图如图3.15所示,其中C1和C2起微调晶振的作用。 DS1302接线图 3.4复位电路在AT89S52单片机中的振荡器运行时,引脚上保持到少2个机器周期的高电平输入信号,复位过程即可完成。根据此原理,本设计采用上电复位和按键复位嵌套在系统中,增强了系统的实用性。本设计的具体复位图如下。3.5晶振电路AT89S52在工作时需要外部提供时钟信号,因此,本设计选择在其18脚19脚之间

20、接上12MHz的晶振,为单片机提供1s的机器振荡周期。其电路连接图如图所示。在图中,电容器C3.C4起稳定振荡频率、快速起振的作用,其电容值一般在2050pF第四章 系统的软件设计。5.2利用学习板进行调试三、数字钟软件和硬件设计 3.1 硬件电路设计数字钟的电路主要有电源模块、显示模块、按键模块、复位电路模块、时钟芯片模块、主控芯片STC89C52模块和闹铃模块等7大模块组成。3.1.1电源电源模块采用7805进行稳压,保证+5V电压的稳定输出,进一步提高系统的抗干扰能力和稳定性。3.1.2独立按键模块 系统有三个独立按键,独立按键S1、S2、S3分别接至单片机P3.2、P3.3、P3.4口

21、。S1用来功能选择,其功能可以用按键次数N来表示:N=1:校准计时的小时位 N=2:校准计时的分钟位N=3:校准闹铃的小时位 N=1:校准闹铃的分钟位 N=5:退出 S2主要功能用来进行加一操作。在有功能选择的情况下,无论选中那一种功能操作,按下S2即进行一次加一操作,在没有功能选择的情况下,系统不响应此按键的任何操作。 S3用来控制闹铃的开或者关,在任意时间只要按下此键即可打开(或关闭)闹铃,在按键一次就可以关闭(或打开)闹铃。3.1.6主控模块主控模块的核心组成部分是单片机STC89C52, 承担着所有操作任务的调控与分派工作。3.1.7闹铃模块 闹铃模块由蜂鸣器和蜂鸣器的驱动组成。在有闹

22、铃发生的时候,蜂鸣器的驱动电路驱动蜂鸣器发声,产生闹铃的效果。3.2软件设计3.2.1程序设计流程图1、主程序流图2、读DS1302中断及闹铃检测流程图3、功能选择中断操作的程序流程图4、加一中断操作的程序流程图3.2.2 源程序/* 本程序主要实现的功能:利用时钟芯片DS1302和STC89C52进行高精度计时,能够实现时、分、秒的显示,具有校时,调整闹铃的功能。设计者:* 2011/1/24 */ ORG 0000H SJMP MAIN ;主程序入口地址 ORG 0003H AJMP ANJIAN_FUNCTION ;功能选择操作入口 ORG 000BH AJMP DELAY_10MS ;

23、防抖延时以及闹铃 ORG 0013H AJMP COUNT_UP ;按键加1操作入口 ORG 001BH AJMP DU_1302 ;每300ms读ds1302中断入口MAIN: T_CLK BIT P1.7;实时时钟 T_IO BIT P3.5 ;数据线 T_RST BIT P1.6 ;复位线MOV TMOD,#11H MOV TH1,#15H ;设置扫描ds1302的计数初值 MOV TL1,#0A0H MOV TH0,#0C5H ;设置按键防抖延时 MOV TL0,#68H SEC0 DATA 40H ;定义秒显示的个位 SEC1 DATA 41H ;定义秒显示的十位 LINE0 DAT

24、A 42H ;定义秒-时分隔符 MIN0 DATA 43H ;定义分显示个位 MIN1 DATA 44H ;定义分显示十位 LINE1 DATA 45H ;定义时-分分隔符 HOUR0 DATA 46H ;定义时显示个位 HOUR1 DATA 47H ;定义时显示十位 ;-预读计数位寄存器-SECOND DATA 52H ;秒寄存器,用于暂存当前由DS1302读的的秒的数据MINUTE DATA 53H ;分-用于暂存当前由DS1302读的的分的数据 HOUR DATA 54H ;时-用于暂存当前由DS1302读的的时的数据SMJS DATA 55H ;设置ds1302 扫描定时控制位(扫描计

25、数)FUNC DATA 56H ;定义按键功能选择控制位ZANCUN0 DATA 57H ;定义按键操作时存储校准值的个位ZANCUN1 DATA 58H ;定义按键操作时存储校准值的十位ZANCUN_SECOND DATA 59H ;用于校时和对闹铃时对秒的显示值清零 NLHOUR_0 DATA 60H ;闹铃小时值存储单元 NLMINUTE_0 DATA 61H ;闹铃分值存储单元 ;NLHOUR_1 DATA 62H ;NLMINUTE_1 DATA 63H TEMP DATA 64H ;闹铃发生标志位 NLJS DATA 65H ;闹铃计时标志MOV TEMP,#00H ;闹铃发生标志

26、位初始化为0,表示没有闹铃的发生 MOV NLJS,#00H ;闹铃铃声长短控制单元 MOV NLHOUR_0,#08H ;闹铃符初值 MOV NLMINUTE_0,#30H MOV LINE0,#40H ;显示分和秒的间隔符 MOV LINE1,#40H ;显示小时和分的间隔符 MOV SMJS,#00H MOV SECOND,#00H ;时钟计时初始化值 MOV MINUTE,#25H MOV HOUR,#08H MOV ZANCUN_SECOND,#00H MOV R1,#40H ;-R1 MOV R3,#07H ;确定当前选通的显示位 -R3 SETB EX0 SETB IT0 ;外部

27、中断葿边沿触发 SETB IT1 SETB ET0 SETB ET1 SETB PT0 ;设置定时器T0中断位高优先级 SETB PX1 ;外部中断1中断为高优先级,用来在有功能操作;时来中断功能选择的中断 SETB EA ;开总中断 SETB TR1 ;T1主要进行显示扫描中断 LCALL SET1302 ;DS1302初始化;-数码管显示程序-XIANSHI: ;-检测闹铃是否发生- MOV ZANCUN0,R6 PUSH ZANCUN0 ;R6压栈 MOV R6,TEMP CJNE R6,#01H,XIANSHI_1 ;检测闹零定时是否到时 SETB TR0 ; XIANSHI_1:MO

28、V A,R1 ;读计数位的计数值-R1 CJNE R3,#05H,NEXTWEI ;判断当前为是否需要显示分隔符- MOV P2,R3 MOV P0,LINE0NEXTWEI:CJNE R3,#02H,SEL_0 MOV P2,R3 MOV P0,LINE1 SEL_0:MOV P2,R3 ;送位选信号/*-对计数位的计数值译码输出-开始-*/ CJNE A,#00H,SEL_1 MOV P0,#3FH ;0,如果当前计数位的计数值位0,则将0的共阴极七段数码管编码3FH送出显示 SJMP SEL_10SEL_1: CJNE A,#01H,SEL_2 MOV P0,#06H ;1 SJMP S

29、EL_10SEL_2: CJNE A,#02H,SEL_3 MOV P0,#5BH ;2 SJMP SEL_10SEL_3: CJNE A,#03H,SEL_4 MOV P0,#4FH ;3 SJMP SEL_10SEL_4: CJNE A,#04H,SEL_5 MOV P0,#66H ;4 SJMP SEL_10 SEL_5: CJNE A,#05H,SEL_6 MOV P0,#6DH ;5 SJMP SEL_10SEL_6: CJNE A,#06H,SEL_7 MOV P0,#7DH ;6 SJMP SEL_10 SEL_7:CJNE A,#07H,SEL_8 MOV P0,#07H ;7

30、 SJMP SEL_10 SEL_8:CJNE A,#08H,SEL_9 MOV P0,#7FH ;8 SJMP SEL_10 SEL_9:CJNE A,#09H,SEL_10 MOV P0,#6FH ;9 SJMP SEL_10 /*-对计数位的计数值译码输出-结束-*/ SEL_10: INC R1 ;R1加一,使当前计数位后移一位 DEC R3 ;位扫描控制位减一,因为初始位扫描是从111开始的 ACALL DELAY CJNE R3,#0FFH,SEL_11 MOV R3,#07HSEL_11:CJNE R1,#48H,SEL_12 MOV R1,#40H SEL_12: POP ZANCUN0 MOV R6,ZANCUN0 AJMP XIANSHI ;-

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

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