




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沧州职业技术学院毕业设计 数字电子时钟设计毕业论文目 录摘 要I第1章 绪论11.1 数字电子时钟背景11.2 数字电子时钟的发展史11.3 数字电子时钟的应用11.4 数字电子时钟的应用2第2章 数字电子时钟总体设计32.1 设计方案3 2.1.1 核心控制部分方案3 2.1.2 显示部分方案3 2.1.2 键盘部分方案32.2 方案选择3 2.2.1 时间显示4 2.1.2 时间调整4 2.1.3 闹钟设置4第3章 数字电子时钟硬件电路设计53.1 硬件电路采用器件53.2 AT89C51单片机模块5 3.2.1 AT89C51单片机的主要性能6 3.2.2 AT89C51单片机的引脚说明7 3.2.3 AT89C51单片机的储存器说明8 3.2.4 AT89C51单片机的振荡器说明9 3.2.5 AT89C51单片机的定时/计数器说明9 3.2.6 AT89C51单片机的芯片擦除功能说明10 3.2.7 AT89C51单片机的中断源103.3 可编程I/O扩展8155芯片模块10 3.3.1 8155芯片的内部结构10 3.3.2 8155芯片的引脚说明10 3.3.3 8155芯片的地址编码及工作方式12 3.3.4 8155芯片的命令/状态寄存器12 3.3.5 8155芯片与51单片机接口15 3.4 显示模块15 3.4.1 数码管简介15 3.4.2 数码管结构及工作原理16 3.4.3 数码管分类17 3.4.4 数码管光源的优缺点173.5 74LS07模块18 3.5.1 74LS07简介18 3.5.2 74LS07引脚图18 3.5.3 74LS07真值表18 3.5.4 74LS07逻辑图193.6 矩阵键盘模块19 3.6.1 矩阵键盘的工作原理20第4章 数字电子时钟软件电路设计214.1 系统软件设计流程图21 4.1.1 主程序流程21 4.1.2 按键处理流程21 4.1.3 定时器中断流程21 4.1.4 时间显示流程214.2 源程序清单24第5章 数字电子时钟系统调试315.1 软、硬件调试31 5.1.1 测试AT89C51单片机、8155、74LS07芯片31 5.1.2 主程序流程31 5.1.3 软件调试315.2 统一调试31第6章 数字电子时钟实物电路展示32结 论33参考文献34致 谢35作者简介36第1章 绪 论1.1 数字电子时钟的背景 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着科技化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。1.2 数字电子时钟的发展史电子钟有着很长的历史,从民国19年的电钟,研制始于60年代中期的国内电晶体、半导体管钟,到研制始于70年代末的石英电子钟,再到今天我们所用的智能电子钟。以前的电子钟存在着很多缺点,其外观体积庞大,在功能上有死摆、走时时间不长、走时精确度不高等缺点。如今无论是外观,还是在功能上,电子钟都有了很大的改进。1.3 数字电子时钟的意义数字钟是采用数字电路实现对时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。1.4 数字电子时钟的应用 数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。第2章 数字电子时钟总体设计2.1 设计方案2.1.1 核心控制部分方案方案一:采用单片机作为数字电子时钟的核心控制部分方案二:采用555定时器作为电子时钟的核心控制部分2.1.2 显示部分方案方案一:静态显示就是当CPU将要显示的字或字段码送到输出口,显示器就可以显示出所要显示的字符,如果CPU不去改写它,它将一直保持下去;静态显示硬件开销大,电路复杂,信息刷新速度慢。方案二:动态显示则是一位一位地轮流点亮显示器地各个位(扫描)。对于显示器的每一位而言,每隔一段时间点亮一次;动态显示耗能较小,但编写程序较复杂。动态显示硬件连接简单,信息刷新速度快。2.1.3 键盘部分方案方案一:独立式键盘。独立式键盘的各个按键相互独立,每个按键独立地与一根数据输入线(单片机并行接口或其他芯片的并行接口)连接。独立式键盘配置灵活,软件结构简单,但每个按键必须占用一根接口线,在按键数量不多时,接口线占用多。所以,独立式按键常用于按键数量不多的场合。方案二:矩阵式键盘。矩阵式键盘采用的是行列式结构,按键设置在行列的交点上.(当接口线数量为8时,可以将4根接口线定义为行线,另4根接口线定义为列线,形成43键盘,可以配置12个按键。)2.2 方案选择经过论证,决定采用AT89C51单片机作为数字电子时钟的核心部分,采用8155以及6位数码管作为显示系统,采用43矩阵键盘作为数字电子时钟的控制系统的方案。如图2-1数字电子时钟硬件电路图图 2-1 数字电子时钟控制系统AT89C518155LED显示矩阵键盘闹钟蜂鸣器2.2.1 时间显示由于本方案需要显示时、分、秒三方面内容,所以计划采用6位数码管作为显示系统,上电后系统自动进入时钟显示,从00:00:00开始计时,此时可以设定当前时间。2.2.2 时间调整按下矩阵键盘上的C/R键(时间设定/起动计时键),系统停止计时,进入时间设定状态,系统保持原有显示,等待键入当前时间,根据需要按下09数字键可以顺序设置分和秒,并在相应的LED上显示设置值。6位设置完毕后,系统将从设定后的时间开始计时显示。2.2.3 闹钟设置按下ALM键(闹钟设置/启闹/停闹键),系统继续计时,显示00:00:00,进入闹钟设置状态,等待键入启闹时间,根据需要按下09数字键可以顺序进行相应的时间设置,并在相应的LED上显示设置值。6位设置完毕后,系统启动定时启闹功能,并恢复时间显示。定时时间一到,蜂鸣器就会鸣叫,直至重新按下ALM键停闹,并取消闹钟设置。第3章 数字电子时钟硬件电路设计3.1 硬件电路采用器件数字电子时钟电路有80C51单片机、可编程I/O接口芯片8155、43键盘输入电路、6位LED显示输出电路及74LS07为主要部件的蜂鸣器启闹电路组成。如图3-1数字电子时钟硬件电路图图3-1 数字电子时钟硬件电路图3.2 AT89C51单片机模块AT89C51单片机是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。如图3-2 AT89C51单片机图3-2 AT89C51单片机3.2.1 AT89C51单片机的主要性能与MCS-51 兼容4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定1288位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路3.2.2 AT89C51单片机的引脚说明图3-3 AT89C51单片机引脚图VCC:供电电压。GND:接地。P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/ 地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。表3-1 AT89C51的特殊功能口P3口也可作为AT89C51的一些特殊功能口,如表3-1所示:口管脚 备选功能 P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。如图3-3 AT89C51单片机引脚图3.2.3 AT89C51单片机的储存器说明MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。 程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。 对于AT89C51,如果EA 接VCC,程序读写先从内部存储器(地址为0000H1FFFH)开始,接着从外部寻址,寻址地址为:2000HFFFFH。 数据存储器:AT89S52 有256 字节片内数据存储器。高128 字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。 当一条指令访问高于7FH 的地址时,寻址方式决定CPU 访问高128 字节RAM 还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。 例如,下面的直接寻址指令访问0A0H(P2口)存储单元MOV 0A0H , #data使用间接寻址方式访问高128 字节RAM。例如,下面的间接寻址方式中,R0 内容为0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。 MOV R0 , #data堆栈操作也是简介寻址方式。因此,高128字节数据RAM也可用于堆栈空间。图3-4 AT89C51储存器结构图储存器的结构如图3-43.2.4 AT89C51单片机的振荡器说明XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3.2.5 AT89C51单片机的定时/计数器说明AT89C51有两个16位可编程定时器/计数器 T0/T1。T0由TH0,TL0构成,T1由TH1,TL1构成。T0/T1在定时控制寄存器TCON和方式选择寄存器TMOD控制下,可实现定时或计数。3.2.6 AT89C51单片机的芯片擦除功能说明整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。3.2.7 AT89C51的中断源中断源说明外部中断INT0从P3.2引脚引入的外部中断申请定时器T0中断定时器T0溢出时引发中断申请外部中断INT1从P3.3引脚引入的外部中断申请定时器T1中断定时器T1溢出时引发中断申请串行口中断一次串行发送或接收完成后,发出中断申请引起专断的原因称为中断源。AT89C51单片机有5个中断源,包括2个外部中断,2个片内定时/计数器溢出中断,1个串行口中断。89C51单片机中断源如表3-2所示。表3-2 AT89C51单片机中断源3.3 可编程I/O扩展8155芯片模块8155是单片机常用的接口扩展芯片,其内部包含256B的静态RAM,2个8位的并行I/O接口,1个6位的并行I/O接口和一个14位的定时/计数器。3.3.1 8155芯片的内部结构8155芯片内部共包括4个部分,分别是1、256B的静态RAM,存取时间为400ns2、3个通用的输入/输出口PA、PB、PC。3、1个14位的可编程定时/计数器。4、1个8位命令寄存器(只能写入)/8位状态寄存器(只能读出)。8155芯片的具体结构如图3-5。图3-5 8155芯片结构图3.3.2 8155芯片的引脚说明RST:复位信号输入端,高电平有效。复位后,3个I/O口均为输入方式。AD0AD7:三态的地址/数据总线。与单片机的低8位地址/数据总线(P0口)相连。单片机与8155之间的地址、数据、命令与状态信息都是通过这个总线口传送的。:读选通信号,控制对8155的读操作,低电平有效。:写选通信号,控制对8155的写操作,低电平有效。:片选信号线,低电平有效。IO/:8155的RAM存储器或I/O口选择线。当IO/0时,则选择8155的片内RAM,AD0AD7上地址为8155中RAM单元的地址(00HFFH);当IO/1时,选择 8155的I/O口,AD0AD7上的地址为8155 I/O口的地址。ALE:地址锁存信号。8155内部设有地址锁存器,在ALE的下降沿将单片机P0口输出的低8位地址信息及,IO/的状态都锁存到8155内部锁存器。因此,P0口输出的低8位地址信号不需外接锁存器。PA0PA7:8位通用I/O口,其输入、输出的流向可由程序控制。PB0PB7:8位通用I/O口,功能同A口。PC0PC5:有两个作用,既可作为通用的I/O口,也可作为PA口和PB口的控制信号线,这些可通过程序控制。TIMER IN:定时/计数器脉冲输入端。TIMER OUT:定时/计数器输出端。VCC:5V电源。8155芯片的引脚如图3-6所示图3-6 8155芯片引脚图3.3.3 8155芯片的地址编码及工作方式在单片机应用系统中,8155是按外部数据存储器统一编址的,为16位地址,其高8位由片选线提供,0,选中该片。当0,IO/0时,选中8155片内RAM,这时8155只能作片外RAM使用,其RAM的低8位编址为00HFFH;当0,IO/1时,选中8155的I/O口,其端口地址的低8位由AD7AD0确定,如表6-6所示。这时,A、B、C口的口地址低8位分别为01H、02H、03H(设地址无关位为0)。8155芯片的I/O口地址如表3-3所示表3-3 8155芯片的I/O口地址AD7AD0选择I/O口A7A6A5A4A3A2A1A0000命令/状态寄存器001A口010B口011C口100定时器低8位101定时器高6位及方式3.3.4 8155芯片的命令/状态寄存器8155芯片的A口、B口可工作于基本I/O方式或选通I/O方式。C口可工作于基本I/O方式,也可作为A口、B口在选通工作方式时的状态控制信号线。当C口作为状态控制信号时,其每位线的作用如下:PC0:AINTR(A口中断请求线)PC1:ABF(A口缓冲器满信号)PC2:(A口选通信号)PC3:BINTR(B口中断请求线)PC4:BBF(B口缓冲器满信号)PC5:(B口选通信号)8155芯片的I/O工作方式选择是通过对8155芯片内部命令寄存器设定控制字实现的。命令寄存器只能写入,不能读出,命令寄存器的格式如图6-16所示。在ALT1ALT4的不同方式下,A口、B口及C口的各位工作方式如下:ALT1:A口,B口为基本输入/输出,C口为输入方式。ALT2:A口,B口为基本输入/输出,C口为输出方式。ALT3:A口为选通输入/输出,B口为基本输入/输出。PC0为AINTR,PC1为ABF,PC2为,PC3PC5为输出。ALT4:A口、B口为选通输入/输出。PC0为AINTR,PC1为ABF,PC2为,PC3为BINTR,PC4为BBF,PC5为。8155芯片命令寄存器的格式如图3-7所示。8155芯片内还有一个状态寄存器,用于锁存输入/输出口和定时/计数器的当前状态,供CPU查询用。状态寄存器的端口地址与命令寄存器相同,低8位也是00H,状态寄存器的内容只能读出不能写入。所以可以认为8155芯片的I/O口地址00H是命令/状态寄存器,对其写入时作为命令寄存器;而对其读出时,则作为状态寄存器。8155芯片状态寄存器的格式如图3-8所示。图3-7 8155芯片命令寄存器的格式图3-8 8155芯片状态寄存器的格式3.3.5 8155芯片与51单片机接口8155芯片与51单片机接口如图3-9所示图3-9 8155芯片与51单片机接口3.4 显示模块根据硬件电路要求,本次数字电子时钟设计决定采用6位数码管作为显示模块。3.4.1 数码管简介图3-10 数码管字样LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。如图3-10。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。3.4.2 数码管结构及工作原理LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等。本次设计将采用如图3-11所示的6位数码管作为显示模块。LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。例如图3-12是4位8段共阴极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。led数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。图3-12 4位8段数码管的连接图3-11 6位8段数码管3.4.3 数码管分类3.4.3.1 从控制方式上分:分为内控方式(内部有单片机,通电自动变色)和外控方式(需要外接控制器才能变色)。 3.4.3.2 从变化方式上分:分为固定色彩的和七彩、全彩的;固定色彩的是用来勾轮廓的,全彩的可以勾轮廓,也可以组成管屏显示文字、视频等。3.4.3.3 从尺寸上分:有D50的、D30的,D50和D30表示直径。3.3.2.4 从内部可控性上分:有1米6段的,有1米8段的和1米12段、1米16段、1米32段的。也就是1米的管子内有几段可以独立受控;1米段数越多,做视频的效果越好。如果密度低,或者做些追逐效果,做1米6段也就可以了。3.4.3.5 从LED数量上分:有1米96颗灯的,有1米144颗灯的;灯越多效果越好。一般做全彩的都是用1米144颗灯的。3.4.3.6 从供电上分:分为高压供电(直接220V供电)和低压供电(12v供电,220v电源需要加开关电源转换);一般选择低压供电的,比较可靠稳定,高压供电的容易烧毁。3.4.3.7 按像素点分:一米16段灯管 就是1米的灯管有16个像素点。一般有6段数码管、8段数码管、12段数码管、16段数码管、32段数码管等,16段的比较多。如6段数码管一般使用在轮廓项目上。3.4.4 数码管光源的优缺点总的来说,LED光源的来源有两种做法:一种是使用传统小功率LED作组合,一般多达上百颗甚至数百颗,电源设计复杂。另一种是使用大功率管作光源,价格比较贵。两种方法都不可避免地要将散热设计和工作可靠性作为主要设计考虑因素,国内多应用于政府示范性工程,真正市场化运作的工程很少,国外这方面的应用实例较多,但其最大的缺点依然是可靠性、出光流明数和价格,很多工程由于LED品质低劣,没有很好地表现出寿命长的优点。还有,从成本、市场的角度考虑,LED作为照明光源,其是否与太阳能结合使用,在设计上需要走不同的路线,并不是单独作为一种光源来开发就能完成的。3.5 74LS07模块3.5.1 74LS07简介74LS07是集电极开路六正相高压驱动器。使用时需接上拉电阻从而使末级驱动管正常工作。阻值不能太小,手册规定最大的电流不能超过规定值,一般1mA多。3.5.2 74LS07引脚图图3-13 74LS07引脚图如图3-13所示3.5.3 74LS07真值表如图3-14所示输入输出AYHHLL图3-14 74LS07真值表3.5.4 74LS07逻辑图如图3-15所示图3-15 74LS07逻辑表3.6 矩阵键盘模块矩阵键盘是为了当键盘中按键数量较多时,为了减少I/O口的占用,将按键排列成矩阵形式,如图3-16所示。图3-16 矩阵键盘3.6.1 矩阵键盘的工作原理在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成44=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,如图3-17所示,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。图3-17 矩阵键盘接法第4章 数字电子时钟软件电路设计4.1 系统软件设计流程图4.1.1 主程序流程主程序上可分为启动定时器、按键检测、时间显示三个部分。如图4-1开始启动定时器按键检测时间显示图4-1 主程序流程图4.1.2 按键处理流程按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。如图4-24.1.3 定时器中断流程定时器中断时是先检测1秒是否到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就显示时间。如图4-34.1.4 时间显示流程时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后是分十位显示,再就是时个位计算显示,最后是时十位显示。NYNYNYhour加1显示时间结束开始sceond按键按sceond加1minute按键按minute加1hour按键按下图4-2 按键处理流程图N24小时到分单元清零,时单元加1NNNYY时单元清零时间显示中断返回开始一秒时间到60秒时间到60分钟到秒单元加1秒单元清零,分单元加1YY图4-3 定时器中断流程图4.2 源程序清单主程序代码如下。ORG0000HAJMPMAINORG000BHAIMPCLOCKORG0030HPORTEQU8000HPOTTAEQU8001HPORTBEQU8002HPORTCEQU8003HDISP0EQU30HDISP1EQU31HDISP2EQU32HDISP3EQU33HDISP4EQU34HDISP5EQU35HHOUREQU3CHMINEQU3DHSECEQU3EHMSECEQU3FHAHOUREQU40HAMINEQU41HASECEQU42HF1EQUPSW.1MAIN:MOVSP,#50H;设置堆栈区MOVXDPRT,#PORT;8155初始化MOVA,#03HMOVXDPTR,ACLRF1;闹钟标志位清零CLRF0;允许计时显示MOVAHOUR,#0FFH;闹钟值寄存区置初值MOVAMIN,#0FFHMOVASEC,#1FFHMOVR7,#10;显示缓冲区、计时缓冲区清零MOVRO,#DISP0CLRALOOP:MOVRO,AINCR0DJNZR7,LOOPMOVTMOD,#01H;定时器T0初始化MOVTL0,#0B0HMOVTH0,#3CHSETBTR0;启动定时器SETBEA;开中断SETBET0BENGIN:ACALLALARM;调用定时比较子程序ACALLKEYSCAN;调用键盘扫描子程序CJNEA,#0AH,NEXT1;判断是否是C/R键CLRTRO;暂时停止计时MOVR1,#HOUR;地址指针指向计时缓冲区首地址AJMPMODNEXT1:CJNEA,#0BH,BEGIN;判断是否是ALM键JBF1,NEXT2;判断闹钟是否正在闹响MOVRI,#HOUR;地址指针指向闹钟值寄存区首地址MOD:SETBF0;禁止显示计时时间ACALLMODIFY;调用时间设置/闹钟定时子程序SETBTR0;重新开始计时CLRF0;恢复显示计时时间AJMPBEGINNEXT2:SETBP1.0;闹钟正在闹响、停闹CLRF1;闹钟标志清零AJMPBEGIN定时器T0中断服务子程序代码如下。CLOCK:PUSHPSW;保护现场PUSHACCMOVTL0,#0B0HMOVTH0,#3CH;重装初值,时间校正INCMSECMOVA,MSECCJNEA,#0AH,DONEMOVMSEC,#00HMOVA,SECINCADAA;二十进制转换MOVSEC,ACJNEA,#60H,DONEMOVSEC,#00HMOVA,MININCADAAMOVMIN,ACJNEA,#60H,DONEMOVMIN,#00HMOVA,HOURINCADAAMOVHOUR,ACJNEA,#24H,DONEMOVHOUR,#00HDONE:POPACCPOPPSWRET1时间设置/闹钟定时子程序代码如下。MODIFY:ACALLKEYIN;调用键盘设置子程序ACALLCOMB;调用合子子程序RET键盘设置子程序代码如下。KEYIN:PUSHPSW;保护现场PUSHACCSETBRS1MOVRO,#DISP0;R0指向显示缓冲区首地址MOVR7,#06H;设置键盘输入次数L1:CLRRS1ACALLKEYSCAN;调用键盘扫描子程序,取按下键的键号SETBRS1CJNEA,#0AH,L2;所键入数合法性的检测(是否大于9)L2:JNCL1;按键值大于9,重新输入MOVRO,A;键号送显示缓冲区INCR0DJNZR7,L1;判断6位时间是否输入完,若未完则继续CLRRS1;恢复现场POPACCPOPPSWRET键盘扫描子程序代码如下。KEYSCAN:ACALLTEST;调用判断按键是否按下的子程序TESTJNZREMOV;有键按下时,调用消抖动延时子程序ACALLDISPLAYACALLALARMAJMPKEYSCAN;无键按下时,继续判断是否有键按下REMOV:ACALLDISPLAY;调用显示子程序,延时消抖动ACALLTEST;再次判断是否有键按下JNZLIST;有键按下时,跳转至逐列扫描ACALLDISPLAYACALLALARMAJMPKEYSCAN;无键按下时,继续判断是否有键按下LIST:MOVR2,#0FEH;首列扫描字送R2MOVR3,#00H;首列键号送R3LINE0:MOVDPTR,#PORTA;DPTR指针指向8155的A口MOVA,R2;首列扫描字送AMOVXDPTR,A;首列扫描字送8155的A口MOVDPTR,#PORTC;DPTR指针指向8155的C口MOVXA,DPTR;读入C口的行状态JBACC.0,LINE1;第0行键无键按下,转至第1行MOVA,#00H;第0行有键按下,行首键号送AAJMPTRYK;求键号LINE1:JBACC.0,LINE2;第1行键无键按下,转至第2行MOVA,#04H;第0行有键按下,行首键号送AAJMPTRYK;求键号LINE2:JBACC.2,NEXT;第2行键无键按下,转至下一列MOVA,#08H;第2行有键按下,行首键号送AAJMPTRYK;求键号NEXT:INCR3;扫描下一列MOVA,#08H;列扫描字送AJNBACC.3,EXIT;4列扫描完,重新进行下一轮扫描RLA;4列未扫描完,扫描字左移,扫描下一列MOVR2,A;扫描字送AAIMPLINE0;转向扫描下一列EXIT:AJMPKEYSCAN;等待下一次按键TRYK:ADDA,R3;按公式计算键码,求得键号PUSHACC;键号入栈保护LETK:ACALLTEST;等待按键释放JNZLETK;按键未释放,继续等待POPACC;按键释放,键号出栈RETTEST:MOVDPRT,#PORTA;DPRT指针指向8155的A口MOVA,#00HMOVXDPRT,A;全扫描字00H送8155的A口MOVDPRT,#PORTC;DPRT指针指向8155的C口MOVXA,DPRT;读入C口行状态CPLA;A取反,以高电平表示有键按下ANLA,#07H;屏蔽高5位RET显示子程序代码如下。DISPLAY:JBF0,DISP;允许时间显示标志F0=1,转至DISPACALLSEPA;否则调用SEPA,刷新显示缓冲区DISP:PUSHPSW;动态扫描显示子程序PUSHACCSETBRS0MOVDPRT,#PORTA;关显示MOVA,#0FFHMOVXDPTR,AMOVR0,#DISP0MOVR7,#00HMOVR6,#06HMOVR5,#0FEHDIS1:MOVDPTR,#TABMOVA,R0MOVCA,A+DPTRMOVDPTR,#PORTAMOVXDPTR,AMOVDPTR,#PORTAMOVA,R5MOVXDPRT,AHERE:DJNZR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DMG-PEG-Mal-MW-5000-生命科学试剂-MCE
- Dione-piperidine-indazol-piperazin-cyclohexyl-NH2-生命科学试剂-MCE
- 临边施工安全培训课件
- 重要文件资料丢失事件应急预案
- 化学品(油品溶剂酸碱等)泄漏应急预案
- 自然灾害(冰雪)应急预案(适用于北方或交通枢纽企业)
- 2025年压力容器作业人员安全操作证考试模拟试题库(附参考答案)
- 2025年全国一级消防工程师《消防安全综合能力》真题答案及解析
- 2025年二级注册建筑师《建筑设计、建筑材料与构造》真题卷(附解析)
- 创新驱动建筑节能:2025年新型建筑材料推广应用可行性研究
- GB/T 3810.14-2016陶瓷砖试验方法第14部分:耐污染性的测定
- GB/T 26567-2011水泥原料易磨性试验方法(邦德法)
- 企业知识产权管理中的专利挖掘工作概述课件
- 癫痫的急救与护理课件
- 国家地表水环境质量监测网采测分离实施方案课件
- 【高等数学练习题】兰州交通大学专升本自考真题汇总(附答案解析)
- 加速康复在肝胆胰外科的应用课件
- 【完整版】锁骨骨折护理查房课件
- 大学信息系统建设与运行维护管理办法
- 大学植物学1细胞
- GB∕T 35320-2017 危险与可操作性分析(HAZOP分析)应用指南
评论
0/150
提交评论