版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、重庆师范大学毕业论文设计基于AT89S51单片机的扩展时钟系统的设计摘要:随着人类科技发明的发展,时钟已经成为人们日常生活中必不可少的必需品,广泛应用于个人家庭以及办公室场所,给人们的生活学习、工作、娱乐带来了极大的方便。在很多实际应用中它还需要能够实现其他的功能。而且时钟的数字化和多功能话也是现在时钟发展的主体方向。本次论文正式基于AT89S51单片机为核心,结合新型时钟芯片DS12887,并用键盘设置时间用液晶LCD1602显示数字时钟。关键词 :AT89S51单片机; 时钟芯片DS12887; 液晶LCD1602Abstradt : With the development of sci
2、ence and technology invention, the clock has become essential to daily life necessities, widely used in personal and home office spaces, to people's lives to learn, work, play has brought great convenience. In many practical applications, it needs to be able to achieve other functions. And digit
3、al clock and function, then the clock is now the main development direction. The formal paper based AT89S51 microcontroller core, combined with the new clock chip DS12887, and set the time using the keyboard display digital clock with LCD LCD1602.Key words : AT89S51 MCU; clock chip DS12887; LCD LCD1
4、6021 引言数字时钟已经成为人们日常生活中必不可少的必需品,广泛应用于个人家庭以及办公室场所,给人们的各个方面带来了极大的便利。由于数字集成电路技术的发展采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点。它还用于计时、自动报时等各个领域。而且单片机具有以下的特点:小巧灵活、成本低、易于产品化。它能方便地组装成各种智能式控制设备以及各种智能仪表。面向控制,能针对性地解决从简单到复杂的各类控制任务,从而获得最佳性价比。抗干扰能力强,适用温度范围宽,在各种恶劣条件下都能可靠地工作,这是其他机型所无法比拟的。因此给单片机系统增加一个时钟是非常有必要的,也是非常有意义的。在这里我将
5、以学过的比较零散的电路知识有机的、系统的结合起来用于实际。通过这次设计更深入的掌握AT89S51单片机扩展时钟电路的设计方法、了解DS12887的工作原理,同时来培养我的综合分析和设计电路、写程序、调试电路的能力。在本文中详细论述了以AT89S51单片机为核心,应用新型时钟芯片DS12887的数字时钟原理等等,介绍了本次采用的设计方案、实验电路图和程序代码并进行调试。2 总体设计本次设计是基于AT89S51单片机为主体,结合时钟芯片DS12887和设计相关的程序模块,使本次设计的单片机时分秒定时系统可以正常的显示年、月、日、时、分、秒。程序第一次运行后,初始化时间显示为00:00:00,即6位
6、数码管显示为00:00:00。通过键盘MON设定小时为07,通过键盘LAST设置分钟为04,通过键盘NEXT设置秒为18.两分钟后即在07:06:18时关掉电源,等待2分钟再打开电源,这时时间应为07:08:18,即停电后DS12887中的时钟不会停止运行。本次设计大体分为两部分:硬件和软件部分,硬件部分主要是:89S51单片机、DS12887时钟芯片、键盘输入电路、LCD1602液晶显示器、时钟芯片电路和液晶显示输出电路等构成;软件部分包含主程序模块、DS12887模块、LCD602模块、按键控制模块等等。在本次设计中运用实验法和观察法和查阅法,查阅资料、做多次试验、分别统计一段时间后和停电
7、后的显示时间,验证本次设计的定时效果。由于DS12887本身的特点,本次设计还具有掉电后计时的功能。此外,它的定时周期为24小时,采用24小时刻度来计时,显示满刻度为23:59:59,这也是DS12887的计时范围。最终达到单片机扩展时钟能准确计时。本次设计的数字时钟,可以通过键盘按键来设置时间,也可以设置闹钟,唯一不足的地方就是:同正常设定时间相比,本设计只能设定时、分、秒。以上就是本次设计的大致功能和介绍。总设计图如图1所示。图1 接线方案3 系统硬件组成3.1 芯片的选择经多种单片机的性能和现有的设备的限制,在本次设计中单片机芯片采用的是AT89S51单片机芯片。AT89S51单片机是美
8、国ATMEL生产的低功耗、高性能的CMOS8位单片机,里面含有4K的可系统编程的Flash只读程序存储器。器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准80C51指令系统及引脚。它集Flash程序存储器不但可在线编程,还可以用传统方法进行编程。而且ATMEL公司的单片机功能强大,低价位的AT89S51可以提供高性价比的运用,可灵活应用于各个方面。3.2 AT89S51单片机的硬件构成AT89S51是一个低功耗、高性能MOS8位单片机。片内含有4KB FLASH片内程序存储器(ROM),128 Byte的随机存储数据存储器(RAM),兼容标准MCS-51指令系统和89S51引脚结
9、构等等,AT89S51单片机在众多嵌入式控制系统中得到了广泛运用。如图2所示。图2 AT89S51引脚图3.3 电源及时钟引脚3.3.1 电源引脚(1) VCC(Pin 40):+5V电源(2) VSS(Pin 20):接地3.3.2 外接晶振引脚(1) XTAL1(Pin 19):时钟XTAL1脚,片内振荡器反相放大器和内部时钟发生器的输入端。用片内振荡器时,该脚接外部石英晶体和微调电容。外接时钟源时,该脚接外部时钟震荡器的信号。(2) XTAL2(Pin 18):时钟XTAL2脚,片内振荡器反相放大器的输出端。当使用片内振荡器时,该脚接外部石英晶体和微调电容。外接时钟源时,该脚需要悬空。3
10、.3.3 控制信号引脚(1) RST(Pin 9):复位信号输入端。当该引脚上出现连续两个机器周期以上的高电平时,将使单片机复位。(2) ALE/PROG(Pin 30):地址锁存允许信号/Flash编程脉冲输入端。(3) /PSEN(Pin 29):片外ROM读选通信号,在AT89S由外部程序存储器读取指令或执行读程序存储器数据的指令时,每个机器周期输出两个PSEN脉冲(负脉冲),即两次有效。(4) /EA(Vpp):Pin 31,外部ROM访问控制信号。在进行Flash编程时,在该引脚加上+12V的编程电压Vpp.3.3.4 并行I/O口(1) P0口(Pin 3932):8位,是地址/数
11、据复用口,漏极开路的双向I/O口。当单片机访问外部数据存储器或程序存储器时,P0口作为数据总线和地址总线低8位分时复用端口;对端口写“1”时,P0口作为通用的I/O输入口,每位可驱动8个TTL逻辑门电路。(2)P1口(Pin 18):8位,准双向I/O口,具有内部上拉电阻。作为通用的I/O口输入口时,应向端口写“1”。P1口可驱动4个TTL逻辑门电路。ISP编程时,P1.5P1.7作为编程口使用:P1.5/MOSI、P1.6/MISO、P1.7/SCK。(3)P2口(Pin 2128):8位,准双向I/O口,具有内部上拉电阻。当AT89S51扩展外部存储器及I/O口时,P2口作为高8位地址的输
12、出口。P2口作为通用的I/O口时,先向端口输入“1”, 可驱动4个TTL逻辑门电路(4)P3口(Pin 1017): 8位,准双向I/O口,具有内部上拉电阻,可作为通用的I/O使用。作为通用型I/O时,应先向端口写“1”,可驱动4个TTL逻辑门电路。此外P3口还有第二功能。P0口可作为总线口,双向口,作为通用的I/O使用,为准双向口,这时需要加上拉电阻。P1、P2、P3口均为准双向口。P口如下表所示。3.4 时钟芯片DS12887DS12887是美国达接斯半导体公司(Dallas)最新推出的串行接口实时时钟芯片,采用CMOS技术制成,具有内部晶振和时钟芯片备份锂电池,同时它与目前IBM AT计
13、算机常用的时钟芯片MC146818B和DS1287管脚兼容,可直接替换。采用DS12887芯片设计的时钟电路无需任何外围电路和器件,并具有良好的微机接口。DS12887芯片具有微功耗,外围接口简单,精度高,工作稳定可靠等优点,可广泛用于各种需要较高精度的实时时钟系统中。DS12887主要功能简介(1)内含一个锂电池,断电后运行十年以上不丢失数据。(2)计秒,分,时,天,星期,日,月,年,并有闰年补尝功能。(3)二进制数码或BCD码表示时间,日历和定闹。(4)12小时或24小时制,12小时时钟模式带有PM和AM指示,有夏令时功能。(5)Motorola和Intel总线时序选择。(6)有128个字
14、节RAM单元与软件接口,其中14个字节作为时钟和控制寄存器,114字节为通用RAM,所有RAM单元数据都具有掉电保护功能。(7)可编程方波信号输出。(8)中断信号输出(IRQ)和总线兼容,定闹中断,周期性中断、时钟更新周期结束中断可分别由软件屏蔽,也可分别进行测试。DS2887引脚和存储器分布图如图3所示:图3引脚和存储器分布图通过对存储器A、B、C、D的编程可以控制DS12887的工作方式。存储器A: D7 D6 D5 D4 D3 D2 D1 D0当UIP位当其为0时指示更新在244us内不会发生;DV2 DV1 DV0当其为010时,打开晶振,并允许时钟开始计时;RS3 RS2 RS1 R
15、S0用于选择周期中断或输出方波频率,当其分别为0111、1000、1001、1011、1101、1110、1111时,对应频率为512Hz、256Hz、128HZ、64Hz、32Hz、16Hz、8Hz、4Hz、2Hz。寄存器B:SET位为0时,每秒计数一次,置1后,更换转换被禁止;PIE、ALE、UIE位当它们为1时,分别允许周期中断、报警中断和时钟数据更新结束中断,为0时,禁止中断产生;SQWE位当其为1时,按以寄存器A中由RS3 RS2 RS1 RS0设定的频率从SQW引脚输出方波,当其为0时,SQW为低电平;当DM为1时选用二进制数据格式,反之为BCD数据格式;12/24位为1时,指定2
16、4小时时间格式,否则为12小时时间格式;DSE为1时允许夏时制发生。寄存器C: D7 D6 D5 D4 D3 D2 D1 D0寄存器C的内容是周期中断标志为PF、报警中断标志位AF、更新结束中断标志位UF和中断请求标志位IRQF,它们之间的关系为IRQF=PF*PIE+AF*ALE+UF*UIE,只要IRQF=1,/IRQ引脚输出就保持低电平,读寄存器C将清除所有标志。寄存器D: D7 D6 D5 D4 D3 D2 D1 D0寄存器D中仅有D7有定义,读时应总为1,若为0则说明内部锂电池已耗尽。为防止锂电池在芯片装入系统前被耗尽,DS12887在出厂时先关掉了其内部的晶振,编程时必须首先给寄存
17、器A的DV2 DV1 DV0位写入010以打开晶振,然后读寄存器D以检查内部锂电池是否有效;接着根据需要对寄存器A、B进行设置。当需要修改日历时钟时,需要先使SET位置1,当需要日历时钟数据时,必须先查询寄存器A中的UIP位,只有当其为0时,才能进行读取数据。4 软件系统设计4.1 程序流程图在这个设计中,89S51主要是用来存储程序,根据程序的内容对各个端口进行判断并做出相应的处理;DS12887的功能是用来控制时、分、秒的显示,LCD1602的功能是将时间(时、分、秒)显示出来。主程序实现了从DS12887各时间单元中读出数据并输送到LCD1602显示出来的功能,同时检测有无键按下,若有键
18、按下,则执行按键处理子程序。首先进行DS12887的时钟芯片和LCD1602的初始化函数,然后进行按键扫描,不断的检测按键是否被按下,读取DS12887时钟芯片的数据,并且送到LCD1602进行显示;当数据发生变化时,复位,重新进行扫描输入数据。流程图如图4所示。图4程序框图5 调试结果按照设计要求,连好相关的电路,在程序第一次运行后,数码管初始化时间显示为00:00:00,即6位数码管显示为00:00:00。如图5所示:图5初始化显示通过键盘MON设定小时为07,通过键盘LAST设置分钟为06,通过键盘NEXT设置秒为18.两分钟后即在07:06:18时关掉电源。等待2分钟再打开电源,这时时
19、间应为07:08:18,即停电后DS12887中的时钟不会停止运行。如图6所示:图6掉电后2分钟6 总结通过这次论文题目的设计,使我对于单片机有了更加深入的了解,特别是单片机的构成、应用、自己本身特定的性质和结合其他元器件的产品。除此之外,我学会了如何通过芯片的资料信息来正确的使用芯片。这次设计也让我真正的了解了实验箱的各个模块,了解总线和地址的应用和标号规则。同时通过本次设计,我也对LCD1602有了更多的认识。在本次设计中要感谢我的指导老师牟玲和我的朋友,是在他们的帮助下我才得以顺利的完成本次设计。参考文献:1陈骏莲、倪云峰.单片机原理与应用基础M.清华大学出版社。20092李全利.单片机
20、原理及接口技术M.高等教育出版社.20093佟云峰.时钟芯片DS12887在单片机系统中的应用J.20014周向红、范伟.DS12887实时时钟芯片及应用研究J.20065郭成林.AT89系列单片机与PC机的串行通信接口设计J.20086李大有.单片机应用与设计M.电子工业大学出版社.1998附录:实验程序;按“NEXT”键,调整秒位;按“LAST”键,调整分位;按"MON"键,调整时位;OUTBIT equ 0e101h ; 位控制口CLK164 equ 0e102h ; 段控制口(接164时钟位)DAT164 equ 0e102h ; 段控制口(接164数据位)IN e
21、qu 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, #6 ; 共6个八段管 mov r2, #00000001b ; 从
22、左边开始显示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, #OUTBIT mov a, r2 movx dptr, a ; 显示一
23、位八段管 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, 08h db 0eh, 03h, 06h, 09h db 0dh,
24、0ch, 0bh, 0ah db 10H,11H,12H,13H,14H db 15H,16H,10H,10H,10HGetKey: MOV 13H,#06H MOV 12H,#20HKey2: MOV A,12H CPL A MOV R7,A MOV DPTR,#0E101H MOV A,R7 MOVX DPTR,A MOV A,12H CLR C RRC A MOV 12H,A MOV DPTR,#0E103H MOVX A,DPTR MOV R7,A MOV A,R7 CPL A MOV R7,A MOV A,R7 ANL A,#0FH MOV 14H,A DEC 13H MOV R7,
25、13H MOV A,R7 JZ Key1 MOV A,14H JZ Key2Key1 : MOV A,14H JZ GetKey6 MOV A,13H ADD A,ACC ADD A,ACC MOV 13H,A MOV A,14H JNB ACC.1,GetKey1 INC 13H SJMP GetKey3GetKey1: MOV A,14H JNB ACC.2,GetKey2 INC 13H INC 13H SJMP GetKey3GetKey2: MOV A,14H JNB ACC.3,GetKey3 MOV A,#03H ADD A,13H MOV 13H,AGetKey3: MOV D
26、PTR,#0E101H CLR A MOVX DPTR,AGetKey4: MOV R7,#0AH LCALL Delay LCALL TestKey MOV A,R7 JNZ GetKey4 MOV R7,13H MOV A,R7 MOV DPTR,#KeyTable MOVC A,A+DPTR MOV R2,A RETGetKey6: MOV R2,#0FFH RETWaitRelease: mov dptr, #OUTBIT ; 等键释放 clr a movx dptr, a mov r6, #10 call Delay call TestKey jnz WaitRelease mov
27、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,#20h,start2 ;判断晶振打开否? sjmp start3start2: mov dptr,#0fe0bh ;设置SET=0,芯片正常工作.24/12=1,选24小时制. mov a,#82h movx dptr,a mov
28、 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,#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 TestKey ; 有键入? jz loop12 ; 无键入, 继续显示 call GetKey ; 有键入,读入键码 cjne a,#14h,keep0 sjmp keep1 ;是NEXT键,调整秒位keep0: c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年全新版股权转让协议2篇
- 2024年医疗废物处理服务合同27篇
- 2024年公司股东借款合同8篇
- 2024年工业用地及附属设施抵押担保合同3篇
- 2024年度股权转让合同标的为科技公司股份
- 2024年度智能家居系统研发与生产合作协议
- 2024年幼儿园老师兼职劳务合同3篇
- 二零二四年度国际船舶买卖合同2篇
- 2024年借贷双方担保补充协议修订版版B版
- 2024年度跨江桥梁施工项目协议版
- 数字与图像处理-终结性考核-国开(SC)-参考资料
- 2024年度海外市场推广合作协议3篇
- 2024年新疆区公务员录用考试《行测》真题及答案解析
- 2024-2025学年高二上学期期中家长会-家校同频共话成长 课件
- 口腔医护人员礼仪培训
- 浙江省杭州市2025届高三上学期一模英语试题 含解析
- 2024年国际贸易佣金居间服务协议
- 医院科研项目管理制度
- 河南师范大学《思想政治教育方法论》2023-2024学年第一学期期末试卷
- 小学生防性侵安全教育课件
- 物 理2024-2025学年苏科版物理八年级上学期 期末综合测试卷
评论
0/150
提交评论