定时闹钟
河南理工大学本科课程设计
本设计是以AT89S51单片机为核心,设计并制作定时闹钟,在此设计的定时
闹钟基础上,能显示时时分分秒秒,能够设定定时时间以及修改定时时间,定时
时间到能发出警报声或者启动继电器,从而控制电器的启停。现在是自动化高度
发达的时代,特别是电子类产品都是靠内部的控制电路来实现对产品的控制,达
到自动运行的目的,这就需要我们这里要做的设计中的电器元件及电路的支持
了。
AT89S51是此次课程设计的核心部件,利用共阴极显示器件,用LED来显示数字。AT89S51单片机属于MCS-51单片机的一种,采用单总线结构。在显示发
面用计数器和七段显示数码管组成闹钟电路的基本电路和显示电路,由4个开关来控制闹钟的显示及定时,一个开关控制小时一个控制分钟一个控制秒钟,通过
4个按键调节,也采用中断的方式进行溢出数据
在这次设计中主要是用AT89S51来进行定时,也结合着其他辅助电路实施控
制,在定时的时候,按一下控制小时的键对小时加一;按一下控制分钟的键对分
钟加一;按一下控制秒钟的键对秒钟加一,秒计时器和分计时器都是满60加一,到达预设的时间,此电路就会发出报警声音提示已经到点,俗话说时间就是生命,
有了定时闹钟,让人们的时间观念更强更优质。
- 1 -
河南理工大学本科课程设计报告
„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„3
1.1定时闹钟课程设计的意义 „„„„„„„„„„„„„„„„„„„„3
1.2总体设计过程的概述 „„„„„„„„„„„„„„„„„„„„„„3
1.3系统的主要功能简介 „„„„„„„„„„„„„„„„„„„„„„3
„„„„„„„„„„„„„„„„„„„„„„5
2.1系统核心AT89S51单片机概述 „„„„„„„„„„„„„„„„„„5 2.2独立式键盘电路 „„„„„„„„„„„„„„„„„„„„„„„„6 2.3 LED结构与原理 „„„„„„„„„„„„„„„„„„„„„„„„7 2.4定时控制寄存器 „„„„„„„„„„„„„„„„„„„„„„„„7
„„„„„„„„„„„„„„„„„„„„„„„„„„„„„8
3.1系统流程图 „„„„„„„„„„„„„„„„„„„„„„„„„„8 3.2键盘及按键功能设定 „„„„„„„„„„„„„„„„„„„„„„8
3.3动态数码显示及其处理 „„„„„„„„„„„„„„„„„„„„„9
3.4简单的运算„„„„„„„„„„„„„„„„„„„„„„„„„„10
„„„„„„„„„„„„„„„„„„„„„„„„115„„„„„„„„„„„„„„„„„„„„„„„„„„13
„„„„„„„„„„„„„„„„„„„„„„„„„„„„„14
„„„„„„„„„„„„„„„„„„„„„„„„„15
„„„„„„„„„„„„„„„„„„„„„„„„„23
- 2 -
河南理工大学本科课程设计报告
1
1.1定时闹钟课程设计的意义
现在是一个高度发达的高科技时代,目前单片机正朝向高性能和多品种方向
发展,并且进一步向低功耗,小体积,大容量,高性能,低价格和外围电路内装
化等几个方向发展。单片机的应用还从根本上改变了传统的控制系统设计思想和
方法。从前必须由模拟电路和数字电路实现的大部分功能,现在已经能够用单片
机运用软件方法来实现了,因此称之为软件代替硬件的控制技术。
定时闹钟是用数字电路技术实现时分秒计时的装置,有更高的准确性和直观
性,寿命更长,得到了广泛的应用。
定时闹钟是采用数字电路实现对时分秒数字显示的计时装置,广泛应用于家
庭,车站,办公室等场所,成为人们日常生活不可缺少的必需品,它给人们带来
了很大的方便
1.2总体设计过程的概述
在此次设计中,AT89S51单片机是主要的元器件,通过它来控制电路的各个元器件以及显示器件的工作,本次设计用到了AT89S51单片机,LED七段显示器,RP电阻及一些小电阻,电容,开关,电源,接地线以及一个LS小发声喇叭组成,通过对对应端口的连接来实现其功能,在电路设计中还运用到了保护电路,起到保护元器件的目的,
首先就是选择器件,在选材方面一定要仔细,有些器件之间只有一点点区别,即便是那一点点区别就会导致整个电路不可用,因此要慎重选材。在材料选好之
前,要好好的规划一下设计的电路,设计的思想,总体的思路。在这之后,就是
开始怎么来组织设计的时候了,运用逻缉的思维来组织。
我们运用AT89S51这个主要的单片机器件,它是核心,它有40个引脚,分别有I/O接口,电源接口等等,分别从那引出接线,然后分别与各部件连接,发
出控制信号对各个部件进行控制,让各部件都工作起来,实现各自的功能。对于
在连接接口时注意一一对应,不要接反了。在总体设计好之后进行调试,避免错
误的产生。
1.3系统的主要功能简介
定时闹钟是采用数字电路实现对时分秒数字显示的控制装置,在电路中,有
中断电路,保护电路,触发电路,显示电路等,它们各显其功能,然后通过自己
的功能来组合成一个整体的功能,也就是此次设计的定时闹钟的功能,通过这些
- 3 -
河南理工大学本科课程设计报告 元器件组成的电路,定时闹钟有了自己的本领。
在整体电路中,保护电路起着保护各元器件不会因为接错线或者是电源电压
不合理而导致的对器件的损坏,保护各电路的正常工作。触发电路起着给出触发
信号的作用,显示电路是起着显示的作用。定时闹钟可以显示时分秒,并且在同
时可以进行定时,分别对时分秒的设计来定时,在时间到了后可以发出声音提示,
起着报警提示的目的。现在是个高度发达的社会,时间很重要,对时间的控制是
自古以来都是棘手的问题,现在有了定时闹钟,就大大的提高人们的时间观。显
示电路及LED显示器是其中最重要的部分之一,有动态显示和静态显示两种方
式,通过它来观察时间数,很直观,方便。
- 4 -
河南理工大学本科课程设计报告
2.1系统核心AT89S51单片机概述
图2-1 单片机AT89S51的引脚图
本系统的核心元件为单片机AT89S51,利用共阴显示器件。在此设计中接入一个
共阴LED显示器,其中2个用于显示时钟,其中2个用于显示分钟,2个用于显示秒钟。 AT89S51属于MCS-51单片机系列中的其中一种,单片机内部总线是单
总线结构,即数据总线和地址总线是公用的。该芯片具有40引脚,这40条引脚可分为I/O接口线、电源线、外接晶振线4部分。8051单片机为双列直插式封装结构,本设计利用的核心元件便是它了。
其引脚功能说明:
VCC:+5V电源线;
XTAL1:片内振荡器反向放大器的输入端和内部时钟工作的输入端; XTAL2:片内振荡器反向放大器的输出端;
P0口:是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口对端口P0写‘1’时,可作为高阻抗输入端用,在访问外部数据存储器或程序存储器时,
这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电
阻;
- 5 -
河南理工大学本科课程设计报告
P1口:是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端
口拉到高电平,此时可作输出口。作输入口使用时,因为内部存在上拉电阻,某
个引脚被外部信号拉低时会输出一个电流;
P2口:是一个带内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,
某个引脚被外部信号拉低时会输出一个电流;
P3口:是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流。 RST——复位输入;
ALE/PROG——当访问外部程存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节;
PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号; EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态;
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令 2.2独立式键盘电路
在单片机系统的输入电路中,经常需要独立式键盘。
a.独立式键盘的接口电路:在单片机应用系统中,有时只需要几个简单的按
键向系统输入信息。这时,可将每个按键接在一根I/O接口线上,这种方式的连接称为独立式键盘。每个独立式按键单独占有一根 I/O接口线,每根I/O接口线的工作状态不 会影响到其他 I/O接口线 。这种按键接口电路配置灵活,硬
件结构简单,但每个按键必须占用一根I/O接口线,I/O接口线浪费较大。故只在按键数量不多时采用这种按键电路。在此电路中,按键输入都采用低电平有效。
上拉电阻保证了按键断开时,I/O接口线有确定的高电平。当I/O接口内部有上拉电阻时,外电路可以不配置上拉电阻。
- 6 -
河南理工大学本科课程设计报告
b.独立式键盘的编程:独立式键盘的编程常采用查询式结构。先逐位查询每
根I/O接口线的输入状态,如某一根I/O接口线输入为低电平,则可确定该I/O接口线所对应的按键以按下,然后,再转向按键的功能处理程序。
图2-2 定时闹钟的键盘电路图 2.3 LED结构与原理
图2-3 LED元件引脚图
a~g为数字和字符显示段,h段为小数点显示,通过a~g为7个发光段的不同组合,可以显示0~9和A~F共16个数字和字母,本设计采用的是共阴极
接法。点亮LED显示器有两种方式:一是静态显示:二是动态显示。 所谓静态显示,就是当显示器显示某一个字符时,相应的发光二极管恒定的导通
或截止。所谓动态显示,就是将要显示的多位LED显示器采用一个8位的段选端口,然后采用动态扫描方式一位一位地轮流点亮各位显示器。 2.4 定时控制寄存器
TCON:该寄存器单元地址为88H,位地址为88H-8FH;其
及位地址见
- 7 -
河南理工大学本科课程设计报告
8FH 8EH 8DH 8CH 8BH 8AH 89H 88H
TFTRTFTRIEITIEIT1 1 0 0 1 1 0 0 该寄存器具有定时器/计数器的控制功能和中断控制功能,其中与中断有关的控
制位共有6位:
TF:定时器/计数器T1溢出中断标志。 1
TF:定时器/计数器T0溢出中断标志。其功能类似于TF。1 1IT :外部中断1触发方式标志。 1
IE:外部中断0中断请求标志。其功能类似于IE。01
IT:外部中断1触发方式标志。其功能类似于IT。 01
IE:外部中断1中断请求标志。 1
- 8 -
河南理工大学本科课程设计报告
3.1系统流程图
显示初始化
开始
定时器初始化
中断初始化
定时器赋初值
开启中断
调用显示,按键
图3-1 系统流程图 3.2键盘及按键功能设定
图3-2 开关电路图
- 9 -
河南理工大学本科课程设计报告
在此开关电路路图中,一共用了4个开关K1,K2,K3,K4。在开关上也同时接
了4个上拉电阻R5,R6,R1,R2。同时开关左边接了地,上拉电阻一端接了电源。
4个开关和上拉电阻同时起了不同的作用。在整个定时闹钟电路运行时,先按下
K1,然后再按K2,因此就可以给时钟加1;按K3是给分钟加1。开关K2控制定
时状态,K1控制分钟,K3控制时钟,K4是退出键。 3.3动态数码显示及其处理
此电路中就是靠LED数码管来显示时间的,LED数码管一般采用的是7段显
示,可以显示0-9的数字,它是从a~g的7段管显示数字的,分别控制这7段
的亮与灭来显示0-9这几个数字。动态数码管是靠动态驱动来使其发光的,动
态驱动是将所有数码管使用一个专门的译码驱动器,使各位数码管逐个轮流受控
显示。显示子程序为:
DISPLAY1:MOV R0,#30H
MOV R3,#0FEH
MOV A,R3
PLAY1: MOV P2,A
MOV A,@R0
MOV DPTR,#DSEG1
MOVC A,@A+DPTR
MOV P0,A
LCALL DL1 ;调用延时
MOV P2,#0FFH
MOV A,R3
RL A
JNB ACC.6,LD1 ;判位并进行下一位操作
INC R0
MOV R3,A
LJMP PLAY1
LD1: RET
DISPLAY2:PUSH ACC ;保护现场
PUSH PSW
MOV R0,#36H
MOV R3,#0FBH
MOV A,R3
PLAY2: MOV P2,A ;轮流选通显示
MOV A,@R0
MOV DPTR,#DSEG1
- 10 -
河南理工大学本科课程设计报告
MOVC A,@A+DPTR
MOV P0,A
LCALL DL1
MOV P2,#0FFH
MOV A,R3
RL A
JNB ACC.6,LD2
INC R0
MOV R3,A
LJMP PLAY2
LD2: POP PSW
POP ACC
RETI
DL1: MOV R7,#02H ;延时程序2
DL: MOV R6,#0200H
DL6: DJNZ R6,$
DJNZ R7,DL
RETI
DSEG1: DB 3FH,06H,5BH,4FH,66H ;//字符转换显示//
DB 6DH,7DH,07H,7FH,6FH
3.4简单的运算
在开关电路中,存在着上拉电阻,它们同时对时间进行着控制。在运行时,
按下K1,然后再按下K2,这就可以对时钟加1,按下K3可以对分钟加1,但这
两个都不是对闹钟定时所做的操作。 先按下K2就可以对闹钟进行定时了,按下K1,对分钟进行加1,按下K3对时钟
进行加1,因此就可以想定多少时间就行。就比如说我们将定到11点11分报时,
那我们就先按K2,再按K1,按十一下K1,把分钟调到11;然后再按十一下K3,
把时钟调到11,然后按K4退出就可以了,这个简单的操作就这样完成了。举例
如下:
GO22:MOV B,#0AH
DIV AB
MOV 38H,B
MOV 39H,A
- 11 -
河南理工大学本科课程设计报告
在软件设计中提到的定时操作,我选择了定时到11点11分,一下为定时后的截图
RP1GND
C2C347p47pX19876U25CRYSTAL19394XTAL1P0.0/AD0383P0.1/AD1372RESPACK-8P0.2/AD21836XTAL2P0.3/AD3351P0.4/AD434P0.5/AD533P0.6/AD6932R3RSTP0.7/AD721P2.0/A810k22P2.1/A923P2.2/A10VCC2924R4PSENP2.3/A113025ALEP2.4/A12VCC312610kEAP2.5/A13C127P2.6/A1428P2.7/A1511047pP1.0P3.0/RXDK1211P1.1P3.1/TXD312P1.2P3.2/INT0413K2P1.3P3.3/INT1514P1.4P3.4/T0615K3P1.5P3.5/T1716P1.6P3.6/WR817P1.7P3.7/RDK4LS1
AT89C51R5SPEAKERGNDR610kR110kR210kGND10k
VCC
图4-1 设定定时后的电路图 上述为结果图,以下为具体操作的过程:
点了电路运行按钮后,就可以开始对其进行设定了。先按K2,进入定时状态,然后再按下K1,可以在分钟上加1,其运行效果图为:
- 12 -
河南理工大学本科课程设计报告
RP1GNDC2C347p47pX1987U26CRYSTAL51939XTAL1P0.0/AD0438P0.1/AD1337RESPACK-8P0.2/AD221836XTAL2P0.3/AD335P0.4/AD4134P0.5/AD533P0.6/AD6932RSTP0.7/AD7R321P2.0/A810k22P2.1/A923P2.2/A102924VCCR4PSENP2.3/A113025ALEP2.4/A123126VCCEAP2.5/A1310kC127P2.6/A1428P2.7/A15110P1.0P3.0/RXD47p211K1P1.1P3.1/TXD312P1.2P3.2/INT0413P1.3P3.3/INT1K2514P1.4P3.4/T0615P1.5P3.5/T1K3716P1.6P3.6/WR817P1.7P3.7/RDK4LS1
AT89C51R5SPEAKERGNDR610kR110kR210kGND10k
VCC
图4-2 运行效果图
再按K3,对时钟加1,其运行效果图为:
GND
9RP18765C2C3447p47p3X121U2CRYSTAL1939XTAL1P0.0/AD038P0.1/AD1RESPACK-837P0.2/AD21836XTAL2P0.3/AD335P0.4/AD434P0.5/AD5R333P0.6/AD6VCC932RSTP0.7/AD710kVCC21P2.0/A822R4P2.1/A923P2.2/A1010k2924C1PSENP2.3/A113025ALEP2.4/A123126EAP2.5/A132747pP2.6/A14K128P2.7/A15K2110P1.0P3.0/RXD211K3P1.1P3.1/TXD312P1.2P3.2/INT0K4413P1.3P3.3/INT1514LS1P1.4P3.4/T0615P1.5P3.5/T1716P1.6P3.6/WR817P1.7P3.7/RDAT89C51R5SPEAKERR610kGNDR110kR2GND10k10k
VCC
图4-3 运行效果图
。
- 13 -
河南理工大学本科课程设计报告
我们每天都在为起床起不来而发愁,因此就我就打算设计了这个定时闹钟来
提醒我们早早起床,这样我们就有了个提醒我们起床的东西了。经过一周的忙碌,
这次课程设计也到了尾声,在做设计的过程中也遇到了不少的困难,但我们都没
被打倒,还经常跑图书馆去查阅一些相关的资料,经过老师的细心指导和同学们
的热情帮助,经过仔细的检查和修改把过程中遇到的种种故障排除,过程中遇到
了其他的一些困难也解决掉。总体来说,设计这个东西需要的是各个学科的综合
知识,不是单靠一科就能解决得了的,因此对我们的综合知识是很大的考验,现
在才深有体会的,学好一门课程是很不容易的事情。平常上课时可能没太在意,
学这些东西的重要性,实用性,因此就没认真的去听,现在做这个设计才发现这
些学科的重要性,并且在做这个设计后我们能更好的把所学的知识更系统的连续
起来、结合起来,已达到突出运用的目的。从开始不断的需要去图书馆跑找资料,
不仅使自己长了知识也使我明白了一些道理。设计当中不仅运用了在大学几年所
学的东西,而且还运用了从未接触过的一些东西。学习不认真,就不会很好的完
成这次设计。
此次设计也使我明白,它可能需要多方面的东西,是通过各个方面的知识积
累以及动手实践做出来,而绝非凭空想出来的,它是实实在在不打水瓢的,只有
自己掌握了各方面的知识才能更好的去设计,才能走到成功的目的地。
- 14 -
河南理工大学本科课程设计报告 [1]余发山.单片机原理及应用技术.中国矿业大学出版社,2003.21-45,98-118,185-198 [2]刘和平. 单片机编程与入门.重庆大学出版社,2002.68-99,111-122
[3]陈明荧. 89C51单片机课程设计实训教材.清华大学出版社,2003.38-67,102-118 [4]刘瑞新. 单片机原理及应用教程.北京机械工业出版社,2005.78-109 [5]杨文龙. 单片机原理及应用.西安电子科技大学出版社,2002.33-62 [6]董国增. 单片机接口及应用实验和训练指导.北京机械工业出版社,1998.43-70 [7]付寿英,张登举,徐飞. 单片机接口技术及在工业控制中的应用.陕西科学技术出版,2001.78-101
- 15 -
河南理工大学本科课程设计报告
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIME
;************ MAIN PROGRAM ***************
ORG 0100H
MAIN:MOV SP,#50H
MOV 20H,#00H ;BIN SECOND //程序赋初值//
MOV 21H,#00H ;BIN MINUTE
MOV 22H,#00H ;BIN HOUR
MOV 23H,#01H
MOV 24H,#01H
MOV 25H,#00H
MOV 30H,#00H ;BCD SECOND
MOV 31H,#00H ;
MOV 32H,#00H ;BCD MINUTE
MOV 33H,#00H ;
MOV 34H,#00H ;BCD HOUR
MOV 35H,#00H
MOV 36H,#01H
MOV 37H,#00H
MOV 38H,#01H
MOV 39H,#00H
MOV TMOD,#01H ;16位计数器//工作方式选择//
MOV TH0,#03CH ;//赋初值//
MOV TL0,#0B0H
MOV IE,#10000111B
SETB TR0 ;T0启动计数
MOV R2,#14H
MOV P2,#0FFH
LOOP:LCALL TIMEPRO ;//子程序调用//
LCALL DISPLAY1 ;//显示程序调用//
JB P1.1,M1 ;消除按键抖动
LCALL SETTIME
LJMP LOOP
- 16 -
河南理工大学本科课程设计报告
M1:JB P1.2,M2
LCALL SETATIME
LJMP LOOP
M2:JB P1.4,M4
LCALL LOOKATIME
M4:LJMP LOOP
DELAY:MOV R4,#030H ;//延时程序//
DL00:MOV R5,#0FFH
DL11:MOV R6,#9H
DL12:DJNZ R6,DL12
DJNZ R5,DL11
DJNZ R4,DL00
RET
SETTIME:
L0: LCALL DISPLAY1
MM1: JB P1.2,L1 ;//p1.2为1时跳转到L1子程序//
MOV C,P1.2
JC MM1
LCALL DELAY1
JC MM1
MSTOP1: MOV C,P1.2
JNC MSTOP1
LCALL DELAY1
MOV C,P1.2
JNC MSTOP1
INC 22H
MOV A,22H
CJNE A,#18H,GO12
MOV 22H,#00H ;重新赋值
MOV 34H,#00H
MOV 35H,#00H
LJMP L0
L1:JB P1.3,L2
MOV C,P1.3
JC L1
LCALL DELAY1
JC L1
MSTOP2: MOV C,P1.3
- 17 -
河南理工大学本科课程设计报告
JNC MSTOP2
LCALL DELAY1
MOV C,P1.3
JNC MSTOP2
INC 21H
MOV A,21H
CJNE A,#3CH,GO11 ;判断分值是否到进位
MOV 21H,#00H
MOV 32H,#00H
MOV 33H,#00H
LJMP L0
GO11:MOV B,#0AH
DIV AB
MOV 32H,B ;保存当前显示输出值
MOV 33H,A
LJMP L0
GO12:MOV B,#0AH
DIV AB
MOV 34H,B
MOV 35H,A
LJMP L0
L2:JB P1.4,L0 ;进位判断
MOV C,P1.4
JC L2
LCALL DELAY1
MOV C,P1.4
JC L2
STOP1: MOV C,P1.4 ;暂停状态
JNC STOP1
LCALL DELAY1
MOV C,P1.4
JNC STOP1
LJMP LOOP
SETATIME:LCALL DISPLAY2 ;加位操作程序
N0: LCALL DISPLAY2
MM2: JB P1.3,N1
MOV C,P1.3
JC MM2
- 18 -
河南理工大学本科课程设计报告
LCALL DELAY1
JC MM2
MSTOP3: MOV C,P1.3 ;条件判断是否成立
JNC MSTOP3
LCALL DELAY1
MOV C,P1.3
JNC MSTOP3
INC 24H ;执行操作并保存相应状态
MOV A,24H
CJNE A,#24,GO22
MOV 24H,#00H
MOV 38H,#00H
MOV 39H,#00H
LJMP N0
N1:JB P1.1,N2
MOV C,P1.1
JC N1
LCALL DELAY1
JC N1
MSTOP4: MOV C,P1.1 ;中转位状态保存
JNC MSTOP4
LCALL DELAY1
MOV C,P1.1
JNC MSTOP4
INC 23H
MOV A,23H
CJNE A,#60,GO21
MOV 23H,#00H
MOV 36H,#00H
MOV 37H,#00H
LJMP N0
GO21:MOV B,#0AH ;十六进制转化为十进制
DIV AB
MOV 36H,B
MOV 37H,A
LJMP N0
GO22:MOV B,#0AH
DIV AB
- 19 -
河南理工大学本科课程设计报告
MOV 38H,B
MOV 39H,A
LJMP N0
N2:JB P1.4 ,N0
MOV C,P1.4
JC N2
LCALL DELAY1
MOV C,P1.4 ;进位标志位判断
JC N2
STOP2: MOV C,P1.4
JNC STOP2
LCALL DELAY1
MOV C,P1.4
JNC STOP2
LJMP LOOP
TIMEPRO:MOV A,21H ;数据保存与转换
MOV B,23H
CJNE A,B,BK
MOV A,22H
MOV B,24H
CJNE A,B,BK
SETB 25H.0
MOV C,25H.0
JC XX
XX:LCALL TIMEOUT
BK:RET
TIMEOUT: X1:LCALL BZ ;时间完成处理程序
LCALL DISPLAY2
CLR 25H.0
JB P1.4, X1
LCALL DELAY
CLR 25H.0 ;清除标志位状态
LJMP DISPLAY1
BZ:CLR P3.7
MOV R7,#250
T2: MOV R6,#124
T3: DJNZ R6,T3
DJNZ R7,T2
- 20 -
河南理工大学本科课程设计报告
SETB P3.7
RET
LOOKATIME:LCALL DISPLAY2
MM: JB P1.4,LOOKATIME ;重新设置时间
MOV C,P1.4
JC MM
LCALL DELAY1
MOV C,P1.4
JC MM
STOP3: MOV C,P1.4
JNC STOP3
LCALL DELAY1
MOV C,P1.4
JNC STOP3
LJMP LOOP
DELAY1: MOV R4,#14H //延时程序1// DL001: MOV R5,#0FFH
DL111: DJNZ R5,DL111
DJNZ R4,DL001
RET
;*********** TIME PROCESS ************** 定时器中断程序
TIME: PUSH ACC //保存现场,进行压栈操作//
PUSH PSW
MOV TH0,#03CH
MOV TL0,#0B0H
DJNZ R2,RET0 ;有效操作判断
MOV R2,#14H
MOV A,20H
CLR C
INC A
CJNE A,#3CH,GO1
MOV 20H,#0 ;重新赋值
MOV 30H,#0
MOV 31H,#0
MOV A,21H
INC A
CJNE A,#3CH,GO2
MOV 21H,#0H
- 21 -
河南理工大学本科课程设计报告
MOV 32H,#0
MOV 33H,#0
MOV A,22H
INC A
CJNE A,#18H,GO3
MOV 22H,#00H
MOV 34H,#0
MOV 35H,#0
AJMP RET0
GO1: MOV 20H,A ;依此转化保留各个显示状态
MOV B,#0AH
DIV AB
MOV 31H,A
MOV 30H,B
AJMP RET0
GO2: MOV 21H,A
MOV B,#0AH
DIV AB
MOV 33H,A
MOV 32H,B
AJMP RET0
GO3: MOV 22H,A
MOV B,#0AH
DIV AB
MOV 35H,A
MOV 34H,B
AJMP RET0
RET0: POP PSW ;//回到中断现场//
POP ACC
RETI
;--DISPLAY PART---//显示子程序//
DISPLAY1:MOV R0,#30H
MOV R3,#0FEH
MOV A,R3
PLAY1: MOV P2,A
MOV A,@R0
MOV DPTR,#DSEG1
MOVC A,@A+DPTR
- 22 -
河南理工大学本科课程设计报告
MOV P0,A
LCALL DL1 ;调用延时
MOV P2,#0FFH
MOV A,R3
RL A
JNB ACC.6,LD1 ;判位并进行下一位操作
INC R0
MOV R3,A
LJMP PLAY1
LD1: RET
DISPLAY2:PUSH ACC ;保护现场
PUSH PSW
MOV R0,#36H
MOV R3,#0FBH
MOV A,R3
PLAY2: MOV P2,A ;轮流选通显示
MOV A,@R0
MOV DPTR,#DSEG1
MOVC A,@A+DPTR
MOV P0,A
LCALL DL1
MOV P2,#0FFH
MOV A,R3
RL A
JNB ACC.6,LD2
INC R0
MOV R3,A
LJMP PLAY2
LD2: POP PSW
POP ACC
RETI
DL1: MOV R7,#02H ;延时程序2
DL: MOV R6,#0200H
DL6: DJNZ R6,$
DJNZ R7,DL
RETI
DSEG1: DB 3FH,06H,5BH,4FH,66H ;//字符转换显示//
DB 6DH,7DH,07H,7FH,6FH END
- 23 -
河南理工大学本科课程设计报告
RP1GND
C2C347p47pX19876U25CRYSTAL19394XTAL1P0.0/AD0383P0.1/AD1372RESPACK-8P0.2/AD21836XTAL2P0.3/AD3351P0.4/AD434P0.5/AD533P0.6/AD6932R3RSTP0.7/AD721P2.0/A810k22P2.1/A923P2.2/A10VCCR42924PSENP2.3/A113025ALEP2.4/A12VCC312610kEAP2.5/A13C127P2.6/A1428P2.7/A1511047pP1.0P3.0/RXD211P1.1P3.1/TXD312P1.2P3.2/INT0413P1.3P3.3/INT1514P1.4P3.4/T0615P1.5P3.5/T1716P1.6P3.6/WR817P1.7P3.7/RDLS1
AT89C51R5SPEAKERGNDR610kR110kR210kGND10k
VCC
- 24 -