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

上传人:b****7 文档编号:16605636 上传时间:2023-07-15 格式:DOCX 页数:17 大小:24.18KB
下载 相关 举报
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第1页
第1页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第2页
第2页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第3页
第3页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第4页
第4页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第5页
第5页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第6页
第6页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第7页
第7页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第8页
第8页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第9页
第9页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第10页
第10页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第11页
第11页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第12页
第12页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第13页
第13页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第14页
第14页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第15页
第15页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第16页
第16页 / 共17页
基于AT89S51单片机的扩展时钟系统毕业设计.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《基于AT89S51单片机的扩展时钟系统毕业设计.docx》由会员分享,可在线阅读,更多相关《基于AT89S51单片机的扩展时钟系统毕业设计.docx(17页珍藏版)》请在冰点文库上搜索。

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

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

基于AT89S51单片机的扩展时钟系统设计

摘要:

随着人类科技文明的发展,人们对于时钟的要求在不断地提高,时钟已不仅仅被看成一种来显示时间的工具。

在很多实际应用中它还需要能够实现更多其他的功能。

时钟的数字化、多功能化已经成为现代时钟生产研究的主导设计方向。

本文正式基于这种方向,以AT89S51单片机为核心,结合新型时钟芯片DS12887,并利用液晶LCD1602显示数字时钟。

关键字:

AT89S51单片机;时钟芯片DS12887;液晶LCD1602

Abstract:

Withthedevelopmentofthetechnologicalsociety,requirementsforclockisconstantlyimproving,theclockhasnotonlybeenseenasatimetoshowtools.Italsoneedstobeabletoachievemoreinmanypracticalapplications.Digitalclock,multi-functionalmodernclockproductionhasbecomethedominantdesigndirection.Inthispaper,formallybasedonthisdirection,AT89S51microcontrollerasthecore,CombinedwiththenewclockchipDS12887,AndLCD1602LCDdisplaydigitalclock。

Keywords:

AT89S51microcontroller;TimeclockDS12887;LCD1602

 

1引言

数字时钟已经成为人们日常生活中必不可少的必需品,广泛应用于个人家庭以及办公室公共场所,给人们的生活、学习、工作、娱乐带来了极大地方便。

由于数字集成电路技术的发展和采用了新进的石英技术,是数字钟具有走时准确、性能稳定、携带方便等优点。

它还用于计时、自动报时等各个领域。

尽管目前市场上已有现成的数字集成电路芯片出售,价格便宜,使用也方便,但鉴于单片机的定时器功能也可以完成数字中电路的设计,因此进行数字钟的设计是必要的。

在这里我将以学过的比较零散的电路知识有机的、系统的结合起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。

文中详细论述了以89S51单片机位核心,应用新型时钟芯片DS12887的数字时钟设计原理以及使用的各种芯片的介绍,阐明了本实例所使用的设计方案、详细的电路图以及程序代码。

2总体设计

本次设计的题目是单片机控制时钟芯片DS12887的时分秒定时系统设计,可以正常的显示年、月、日、时、分、秒。

程序第一次运行后,初始化时间显示为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模块,按键控制模块。

本设计是以89S51单片机为核心,结合新型实时时钟芯片DS12887,并利用液晶LCD1602显示的数字时钟。

在液晶上显示、时、分、秒等信息。

因为DS12887本身的特点,本设计还具有掉电后继续计时的功能。

另外,它的计时周期为24小时,采用24小时制的计时方式,显示满刻度为23时59分59秒,这也是DS12887的计时范围。

本设计的数字时钟,可以通过按键来设置时间,也可以通过按键来设置闹钟的时间,不过与设置正常时间相比,仅限于设置时、分、秒。

每按一次按键,蜂鸣器就会发出很短的滴声,当达到设定的时间时,数字时钟会也发出声音,来提醒使用者时间到了。

以上是本设计的大致功能和简介。

总设计如图1所示

图1接线图

3系统硬件组成

3.1芯片的选择

经多种单片机性能的分析及现有实验设备的限制,在本设计中单片机芯片采用了AT89S51单片机芯片。

AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机片内含4Kbytes的可系统编程的Flash只读程序储存器。

器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准80C51指令系统及引脚。

它集Flash程序存储器既可在线编程也可用传统方法进行编程既通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。

3.2AT89S51单片机的硬件组成

AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及89S51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。

如图2所示

(1)8位微处理器(CPU);

(2)数据存储器(128BRAM);

(3)程序存储器(4KBFlashROM);

(4)4个8位可编程并行I/O口;

(5)1个全双工的异步串行口;

(6)2个可编程的16位定时器/计数器;

(7)1个看门狗定时器;

(8)中断系统具有5个中断源、5个中断向量;

(9)特殊功能寄存器(SFR)26个。

图2AT89S51引脚图

AT89S51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

AT89S51是一种带K字节闪烁可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的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脚):

片内振荡器反相放大器的输出端。

当使用片内振荡器,该脚连接外部石英晶体和微调电容。

当使用外部时钟源时,本脚悬空。

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位,准双向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,

图3P3口引脚图

3.4时钟芯片DS12887

DS12887是美国DALLAS半导体公司最新推出的8位串行接口并自带RAM的实时日历时钟芯片,内部有14个时钟控制寄存器,包括10个时标寄存器,4个状态寄存器和114bit作掉电保护用的低功耗RAM。

CPU通过读DS12887的内部时标寄存器得到当前的时间和日历,也可通过选择二进制或BCD码初始化芯片的10个时标寄存器,其4个状态寄存器用来控制和指出DS12887的当前工作状态,114bit非易失性静态RAM可在掉电时保存一些重要数据。

DS12887功能强大,应用广泛。

DS12887引脚分布图和存储器分布图:

 

图4引脚分布图和存储器分布

通过对寄存器A、B、C、D的编程可以控制DS12887的工作方式:

寄存器A

当UIP位为0时指示更新在244μS内不会发生;当DV2DV1DV0其为010时,打开晶振,并允许时钟开始计时;RS3RS2RS1RS0用于选择周期中断或输出方波的频率,当其分别为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时,分别允许周期中断、报警中断和时钟数据更新结束中断,为0时,禁止中断产生;SQWE位为1时,按以寄存器A中由RS3RS2RS1RS0选定的频率从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的内容是周期中断标志位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,当需要读日历时钟数据时,必须先查询寄存器A中的UIP位,只有当其为0时,才能进行读取数据。

CPU通过读DS12887的内部时标寄存器得到当前的时间和日历,也可通过选择二进制码或BCD码初始化芯片的10个时标寄存器。

其114bit非易失性静态RAM可供用户使用,对于没有RAM的单片机应用系统,可在主机掉电时来保存一些重要的数据。

DS12887的4个状态寄存器用来控制和指出DS12887模块的当前工作状态,除数据更新周期外,程序可随时读写这4个寄存器。

3.5液晶LCD1602

1602液晶显示模块,是点阵字符型液晶显示模块,可以用来显示字母,符号,数字以及简单的汉字和图案等信息。

“1602”的含义是这类液晶显示模块每行能够显示16个字符,一共可以显示两行。

该液晶显示模块,分为带背光和不带背光两类,两者在应用过程中功能基本类似,只是带背光的模块更厚一些,通常的背光颜色以黄绿色和蓝色为主。

4软件系统设计

4.1程序流程图

在这个设计中,89S51主要功能是存储程序、根据程序的内容对各个端口进行判断并做出相应的处理;DS12887主要的功能是控制时、分、秒的显示LCD1602主要的功能是将所要显示的显示出来。

主程序主要实现了从DS12887各时间单元中读出数据并送到LCD1602中显示的功能,同时检测有没有按键按下,如果有键被按下,则执行按键处理子程序。

首先进行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.36.52,

图6-2

6小结

通过这次课程设计,我对单片机的应用有了更深的认识。

同时,也初步掌握了通过芯片资料所给出的各种信息,应用该芯片的能力。

我在设计过程中,学会了总线的应用以及标号规则。

这是一个很大收获,可以在以后的应用中简化电路,在以后的实际工作和学习中带来很大的便利。

通过这次设计,我对LCD1602有了进一步的了解和认识,对它的应用更加熟练。

虽然在这次设计中没有用到该功能。

参考文献:

[1]何立民.单片机应用技术选编[M].北京:

北京航空航天大学出版社,1993.

[2]张毅刚.单片机原理及应用[M].北京:

高等教育出版社,2004.

[3]郭天祥.新概念51单片机C语言教程[M]:

入门、提高、开发、拓展全攻略.电子工业出版社,2009.

[4]莫树.培刘夏.基于DS12887的时钟设计[M].科技创新导报,2011.

[5]孙佳玲.基于单片机的多功能数字时钟系统设计[M].吉林工程技术师范学院学报,2009.

[6]李大有.单片机应用与设计[M].电子工业大学出版社,1998年.

[7]钟睿.MCS-51单片机原理及应用开发技术[M].北京:

中国铁道出版社,2006.

[8]王幸之.AT89系列单片机原理与接口技术[M].北京:

北京航空航天大学出版社,2004.

附件

程序代码

;按“NEXT”键,调整秒位;按“LAST”键,调整分位;按"MON"键,调整时位;

OUTBITequ0e101h;位控制口

CLK164equ0e102h;段控制口(接164时钟位)

DAT164equ0e102h;段控制口(接164数据位)

INequ0e103h;键盘读入口

LEDBufequ60h;显示缓冲

ljmpStart

LEDMAP:

;八段管显示码

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db7fh,6fh,77h,7ch,39h,5eh,79h,71h

db00H

Delay:

;延时子程序

movr7,#00

DelayLoop:

djnzr7,DelayLoop

djnzr6,Delay

ret

DisplayLED:

movr0,#LEDBuf

movr1,#6;共6个八段管

Loop:

movdptr,#OUTBIT

mova,#0

movB,#8;送164

DLP:

rlca

movr3,a

movacc.0,c

movdptr,#DAT164

anla,#0fdh

movdptr,#CLK164

orla,#02h

anla,#0fdh

mova,r3

djnzB,DLP

movdptr,#OUTBIT

mova,r2

movr6,#1

callDelay

mova,r2;显示下一位

rla

movr2,a

incr0

djnzr1,Loop

ret

TestKey:

movdptr,#OUTBIT

mova,#0

movdptr,#IN

cpla

anla,#0fh;高四位不用

ret

KeyTable:

;数字键码定义

db00h,01h,04h,07h

db0fh,02h,05h,08h

db0eh,03h,06h,09h

db0dh,0ch,0bh,0ah

db10H,11H,12H,13H,14H

db15H,16H,10H,10H,10H

GetKey:

movdptr,#OUTBIT

movP2,dph

movr0,#Low(IN)

movr2,#6

KLoop:

mova,r1;找出键所在列

cpla

cpla

rra

movr1,a;下一列

cpla

anla,#0fh

jnzGoon1;该列有键入

djnzr2,KLoop

movr2,#0ffh;没有键按下,返回0ffh

sjmpExit

Goon1:

movr1,a;键值=列X4+行

mova,r2

deca

rla

rla

movr2,a;r2=(r2-1)*4

mova,r1;r1中为读入的行值

movr1,#4

LoopC:

rrca;移位找出所在行

jcExit

incr2;r2=r2+行值

djnzr1,LoopC

Exit:

mova,r2;取出键码

movdptr,#KeyTable

movr2,a

WaitRelease:

movdptr,#OUTBIT;等键释放

clra

movr6,#10

callDelay

callTestKey

jnzWaitRelease

mova,r2

ret

Start:

movr6,#02h

calldelay

mov20h,#00h

mov21h,#00h

mov22h,#00h

movsp,#40h

movdptr,#0e100h

mova,#03h

Start1:

movdptr,#0fe0ah

anla,#70h

cjnea,#20h,start2;判断晶振打开否?

sjmpstart3

start2:

movdptr,#0fe0bh;设置SET=0,芯片正常工作.24/12=1,选24小时制.

mova,#82h

movr0,#06h

movdptr,#0fe00h;;时分秒清零

mova,#00h

incdptr

djnzr0,retun0

movdptr,#0fe0ah

mova,#27h

incdptr

mova,#5ah

start3:

movdptr,#0fe0ah

jnbacc.7,loop12

movr5,#4dh

djnzr5,$

loop12:

movdptr,#0fe0bh

mova,#5ah

loop13:

movdptr,#0fe00h;读秒,分,时

movr1,#60h

movr0,#03h

lcallPtreg;读取的值,进行拆字后送显示缓冲器60H-65H

incdptr

incdptr

djnzr0,loop11

movdptr,#0fe0bh

callDisplayLED;调用显示子程序

callTestKey;有键入?

jzloop12;无键入,继续显示

callGetKey;有键入,读入键码

cjnea,#14h,keep0

sjmpkeep1;是NEXT键,调整秒位

keep0:

cjnea,#15h,keep2

sjmpkeep3;是LAST键,调整分位

keep2:

cjnea,#16h,start1

sjmpkeep5;是MON键,调整时位

keep1:

movdptr,#0fe0bh

mova,#0dah

mova,20h

lcallHbcd

cjnea,#60h,loop20;秒位不能超过60秒

mov20h,#00h

sjmploop13

loop20:

movdptr,#0fe00h

inc20h

sjmploop13

keep3:

movdptr,#0fe0bh

mova,#0dah

mova,21h

lcallHbcd

cjnea,#60h,loop21;分位不能超过60分

mov21h,#00h

sjmploop13

loop21:

movdptr,#0fe02h

inc21h

sjmploop13

keep5:

movdptr,#0fe0bh

mova,#0dah

mova,22h

lcallHbcd

cjnea,#24h,loop22;时位不能超过24小时

mov22h,#00h

sjmploop13

loop22:

movdptr,#0fe04h

inc22h

sjmploop13

Ptreg:

pushdph;拆字子程序

pushdpl

pushacc

pushb

movb,a

anla,#0fh

movdptr,#LEDMAP

orla,#80h

incr1

mova,b

swapa

anla,#0fh

movdptr,#LEDMAP

incr1

popb

popacc

popdpl

popdph

ret

Hbcd:

movb,#100;单字节十六进制整数转换成单字节BCD码子程序

divab

movr3,a

mova,b

movb,#10

divab

swapa

orla,b

ret

END

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

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

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