毕业设计78单片机(简易电子钟设)

更新时间:2024-01-25 09:46:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

简易电子钟的设计

前 言

二十多年来,电子计算机技术已广泛应用于测试领域中。电子计算机对人类社会的进步和发展有着阶层的飞跃,它是现代化社会的象征,是人们工作、学习、生活不可缺少的。在近几年发展起来的智能仪器,无论是在测量的灵敏度、准确度、可靠性、功能等方面,还是在解决测试技术问题的深度及广度方面都有了巨大的发展,它以一种崭新的面貌展现在人们的面前。随着大规模集成电路及计算机技术的迅速发展,智能仪器将会有更广阔的应用前景。而单片机以其高性能、高速度、体积小、价格低廉、稳定可靠而得以在智能仪器中被广泛的应用。

本次设计是用51系列单片机中的AT89S52制作简易电子钟。电子钟是智能化仪器仪表的一种,它可广泛应用于工业、农业、日常生活等领域。它以微控制器为核心,与传统钟表相比较,它具有高精度、高可靠性、操作方便、价格便宜、智能化等特点,是钟表发展的新方向,具有一定的实用价值。本次采用的AT89S52 是一种低功耗,高性能的CMOS 8位微型计算机,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。正因为它有这么多特点,所以在实现本次设计的简易电子钟系统中不需外部资源扩展。

简易电子钟能正确反映实际时间值,能完成时、分、秒的显示调整。本次简易电子钟课程设计采用ASM51软件完成用汇编语言编写。通过本次设计能让我们对专业的电子画图软件(Protel)、51系列单片机的工作原理、对汇编语言编写程序有更深刻的了解。

本次设计由于时间仓促以及设计者水平有限,难免存在着一些不足和错漏之处,诚肯和大家一起研究探讨,在此特别感谢老师提出的宝贵意见和一直以来的耐心指导。

2007.12.05

编 者:戴 建

I

简易电子钟的设计

目 录

第1章 简易电子钟设计方案的选择和论证........................................................1

1.1 采用实时时钟芯片...................................................................................................................1 1.2 键盘与显示选择发案.................................................................................................................2

第2章 单元电路的设计.........................................................................................3

2.1 电源的设计...............................................................................................................................3 2.2 时钟和复位电路.......................................................................................................................3 2.2.1 时钟电路................................................................................................................................3 2.2.2 复位电路................................................................................................................................4 2.3 显示接口电路...........................................................................................................................4 2.4 键盘接口电路的设计...............................................................................................................5 2.5 主电路原理图、PCB图...........................................................................................................6 2.5.1 主电路原理图........................................................................................................................6 2.5.2 电源电路原理图....................................................................................................................7 2.5.3 主电路PCB电路图...............................................................................................................7 2.5.4 下载线电路PCB板图...........................................................................................................8

第3章 硬件资源、存储器单元地址分配说明..............................................................8

3.1 硬件资源说明...........................................................................................................................8 3.2 数据存储器单元地址分配.......................................................................................................8 3.3 程序存储器单元地址分配.......................................................................................................9

第4章 程序设计思路与程序流程图.....................................................................9

4.1 程序设计思路.........................................................................................................................10 4.2 监控程序流程图.....................................................................................................................10 4.3 “P.”点显示子程序流程图.......................................................................................................11 4.4 显示子程序流程图.................................................................................................................11 4.5 键盘扫描子程序流程图.........................................................................................................11 4.6 时间设置子程序流程图.........................................................................................................12 4.7 中断自动计时程序流程图.....................................................................................................13 设计体会..........................................................................................................................................14 元器件清单......................................................................................................................................15 参考文献..........................................................................................................................................15 附录..................................................................................................................................................................16

附录A 程序清单...........................................................................................................................................16

附录B 简易电子钟操作说明........................................................................................................24

简易电子钟的设计

第1章 简易电子钟设计方案的选择和论证

本次简易电子钟系统功能简单,用单片机的最小系统就能得以实现。而单片机的最小系统设计中实际上最重要的就是对键盘/显示器接口电路的设计,由于系统功能不同所以要求就不同,接口设计也就不同。对一个键盘/显示器接口设计应从整个系统出发,综合考虑软、硬件特点。下面是本人在设计前对各种设计方案的考虑:

1.1 采用实时时钟芯片

利用各生产厂家生产的一系列实时时钟芯片,如DS1302、DS1287、DS12887等,这引起实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时器功能,计时数据每秒自动更新一次,不需程序干预。单片机可通过查询或中断方式读取计时数据进行显示,因而计时时不占用CPU的时间,程序简单。此外实时时钟芯片带有锂电池做后备电源,具备京剧不停止的计时功能。由于用实时时钟芯片功能完善,精度高,软件程序设计简单,因此在工业实时测控系统中被多采用。

方案一: 利用8051芯片I/O口构成键盘/显示接口电路

因此次简易电子钟设计系统功能单一,要用到8051芯片的I/O端口较少,所以可以直接用8051芯片的P0口、P1口、P2口以及P3口来构成键盘、显示的输入输出端口。如图1所示,采用动态显示, AT89C52的P0口和P2口外接由LED数码管(LED5~LED0)构成的显示器,用P0口作LED的段码

输出口,P2口作LED数码管的位控输出线,P1口外接四个按键A、B、C、D构成键盘电路。

方案二: 采用8155芯片扩展键盘 /显示器接口电路

Intel公司研制的8155不仅具有两个8位的I/O端口(A口和B口)和一个6位的I/O端口(C口),而且还可以提供256B的静态RAM存储器和一个14 位的定时/计数器,它和单片机的接口非常简单。此方案(如图2所示)对于I/O的资源比较紧张的电路合适,数据线 控制线单片机经8155扩展后多了

22个I/O口,且这些I/O具有寄存器功能,只有新的数据才能将其替换,跟P0不同,所以还可以用来跟其它类型的芯片会传送数据,但是其编程比较繁琐,键盘和显示程序得重新编写,对于智能化应用非常广的今天,这些可以交给专用键盘显示芯片完成。

湖南工学院 电气0502 戴建 401050242

1

简易电子钟的设计

方案三: 采用8279芯片扩展键盘/显示器接口电路

8279是Intel公司生产的专用的可编程键盘、显示器接口芯片,键盘输入时,它提供自动扫描,能与按键或传感器组成的矩阵相连,接收输入信息,它能自动消除开关抖动并能对多键同时按下提供保护。显示显示输出时,它有一个16×8位显示RAM,其内容通过自动扫描,可由8或16位LED数码管显示。

这样可以大大节省CPU对键盘、显示器的操作时间,从而减轻了CPU的负担,而且显示稳定、程序简单,不会出现误动作。如图3所示,此方案对单片机的口线利用较少,对于以后我们进行其它的扩展留了很大的空间,大大减少了我们为键盘按键的前后消抖编程的时间,缩短了开发时间,由它构成的标准键盘、显示接口电路在单片机应用系统中使用越来越广泛。

1.2键盘与显示选择方案 方案一:独立式按键/LED动态显示

独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独站用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。

独立式按键电路配制灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此在按键多较多时,I/O口线浪费较大时,不宜采用。

动态显示方式比较节省I/O口,硬件电路较静态显示方式简单,但其亮度不如静态显示方式,而且显示位数较多时,CPU要依次扫描,占用CPU较多的时间。

方案二:矩阵式按键/LED静态显示

矩阵式(又称行列式)键盘。它由行线和列线组成,按键位于行、列线的交叉点上。显然,在按键数量较多时,矩阵式键盘较之按键式键盘要节省很多I/O口。但需要编程控制,所以适用于按键较多的场合。

采用静态显示,显示亮度有保证,但硬件开销大,电路复杂,信息刷新速度慢,比较适用于按键较多的场合。

综上所述,再根据设计任务书的要求,我们采用1.1的方案一和1.2的方案一利用8051芯片I/O口构成键盘/显示接口电路,该方案不仅能完成简易电子钟的功能,还能减少外部硬件资源,使电路简单明了,所以我们采用此方案。

湖南工学院 电气0502 戴建 401050242 2

简易电子钟的设计

第2章 单元电路的设计

2.1 电源的设计

常用小功率直流稳压电源电路由电源变压器、整流电路、滤波电路、稳压电路等四部分组成,如图4所示。

交流电源变压器整流电路滤波电路稳压电路直流输出图4 直流稳压电源基本电路框图

稳压电路根据调整元件类型可分为电子管稳压电路、三极管稳压电路、可控硅稳压电路,集成稳压电路等。根据调整元件与向载连接方法,可分为并联

型和串联型。根据调整元件工作状态不同,可分为线性和开关稳压电路。

作为小功率的稳压电源以三端式串联型的应用最为普遍,三端式集成稳压式,它具有体积小,外围元件少、性能稳定可靠、使用调整方便和价廉等优点,也因此获得广泛使用。三端式是指稳压电路仅有输入、输出、接地三个接线端子。有固定式和可调式两种类型,此外又分为正或负电压类型 。W7800系列为三端固定正电压输出集成稳压器;W7900系列为三端固定负电压输出集成稳压器。型号中最后两位数表示输出电压的稳定值,有5V、6V、9V、12V、18V、和24V。

在此次设计中,我们没有要求做直流电源,在此只做理论上的分析。电源电路的总设计图如图5所示:

图5 直流稳压电源电路图

2.2 时钟和复位电路

2.2.1 时钟电路

时钟信号通常由两种方式产生:一是内部振荡方式,二是 时钟电路原理图如图6所示,在单片机内部有一个高增益

湖南工学院 电气0502 戴建 401050242

3

外部时钟方式。

简易电子钟的设计

反相放大器,只要在单片机的XTAL1和XTAL2引脚外接晶体振荡器就构成了自激振荡器,并在单片机内部产生时钟脉冲信号。电容器C1和C2的作用是稳定频率和快速起振。

外部时钟方式是把外部已有的时钟信号引入到单片机内。此方式常用于多片单片机同时工作,以便于各单片机的同步。一般要求外部信号高电平的持续时间大于20ns,且为频率低于12MHz的方波。 2.2.2 复位电路

复位操作有两种基本形式:一种是上电复位,另一种是按键复位。 复位电路原理图如图7所示,上电复位要求接通电源后,单片机自动实现复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降ERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。

上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作。

所以本设计选用第二种方案,即上电复位与按键复位均有效的复位电路。

2.3 显示接口电路

单片机应用系统最常用的显示器是LED(发光二极管显示器)、LED(液晶显示器)。这两种显示器可显示数字、字符及系统的状态。它们的驱动电路简单、易于实现且价格低廉,因此,得到了广泛应用。本次设计只要显示6位数字,

不需显示图形或字符,因而采用七段数码管做显示器。LED显示器有共阴极与共阳极两种结构,如图8所示。

共阴极LED显示块的发光二极管阴极并接,如图中(a)所示,当某个发光二极管的阳极为高电平时,发光二极管点亮;共阳极LED显示块的发光二极管则阳极并接,如图中(b)所示, 当某个发光二极管的阴极为低电平时,发光二极管点亮。

通常的七段LED显示器块中有八个发光二极管,也有人叫做八段显示器,其中七个发

湖南工学院 电气0502 戴建 401050242

4

简易电子钟的设计

光二极管构成七笔字形“8”,一个发光二极管构成小数点。

七段显示块与单片机接口非常容易。只要将一个8位并行输出口与显示块的发光二极管引脚相连即可。8位并行输出口输出不同的字节数据即可获得不同的数字或字符。通常将控制发光二极度管的8位字节数据称为段选码。

LED显示工作方式可分为静态显示和动态显示。在静态显示方式下,共阴极应固定接地,共阳极应固定接高电平。我们采用的是利用8051芯片I/O口构成键盘/显示接口电路,为简化电路,降低成本,显示将采用动态显示。在动态显示中将所有相同位的段控线并联在一起,由一个I/O口线控制,8段由8个I/O口控制,而共阴极点或共阳极点分别由相应的I/O口线控制。LED动态显示电路只需要两个8位I/O口。其中一个8位I/O口控制段控码,另一个8位I/O口控制位选。由于所有段控码都由一个8位I/O控制,因此,在同一瞬间,6只LED都会显示相同的字符。要想每位显示不同的字符,必须采用扫描显示方式。即在每一瞬间只使某一位显示相应字符。在此瞬间,段选控制I/O口输出相应字符段选码,位选控制I/O口在该显示位送入选通电平(共阴极送低电平,阳极送高电平)以保证该位显示相应字符。如此循环,使每位显示该位应显示字符,并保持延时一段时间,以造成视觉暂留效果。

2.4 键盘接口电路的设计

由若干个按键组成的键盘,其电路结构可分为独立式键盘和矩阵式键盘两种。 独立式键盘每个键单独占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上的状态,如图9所示。

矩阵式键盘按键排列为行列式矩阵结构,也称行列式键盘结构。4行4列共16个键,只占用8根I/O口线,如图10矩阵式按键电路所示,故键数目较多时,可节省口线。但这种结构的软件编程较繁。

键盘的工作方式可分为编程控制方式和中断控制方式。

CPU在一个工作周期内,利用完成其他任务的空余时间,调用键盘扫描子程序,经程序查询,若无键操作,则返回;若有键操作,则进而判断是哪个键,并执行相应的键处理程序。这种方式为编程扫描方式。单片机在正常应用过程中,并不会经常进行键操作,因而编程控制方式使CPU经常处于空查询状态。在CPU工作任务十分繁重的情况下,为提高CPU的效率,可采用中断控制方式。只要有键按下,便向CPU申请中断,CPU响应中断后,在中断服务程序中进行键盘扫描、

湖南工学院 电气0502 戴建 401050242

5

简易电子钟的设计

查键值与键处理等工作。

我们此次设计只有4个按键,因此采用独立式键盘。

2.5 主电路原理图、PCB图

系统的设计方案以及各电路部分确定以后,为了制作电路板,我们必须用专业软件画出电路原理图,再制PCB板图。 2.5.1 主电路原理图

主电路原理图如图11所示:

图11 主电路原理图

湖南工学院 电气0502 戴建 401050242

6

简易电子钟的设计

2.5.2 电源电路原理图

电源电路原理图如图12所示:

图12 直流稳压电源电路图

2.5.3 主电路PCB电路图

设计PCB主电路图如图13所示:

图13 PCB主电路图

湖南工学院 电气0502 戴建 401050242 7

简易电子钟的设计

2.5.4 下载线电路PCB板图

下载线电路PCB板图如图14所示。

图14

第3章 硬件资源、存储器单元地址分配说明

3.1 硬件资源说明

P0口接数码管段控线驱动芯片74LS244的输入端口; P2口接数码管位控线驱动芯片74LS244的输入端口; P1口接4个按键(P1.0~P1.3对应接A、B、C、D键); 定时器T0工作在定时方式1; 中断源为定时器中断T0

3.2 数据存储器单元地址分配

LED6 EQU 7DH ;时的十位显示缓冲区 LED5 EQU 7CH ;时的个位显示缓冲区 LED4 EQU 7BH ;分的十位显示缓冲区 LED3 EQU 7AH ;分的个位显示缓冲区 LED2 EQU 79H ;秒的十位显示缓冲区 LED1 EQU 78H ;秒的个位显示缓冲区

湖南工学院 电气0502 戴建 401050242

8

简易电子钟的设计

3.3 程序存储器单元地址分配

内部资源情况

主程序----- 0068H--0190H 中断子程序-------0414H--060EH 键扫子程序-------0191H--0410H 显示子程序-------0645H--0686H 显示处理子程序---0611H--0641H

RAM分区:37H时值的暂存单元,36H分值的暂存单元,35H秒值的暂存单元 78H,7AH,7CH, 分别为秒.分.时个位的显示缓冲区. 79H,7BH,7DH, 分别为秒.分.时十位的显示缓冲区.

第4章 程序设计思路与程序流程图

4.1 程序设计思路

简易电子钟的运行主要是利用单片机定时/计数器的工作和中断服务的作用完成计时功能的。首先时钟电路产生单片机工作时所需要的时钟信号,这是单片机能够正常工作的前提,而单片机有无定时的基础以及定多长的时间,这些还需要我们人为的确定。钟表的时钟要运行,首先要有“秒”的计时,因为单片机内部是没有规定的“秒”的概念。同时它工作在不同的工作方式时,它的计数初值也是不同的。这就要我们人为首先计算出计数的初值了,这就可以实现所谓的定时了。如果单片机的定时时间到了的话,那么单片机会自动地产生中断使程序转向中断服务程序执行,中断服务程序执行完了就会返回原程序,等待下一次定时时间的到来再产生中断。在此基础上,单片机就会按照人为设定的程序执行下去。使单片机能计算其它时间量。

当然,单片机如果要执行多种不同的计时功能的话,还需要选择多种不同的工作方式,这样才不会使单片机产生混乱。因为不同的计时功能它的基本计时单位是不同的。我们知道,时钟的基本计时单位是秒,而秒表的基本计时单位却是毫秒了,因而我们把定时器的初始时间设计为50ms,将其乘以20便可得到我们的时间秒单位。

湖南工学院 电气0502 戴建 401050242 9

简易电子钟的设计

4.2 监控程序流程图

监控程序流程图如图14:

开始子程序入口堆栈,PSW.RAM,定时器,中断初始化现场保护调“P.”显示子程序“P.”字型序列号送显示缓冲区调键扫描子程序调显示子程序N是“A”键Y恢复现场显示“00.00.00”返回开定时器、中断 图15 “P.”显示调键扫描子程序子程序流程图N是“A”键Y关定时器调键扫描子程序调时间设置子程序N是“A”键Y图14 监控程序流程图

4.3 “P.”点显示子程序流程图

“P.”点显示子程序流程图如图15:

湖南工学院 电气0502 戴建 401050242

10

简易电子钟的设计

4.4 显示子程序流程图

显示子程序流程图如图16:

4.5 键盘扫描子程序流程图

键盘扫描子程序流程图如图17:

现场保护据显示缓冲区字型序列号查表得字段码送字段码到P0口送位控码到P2口延时2毫秒改变字段码序列改变位控码N扫描达6次Y现场恢复返回图16 显示子程序流程图

湖南工学院子程序入口现场保护有键按下N调显示子程序Y两次调用显示子程序有键按下NY求取键号N调显示子程序键被释放Y恢复现场返回图17 键盘扫描子程序流程图0502 戴建 401050242

11

电气简易电子钟的设计

4.6 时间设置子程序流程图

时间设置子程序流程图如图18:

保护现场是“B”键NY时单元个位加1是“C”键NYN”键N十位等于2Y分单元个位加1是“DY个位等于10NN秒单元个位加1个位等于4N等于10YYY个位清0个位清0个位清0等于10NY时单元十位加1十位清0分单元十位加1个位清0等于6N秒单元十位加1Y等于6N十位清0Y十位清0调显示子程序恢复现场返回图18 时间设置子程序

湖南工学院 电气0502 戴建 401050242

12

简易电子钟的设计

中断自动计时程序流程图

中断自动计时程序流程图如图19:

中断入口保护现场①分加1重置定时器初值60分到N循环次数加1Y分单元清0循环了8 次N②Y时加1循环次数置024小时到N秒加1Y时单元清060秒到N②②Y恢复现场秒单元清0①返回图19 中断自动计时子程序流程图湖南工学院 电气0502 戴建 401050242 13

4.7

简易电子钟的设计

设计体会

在测试简易电子钟过程中,发现存在以下问题:简易电子钟计时时间比实际时间慢,经过分析产生问题的主要原因有以下几点:

①对一秒钟产生的基准是:对定时器T0定时50ms,每中断一次,判断是否中断满20次,是就产生一秒的基准时间。单片机执行中断的时间是很准确的,但是在中断程序中,中断响应时间为3到8个机器周期。这是产生误差的主要原因。

②硬件产生的误差,我们的基本时钟是由外部提供的12MHZ的晶振,如晶振的精度不高,也将产生的误差。

③人为误差,本次测试是用简易电子钟秒表和电脑时钟做比较:首先把电脑时钟打开,然后当电脑电钟到零秒时,马上按下 不可能完全消除的。

为了能尽量减小简易电子钟与实际时间的误差,我们将定时器的初始值人为调大,以弥补响应中断时的3至8个机器周期时间,至于人为误差,我们是不可避免的。

经过一个多月的努力奋战,我终于完成了简易电子钟的课程设计,在设计过程中,得到指导老师桂友超老师的耐心指导与热情帮助,并提出了许多宝贵的意见,以及同组成员的努力配合,在此表示衷心的感谢。

在硬件电路制作阶段,我们到图书馆、网上查阅各种资料,不断在电脑上操作专业软件,使我们在理论分析设计和动手操作能力等各方面得到了极大提高。我们通过对设计任务书的具体要求分析思考,再加上以前在学校进行的各种相关实践和实习积累的经验,首先出色的完成了硬件电路板的制作,虽然在初次制板时因不细心、不熟习制作流程而导致第一块电路板报废,但总结了经验给后面制板的同学提了个醒。硬件电路板制好后,在利用ASM51软件编写程序调试时,遇到了不少困难,这使我们学会了耐心分析问题,并进一步锻炼自己去攻破难题的能力。我们除了完成简易电子钟的设计任务外,还根据各种要求进行进一步的程序设计,这使我们比其他同学学到了更多的知识,这更增加了我们以后参加工作能出色完成任务的信心。

这次课程设计整体来说是成功的,但我们也发现了自己许多错漏和不足之处。譬如,最简单的程序没写好就想着写更复杂的程序,做事还是缺乏耐性和细心,当有时遇到问题时,总觉得无从下手,对于课本上的知识不能很好的组织起来。在编写各功能程序时,特别是后来增添的比较复杂的程序,如在编写年、月、日和秒表功能程序时,闰年判断子程序,大小月判断子程序,中断程序等,在软件调试过程未发现问题,但在硬件运行时又与自己想要的结果大不相同,头脑一下变成空白。最后在经过反复检查,反复调试后才把问题解决。问题解决以后再回头一想,其实问题并不是很难,只是自己未细心注意。

在本课程设计过程中,桂老师提供了宝贵的设计方法以及程序调式技巧,在此再次给桂老师致以忠心的感谢!

湖南工学院 电气0502 戴建 401050242

14

键,让它和电脑时钟同时从零秒开始计时,记下时

间时差。等过了几分钟或是更长时间后,再比较两者的时间差,这是人为的操作,故误差是

简易电子钟的设计

元器件清单

元器件 AT89S52 LED 按键 晶振12MHz 发光二极管 30pF 有极性22μF 单面板 470μF 排 针 数量(个) 1 8 5 1 1 2 1 1 2 1 元 器 件 芯片插座(40脚) 芯片插座(20脚) 电阻1K欧姆 电阻200欧姆 限流电阻300欧姆 上拉电阻5.1K欧姆 USB线 排 阻 USB线接口 ISP下载线 数量(个) 1 2 6 1 8 4 1 1 1 1根 参考文献

[1] 刘守义主编,单片机应用技术[M],西安:西安电子科技大学出版社,2002.8; [2] 陈伟人主编,MCS-51系列单片机实用子程序集锦[M],北京:清华大学出版

社,1993.3;

[3] 何立民编著,MCS-51 系列单片机应用系统设计 系统配置与接口技术[M],

北京:北京航空航天大学出版社,1990.1;

[4] 张毅刚主编,MCS-51单片机应用设计[M],哈尔滨:哈尔滨工大学出版社,

1990.8;

[5] 李华主编,MCS-51 系列单片机实用接口技术[M],北京:北京航空航天大学出版社,1993.8。

湖南工学院 电气0502 戴建 401050242

15

简易电子钟的设计

附 录

附录A--程序清单

PINTO EQU 0400H ORG 0000H LJMP MAIN ORG 000BH LJMP PINT0 ORG 0050H

;*************************************************************************

主 程 序

;**************************************************************************

MAIN: MOV SP, #60H ;内部初始化 MOV PSW, #00H MOV DPTR, #TAB MOV R0, #08H MOV R7, #78H CLR A

ML1: MOV @R0, A INC R0

DJNZ R7, ML1

MOV TMOD, #01H ;定时器赋初值 MOV TL0, #09BH MOV TH0, #035H SETB EA SETB ET0

MOV 30H, #013H

MOV R3, #78H MOV A, #78H

湖南工学院 电气0502 戴建 401050242

16

简易电子钟的设计

MOV R6, #06H MOV 32H, #0FEH

LOOP: MOV A, #0CH ;显示P点 MOV P0, A MOV A, 32H MOV P2, #10100000

JB P1.0, LOOP ;键盘扫描等待启动 LCALL DIR LCALL DIR

JB P1.0, START ;看键是否真正按下,

按下则转到启动

PSF: JB P1.0, CL LCALL DIR LCALL DIR LJMP PSF

CL: MOV R1, #78H MOV R4, #06H MOV A, #0C0H PCLR: MOV @R1, A INC R1

DJNZ R4, PCLR AJMP START

START: SETB TR0 ;真正启动 TZJ: LCALL TZJA LCALL DIR LJMP TZJ

;******************************************************************

键 扫 子 程 序

;*********************************************************************

湖南工学院 电气0502 戴建 401050242

17

简易电子钟的设计

ORG 0191H

TZJA: JNB P1.0, PDDA ;判A键是否再次按下 LJMP PASS ;去抖动 PDDA: LCALL DIR LCALL DIR

JNB P1.0, APSF ;判A是否真正按下,按下则转移到到判A是否松开

LJMP PASS

APSF: JB P1.0, OFF ; LCALL DIR SJMP APSF OFF: CLR TR0 TZJB: LCALL DIR

JNB P1.1, PDDB LJMP TZJC PDDB: LCALL DIR LCALL DIR

JNB P1.1, BPSF LJMP TZJC BPSF: JB P1.1, CLB LCALL DIR SJMP BPSF

CLB: MOV R2, 37H

CJNE R2, #17H, CLB0 MOV R2, #00H SJMP CLB1 CLB0: INC R2

CLB1: MOV 37H, R2 LCALL KHXSCL LCALL DIR TZJC: LCALL DIR

JNB P1.2, PDDC LJMP TZJD PDDC: LCALL DIR LCALL DIR

若松开执行A键的功能湖南工学院 电气0502 戴建 401050242

18

简易电子钟的设计

JNB P1.2, CPSF LJMP TZJD CPSF: JB P1.2, CLC LCALL DIR SJMP CPSF CLC: MOV R2, 36H

CJNE R2, #03BH, CLC0 MOV R2, #00H SJMP CLC1 CLC0: INC R2

CLC1: MOV 36H, R2 LCALL KMXSCL LCALL DIR TZJD: LCALL DIR

JNB P1.3, PDDD LJMP TZJA2 PDDD: LCALL DIR LCALL DIR

DPSF: JB P1.3, CLD LCALL DIR SJMP DPSF CLD: MOV R2, 35H

CJNE R2, #03BH, CLD0 MOV R2, #00H AJMP CLD1 CLD0: INC R2

CLD1: MOV 35H, R2 LCALL KSXSCL LCALL DIR TZJA2: LCALL DIR

JNB P1.0, PDDA2 LJMP TZJB PDDA2: LCALL DIR LCALL DIR

JNB P1.0, PSFA2 LJMP TZJB

湖南工学院 电气0502 戴建 401050242

19

简易电子钟的设计

PSFA2: JB P1.0, PASS0 LCALL DIR SJMP PSFA2 PASS0: NOP

SETB TR0 PASS: RET

;*******************************************************************

中 断 服 务 程 序

;*******************************************************************

ORG 0417H

PINT0: PUSH PSW ;进栈保护 PUSH A SETB PSW.3 MOV R3, 30H DEC R3

MOV 30H, R3

CJNE R3, #00H, CZ ;计时是否满8次,不是则反回

MOV A, 35H ;重新装初值 ADD A, #01H MOV 35H, A MOV 30H, #013H MOV TH0, #03DH MOV TL0, #0B0H AJMP SCL

CZ: MOV TH0, #035H MOV TL0, #09BH AJMP KYPINT SCL: MOV R5, 35H CJNE R5, #03CH, PR5 MOV 35H, #00H MOV A, 36H ADD A, #01H

湖南工学院 电气0502 戴建 401050242

20

简易电子钟的设计

MOV 36H, A LCALL KSXSCL AJMP MCL PR5: LCALL KSXSCL MCL: MOV R6, 36H

CJNE R6, #03CH, PR6 MOV 36H, #00H MOV A, 37H ADD A, #01H MOV 37H, A LCALL KMXSCL AJMP HCL PR6: MOV 36H, R6 LCALL KMXSCL HCL: MOV R7, 37H

CJNE R7, #18H, PR7 MOV 37H, #00H LCALL KHXSCL AJMP KYPINT PR7: MOV 37H, R7 LCALL KHXSCL KYPINT: CLR PSW.3 POP A POP PSW RETI

;*******************************************************************

显 示 处 理 子 程 序

;******************************************************************* ORG 0611H KSXSCL: MOV A, 35H MOV B, #0AH DIV AB

湖南工学院 电气0502 戴建 401050242

21

简易电子钟的设计

MOVC A, @A+DPTR MOV 79H, A MOV A, B MOVC A, @A+DPTR MOV 78H, A RET

KMXSCL: MOV A, 36H MOV B, #0AH DIV AB

MOVC A, @A+DPTR MOV 7BH, A MOV A, B MOVC A, @A+DPTR ANL A, #7FH MOV 7AH, A RET

KHXSCL: MOV A, 37H MOV B, #0AH DIV AB

MOVC A, @A+DPTR MOV 7DH, A MOV A, B MOVC A, @A+DPTR ANL A, #7FH MOV 7CH, A RET

;**************************************************************

显 示 子 程 序

;**************************************************************

DIR: MOV A, 78H MOV P0, A

湖南工学院 电气0502 戴建 401050242

22

简易电子钟的设计

SETB P2.0

ACALL DELY ACALL DELY CLR P2.0 MOV A, 79H MOV P0, A SETB P2.1 ACALL DELY CLR P2.1 MOV A, 7AH MOV P0, A SETB P2.2 ACALL DELY CLR P2.2 MOV A, 7BH MOV P0, A SETB P2.3 ACALL DELY CLR P2.3 MOV A, 7CH MOV P0, A SETB P2.4 ACALL DELY CLR P2.4 MOV A, 7DH MOV P0, A SETB P2.5 ACALL DELY CLR P2.5 RET

;******************************************************************

延 时 子 程 序

;*************************************************************

湖南工学院 电气0502 戴建 401050242

23

本文来源:https://www.bwwdw.com/article/15cw.html

Top