微型计算机系统课程设计报告
摘要
本研究以 AT89C51 单片机为核心,研究设计并实现了一款多功能数字时钟系
统的工作原理。使用简单的外围电路进行驱动 8 位共阳极数码管,设计包括软件
程序开发、硬件电路的设计以及系统调试等步骤,硬件部分涉及外部扩展,以及
数码管的显示和扬声器的显示等等,软件方面包括使用汇编语言编写定时器服务
程序,按键操作程序,数码管显示程序等等。通过精确的时间处理实现:
1. 实时时间显示:以数字形式显示当前的时间,提供精确到分钟或秒的时
间信息。
2. 闹钟提醒功能:设定闹钟,以铃声或提示音在预定时间提醒用户。
3.秒表计时显示:设定秒表进行计数功能
关键词:
外部扩展,外设显示,定时器,单片机,汇编语言
1
微型计算机系统课程设计报告
目录
第 1 章 前言
............................................................................................................................................. 3
1.1 课程设计的目的:
................................................................................................................... 3
1.2 数字钟设计需要解决的问题:
............................................................................................... 3
1.3 设计成果:
............................................................................................................................... 3
第 2 章 总体方案设计与分析
................................................................................................................. 4
2.1 系统概述
................................................................................................................................... 4
2.1.1 系统硬件:
...................................................................................................................4
2.1.2 系统软件:
...................................................................................................................4
2.1.3 系统工作原理:
...........................................................................................................5
2.2 系统原理分析
........................................................................................................................... 5
2.2.1 系统硬件结构
...............................................................................................................5
2.2.2 系统软件设计
...............................................................................................................6
第 3 章 硬件功能模块的具体设计与实现
............................................................................................. 7
3.1 数码管模块
............................................................................................................................... 7
3.2 按键模块
................................................................................................................................... 7
3.3 扬声器模块
............................................................................................................................... 8
3.4 AT89C51
.................................................................................................................................... 8
3.5 复位电路
................................................................................................................................... 9
3.6 晶振电路
................................................................................................................................... 9
3.7 外部扩展
................................................................................................................................. 10
第 4 章 软件设计
................................................................................................................................... 11
4.1 定时器中断服务程序设计
..................................................................................................... 11
4.
2
数码管显示程序设计
............................................................................................................. 11
第 5 章 仿真分析
................................................................................................................................... 14
第 6 章 结论与设计总结
....................................................................................................................... 16
参考文献
................................................................................................................................................. 17
附录
......................................................................................................................................................... 18
2
微型计算机系统课程设计报告
第 1 章 前言
1.1 课程设计的目的:
通过多功能数字钟的设计可以进一步熟悉 51 单片机的使用、工作原理及
其汇编语言;使用的 LED 数码管是发光二极管组成的显示屏幕。具有发光效率高、
使用寿命长、以及对室内外环境适应能力强等优点。并广泛用于公交汽车、码头、
商店、学校和银行等公共场合用于信息的发布和广告宣传。自 20 世纪八十年代
开始,LED 数码管的应用领域已经遍布了交通、电信、教育、广告宣传等各方面。
其无论在成本和产生的社会效益等方面都有其独特的优势。所以本设计以
AT89C51 为核心的多功能数字时钟在技术创新、功能多样化、智能化、用户体验
和可持续性方面均有显著的发展。这些进步使得它们不仅满足了基本的时间显示
需求,还在许多方面加强了与用户的互动,提升了生活质量。未来的研究可以继
续深入探索新材料、新技术的应用,以及更广泛的智能连接场景,为用户带来更
加智能和便捷的体验。
1.2 数字钟设计需要解决的问题:
1. 数码管的动态显示 ;
2. AT89C51 单片机内部时钟提供计时信号的处理 ;
3. 按键的功能处理 ;
4. 外扩 ROM 空间。
1.3 设计成果:
设计实现:
1. 时钟的信息的显示
2. 秒表计时显示
3. 扬声器闹钟的提醒
3
微型计算机系统课程设计报告
第 2 章 总体方案设计与分析
2.1 系统概述
本系统基于 AT89C51 系列单片机实现了基于 51 单片机内部时钟信号实现实
时时钟的显示功能,秒表的显示功能,闹钟提醒功能。本设计以 AT89C51 单片机
为核心,由单片机 P0 口控制段选,P2 口控制数码管的位选进行输出,进而控制
LED 数码管的显示功能,由按键控制数码管的输出信息,以及控制蜂鸣器的正常
工作。
图 1:系统总体设计
2.1.1 系统硬件:
系统的硬件电路主要由 51 单片机、数码管驱动芯片、LED 数码管,27128,
按键,扬声器等组成。此外,系统还包括电源模块,复位电路,晶振电路等辅助
电路。
2.1.2 系统软件:
系统的软件程序主要包括初始化、中断,延时,按键、数码管显示等模块。初始
化模块负责对相关硬件进行配置和初始化;主程序设计(包括初始化芯片、定时
器、中断等);各功能子程序设计包括键盘子程序,显示子程序设计、定时程序、
中断服务程序,延时程序等;显示模块负责将计数结果转换为可驱动数码管的信
号;延时模块则用于产生适当的时间延迟,协调各个功能模块的运行节奏。软件
设计力求模块化、高效率、易扩展,充分发挥 51 单片机的计算能力和灵活性。
4
微型计算机系统课程设计报告
5
2.1.3 系统工作原理:
该系统的工作原理如下:上电后,51 单片机先执行初始化程序,对相关硬
件进行配置和初始化。然后进入主循环程序,不断执行计数、显示、延时等功能
模块。;显示模块通过查表计数结果转换为可驱动数码管的信号,并输出到数码
管驱动芯片;延时模块则协调各个功能模块的运行节奏,保证系统能够稳定、高
效地工作。整个过程是自动循环进行的,为用户提供直观、可靠的数字计数与显
示功能。
2.2 系统原理分析
该系统基于 AT89C51 单片机,主要包括按键、扬声器、数码显示器和输入输
出端口,外部扩展组成。下面对该系统的原理进行分析:
2.2.1 系统硬件结构
该系统的硬件结构如下图
图 2:硬件总体布局
系统的硬件主要由以下几部分组成:1.单片机:AT89C5单片机;2.数码显示器:
L
ED
数码管 ; 3.EPROM:27128 ;4.扬声器、按键,复位电路,晶振电路等其他电路 ;
5.输入输出端口:输入输出端口,包括按键输入端口、时钟输入端口等 I/O 接口。
微型计算机系统课程设计报告
2.2.2 系统软件设计
该系统的软件设计主要包括以下步骤:
1.需求分析:明确时钟需要实现的基本功能,例如:时间显示、闹钟提醒、秒
表显示等。确定扩展功能以及设计易用的按键逻辑。
2.功能模块划分:根据需求分析,将整个系统划分为若干个功能模块,如:时
钟模块、闹钟模块、秒表模块、按键处理模块等。确定各模块之间的接口和通
信方式。
3.编写程序框架:设计主程序流程,确定程序的大体结构。编写初始化代码,
包括单片机的时钟系统初始化、外围设备初始化等。
4.模块编程:(1).时钟模块:、时、分、秒调整模块:处于计时器时分秒调整
设置状态时,对应控制模块的三个状态可以实现对计时器的时分秒数值的设置,
并且有按键可以实现对时分秒模块进行设置数值的载入。(2).时、分、秒变量
处理模块:用于计时,根据分频后的时钟每隔一秒使秒变量加一,满六十向分
变量进一,以此类推实现分钟以及小时的进位。(3).按键模块:对按键进行功
能设置。(4).闹钟设置及使能模块:用于设置闹钟的时分秒数值,处于闹钟设
置状态时,对应控制模块的三个 add 按键实现对闹钟的时分秒数值的设置,并
带有可关闭开启闹钟的开关。
5.显示模块:数码管显示模块:对数码管显示信号进行查表寻找等等,编写 LED
显示控制程序,切换时间、秒表,闹钟的显示。
6.编写中断服务程序:根据需要使用定时器中断等中断服务程序,以响应周期性
任务。
7.调试与功能测试:进行全面的功能测试,包括时间显示准确性、闹钟响应、按
键逻辑等。
6
微型计算机系统课程设计报告
第 3 章 硬件功能模块的具体设计与实现
3.1 数码管模块
图 3:8 位共阳极 LED 数码管
数码管的基本原理:数码管是一种能够显示数字和部分宇母的显示器件 ,它由
多个发光二极管组成,可以显示 0-9 的数宇。数码管按照结构可以分为共阳数
码管和共阴数码管两种类型。设计使用共阳数码管的显示原理是通过控制各个
发二极管的通断状态来显示不同的数字 ,而共阴数码管则是通过控制对应的极
性来实现数字的显示。数码管采用 8 位共阳数码管与 I/O 口直接相连的方式,
P0 功能段选 a、b、c、d、e、f、g、dp 使其中部分点亮,P2 功能为位选 1、2、
3、4、5、6、7、8 的一位数码管点亮。其动态显示原理为:显示方式 8 位数
码管共用一组信号线, 8 位数码管轮流显示,1 位数码管显示后延迟 3ms 后关
闭,同一时刻只有 1 位数码管得到显示信号,未得到显示信号的数码管都处于
熄灭状态,因为 8 位数码管的轮流显示速度是非常快的,因为人眼的视觉残留
效应,看起来是 8 位同时显示。
3.2 按键模块
图 4:独立按键
按键的工作原理:当按键按下的时候,从高电平到低电平,当从低电平到高电平
时会产生电流异常抖动。抖动时间一般为 5ms~10ms。一般开发板没有对按键进
行硬件消抖处理,我们需要进行软件消抖(延时)。通过判断 I/O 端口的高低电
平对按键是否按下进行判断。对按键的初始工作完成后进行赋能,每个按键有其
独特的功能,按键对外设显示的状态进行控制。按键 1 控制时间的设置,按键 2
控制时间设置的确认,按键 3 控制时间的加操作,按键 4 控制功能的切换。
7
微型计算机系统课程设计报告
3.3 扬声器模块
图 5:扬声器
扬声器的工作原理:声音的音调是由信号的频率决定。通过单片机发送不同频
率的脉冲信号给蜂鸣器,可以使扬声器发出不同音调声音。不同频率的脉冲信
号就意外着每个脉冲之间必须有着不一样的时差,这可以通过延时或者定时计
数器定时的方式来实现,通过对于单片机的操作,控制输出信号的频率,实现
控制扬声器的声音。
3.4AT89C51
图 6:AT89C51 单片机
AT89C51 单片机是系统的核心控制器,负责执行各种功能程序和协调各个硬
件模块的工作。该系统采用 AT89C51 单片机,它具有丰富的外设资源(I/O 端口、
定时器/计数器、中断系统等),能够满足系统的各种需求。具有以下主要功能
和特点:
1. I/O 口:32 个可编程 I/O 引脚,分成 4 个并行 I/O 端口 (P0, P1, P2, P3),
每个端口具有 8 个引脚。
2.
定时器/计数器: 内置两个 16 位定时器/计数器(Timer 0 和 Timer 1),
可以用于定时和事件计数。
8
微型计算机系统课程设计报告
3.
中断系统:支持多达 5 个中断源,包括外部中断、定时器中断和串行通信
中断,可配置中断优先级。
4.
时钟分频器:可以选择不同的时钟源和分频系数,以调节微控制器的运行
速度。
3.5 复位电路
图 7:复位电路
复位电路在上电的瞬间提供一个与正常工作状态下相反的电平。一般利用电容
电压不能突变的原理,将电容与电阻串联,上电时刻,电容没有充电,两端电压为
零,此时,提供复位脉冲,电源不断的给电容充电,直至电容两端电压为电源电压,
电路进入正常工作状态。
3.6 晶振电路
图 8:晶振电路
本系统采用晶振电路作为时钟源,能够为 51 单片机提供精确稳定的时钟信
号。时钟电路的设计还需要考虑 EMI/RFI 抑制等因素,确保系统能够抗干扰、可
靠运行。晶体振荡器等效成一个电容和一个电阻并联再串联一个电容的二端网络,
这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频
率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个
极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电
容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构
成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的
9
微型计算机系统课程设计报告
参数变化很大,这个振荡器的频率也不会有很大的变化。
3.7 外部扩展
图 9:外部扩展
27128 EPROM(Erasable Programmable Read-Only Memory,擦除是可编程只读
存储器)芯片。它们通常用于存储固件或微代码,可以通过紫外线擦除和重新
编程。外部扩展将存储芯片连接到一个系统或电路中以扩展其存储能力。
使用 27C128 进行外部扩展:1. 地址总线与数据总线:将地址总线连接到控制器
上的相应引脚。将数据总线连接到控制器或处理器上的相应引脚。2. 控制信号
OE (Output Enable):用于控制 EPOM 的输出端口,当 OE 为低电平时,数据输
出有效。控制信号 CE (Chip Enable):用于选择芯片,当 CE 为低电平时,芯
片处于选通状态。
10
微型计算机系统课程设计报告
11
第 4 章 软件设计
4.1 定时器中断服务程序设计
定时器中断服务程序分析:
使用定时器中断 INT0 进行定时 50ms 的时间长度,所以使用定时器 T0 的方
式 1 进行定时,定时的判断次数为 20 次,总时间长度为 1s,判断中断次数是
否达到 20 次,达到 20 次则秒加 1,以此类推。注意要限制时、分、秒的范围
为 24、60、60。定时器的程序设计便完成了。
图 10:时钟计时流程图
图 11:定时器中断服务程序
4.2 数码管显示程序设计
数码管程序设计分析:
判断界面状态,如果界面状态处于秒表界面,则将秒表的数据输入到 P0 端口,
判断秒表界面状态之后判断是否处于闹钟界面,处于闹钟界面则将闹钟数据输
入信息输入 P0 端口,最后则判断时钟界面,将时钟信息输入 P0 端口则完成数
码管显示程序的设计。
微型计算机系统课程设计报告
12
图 12:数码管程序流程图
图 13:数码管显示程序
微型计算机系统课程设计报告
13
微型计算机系统课程设计报告
第 5 章 仿真分析
图 14:闹钟显示
图 15:秒表计时显示
图 16:时钟显示
仿真结果分析:
具备显示的功能:1.实时时钟 2.秒表计时 3.闹钟提醒
1.界面切换分析:在 27H 存储空间设置状态标志,以 P3.3 连接的按键进行状态
的增加,在数码管显示中进行对状态标志(DIFF)的判断,将对应状态的输入数
14
微型计算机系统课程设计报告
据送入 P0 端口,打开 P2 端口,实现数码管的显示页面的切换。
2.定时器定时分析:使用定时器 T0 实现定时 50ms,定时次数 20 次达到 1s,判
断定时次数是否达到 20 次,达到则“秒加 1”,没有达到 20 次则返回,判断
秒是否达到 60,达到则“分加 1”,没有达到则返回,判断分是否达到 60,达
到则“时加 1”,没有达到则返回,判断时是否达到 24,达到则“时赋值 0”,
没有达到则返回.
3.闹钟提醒分析:即扬声器发声分析,设置闹钟时间(时、分),判断实时的时
钟信息与闹钟时间是否相等,相等而且处于闹钟界面时则给扬声器输入一定频
率的信号,使其发出闹钟声音。通过按键操作界面的切换便可以关闭闹钟。
4.按键操作分析:P3.0-设置时钟的时间,P3.1-确定更改的时钟时间,P3.2-对
时钟的时间进行加操作。P3.3-切换显示界面,P1.6-对闹钟的分进行加操作,
P1.7-对闹钟的分进行加操作。P3.0 按下的次数对应 不设置,设置时,设置分,
设置秒,在 4 个状态中循环切换,配合 P3.2 将时、分、秒进行加操作。
15
微型计算机系统课程设计报告
16
第 6 章 结论与设计总结
课程设计将理论知识应用于实践,实现了
(1)时间显示: 24 小时的准确时间显示。(2)闹钟功能: 设置闹钟,并提供闹钟
提醒。(3)秒表: 提供秒表功能,用于定时任务或运动计时。使用
LED 数码管
屏幕,确保在各类光线条件下清晰可见。多功能数字钟不仅在功能上满足了用
户的多样化需求,而且在硬件设计和软件实现方面都做到了精益求精,提供了
一款实用、美观且高效的多功能数字时钟。该多功能数字钟适用于家庭、办公、
教育等多个场景,有望在现实应用中获得广泛认可。尤其在智能家居的兴起背
景下,这种集成多功能的数字时钟将为用户带来极大的便利,具备显著的社会
和经济价值。本项目有进一步优化和扩展的潜力:可以通过引入无线通信模块,
实现设备与智能手机、智能家居系统的互联互通;进一步改进电源管理,提高
设备的续航能力;优化用户界面和交互体验,使设备更加智能和易用。通过以
上研究和开发工作,多功能数字钟不仅展示了其在时间管理和环境监测上的应
用潜力,也为未来的进一步研究和创新提供了坚实的基础。持续优化设计,探
索新功能和技术,以期带来更优质的使用体验和更广泛的应用价值。
微型计算机系统课程设计报告
参考文献
[1] 胡汉才.单片机原理及其接口技术(第4版).清华大学出版社.2018
[2] 张毅刚.单片机原理及应用:第四版.北京:高等教育出版社,2021.
附录
仿真原理图
图 17:仿真原理图
仿真程序源代码:
ORG 0000H
JMP MAIN
ORG 000BH
JMP TM0
NAOZHONGXINHAO BIT P3.7;闹钟显示-蜂鸣器按键
NZ_CHANGES BIT P1.7;设置闹钟时按键
NZ_CHANGEF BIT P1.6;设置闹钟分按键
SETUP BIT P3.0;设置时间按键
OK BIT P3.1;确定时间按键
UP BIT P3.2;按键加操作
CHANGE BIT P3.3;功能按键切换功能
DIFF EQU 27H;功能标志 0-时钟,1-秒表,2-闹钟
18
微型计算机系统课程设计报告
FLAG EQU 25H;时钟设置标志 0 不设置,1 设置时,2 设置分,3 设置秒
COUNT EQU 26H;秒表计数 0-255
;主函数
ORG 0030H
MAIN:
MOV DPTR,#TABLE;表地址
MOV P2,#0;初始数码管全没选中
MOV R2,#55;初始秒
MOV R3,#59;初始分
MOV R4,#23;初始时
MOV R5,#0;50ms-计数次数,与 20 相比较
MOV R6,#0;闹钟时
MOV R7,#0;闹钟分
MOV TMOD,#01H;定时器 0 工作在方式 1,65536
MOV TH0,#3CH;定时 50ms,高八位
MOV TL0,#0B0H;低八位
SETB EA;开总中断
SETB ET0;定时器 0 中断打开
SETB TR0;计数开始
LOOP:
LCALL KEYDISPLAY;调用按键函数
LCALL SEGDISPLAY;调用数码管函数
LCALL NAOZHONGDISPLAY;闹钟
LCALL KONGZHI_GONGNENG;控制功能
19
微型计算机系统课程设计报告
SJMP LOOP;重复显示刷新
;中断服务程序
ORG 0060H
TM0:
MOV TH0,#3CH;定时 50ms,高八位
MOV TL0,#0B0H;低八位
INC R5
CJNE R5,#20,RETF;没有达到 1s,返回中断
MOV R5,#0;达到 1 秒
INC R2
MOV A,DIFF;
CJNE A,#1,S6;
INC COUNT;DIFF 与 1 相比较,相等则开始计数
S6:
CJNE R2,#60,RETF;没有达到 60 秒,返回中断
MOV R2,#0;达到 60 秒
INC R3
CJNE R3,#60,RETF;没有达到 60 分钟,返回中断
MOV R3,#0;达到 60 分钟
INC R4
CJNE R4,#24,RETF;没有达到 24 小时,返回中断
MOV R4,#0
MOV R3,#0
MOV R2,#0
20
微型计算机系统课程设计报告
21
RETF: RETI
ORG 90H
;数码管显示函数
SEGDISPLAY:;判断 DIFF 是 0-时钟
1-秒表
2-闹钟
MOV A,DIFF
CJNE A,#1,XX1
MOV A,#0
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0;打开第一位数码管
LCALL DEALY
CLR P2.0;关闭第一位数码管
SJMP SEG2
XX1:
MOV A,DIFF
CJNE A,#2,XXX1
MOV A,R6
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0;打开第一位数码管
LCALL DEALY
CLR P2.0;关闭第一位数码管
微型计算机系统课程设计报告
SJMP SEG2
XXX1:
MOV A,R4;时送入 A
MOV B,#10
DIV AB;十位在 A,个位在 B
MOVC A,@A+DPTR;查表
MOV P0,A;时送入 P0
SETB P2.0;打开第一位数码管
LCALL DEALY
CLR P2.0;关闭第一位数码管
SEG2:
;时的个位
MOV A,DIFF
CJNE A,#1,XX2
MOV A,#0
MOVC A,@A+DPTR
MOV P0,A
SETB P2.1;打开第二位数码管
LCALL DEALY
CLR P2.1;关闭第二位数码管
SJMP SEG3
XX2:
MOV A,DIFF
CJNE A,#2,XXX2
22
微型计算机系统课程设计报告
MOV A,R6
MOV B,#10
DIV AB
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
SETB P2.1;打开第二位数码管
LCALL DEALY
CLR P2.1;关闭第二位数码管
SJMP SEG3
XXX2:
MOV A,R4;时送入 A
MOV B,#10
DIV AB;十位在 A,个位在 B
MOV A,B;个位送入 A
MOVC A,@A+DPTR;查表
MOV P0,A;个位送入 P0
SETB P2.1;打开第二位数码管
LCALL DEALY
CLR P2.1;关闭第二位数码管
SEG3:
;横杠
MOV A,DIFF
CJNE A,#1,XX3
23
微型计算机系统课程设计报告
MOV A,#0
MOVC A,@A+DPTR
MOV P0,A
SETB P2.2;打开第三位数码管
LCALL DEALY
CLR P2.2;关闭第三位数码管
SJMP SEG4
XX3:
MOV A,#10111111B;分割号
MOV P0,A;送入 A
SETB P2.2;打开第三位数码管
LCALL DEALY
CLR P2.2;关闭第三位数码管
SEG4:
;分的十位
MOV A,DIFF
CJNE A,#1,XX4
MOV A,#0
MOVC A,@A+DPTR
MOV P0,A
SETB P2.3;打开第四位数码管
LCALL DEALY
CLR P2.3;关闭第四位数码管
SJMP SEG5
24
微型计算机系统课程设计报告
XX4:
MOV A,DIFF
CJNE A,#2,XXX4
MOV A,R7
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P0,A
SETB P2.3;打开第四位数码管
LCALL DEALY
CLR P2.3;关闭第四位数码管
SJMP SEG5
XXX4:
MOV A,R3;将分送入 A
MOV B,#10
DIV AB;十位在 A,个位在 B
MOVC A,@A+DPTR;查表
MOV P0,A;分的十位送入 A
SETB P2.3;打开第四位数码管
LCALL DEALY
CLR P2.3;关闭第四位数码管
SEG5:
;分的个位
MOV A,DIFF
25
微型计算机系统课程设计报告
CJNE A,#1,XX5
MOV A,#0
MOVC A,@A+DPTR
MOV P0,A
SETB P2.4;打开第五位数码管
LCALL DEALY
CLR P2.4;关闭第五位数码管
SJMP SEG6
XX5:
MOV A,DIFF
CJNE A,#2,XXX5
MOV A,R7
MOV B,#10
DIV AB
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
SETB P2.4;打开第五位数码管
LCALL DEALY
CLR P2.4;关闭第五位数码管
SJMP SEG6
XXX5:
MOV A,R3;将分送入 A
MOV B,#10
26
微型计算机系统课程设计报告
DIV AB;十位在 A,个位在 B
MOV A,B;个位送入 A
MOVC A,@A+DPTR;查表
MOV P0,A;各位送入 P0
SETB P2.4;打开第五位数码管
LCALL DEALY
CLR P2.4;关闭第五位数码管
SEG6:
;横杠
MOV A,DIFF
CJNE A,#1,XX6
MOV A,COUNT
MOV B,#100
DIV AB
MOVC A,@A+DPTR
MOV P0,A
SETB P2.5;打开第六位数码管
LCALL DEALY
CLR P2.5;关闭第六位数码管
SJMP SEG7
XX6:
MOV A,#10111111B;分割
MOV P0,A;送入 A
SETB P2.5;打开第六位数码管
27
微型计算机系统课程设计报告
LCALL DEALY
CLR P2.5;关闭第六位数码管
SEG7:
;秒的十位
MOV A,DIFF
CJNE A,#1,XX7
MOV A,B
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P0,A
SETB P2.6;打开第七位数码管
LCALL DEALY
CLR P2.6;关闭第七位数码管
SJMP SEG8
XX7:
MOV A,DIFF
CJNE A,#2,XXX7
MOV A,#10111111B;分割
MOV P0,A;送入 A
SETB P2.6;打开第七位数码管
LCALL DEALY
CLR P2.6;关闭第七位数码管
SJMP SEG8
28
微型计算机系统课程设计报告
XXX7:
MOV A,R2;将秒送入 A
MOV B,#10
DIV AB;十位在 A,个位在 B
MOVC A,@A+DPTR;查表
MOV P0,A;秒的十位送入 A
SETB P2.6;打开第七位数码管
LCALL DEALY
CLR P2.6;关闭第七位数码管
SEG8:
;秒的个位
MOV A,DIFF
CJNE A,#1,XX8
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
SETB P2.7;打开第八位数码管
LCALL DEALY
CLR P2.7;关闭第八位数码管
SJMP XX9
XX8:
MOV A,DIFF
CJNE A,#2,XXX8
MOV A,#10111111B;分割
29
微型计算机系统课程设计报告
MOV P0,A;送入 A
SETB P2.7;打开第七位数码管
LCALL DEALY
CLR P2.7;关闭第七位数码管
SJMP XX9
XXX8:
MOV A,B;秒的个位送入 A
MOVC A,@A+DPTR;查表
MOV P0,A;秒的个位送入 P0
SETB P2.7;打开第八位数码管
LCALL DEALY
CLR P2.7;关闭第八位数码管
XX9:
JB NZ_CHANGES,XX10
JNB NZ_CHANGES,$
INC R6
MOV A,R6
CJNE A,#24,EN
MOV R6,#0
XX10:
JB NZ_CHANGEF,EN
JNB NZ_CHANGEF,$
INC R7
MOV A,R7
30
微型计算机系统课程设计报告
CJNE A,#60,EN
MOV R7,#0
SJMP EN
KEYDISPLAY:
SHEZHI:
JB SETUP,K0;1-没有按下跳转 K0,0-按下
JNB SETUP,$;等待按键释放,0 跳转-一直等待
INC FLAG
MOV A,FLAG
CJNE A,#4,EN
MOV FLAG,#1
SJMP EN
K0:
JB OK,K1;0 按下,1 没有按下跳转 K1
JNB OK,$;OK=1,继续向下进行
MOV FLAG,#0;退出设置
SJMP EN
K1:
MOV A,FLAG;
JZ EN;A=0 跳转 SR
JB UP,EN;UP=1 跳转 SR,UP=0 按下
JNB UP,$
CJNE A,#1,K2;如果 FLAG!=1,跳转 K2,如果 FLAG=1 继续向下进行
INC R4
31
微型计算机系统课程设计报告
CJNE R4,#24,EN;达到 24 时清零
MOV R4,#0;
SJMP EN;
K2:
MOV A,FLAG;
CJNE A,#2,K3;如果 FLAG!=2,跳转 K3,如果 FLAG=2 继续向下进行
INC R3;
CJNE R3,#60,EN
MOV R3,#0;
SJMP EN
K3:
MOV A,FLAG;
CJNE A,#3,EN
INC R2
CJNE R2,#60,EN
MOV R2,#0;
SJMP EN
;控制功能
KONGZHI_GONGNENG:
JB CHANGE,EN
JNB CHANGE,$
INC DIFF
MOV A,DIFF
CJNE A,#3,EN
32
微型计算机系统课程设计报告
MOV DIFF,#0
EN:SJMP SR
;表格
TABLE:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;0-9 的共阳数码管的段码值
DEALY:
MOV R0,#2
F1:MOV R1,#255
F2:DJNZ R1,F2
DJNZ R0,F2
SJMP SR
;蜂鸣器
NAOZHONGDISPLAY:
MOV A,DIFF
CJNE A,#2,SR
SJMP AA
AA:
MOV A,R6
MOV 28H,R4
CJNE A,28H,SR;时比较
MOV A,R7
MOV 29H,R3
CJNE A,29H,SR;分比较
CPL NAOZHONGXINHAO
33
微型计算机系统课程设计报告
SR:
RET
END
34