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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(基于AT89S51单片机的扩展时钟系统毕业设计.docx)为本站会员(b****7)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于AT89S51单片机的扩展时钟系统毕业设计.docx

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

2、l society,requirements 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, fo

3、rmally based on this 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单片机、实时时钟芯片电路、液晶显示输出电路、键盘输入电路组成等几大部分组成。软件部分包括了主程序模块,DS12C8

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

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

8、控制领域。3.2 AT89S51单片机的硬件组成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

9、/O口;(5)1个全双工的异步串行口;(6)2个可编程的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高密度非易失存储器制造技术制造,与工

10、业标准的MCS-51指令集和输出管脚相兼容。由于将多功能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存储器串行编程和校验,它

12、们分别是串行数据输入、输出和移位脉冲引脚。(3)P2口:8位,准双向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口使用时,为准双向口,这时需加

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

14、887引脚分布图和存储器分布图:图4 引脚分布图和存储器分布通过对寄存器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时,每秒

15、计数一次,置1后,更新转换被禁止;当PIE、AIE、UIE位为1时,分别允许周期中断、报警中断和时钟数据更新结束中断,为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

16、,/IRQ引脚输出就保持低电平,读寄存器C将清除所有标志器 C的内容是周期中断标志位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以检查内部锂电池是否有效;接

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

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

19、键按下,如果有键被按下,则执行按键处理子程序。首先进行DS12887时钟芯片和LCD1602的初始化函数,然后进行按键扫描,不断地检测按键是否按下,读取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.3

20、6.52,图6-26 小结通过这次课程设计,我对单片机的应用有了更深的认识。同时,也初步掌握了通过芯片资料所给出的各种信息,应用该芯片的能力。我在设计过程中,学会了总线的应用以及标号规则。这是一个很大收获,可以在以后的应用中简化电路,在以后的实际工作和学习中带来很大的便利。通过这次设计,我对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

22、0e102h ; 段控制口(接164时钟位)DAT164 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:

23、 mov r0, #LEDBuf mov r1, #6 ; 共6个八段管Loop: mov dptr, #OUTBIT mov a, #0 mov B, #8 ; 送164DLP: rlc a mov r3, a mov acc.0, c mov dptr, #DAT164 anl a,#0fdh mov dptr, #CLK164 orl a,#02h anl a,#0fdh mov a, r3 djnz B, DLP mov dptr, #OUTBIT mov a, r2 mov r6, #1 call Delay mov a, r2 ; 显示下一位 rl a mov r2, a inc

24、r0 djnz r1, Loop retTestKey: mov dptr, #OUTBIT mov a, #0 mov dptr, #IN cpl a anl a, #0fh ; 高四位不用 retKeyTable: ; 数字键码定义 db 00h, 01h, 04h, 07h db 0fh, 02h, 05h, 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, #L

25、ow(IN) mov r2, #6KLoop: mov a, r1 ; 找出键所在列 cpl a cpl a rr a mov r1, a ; 下一列 cpl a anl a, #0fh jnz Goon1 ; 该列有键入 djnz 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 ;

26、移位找出所在行 jc Exit inc r2 ; r2 = r2+ 行值 djnz r1, LoopCExit: mov a, r2 ; 取出键码 mov dptr, #KeyTable mov r2, aWaitRelease: mov dptr, #OUTBIT ; 等键释放 clr 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 dp

27、tr,#0e100h mov a,#03hStart1:mov dptr,#0fe0ah anl a,#70h cjne a,#20h,start2 ;判断晶振打开否? sjmp start3start2: mov dptr,#0fe0bh ;设置SET=0,芯片正常工作.24/12=1,选24小时制. mov a,#82h mov r0,#06h mov dptr,#0fe00h ;时分秒清零 mov a,#00h inc dptr djnz r0,retun0 mov dptr,#0fe0ah mov a,#27h inc dptr mov a,#5ahstart3: mov dptr,#

28、0fe0ah jnb acc.7,loop12 mov r5,#4dh djnz r5,$loop12:mov dptr,#0fe0bh mov a,#5ahloop13:mov dptr,#0fe00h ;读秒,分,时 mov r1,#60h mov r0,#03h lcall Ptreg ;读取的值,进行拆字后送显示缓冲器60H-65H inc dptr inc dptr djnz r0,loop11 mov dptr,#0fe0bh call DisplayLED ; 调用显示子程序 call TestKey ; 有键入? jz loop12 ; 无键入, 继续显示 call GetKe

29、y ; 有键入,读入键码 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 mov a,20h lcall Hbcd cjne a,#60h,loop20 ;秒位不能超过60秒 mov 20h,#00h sjmp loop13loop20:mov dptr,#0fe00h inc 20h sjmp lo

30、op13keep3: mov dptr,#0fe0bh mov a,#0dah mov a,21h lcall Hbcd cjne a,#60h,loop21 ;分位不能超过60分 mov 21h,#00h sjmp loop13loop21:mov dptr,#0fe02h inc 21h sjmp loop13keep5: mov dptr,#0fe0bh mov a,#0dah mov a,22h lcall Hbcd cjne a,#24h,loop22 ;时位不能超过24小时 mov 22h,#00h sjmp loop13loop22:mov dptr,#0fe04h inc 22

31、h sjmp loop13Ptreg: push dph ;拆字子程序 push dpl push acc push b mov b,a anl a,#0fh mov dptr,#LEDMAP orl a,#80h inc r1 mov a,b swap a anl a,#0fh mov dptr,#LEDMAP 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 END

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2