课程设计(论文)基于单片机的电子钟设计.doc

上传人:韩长文 文档编号:3972556 上传时间:2019-10-11 格式:DOC 页数:44 大小:1.57MB
返回 下载 相关 举报
课程设计(论文)基于单片机的电子钟设计.doc_第1页
第1页 / 共44页
课程设计(论文)基于单片机的电子钟设计.doc_第2页
第2页 / 共44页
课程设计(论文)基于单片机的电子钟设计.doc_第3页
第3页 / 共44页
课程设计(论文)基于单片机的电子钟设计.doc_第4页
第4页 / 共44页
课程设计(论文)基于单片机的电子钟设计.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《课程设计(论文)基于单片机的电子钟设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于单片机的电子钟设计.doc(44页珍藏版)》请在三一文库上搜索。

1、1设计任务书1.1设计任务和要求1.1.1设计任务设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“P.”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0分0时0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。1.1.2设计要求1.将AT89S52的串行口扩展成并行口,外接由六个LED数码管(LED5LED0)构成的显示器;P1口外接四个按键A、B、C、D(对应于P1.0P1.3)。2.利用六个LED显示当前时间。3.四个按键的功能:A键用于电子钟

2、启动/调整;B键用于调时,范围0-23,0为24点,每按一次时加1;C键用于调分,范围0-59,0 为60分,每按一次分加1;D键用于调秒, 范围0-59,0为60秒,每按一次秒加1。4.单片机采用AT89S52,fosc=6MHZ。5.电子钟供电电源电路的设计。6.电子钟时钟电路,复位电路的设计。7.编写系统监控程序、键扫子程序、显示子程序及其它所需子程序、功能程序和中断服务程序。8.计算机输出课程设计说明书一份。9.设计时间:二周10.制作电子钟实物。1.1.3课程设计说明书的主要内容1.课程设计说明书封面;2.课程设计任务书封面及课程设计任务书;3.前言;4.课程设计说明书目录;5.电子

3、钟功能说明及总体方案介绍;6.详细介绍电子钟的工作原理;7.绘制电子钟整机电路框图、整机电路原理图、电源电路原理图及PCB图各1份;8.列出电子钟元器件清单;9.详细介绍电子钟单元电路工作原理(包括电源电路、时钟电路、复位电路、键盘/显示接口电路及所用主要芯片);10.单片机硬件资源的使用分配情况;11.画出电子钟软件系统监控程序、各子程序、中断服务程序及各功能程序的流程框图;12.列出电子钟软件系统程序清单;13.写出电子钟的使用说明;14.设计体会,谈谈本设计的重点、难点及精妙之处,是否存在不足之点及改进意见;15.提出单片机技术课程教学建议;16.参考资料。2.方案论证2.1总体方案方案

4、一:采用数字逻辑电路 由555构成多谐振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,在经分频器输出标准秒脉冲,由两个74LS90级联构成两个60进制计数器和一个24进制计数器,满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计数器的输出经译码器送显示器。这种方案是由纯硬件电路实现了设计,优点是省略了软件部分的设计,但是这种方案因为是纯硬件实现的,成本较高,误差较大,不灵活,因此在本次设计中不予以采用。方案二:采用时钟芯片针对计算机系统对实时时钟功能的普遍需求,各大芯片生产厂家陆续推出了一系列的实时时钟集成电路,如DS1287、DS12887等

5、。这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机间,程序简单。此外,实时时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还带有非易失性RAM,可用来存放需长期保存但有时也需变更的数据。采用这种方案虽然简单而经济,但是不易于学习,因此本次设计也不予以采用。方案三:采用单片机软件控制利用MCS-51内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。配合软件监控实现运行,停止,调时,调分,调秒。该方案节省硬件成本,且能够使人在定

6、时/计数器的使用、中断及程序设计方面得到锻炼与提高,因此本课题将采用这种这种方案。2.2单片机软件控制的种类及比较2.2.1基于并行口的单片机软件控制方案基于并行口的软件控制方案的原理如图2-1所示,控制器采用AT89S52, 在AT89S52的P0口和P2口外接由六个LED数码管(LED5LED0)构成的显示器,用P0口作LED的段控码输出口(P0.0P0.7对应于LED的adp),P2.5P2.0作LED的位控输出线(P2.5P2.0对应于LED5LED0),P1口外接四个按键A、B、C、D(对应于P1.0P1.3)。基于并行口的软件控制方案电路简单,制作起来较为简单和方便,但是这种方案所

7、用的口资源较多,这样就不便于以后数字种的扩展,因此次方案不予以采用。图2-1.基于并行口软件控制原理框图2.2.2基于8155的单片机软件控制方案图2-2.基于8155软件控制原理框图 基于8155软件控制方案的原理框图如图2-2所示,将AT89S52的P0口与8155的地址数据复用线相连,AT89S52的ALE,P2.0P2.1,RST分别与8155的ALE, ,RST相连。8155的PA口作LED的段控输出口,PB口作LED的位控输出口,PC接键盘。这种方案的节约了单片机的口资源,便于以后扩展。2.2.3基于串行口的单片机软件控制方案 基于串行口的单片机软件控制方案如图2-3所示,AT89

8、S52以串行的方式发送数据,然后经过一个串入并出的移位寄存器74LS164,再与LED数码管和键盘相连。这种方案更大程度的节约了单片机的口资源,并且显示采用的是静态显示,比较稳定,另外可以加深对单片机的串行工作方式的了解,因此本次设计采用这种方案。 图3.基于串行口的单片机软件控制原理框图3.原理总体分析 基于串行口的原理图如图2-3所示。其主要原理是:利用AT89S52的内部定时/计数器中断定时,把定时器的时间定为125MS,这样溢出8次就可以得到1S,定时器采用中断的方式完成。然后再通过在程序中的数值累加和数值比较来实现从秒到分和从分到时的计时。最后通过监控程序控制键盘对数字钟的开始,暂停

9、,调时,调分,调秒 的操作。4.硬件设计4.1各单元电路的设计4.1.1电源电路的设计 MCS-51单片机正常工作的电压为+5V,因此要制作一个能产生+5V的直流稳压电源,其原理框图如图4-1所示:图4-1.电源电路原理框图根据电源电路的原理框图,选择相应的器件,得到+5V直流稳压电源的电路图如图4-2所示,220V的交流电源通过一个输出为612V的交流变压器,这里取9V,然后再通过2W10进行整流,将交流电变成脉动直流电然后再通过一个2200的滤波电容,使电压变得平滑,纹波减小。然后再通过7805集成稳压器,得到+5V的直流电压。C3用以抵消输入端较长的电感效应,以防止自激振荡,还可以抑制电

10、源的高频脉冲干扰,一般取0.11,这里取0.1。输出电容C4、C3用以改善负载的瞬态响应,消除电路的高频噪声,同时也具有消磁的作用,这里分别取470、0.1。D3是保护二极管,用来防止在输入短路时输出电容C3所存储电荷通过稳压器放电而损坏器件。图4-2.电源电路原理图4.1.2时钟电路的设计单片机本身是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格的按时序进行工作。因此就要用一个时钟电路产生单片机工作所需要的时钟信号。其原理框图如图4-3所示: 图4-3.单片机的时钟电路框图 在MCS-51芯片内部有一个高增益反向放大器,其输入端为芯片引脚XTAL1,输出

11、端为引脚XTAL2,在芯片外部通过这两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就构成一个稳定的自激振荡器,如图4-4所示:图4-4.单片机振荡电路电路中的电容C1和C2一般取30PF左右,而晶体的振荡频率通常是1.2MHZ12MHZ,这里取6MHZ。振荡电路产生的振荡脉冲并不是直接使用的,而是经分频后再为系统所示,就像图6所示,由于起分频电路MCS-51单片机内部已经接好,这里就不做详细的说明了。4.1.3复位电路的设计 复位是单片机的初始化操作,其主要是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死

12、锁状态时,为摆脱困境,也需按复位键以重新启动。 RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期以上,这里使用6MHZ的晶振,则复位信号持续的时间应超过4才能完成复位操作。产生复位信号的电路逻辑框图如图4-5所示:图4-5.复位电路逻辑框图 复位操作有上电复位和按键手动复位两种方式。上电自动复位是通过外部复位的电容来实现的,其电路如图4-6所示。只要电源的上升时间不超过1ms,就可以实现自动上复位,即接通电源就完成了系统的复位操作。 按键手动复位有电平方式和脉冲方式两种,其中按键电平复位是通过使复位端经电阻与电源接通而实现的,其电路图如图4-7所示。而按键脉冲

13、复位则是利用RC微分电路产生的正脉冲来实现的,其电路图如图4-8所示。本次设计中采用按键电平复位方式。 图4-6.上电复位 图4-7.按键电平复位 图4-8.按键脉冲复位4.1.4 显示接口电路的设计1.显示方案的论证和选择按照显示方式,七段LED显示系统有动态显示和静态显示之分。动态显示系统中,微处理器或控制器定时的对每个显示器进行扫描,显示器件分时轮流工作,每次只能使一个器件显示,但由于人的视觉暂留现象,仍感觉所有的器件都在同时显示。此种显示的优点是使用硬件少,占用I/O口少。静态显示系统中,每位显示器多应有各自的锁存器,译码器(可省去)与驱动器,用以锁存各自显示数字的BCD码和反码,因此

14、,静态显示系统在每一次显示输出后能够保持显示不变,仅在待显示数字需要改变时,才更新其数字锁存器的内容。静态显示的优点是占用机时间少,显示稳定可靠。为了显示稳定可靠,本次设计采用静态显示。2.静态显示的原理图图4-9.静态显示电路3.静态显示原理分析 静态显示的电路如图4-9所示。七段LED显示器采用共阴极接法,发光管的阴极都接地。74LS164是一个串行输入,并行输出的移位寄存器,用于将串行口RXD的发送的字型代码并行输出。74LS164的时钟端CLK在CP脉冲的上升沿实现移位,CLK端接一个与非门,然后由P1.0和TXD一起控制,当P1.0为高电平,并且TXD发送的移位脉冲为上升沿时,数据写

15、入74LS164。因此可以改变P1.0输出电平的状态,从而控制显示的关闭。4.1.5键盘接口电路的设计1.键盘接口电路的论证和选择按照与主机连接方式的不同,有独立式键盘和矩阵式键盘之分。独立式键盘的特点是一键一线,即每个按键单独占用一根检测线与主机相连,如图4-10所示。图中的上拉电阻保证按键断开时检测线上有稳定的高电平,当某一键被按下时,对应的检测线就变成了低电瓶,而其他键对应的检测线仍为高电平,从而很容易地识别出被按下的键。这种连接方式的优点是键盘的结单,各测试线相互独立,所以按键识别容易。缺点是占用较多的检测线,不便于组成大型键盘。矩阵式键盘的特点是把检测线分成两组,一组为行线,按键放在

16、行线和列线的交叉点上。图4-11就是一个44的矩阵式键盘。图中每一个按键都通过不同的行线和列线与主机相连。44的矩阵共安置了16只键,但只需8条测试线。不难看出,MN矩阵键盘与主机连接需要MN条线,显然,按键规模越大,矩阵式键盘的优点越显著。当需要的按键数目大于8时,一般采用矩阵式键盘。在本次设计中,根据要实现的功能,只需要4个键即可,因此采用独立式和矩阵式电路的复杂程度和检测线的数目差不多,但为了锻炼自己的编程能力,本次设计采用41的矩阵式键盘。图4-10.独立式键盘 图4-11.矩阵式键盘2.键盘接口电路的原理图图4-12.矩阵式键盘接口电路3.键盘接口电路的原理分析图4-12所示为一41

17、的矩阵式键盘,行扫描线接74LS164的Q0Q3,列扫描线接AT89S52的P1.1口。判定是否有键按下的时候,使74LS164输出Q0Q3为低电平,若没有键按下,则P1.1为高电平,反之则为低电平。然后再分别使Q0、Q1、Q2、Q3分别为低电平,并判定P1.1的电平状态,即可判定到底是哪一键按下,并求出相应的键值。4.1.6下载线接口电路的设计本次设计采用的Altera ByteBlaster下载线,下载线的接口为六芯的单排插头,其下载线接口电路的电路图如图4-13所示: 图4-13.下载线接口电路4.1.7电子钟原理图的设计 利用Protel99 SE设计的电子钟原理图如图附1所示。4.1

18、.8电子钟PCB图的设计 原理图绘制完成后,生成网络表,装入PCB文件,然后通过手工布局和手工布线,最后得到电子钟的PCB图如图附2所示。4.2主要器件的介绍4.2.1 AT89S52的介绍AT89S52单片机兼容标准MCS-51指令系统。AT89S52单片机是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89S52单片机可为您提供许多高性低比的系统控制应用领域。AT89S

19、52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89S52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。1. AT89S52的封状形式及管脚AT89S52的封状形式及管脚如图4-14所示 图4-14 AT89S52的封状形式及管脚2.信号引脚介绍 输入输出口线P00P07 P0口8位双向口线P10P17 P0口8位双向口线P20P27 P0口8位双向口线P30P37 P0口8位双向口线 ALE地址

20、锁存控制信号在系统扩展时,ALE用于控制把P0口输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。此外由于ALE是以晶振六分之一的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲作用。 外部程序储器读选取通信号在读外部ROM时/PSEN有效(低电平),以实现外部ROM单元的读操作。 访问程序存储器控制信号当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;而当/EA信号为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。 RST 复位信号当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作。 XTAL1和XTA

21、L2外接晶体引线端当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调空;当使用外部时钟时,用于拉外部的时钟脉冲信号。 VSS:地线 VCC:+5V电源3.信号引脚的第二功能:由于工艺及标准化等原因,芯片的引脚数目是有限制的,例如MCS51系列把芯片引脚数目限定为40条,但单片机为实现其功能所需要的信号数目却远远超过此数,因此就出现了需要与可能的矛盾。因此,给一些信号引脚赋以双重功能。P3的8条口线都定义有第二功能其详细情况如表4-1 所示:表4-1 P3 字体的第二功能口线第二功能信号名称P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2 外部中断0申请P3.3外部中断1申请P3

22、.4T0定时器/计数器0的计数输入P3.5T1定时器/计数器0的计数输入P3.6外部RAM写选通P3.7外部RAM读选通4.总线结构:AT89S52的管脚除了电源、复位、时钟接入、用户I/O口部分P3外,其余管脚都是为实现系统扩展而设置的。这些管脚构成了三总线形式,即:地址总线(AB):地址总线宽度为16位,因此,其外部存储器直接地址外围为64K字节。16位地址总线由P0经地址锁存器提供低8位地址(A0A7);P2口直接提供高8位地址(A8A15)。数据总线(DB):数据总线宽度为8位,由P0口提供。控制总线(CB):由部分P3口的第二功能状态和4根独立控制线RESET、/EA、ALE、/PS

23、EN组成。4.2.2 74LS164的介绍74LS164是一个串行输入,并行输出的移位寄存器,并带有清除端的一块IC芯片,它的封装和引脚如图4-15所示: 图4-15 74LS164封装和引脚图74LS164是一块14引脚双面直插式的芯片,它的工作电源比较宽,可以是3V至12V的电压;它工作的频率范围也是比较宽的,从05MHZ都能正常工作。VCC与GND为工作电源脚:它一般正常工作电压为正5V。QAQH:为并行输出端;A、B:为串行输入端;CLR(/MR)端:为清除端,当此脚为低电平时,使得74LS164输出全部为0;CLK端:时钟脉冲输入端,在CP脉冲的上升沿的作用下实现移位,在CLK为0,

24、CLR为1时,74LS164保持原始状态不发生变化。4.3元器件清单表4.2电子钟元件清单序号元器件名称型号规格数量备注1ICAT89S521274LS1647374LS0814数码管(共阴)LD-5161AS65开关SW-PB56SW-PB1带自锁7电容33PF2822UF19电阻1K1102001114701012晶振6MHZ113排针1015铜柱416LED红117印制板15101双面5.软件设计5.1系统资源分配为方便阅读程序,先对系统的资源分配加以说明。(1) 定时器:定时器0用作时钟定时,按方式1工作,每隔125ms溢出中断一次。(2) 片内RAM及标志位的分配与定义如下所示:7A

25、H7FH,分别为秒个位,秒十位,分个位,分十位,时个位,时十位显示缓冲单元地址,名称分别SECGE,SECSH,MINGE,MINSH,HOUGE,HOUSH;30H为要求计数溢出次数的存储单元,名称为INTCISHU;60H为堆栈底部地址;P1.0为键盘状态查询位,名称为JZTP1.1为显示控制位,名称为KXS5.2程序流程框图设计5.2.1主程序流程框图5.2.2显示子程序流程框图5.2.3键扫子程序流程框图5.2.4 闪烁显示P点子程序流程框图5.2.5 个位、十位清零子程序流程框图 5.2.6 十进制加1子程序流程框图5.2.7 500MS延时子程序流程框图5.2.8定时器/计数器0中

26、断服务程序流程框图5.3 计时原理如前所述,系统定时采用定时器与软件循环相结合的方法。定时器0每隔125ms溢出中断一次,则循环中断8次延时时间为1 s,上述过程重复60次为1分,分计时60次为1小时,小时计时24次则时间重新回到00:00:00。 设系统使用fosc =6 MHz的晶振,定时器0工作在方式1,则100 ms定时对应的定时器初值可由下式计算得到: 定时时间=(216-定时器0计数初值)(12/fosc)因此,定时器0初值=0CDCH,即TH0=0CH,TL0=0DCH 5.4 程序清单; 基于并行口数字钟的设计; 编写者:蒋毅; 指导老师:桂友超; 2006.11月;*;按键设

27、定*;A键(启动/设置)接IC7 74LS164Q0;B键(时加1)接IC7 74LS164Q1;C键(分加1)接IC7 74LS164Q2;D键(秒加1)接IC7 74LS164Q3;显示器的设定*;段控74LS164的Q0-Q7分别接LED的a,b,c,d,e,f,g,dp;定时/计数器的使用*;定时器/计数器0,定时功能,工作方式1,提供125毫秒的定时时间;系统中断源的使用*;定时器/计数器中断0,计满8次即得到秒计时单位;存储单元的定义*SECGE EQU 7AH ;秒个位缓冲单元SECSH EQU 7BH ;秒十位缓冲单元MINGE EQU 7CH ;分个位缓冲单元MINSH EQ

28、U 7DH ;分十位缓冲单元HOUGE EQU 7EH ;时个位缓冲单元HOUSH EQU 7FH ;时十位缓冲单元INTCISHU EQU 30H ;要求的计数溢出次数;标志位定义*KXS EQU P1.1JZT EQU P1.0;堆栈设定*;栈底内部RAM 60H;子功能程序表*;DIR 显示子程序;KEY 键扫子程序;DIRP P点显示子程序;ADD1 十进制加1子程序;CLR0 个位,十位清零子程序;T500 延时500MS子程序;功能程序*;KEYA(A键(启动/设置)功能程序;KEYB(B键处理(时加1)功能程序;KEYC(C键处理(分加1)功能程序;KEYD(D键处理(秒加1)功

29、能程序;中断服务程序功能表*;PITO(定时器/计数器0中断服务程序);常数、表格首地址*;显示字符段选码表(共阴极代码首地址TAB);主程序* ORG 0000H AJMP MAIN ORG 000BH AJMP PITOMAIN:MOV SP,#60H ;确立堆栈区 MOV TMOD,#01H ;设置定时器0为工作方式1 MOV TL0,#0DCH ;装计数初值 MOV TH0,#0CH SETB EA ;开定时器0中断 SETB ET0 MOV INTCISHU,#08H;要求计数的次数 ACALL DIRP ;调显示P点程序 MOV R0,#7AH ;显示缓冲区清零 MOV R1,#0

30、6H MMMM:MOV R0,#00H INC R0 DJNZ R1,MMMMJIAN:ACALL KEY ;调键扫程序 RL A ;键值乘2 MOV DPTR,#MTAB ;转移指令表首址 JMP A+DPTR MTAB:AJMP KEYA ;转A键(启动/设置)程序 AJMP KEYB ;转B键(时加1)程序 AJMP KEYC ;转C键(分加1)程序 AJMP KEYD ;转D键(秒加1)程序 AJMP JIAN ;无键按下转JIAN;功能程序区*;KEYA (A键(启动/设置)功能程序*KEYA:JB TR0,AAA ;定时器开启,关闭定时器 SETB TR0 ;定时器停止,开启定时器

31、 LJMP JIAN AAA:CLR TR0 LJMP JIAN;KEYB (B键(时加1)功能程序*KEYB:JB TR0,JIAN ;定时器开启,跳出时钟设置状态 MOV R0,#HOUSH ;时十位存储单元地址 ACALL ADD1 ;调加1子程序 ACALL DIR ;调显示子程序 MOV A,R2 ;判断是否到24h XRL A,#24H JZ BBB ;到24h,时显示缓冲单元清零 LJMP JIAN ;跳出时钟设置状态BBB: ACALL CLR0 ;调个位,十位清零子程序 ACALL DIR ;调显示程序 LJMP JIAN ;跳出时钟设置状态;KEYC (C键(分加1)功能程

32、序*KEYC:JB TR0,JIAN ;定时器开启,跳出时钟设置状态 MOV R0,#NINSHH ;分十位存储单元地址 ACALL ADD1 ;调加1子程序 ACALL DIR ;调显示子程序 MOV A,R2 ;判断是否到60分 XRL A,#60H JZ CCC ;到60分,分显示缓冲单元清零 ACALL DIR ;调显示程序 LJMP JIAN ;跳出时钟设置状态CCC: ACALL DIR ;调显示程序 ACALL CLR0 ;调个位,十位清零子程序 LJMP JIAN ;跳出时钟设置状态;KEYD(D键(秒加1)功能程序*KEYD:JB TR0,JIAN ;定时器开启,跳出时钟设置

33、状态 MOV R0,#SECSH ;秒十位存储单元地址 ACALL ADD1 ;调加1程序 ACALL DIR ;调显示子程序 MOV A,R2 ;判断是否满60秒 XRL A,#60H JZ DDD ;到60秒,秒显示缓冲单元清零 ACALL DIR ;调显示子程序 LJMP JIAN ;跳出时钟设置状态 DDD:ACALL DIR ;调显示子程序 ACALL CLR0 ;调个位,十位清零子程序 LJMP JIAN ;跳出时钟设置状态;程序名:键盘扫描子程序*;入 口:无;出 口:A KEY:CLR RS1 ;改变当前寄存器组为1 SETB RS0 KKK:MOV A,#00H ;判断是否有

34、键按下 MOV SBUF,A ;串行输出 JNB TI,$ ;状态查询 CLR TI ;清发送中断标志 JB JZT,$ ;无键按下,等待 ACALL DIR ACALL DIR MOV A,#00H ;判断是否有键按下 MOV SBUF,A ;串行输出 JNB TI,$ ;状态查询 CLR TI ;清发送中断标志 JB JZT,KKK ;无键按下,转KKK MOV R1,#04H ;键盘扫描次数 MOV R2,#7FH ;键盘扫描初值 MOV R3,#00H ;键值初值 LK1:MOV A,R2 ;送键扫描值 MOV SBUF,A JNB TI,$ CLR TI JNB JZT,LK2 ;按

35、下,转LK2 MOV A, R2 ;键扫描值右移一位 RR A MOV R2,A INC R3 ;键值加1 DJNZ R1, LK1 ;判断是否已全部扫描完 AJMP LK3 LK2:MOV A,#00H ;判键释放 MOV SBUF,A JNB TI,$ CLR TI JNB JZT,$ MOV A,R3 CLR RS0 ;恢复当前寄存器组为0 LK3:RET;程序名:显示子程序*;入 口:7AH,7BH,7CH,7DH,7EH,7FH;出 口:无 DIR:PUSH PSW PUSH DPH PUSH DPL SETB RS0 ;改变当前寄存组为1 SETB KXS ;开显示 MOV R0,

36、#SECGE ;设定显示缓冲区首地址 MOV R1,#06H ;设定显示位数 DR1:MOV A,R0 ;缓冲区的值送A MOV DPTR,#TAB ;字型码表首地址送DPTR MOVC A,A+DPTR ;缓冲区显示值的字型代码送A MOV SCON,#00H ;串行口方式0工作 CLR ES ;禁止串行中断 MOV SBUF,A ;串行输出 JNB TI,$ ;状态查询 CLR TI ;清发送中断标志 INC R0 ;显示缓冲区地址加1 DJNZ R1,DR1 ; 判断是否显示完 CLR KXS CLR RS0 ;恢复当前寄存组为0 POP DPL POP DPH POP PSW RET;程序名:P点显示子程序*;入 口: 无 ;DIRP:MOV R7,#03H ;显示P点,并闪烁3次 ML1:MOV SECG

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1