收藏 分销(赏)

基于AT89S51单片机的扩展时钟系统设计说明.doc

上传人:二*** 文档编号:4486066 上传时间:2024-09-24 格式:DOC 页数:22 大小:2.70MB
下载 相关 举报
基于AT89S51单片机的扩展时钟系统设计说明.doc_第1页
第1页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、 . . . 基于AT89S51单片机的扩展时钟系统设计 摘 要:随着人类科技文明的发展,人们对于时钟的要求在不断地提高,时钟已不仅仅被看成一种来显示时间的工具。在很多实际应用中它还需要能够实现更多其他的功能。时钟的数字化、多功能化已经成为现代时钟生产研究的主导设计方向。本文正式基于这种方向,以AT89S51单片机为核心,结合新型时钟芯片DS12887,并利用液晶LCD1602显示数字时钟。 关键字:AT89S51单片机;时钟芯片DS12887;液晶LCD1602Abstract:With the development of the technological society,require

2、ments for clock is constantly improving,the clock has not only been seen as a time to show tools.It also needs to be able to achieve more in many practical applications.Digital clock, multi-functional modern clock production has become the dominant design direction.In this paper, formally based on t

3、his direction,AT89S51 microcontroller as the core,Combined with the new clock chip DS12887,And LCD1602 LCD display digital clock。Key words:AT89S51 microcontroller;Time clock DS12887;LCD16021 引言数字时钟已经成为人们日常生活中必不可少的必需品,广泛应用于个人家庭以与办公室公共场所,给人们的生活、学习、工作、娱乐带来了极方便。由于数字集成电路技术的发展和采用了新进的石英技术,是数字钟具有走时准确、性能稳定、携

4、带方便等优点。它还用于计时、自动报时等各个领域。尽管目前市场上已有现成的数字集成电路芯片出售,价格便宜,使用也方便,但鉴于单片机的定时器功能也可以完成数字中电路的设计,因此进行数字钟的设计是必要的。在这里我将以学过的比较零散的电路知识有机的、系统的结合起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。文中详细论述了以89S51单片机位核心,应用新型时钟芯片DS12887的数字时钟设计原理以与使用的各种芯片的介绍,阐明了本实例所使用的设计方案、详细的电路图以与程序代码。2 总体设计 本次设计的题目是单片机控制时钟芯片DS12887的时分秒定时系统设计,可以正常的显示年、月、日

5、、时、分、秒。程序第一次运行后,初始化时间显示为00:00:00,即6位数码管显示为00.00.00。通过键盘MON设定小时为00,通过键盘LAST设定分钟为34,通过键盘NEXT设定秒为52,为00:34:52.两分钟后即在00.52时关掉电源,等待2分钟后再打开电源,这时时间应为00.36.52,本设计总体大致分为两部分:硬件部分、软件部分。硬件部分包括:89S51单片机、DS12887时钟芯片、1602LCD液晶显示器。主要由89S51单片机、实时时钟芯片电路、液晶显示输出电路、键盘输入电路组成等几大部分组成。软件部分包括了主程序模块,DS12C887模块,LCD1602模块,按键控制模

6、块。本设计是以89S51单片机为核心,结合新型实时时钟芯片DS12887,并利用液晶LCD1602显示的数字时钟。在液晶上显示、时、分、秒等信息。因为DS12887本身的特点,本设计还具有掉电后继续计时的功能。另外,它的计时周期为24小时,采用24小时制的计时方式,显示满刻度为23时59分59秒,这也是DS12887的计时围。本设计的数字时钟,可以通过按键来设置时间,也可以通过按键来设置闹钟的时间,不过与设置正常时间相比,仅限于设置时、分、秒。每按一次按键,蜂鸣器就会发出很短的滴声,当达到设定的时间时,数字时钟会也发出声音,来提醒使用者时间到了。以上是本设计的大致功能和简介。总设计如图1所示

7、图1 接线图3 系统硬件组成3.1 芯片的选择 经多种单片机性能的分析与现有实验设备的限制,在本设计中单片机芯片采用了AT89S51单片机芯片。AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机片含4K bytes的可系统编程的Flash只读程序储存器。器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准80C51指令系统与引脚。它集Flash程序存储器既可在线编程也可用传统方法进行编程既通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可提供许多高性价比的应用场合, 可灵活应用于各种控制领域。3.2 AT89S51单片机的硬件

8、组成AT89S51是一个低功耗,高性能CMOS8位单片机,片含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统与89S51引脚结构,芯片集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。如图2所示(1)8位微处理器(CPU);(2)数据存储器(128B RAM);(3)程序存储器(4KB Flash ROM);(4)4个8位可编程并行I/O口;(5)1个全双工的异步串行口;(6)2个

9、可编程的16位定时器/计数器;(7)1个看门狗定时器;(8)中断系统具有5个中断源、5个中断向量;(9)特殊功能寄存器(SFR)26个。图2 AT89S51引脚图 AT89S51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89S51是一种带K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将

10、多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,AT89S1是它的一种精简版本。AT89S51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.3 电源与时钟引脚3.3.1 电源引脚(1)VCC(40脚):+5V电源。(2)VSS(20脚):数字地。3.3.2 时钟引脚 (1)XTAL1(19脚):片振荡器反相放大器和时钟发生器电路输入端。用片振荡器时,该脚接外部石英晶体和微调电容。外接时钟源时,该脚接外部时钟振荡器的信号。(2) XTAL2(18脚):片振荡器反相放大器的输出端。当使用片振荡器,该脚连接外部石英晶体和微调电容。当使用外部

11、时钟源时,本脚悬空。3.3.3并行I/O口(1)P0口:8位,漏极开路的双向I/O口当外扩存储器与I/O接口芯片时,P0口作为低8位地址总线与数据总线的分时复用端口。P0口也可用作通用的I/O口,需加上拉电阻,这时为准双向口。作为通用I/O输入,应先向端口写入1。可驱动8个LS型TTL负载。(2)P1口:8位,准双向I/O口,具有部上拉电阻。准双向I/O口,作为通用I/O输入时,应先向端口锁存器写1。P1口可驱动4个LS型TTL负载。P1.5/MOSI、P1.6/MISO和P1.7/SCK可用于对片Flash存储器串行编程和校验,它们分别是串行数据输入、输出和移位脉冲引脚。(3)P2口:8位,

12、准双向I/O口,具有部上拉电阻。当AT89S51扩展外部存储器与I/O口时,P2口作为高8位地址总线用,输出高8位地址。P2口也可作为普通的I/O口使用。当作为通用I/O输入时,应先向端口输出锁存器写1。P2口可驱动4个LS型TTL负载。(4) P3口:8位,准双向I/O口,具有部上拉电阻。可作为通用的I/O口使用。作为通用I/O输入,应先向端口输出锁存器写入1。可驱动4个LS型TTL负载。P3口还可提供第二功能。第二功能定义见图3-3,应熟记。综上所述,P0口可作为总线口,为双向口。作为通用的I/O口使用时,为准双向口,这时需加上拉电阻。P1口、P2口、P3口均为准双向口。P3口如图3,图3

13、 P3口引脚图3.4 时钟芯片DS12887DS12887是美国DALLAS半导体公司最新推出的8位串行接口并自带RAM的实时日历时钟芯片,部有14个时钟控制寄存器,包括10个时标寄存器,4个状态寄存器和114 bit作掉电保护用的低功耗RAM。CPU通过读DS12887的部时标寄存器得到当前的时间和日历,也可通过选择二进制或BCD码初始化芯片的10个时标寄存器,其4个状态寄存器用来控制和指出DS12887的当前工作状态,114 bit非易失性静态RAM可在掉电时保存一些重要数据。 DS12887功能强大,应用广泛。DS12887引脚分布图和存储器分布图:图4 引脚分布图和存储器分布通过对寄存

14、器A、B、C、D的编程可以控制 DS12887的工作方式:寄存器A 当 UIP 位为0时指示更新在244S不会发生;当DV2DV1DV0其为010时,打开晶振,并允许时钟开始计时;RS3 RS2 RS1 RS0用于选择周期中断或输出方波的频率,当其分别为0111、1000、1001、1011、1100、1101、当其分别为0111、1000、1001、1011、1100、1101、1110、1111时,对应频率为512Hz、256Hz、128Hz、64Hz、32Hz、16Hz、8Hz、4Hz、2Hz。 SET位为0时,每秒计数一次,置1后,更新转换被禁止;当PIE、AIE、UIE位为1时,分别

15、允许周期中断、报警中断和时钟数据更新结束中断,为0时,禁止中断产生;SQWE位为1时,按以寄存器A中由RS3 RS2 RS1 RS0选定的频率从SQW引脚输出方波,为0时,SQW为低电平;当DM为1时选用二进制数据格式,反之为BCD数据格式;12/24位为1时,指定24小时时间格式,否则为12小时时间格式;DSE为1时允许夏时制发生。 寄存器 C的容是周期中断标志位PF、报警中断标志位AF、更新结束中断标志位UF和中断请求标志位IRQF,它们之间的关系为IRQF=PF*PIE+AF*AIE+UF*UIE,只要IRQF为1,/IRQ引脚输出就保持低电平,读寄存器C将清除所有标志器 C的容是周期中

16、断标志位PF、报警中断标志位AF、更新结束中断标志位UF和中断请求标志位IRQF,它们之间的关系为IRQF=PF*PIE+AF*AIE+UF*UIE,只要IRQF为1,/IRQ引脚输出就保持低电平,读寄存器C将清除所有标志。 寄存器 D中仅D7有定义,读时应若寄存器 D中仅D7有定义,读时应总为1,若为0则说明部锂电池已耗尽。 为防止锂电池在芯片装入系统前被耗尽,DS12887在出厂时先关掉了其部的晶振,编程时必须首先给寄存器A的DV2DV1DV0位写入010以打开晶振,然后,读寄存器D以检查部锂电池是否有效;接着根据需要对寄存器A、B进行设置。当需要修改日历时钟时,必须先使SET位置1,当需

17、要读日历时钟数据时,必须先查询寄存器A中的UIP位,只有当其为0时,才能进行读取数据。 CPU通过读DS12887的部时标寄存器得到当前的时间和日历,也可通过选择二进制码或BCD码初始化芯片的10个时标寄存器。其114bit非易失性静态RAM可供用户使用,对于没有RAM的单片机应用系统,可在主机掉电时来保存一些重要的数据。DS12887的4个状态寄存器用来控制和指出DS12887模块的当前工作状态,除数据更新周期外,程序可随时读写这4个寄存器。3.5 液晶LCD16021602液晶显示模块,是点阵字符型液晶显示模块,可以用来显示字母,符号,数字以与简单的汉字和图案等信息。“1602”的含义是这

18、类液晶显示模块每行能够显示16个字符,一共可以显示两行。该液晶显示模块,分为带背光和不带背光两类,两者在应用过程中功能基本类似,只是带背光的模块更厚一些,通常的背光颜色以黄绿色和蓝色为主。4 软件系统设计4.1 程序流程图在这个设计中,89S51主要功能是存储程序、根据程序的容对各个端口进行判断并做出相应的处理;DS12887主要的功能是控制时、分、秒的显示LCD1602主要的功能是将所要显示的显示出来。主程序主要实现了从DS12887各时间单元中读出数据并送到LCD1602中显示的功能,同时检测有没有按键按下,如果有键被按下,则执行按键处理子程序。首先进行DS12887时钟芯片和LCD160

19、2的初始化函数,然后进行按键扫描,不断地检测按键是否按下,读取DS12887时钟芯片的数据,并且送到液晶显示器显示;当数据发生变化时候,重新进行扫描写入。流程图如图5所示,图5 程序流程图5 调试结果(如图6-1和6-2)图6-1 程序第一次运行后,初始化时间显示为00:00:00,即6位数码管显示为00.00.00。通过键盘MON设定小时为00,通过键盘LAST设定分钟为34,通过键盘NEXT设定秒为52,为00:36:52两分钟后即在00.52时关掉电源,等待2分钟后再打开电源,这时时间应为00.36.52,图6-26 小结通过这次课程设计,我对单片机的应用有了更深的认识。同时,也初步掌握

20、了通过芯片资料所给出的各种信息,应用该芯片的能力。我在设计过程中,学会了总线的应用以与标号规则。这是一个很大收获,可以在以后的应用中简化电路,在以后的实际工作和学习中带来很大的便利。通过这次设计,我对LCD1602有了进一步的了解和认识,对它的应用更加熟练。虽然在这次设计中没有用到该功能。在这次设计中我要感我的指导老师牟琳,是在牟琳老师的帮助下我才能顺利的完成该设计。对此我表示深深的诚挚的意和崇高的敬意。 参考文献:1 何立民.单片机应用技术选编M. :航空航天大学,1993.2 毅刚. 单片机原理与应用M. :高等教育,2004.3 郭天祥.新概念51单片机C语言教程M:入门、提高、开发、拓

21、展全攻略.电子工业,2009.4 莫树.培夏.基于DS12887的时钟设计M.科技创新导报,2011.5 佳玲.基于单片机的多功能数字时钟系统设计M.工程技术师学院学报,2009. 6 大有.单片机应用与设计M.电子工业大学,1998年.7 钟睿.MCS-51 单片机原理与应用开发技术M.:中国铁道,2006.8王幸之.AT89系列单片机原理与接口技术M.:航空航天大学,2004.附件 程序代码;按“NEXT”键,调整秒位;按“LAST”键,调整分位;按MON键,调整时位;OUTBIT equ 0e101h ; 位控制口 CLK164 equ 0e102h ; 段控制口(接164时钟位)DAT

22、164 equ 0e102h ; 段控制口(接164数据位)IN equ 0e103h ; 键盘读入口LEDBuf equ 60h ; 显示缓冲 ljmp StartLEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h db 00HDelay: ; 延时子程序 mov r7, #00DelayLoop: djnz r7, DelayLoop djnz r6, Delay retDisplayLED: mov r0, #LEDBuf mov r1,

23、#6 ; 共6个八段管 mov r2, #00000001b ; 从左边开始显示Loop: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 关所有八段管 mov a, r0 mov B, #8 ; 送164DLP: rlc a mov r3, a mov acc.0, c mov dptr, #DAT164 anl a,#0fdh movx dptr, a mov dptr, #CLK164 orl a,#02h movx dptr, a anl a,#0fdh movx dptr, a mov a, r3 djnz B, DLP mov dptr, #O

24、UTBIT mov a, r2 movx dptr, a ; 显示一位八段管 mov r6, #1 call Delay mov a, r2 ; 显示下一位 rl a mov r2, a inc r0 djnz r1, Loop retTestKey: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 输出线置为0 mov dptr, #IN movx a, dptr ; 读入键状态 cpl a anl a, #0fh ; 高四位不用 retKeyTable: ; 数字键码定义 db 00h, 01h, 04h, 07h db 0fh, 02h, 05h,

25、08h db 0eh, 03h, 06h, 09h db 0dh, 0ch, 0bh, 0ah db 10H,11H,12H,13H,14H db 15H,16H,10H,10H,10HGetKey: mov dptr, #OUTBIT mov P2, dph mov r0, #Low(IN) mov r1, #00100000b mov r2, #6KLoop: mov a, r1 ; 找出键所在列 cpl a movx dptr, a cpl a rr a mov r1, a ; 下一列 movx a, r0 cpl a anl a, #0fh jnz Goon1 ; 该列有键入 djnz

26、 r2, KLoop mov r2, #0ffh ; 没有键按下, 返回 0ffh sjmp ExitGoon1: mov r1, a ; 键值 = 列 X 4 + 行 mov a, r2 dec a rl a rl a mov r2, a ; r2 = (r2-1)*4 mov a, r1 ; r1中为读入的行值 mov r1, #4LoopC: rrc a ; 移位找出所在行 jc Exit inc r2 ; r2 = r2+ 行值 djnz r1, LoopCExit: mov a, r2 ; 取出键码 mov dptr, #KeyTable movc a, a+dptr mov r2,

27、 aWaitRelease: mov dptr, #OUTBIT ; 等键释放 clr a movx dptr, a mov r6, #10 call Delay call TestKey jnz WaitRelease mov a, r2 retStart: mov r6,#02h call delay mov 20h,#00h mov 21h,#00h mov 22h,#00h mov sp, #40h mov dptr,#0e100h mov a,#03h movx dptr,aStart1:mov dptr,#0fe0ah movx a,dptr anl a,#70h cjne a,#

28、20h,start2 ;判断晶振打开否? sjmp start3start2: mov dptr,#0fe0bh ;设置SET=0,芯片正常工作.24/12=1,选24小时制. mov a,#82h movx dptr,a mov r0,#06h mov dptr,#0fe00h ;时分秒清零 mov a,#00hretun0:movx dptr,a inc dptr djnz r0,retun0 mov dptr,#0fe0ah mov a,#27h movx dptr,a ;打开晶振,输出方波。 inc dptr mov a,#5ah movx dptr,astart3: mov dptr

29、,#0fe0ah movx a,dptr jnb acc.7,loop12 mov r5,#4dh djnz r5,$loop12:mov dptr,#0fe0bh mov a,#5ah movx dptr,aloop13:mov dptr,#0fe00h ;读秒,分,时 mov r1,#60h mov r0,#03hloop11:movx a,dptr lcall Ptreg ;读取的值,进行拆字后送显示缓冲器60H-65H inc dptr inc dptr djnz r0,loop11 mov dptr,#0fe0bh call DisplayLED ; 调用显示子程序 call Tes

30、tKey ; 有键入? jz loop12 ; 无键入, 继续显示 call GetKey ; 有键入,读入键码 cjne a,#14h,keep0 sjmp keep1 ;是NEXT键,调整秒位keep0: cjne a,#15h,keep2 sjmp keep3 ;是LAST键,调整分位keep2: cjne a,#16h,start1 sjmp keep5 ;是MON键,调整时位keep1: mov dptr,#0fe0bh mov a,#0dah movx dptr,a mov a,20h lcall Hbcd cjne a,#60h,loop20 ;秒位不能超过60秒 mov 20h

31、,#00h sjmp loop13loop20:mov dptr,#0fe00h movx dptr,a inc 20h sjmp loop13keep3: mov dptr,#0fe0bh mov a,#0dah movx dptr,a mov a,21h lcall Hbcd cjne a,#60h,loop21 ;分位不能超过60分 mov 21h,#00h sjmp loop13loop21:mov dptr,#0fe02h movx dptr,a inc 21h sjmp loop13keep5: mov dptr,#0fe0bh mov a,#0dah movx dptr,a mo

32、v a,22h lcall Hbcd cjne a,#24h,loop22 ;时位不能超过24小时 mov 22h,#00h sjmp loop13loop22:mov dptr,#0fe04h movx dptr,a inc 22h sjmp loop13Ptreg: push dph ;拆字子程序 push dpl push acc push b mov b,a anl a,#0fh mov dptr,#LEDMAP movc a,a+dptr orl a,#80h mov r1,a inc r1 mov a,b swap a anl a,#0fh mov dptr,#LEDMAP movc a,a+dptr mov r1,a inc r1 pop b pop acc pop dpl pop dph retHbcd: mov b,#100;单字节十六进制整数转换成单字节BCD码子程序 div ab mov r3,a mov a,b mov b,#10 div ab swap a orl a,b ret END22 / 22

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服