资源描述
摘要本文主要介绍:篮球比赛计时器。本文首先介绍单片机的相关知识,对单片机进行相应的研究,并将其与74HC595串行显示电路配合使用。本电路主要核心是AT89S51,利用软件和硬件的结合实现开机自动置节计数器为第一节,节计时器为12分00秒,24秒违例为24秒。用数字显示篮球比赛当时节数,每节时间及24秒的倒计时,采用单片机串行显示。最后,本文会详细叙述此电路的安装与调试,并对调试过程中出现的问题做简要说明。关键词 AT89S52单片机;74HC595;XXXAbstractAbstract this article mainly introduced: Basketball game timer. This article first introduced that monolithic integrated circuits related knowledge, conducts the corresponding research to the monolithic integrated circuit, and its and 74HC595 serial display circuit coordination use. This electric circuit main core is AT89S51, realizes using the software and hardwares union starting sets at the festival counter for first, the festival timer is 12 minute 00 second automatically, 24 second case of breaching the rules is 24 seconds. With the digital demonstration basketball game at that time the pitch number, each time and 24 second countdown, used the monolithic integrated circuit serial demonstration. Finally, this article will narrate this electric circuits installment and the debugging in detail, and to will debug the question which in the process will appear to give the briefing。key words 89S52 monolithic integrated circuit; 74HC595; XXX目 录摘要IABSTRACTII第1章 绪论11.1 课题背景11.2 设计简介2第2章 系统电路的设计方案32.1 系统设计方案的提出32.2 方案的确定32.3 本章小结3第3 章 电路设计原理及芯片介绍43.1 键盘控制及显示电路设计的原理及要求43.1.1 电路的设计原理与功能要求43.1.2 电路的总设计框图43.2 总电路选用芯片简介43.2.1 控制芯片AT89S5243.3 LED显示原理介绍113.4 键盘控制原理介绍143.4.1 键盘的工作原理143.4.2 独立式键盘173.5 本章小结20第4章 键盘控制及显示硬件电路实现214.1 LED显示电路设计214.2 独立按键键盘的电路设计224.3 硬件的焊接234.3.1 硬件的焊接234.3.2 电路板的检查和故障排除244.4 本章小结24第5 章 键盘控制及显示电路软件设计265.1 软件设计的基本工具265.1.1 汇编语言的简介265.1.2 汇编语言的指令系统与程序265.1.3 keilC51开发软件简介285.2 独立式键盘软件设计285.2.1 软件设计流程图295.3 键盘控制及显示电路设计软件实现总流程图295.3.1 总流程图295.4 本章小结30结 论31致 谢32参考文献3344第1章 绪论1.1 课题背景在电子技术飞速发展的今天,电子产品的人性化和智能化已经非常成熟,其发展前景仍然不可估量。如今的人们需求的是一种能给自己带来方便的电子产品,当然最好是人性化和智能化的,如何能做到智能化呢?单片机的引入就是一个很好的例子。单片机又称单片微型计算机,也称为微控制器,是微型计算机的一个重要分支,单片机是20世纪70年代中期发展起来的一种大规模集成电路芯片,是集CPU,RAM,ROM,I/O接口和中断系统于同一硅片上的器件。单片机的诞生标志着计算机正式形成了通过计算机系统和嵌入式计算机系统两个分支。目前单片机已渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。在我们身边,由单片机作为主控制器的全自动洗衣机、高档电风扇、电子厨具、变频空调、遥控彩电、录像机、VCD/DVD机、组合音响、电子琴等。单片机已在广阔的计算机应用领域中表现得淋漓尽致,出尽了风头。从家用消费类电器到复印机、打印机、扫描仪、传真机等办公自动化产品;从智能仪表、工业测控装置到CT、MRI、刀等医疗设备;从数码相机、摄录一体机到航天技术、导航设备、现代军事装备;从形形色色的电子货币如电话卡、水电气卡到身份识别卡、门禁控制卡、档案管理卡及相关读/写卡机等等都有单片机在里面扮演重要角色。因此,单片机已成为电子类工作者必须掌握的专业技术之一。单片机就是一个微型中央处理器,通过编程即能完成很多智能化的工作 ,因此它的出现给电子技术智能化和微型化起到了很大的推动作用。随着人们生活水平的提高,社会经济的发展,人们开始考虑精神生活的享受,并开始注重身体素质的提高。开始举办一些小型的篮球比赛。这就需要裁判有一个公正的判罚,以保证比赛的顺利进行。这就需要有一个专门计时的工具。所以我就设计了一个篮球比赛计时器。设计简单,耗费少,容易制作。可用于街头篮球比赛和校园篮球比赛。花很少的钱就可以得到一个实用的篮球比赛计时器。本次设计注重对单片机工作原理以及键盘控制及显示原理的理解,以便今后自己在单片机领域的学习和开发打下基础,提高自己的动手能力和设计能力,培养创新能力,丰富自己的理论知识,做到理论和实践相结合。本次设计的重要意义还在于对单片机的内部结构和工作状态做更进一步的了解,同时还对单片机的接口技术,中断技术,存储方式和控制方式作更深层次的了解。此次设计更进一步了解基本电路的设计流程,提高自己的设计理念,丰富自己的理论知识,巩固所学知识,使自己的动手动脑能力有更进一步提高,为自己今后的学习和工作打好基础,为自己的专业技能打好基础。1.2 设计简介篮球比赛中除了有总时间倒计时外,为了加快比赛的节奏,新的规则还要求进攻方在24秒内有一次投篮动作,否则视为违例。根据要求,以AT89S52单片机为核心,设计篮球比赛计时控制器。篮球比赛上下半场四节制,每节12分钟,要求能随时暂停,启动后继续计时,一节比赛结束后可清零。按篮球比赛规则,进攻方有24秒为例计时。“分”“秒”显示用LED数码管。用开关控制计时器的启动/暂停。该篮球比赛计时器的设计,可对比赛总时间和各方每次控球时间计时。该计时器采用按键操作、LED显示,非常实用。此计时器在程序参数稍加修改后也可作为其他球类比赛的计时器。主控芯片为AT89S52,采用12MHz晶振,P0.0-P0.7作键盘输入。A1为12分钟暂停键;A2为启动12分钟计时键,24秒计时开始;A3为24S复位开启键(投篮或交换控球时按下此键); A4为24秒计时停止键(没有违例);A5为总计时和24秒计时同时启动键;A6为总计时和24S计时同时停止键。 电路采用静态显示,一起点亮各位数码管,同时显示不同的字符。点亮各位数码管锁存输出。显示器的第一位显示计时节数,3至6位显示计时的分,最后2位显示24秒。用T0定时器中断进行24秒处理,12分钟计时用T1定时器中断计时。同时电路通过键盘扫描,根据键值转相应键处理。第2章 系统电路的设计方案2.1 系统设计方案的提出本设计是基于89S52单片机的键盘控制及显示电路设计,从系统的设计功能上看,系统可分为两大部分,即键盘输入控制部分和显示部分,对于每一个部分都有不同的设计方案,起初我拟订了下面两种方案:第一种方案:键盘控制采用矩阵扫描键盘,可以用普通按键构成44矩阵键盘,直接接到89S52单片机的P0口,高四位作为行,低四位作为列,通过软件完成键盘的扫描和定位。显示部分采用动态显示,采用移位寄存器74LS164和译码器74LS138通过显示驱动程序驱动七段数码管显示。此方案成本低,所用到的两个外围芯片价格都很低廉,而且单片机的I/O口占用较少,可以节约单片机接口资源。第二种方案:键盘控制采用独立是式键盘,每个按键的“接零端”均接地,每个按键的“测试端”各接一条输入线,通过检测输入线的电平状态就可以很容易地判断哪个键被按下了,这种方法操作速度高而且软件结构很简单。这种方法比较适合按键较少或操作速度较高的场合。显示部分采用静态显示方法,所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小。2.2 方案的确定本设计要求按键较多,且本次设计只是对所学知识的一次实践,设计要求简单,容易实现,成本低。比较以上两中设计方案,第二种成本低,占用单片机资源少,且容易实现,这样的设计比较适合本次设计,故选用第二种设计方案。2.3 本章小结本章主对所选方案进行比较,并最终确定选用那种方案。第3 章 电路设计原理及芯片介绍3.1 键盘控制及显示电路设计的原理及要求3.1.1 电路的设计原理与功能要求本设计采用AT89S52单片机芯片作为中央处理芯片,采用AT89S52的P0口构成独立8键键盘,采用AT89S52串行口静态显示,选用74HC595作为LED驱动芯片。本电路设计有以下功能及要求:(1)篮球比赛计时器全场时间为48分钟,共四节,每节12分钟和24秒违例。要求开机自动置节计数器为第一节,节计时器为12分00秒,24秒违例为24秒。(2)用数字显示篮球比赛当时节数,每节时间及24秒的倒计时,采用单片机串行显示。(3)能随时用按纽开关控制比赛的启动/暂停,启动后开始比赛,暂停期间不计时,重新启动后继续计时。3.1.2 电路的总设计框图根据设计任务与要求,可初步将系统分为五大功能模块:主电路、开关启/停控制电路、显示电路、音响电路和+5V稳压电源。进一步细说,主电路选用89S52作为中央处理器;开关启/停控制电路由八个按键组成;显示电路由八位七段数码管和74HC595组成;音响电路用ULN2003驱动蜂鸣器;+5V稳压电路采用7805稳压块把电源电压稳定在+5V。原理框图如图3-1所示。图3-1 篮球比赛计时器的原理框图3.2 总电路选用芯片简介3.2.1 控制芯片AT89S52AT89S52功能特性描述:AT89S52 是一种低功耗、高性能CMOS8 位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash ,使得AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52 具有以下标准功能:8k 字节Flash,256 字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6 向量2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM 、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。AT89S52引脚结构: 图3-2 AT89S52的PDIP封装 图3-3 AT89S52的PLCC封装主要特性:(1) 与MCS-51 单片机产品兼容;(2) 8K 字节在系统可编程Flash 存储器;(3) 1000 次擦写周期;(4) 全静态操作:0Hz33Hz ;(5) 三级加密程序存储器;(6) 32 个可编程I/O 口线;(7) 三个16 位定时器/计数器;(8) 八个中断源;(9) 全双工UART 串行通道;(10)低功耗空闲和掉电模式;(11) 掉电后中断可唤醒;(12) 看门狗定时器;(13) 双数据指针;. (14)掉电标识符.管脚说明:VCC: 电源;GND: 接地;P0口:P0 口是一个8 位漏极开路的双向I/O 口。作为输出口,每位能驱动8 个TTL 逻辑电平。对P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0 口也被作为低8 位地址/数据复用。在这种下, P0 具有内部上拉电阻。在flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0 和P1.2 分别作定时器/计数器2 的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。表3-1 部分引脚第二功能在flash 编程和校验时,P1 口接收低8 位地址字节。P2口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16 位地址读取外部数据存储器(例如执行MOVX DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8 位地址(如MOVX RI )访问外部数据存储器时,P2 口输出P2 锁存器的内容。在flash 编程和校验时,P2 口也接收高8 位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3 口亦作为AT89S52 特殊功能(第二功能)使用,如下表所示。在flash 编程和校验时,P3 口也接收一些控制信号。表 3-2 P3口引脚第二功能RST: 复位输入。晶振工作时,RST 脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR( 地址8EH) 上的DISRTO 位可以使此功能无效。DISRTO 默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash 编程时,此引脚(PROG )也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将会跳过。如果需要,通过将地址为8EH 的SFR 的第0 位置“1”,ALE 操作将无效。这一位置“1”, ALE 仅在执行MOVX 或MOVC 指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH 的SFR 的第0 位)的设置对微控制器处于外部执行模式下无效。PSEN: 外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。EA/VPP: 访问外部程序存储器控制信号。为使能从0000H 到FFFFH 的外部程序存储器读取指令,EA 必须接GND。为了执行内部程序指令,EA 应该接VCC。在flash 编程期间,EA 也接收12 伏VPP 电压。XTAL1: 振荡器反相放大器和内部时钟发生电路的输入端。XTAL2: 振荡器反相放大器的输出端。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写1且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。时钟电路:AT89S52片内设有一个由反向放大器所构成的振荡电路,XTALl和XTAL2 分别为振荡电路的输入端和输出端。时钟可以由内部方式产生或外部方式产生。如图3.4所示:a) 内时钟方式 b) 外时钟方式 3-4 时钟电路图内部方式时钟电路如图3-4 a)所示。在XTAL1 和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体可以在 1.2 MHZ到 12MHZ之间选择,电容值在 530 PF之间选择,电容的大小可起频率微调作用。外部方式的时钟电路如图3-4 b)所示,XTALl接地;XTAL2接外部振荡器。对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于 12MHZ的方波信号。时钟发生器把振荡频率两分频,产生一个两相时钟信号从和地供单片机使用。P1在每一个状态S的前半部分有效。P2在每个状态的后半部分有效。复位和复位电路:AT89S52单片机的复位电路如图3.5所示。在RESET(图中表示为RST)输入端出现高电平时实现复位和初始化。在振荡器运行的情况下,要实现复位操作,必须使RST引脚至少保持两个机器周期(24个振荡器周期)高电平。CPU在第二个机器周期内执行内部复位操作、以后每一个机器周期重复一次,直至 RST端电平变低。复位期间不产生 ALE及PSEN信号。a)上电复位 b)开关复位 3-5 复位电路图 3.2.2 74HC59574HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能 OE时(为低电平),存储寄存器的数据输出到总线。(1)引脚结构图图3-6 74HC595引脚图(2)引脚说明74595的数据端:QA-QH: 八位并行输出端,可以直接控制数码管的8个段。QH: 级联输出端。我将它接下一个595的SI端。SI: 串行数据输入端。74595的控制端说明:/SCLR(10脚): 低点平时将移位寄存器的数据清零。通常我将它接Vcc。SCK(11脚):上升沿时数据寄存器的数据移位。QA-QB-QC-.-QH;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。我通常都选微秒级)RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常我将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。/G(13脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。注:74164和74595功能相仿,都是8位串行输入转并行输出移位寄存器。74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。与164只有数据清零端相比,595还多有输出端时能/禁止控制端,可以使输出为高阻态。3.3 LED显示原理介绍本设计选用价格低廉的发光二极管LED显示器作为显示部分的显示器件,下面介绍LED显示器的工作原理。(1) LDE发光二极管的发光原理发光二极管是由-族化合物,如GaAs(砷化镓)、GaP(磷化镓)、GaAsP(磷砷化镓)等半导体制成的,其核心是PN结。因此它具有一般P-N结的I-N特性,即正向导通,反向截止、击穿特性。此外,在一定条件下,它还具有发光特性。在正向电压下,电子由N区注入P区,空穴由P区注入N区。进入对方区域的少数载流子(少子)一部分与多数载流子(多子)复合而发光,如图3-7所示。图3.7 发光二极管发光原理假设发光是在P区中发生的,那么注入的电子与价带空穴直接复合而发光,或者先被发光中心捕获后,再与空穴复合发光。除了这种发光复合外,还有些电子被非发光中心(这个中心介于导带、介带中间附近)捕获,而后再与空穴复合,每次释放的能量不大,不能形成可见光。发光的复合量相对于非发光复合量的比例越大,光量子效率越高。由于复合是在少子扩散区内发光的,所以光仅在靠近PN结面数m以内产生。理论和实践证明,光的峰值波长与发光区域的半导体材料禁带宽度Eg有关,即1240/Eg(mm)式中Eg的单位为电子伏特(eV)。若能产生可见光(波长在380nm紫光780nm红光),半导体材料的Eg应在3.261.63eV之间。比红光波长长的光为红外光。现在已有红外、红、黄、绿及蓝光二极管,但其中蓝光二极管成本、价格很高,使用不普遍。(2) LED数码显示器的结构LED是用发光二极管显示字段的显示器件,也可称为数码管,其外形如下图3.6所示。 图3.8 数码管结构图它由8个发光二极管构成,通过不同的组合可用来显示数字0 9、字符A F、H、L、P、R、U、Y、符号“-”及小数点“.”。数码管的外形结构如图3.9所示。数码管又分为共阴极和共阳极两种结构。由图3.9可见,它有8个发光二极管阳极连在一起作为公共端;而共阴极是将8个发光二极管阴极连在一起作为公共端。本设计采用的是共阳极的。数码管的公共端相当于一个总开关,一般称为码位开关,当它低电平的时候数码管全灭;当它为高电平时,根据发光二极管阳极的状态(一般成为段码或字型码),低电平该段亮,高电平不亮。输出一个段码就可以控制LED显示器的字型。表3.5给出了段码与字型的关系,假定a,b,c,d,e,f,dp分别对应D0,D1,D2,D3,D4,D5,D6,D7。(3) LED数码显示器的接口方法LED显示器的接口常分为动态扫描方式和静态显示方式。表3.5 段码与字形码的关系字形D7dpD6gD5fD4eD3dD2cD1bD0a段码01100000003H1111110019FH21010010045H3101100000DH41001100199H51001001029H61000001021H7111110001FH81000000001H91001000009HA1000100011HB1000001041HC1100011063HD1010000185HE1000011061HF1000111071H静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。每个数码管的8个字段分别与一个8位I/O口地址相连,I/O口只要有段码输出,相应字符即显示出来,并保持不变,直到I/O口输出新的段码。采用静态显示方式,较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但其占用的口线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。动态扫描显示方式:其工作原理是将多个显示器的段码同名端连在一起,位码分别控制,利用眼睛的余辉暂留效应,分别进行显示。只要保证一定的显示频率,看起来的效果和一直显示是一样的,但在电路上却简化了很多,降低了成本。比如要做四位LED显示,静态显示方式则需要4块74LS164作为静态显示接口,如用动态扫描显示则只需一块即可。通常也用8155芯片作为动态扫描显示接口的扩展,扩展电路在此就不做叙述了,本设计采用的是串行口动态扫描方式。动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常,各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的位选线(公共阴极或阳极)由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码。依此规律循环,即可使各位数码管显示将要显示的字符。虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人以同时显示的感觉。3.4 键盘控制原理介绍 3.4.1 键盘的工作原理(1) 键盘的分类按键按结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。 按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。全编码键盘能够由硬件逻辑自动提供与键对应的编码,此外,一般还具有去抖动和多键、窜键保护电路。这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成。由于其经济实用,较多地应用于单片机系统中。本设计采用非编码键盘接口。(2) 按键输入原理在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程。对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将键输入,并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。(3)按键结构与特点 机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相容。机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图3.10抖动时间的长短与开关的机械特性有关,一般为510 ms。在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。这一点可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路。图3.11是一种由R-S触发器构成的去抖动电路,当触发器一旦翻转,触点抖动不会对其产生任何影响。图3-9 键触点的机械抖动图3-10 双稳态去抖电路电路工作过程如下:按键未按下时,a = 0,b = 1,输出Q = 1。按键按下时,因按键的机械弹性作用的影响,使按键产生抖动。当开关没有稳定到达b端时,因与非门2输出为0反馈到与非门1的输入端,封锁了与非门1,双稳态电路的状态不会改变,输出保持为1,输出Q不会产生抖动的波形。当开关稳定到达b端时,因a = 1,b = 0,使Q = 0,双稳态电路状态发生翻转。当释放按键时,在开关未稳定到达a端时,因Q = 0,封锁了与非门2,双稳态电路的状态不变,输出Q保持不变,消除了后沿的抖动波形。当开关稳定到达a端时,因a = 0,b = 0,使Q = 1,双稳态电路状态发生翻转,输出Q重新返回原状态。由此可见,键盘输出经双稳态电路之后,输出已变为规范的矩形方波。 软件上采取的措施是:在检测到有按键按下时,执行一个10 ms左右(具体时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态。同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。(4) 按键编码一组按键或键盘都要通过I/O口线查询按键的开关状态。根据键盘结构的不同,采用不同的编码。无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的跳转。(5) 编制键盘程序 一个完善的键盘控制程序应具备以下功能:检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。准确输出按键值(或键号),以满足跳转指令要求。3.4.2 独立式键盘独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键的典型应用如图3.11所示。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。图3-11 独立式按键电路独立式按键的软件常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。此程序比较简单,在此不做编写,本设计采用的是矩阵扫描键盘。3.4.3 矩阵式键盘单片机系统中,若使用按键较多时,通常采用矩阵式(也称行列式)键盘。本设计采用的就是矩阵式键盘。(1) 矩阵式键盘的结构及原理矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,其结构如图3.13所示。由图可知,一个44的行、列结构可以构成一个含有16个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口。矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。(2) 矩阵式键盘按键识别按键的方法很多,扫描法识别按键的过程. 图3-12 矩阵键盘按键按下时,与此键相连的行线与列线导通,行线在无键按下时处在高电平显然,如果让所有的列线也处在高电平,那么,按键按下与否不会引起行电平的变化,因此,必须使所有列线处在低电平。只有这样,当有键按下时,该键所在的行电平才会由高电平变为键盘的编码.(3)对于独立式按键键盘,因按键数量少,可根据实际需要灵活编码。对于矩阵式键盘,按键的位置由行号和列号惟一确定,因此可分别对行号和列号进行二进制编码,然后将两值合成一个字节,高4位是行号,低4位是列号。如图3.12中的8号键,它位于第2行,第0列,因此,其键盘编码应为20H。采用上述编码对于不同行的键离散性较大,不利于散转指令对按键进行处理。因此,可采用依次排列键号的方式对按排进行编码。以图3.12中的44键盘为例,可将键号编码为:01H、02H、03H、0EH、0FH、10H等16个键号。编码相互转换可通过计算或查表的方法实现。 (4)键盘的工作方式对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。(5)编程扫描方式编程扫描方式是利用CPU完成其它工作的空余时间,调用键盘扫描子程序来响应键盘输入的要求。在低电平。CPU根据行电平的变化,便能判定相应的行有键按下。8号键按下时,第2行一定为低电平。然而,第2行为低电平时,能否肯定是8号键按下呢?回答是否定的,因为9、10、11号键按下,同样会使第2行为低电平。为进一步确定具体键,不能使所有列线在同一时刻都处在低电平,可在某一时刻只让一条列线处于低电平,其余列线均处于高电平,另一时刻,让下一列处在低电平,依此循环,这种依次轮流每次选通一列的工作方式称为键盘扫描。采用键盘扫描后,再来观察8号键按下时的工作过程,当第0列处于低电平时,第2行处于低电平,而第1、2、3列处于低电平时,第2行却处在高电平,由此可判定按下的键应是第2行与第0列的交叉点,即8号 执行键功能程序时,CPU不再响应键输入要求,直到CPU重新扫描键盘为止。键盘扫描程序一般应包括以下内容:判别有无键按下;键盘扫描取得闭合键的行、列值;用计算法或查表法得到键值;判断闭合键是否释放,如没释放则继续等待;将闭合键键号保存,同时转去执行该闭合键的功能。(6)定时扫描方式定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10 ms)的定时,当定时时间到就产生定时器溢出中断。CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。定时扫描方式的硬件电路与编程扫描方式相同。(7)中断扫描方式种键盘扫描方式时,无论是否按键,CPU都要定时扫描键盘,而单片机应用系统工作时,并非经常需要键盘输入,因此,CPU经常处于空扫描状态。为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键。图3-13 中断扫描键盘电路图3-13是一种简易键盘接口电路,该键盘是由8031 P1口的高、低字节构成的44键盘。键盘的列线与P1口的高4位相连,键盘的行线与P1口的低4位相连,因此,P1.4P1.7是键输出线,P1.0P1.3是扫描输入线。图中的4输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5 V电源,输出端接至8031的外部中断输入端。具体工作如下:当键盘无键按下时,与门各输入端均为高电平,保持输出端为高电平;当有键按下时,端为低电平,向CPU申请中断,若CPU开放外部中断,则会响应中断请求,转去执行键盘扫描子程序。3.5 本章小结 本章对硬件电路的设计和电路所用到的芯片进行了介绍。主要是键盘控制电路与显示电路的原理和功能,并对LED显示原理进行了介绍。下面将根据以上说介绍的原理设计键盘控制及显示硬件电路。第4章 键盘控制及显示硬件电路实现本章将根据上面所介绍的原理及芯片功能设计键盘控制及显示的硬件实现电路,键盘控制及显示电路的设计流程是:键盘按键按下,输入该键盘键值,经CPU处理后输出,由LED显示器显示所按的键值。其工作原理:当有键按下时,CPU将对整个键盘进行扫描,确定按键位置,读取键值;CPU再将所读取的键值送到显示部分,最后通过LED显示器显示键值。其总体框图如图,总电路原理图见(附录2)。图4-1 电路总设计框图4.1 LED显示电路设计单片机并行I/O口数量总是有限的,有时并行口需作其他更重要的用途,一般也不会用数量众多的并行I/O口专门用来驱动显示电路,因此本设计采用了AT89S52的串行通信口静态显示。AT89S52的串行通信口是一个功能强大的通信口,而且是相当好用的通信口,用于显示驱动电路再合适不过了,下面我们就根据这种需要设计一个用两个串行通信口线设计一个8位LED显示电路。下图即是电路原理图,我采用AT89S52单片机,同时用廉价易得的74HC595作为驱动芯片。74HC595是一个8位串入并出的移位寄存器,其此处的功能是将AT89S52串行通信口输出的串行数据译码并在其并口线上输出,从而驱动LED数码管。使用串行口进行LED通信,程序编写相当简单,只需将需显示的数据直接送串口发送缓冲器,等待串行中断即可,程序见附录,电路原理如图4-2。图4-2 串行显示电路采用静态显示技术,画面稳定,无杂点,图像效果清晰;视频效果流畅。 LED显示器是由发光二极管排列组成的一显示器件,它采用低电压扫描驱动,同时还具有如下优点:耗电省,使用寿命长,成本低,亮度高,视角大,规格品种多等,因此本设计采用LED数码显示器作为显示部分的重要元件。4.2 独立按键键盘的电路设计本设计采用的是8键独立式键盘,扫描方法采用编程扫描方式,其键盘部分电路图如下:图4-3 独立按键电路图本设计采用的是一种行扫描法,行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,其扫描过程如下:(1) 判断键盘中有无键按下:将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。(2) 判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。比如,如图4.3,89C51的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。行线P1.4-P1.7分别接有4个上拉电阻到正电源+5V,并把列线P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线。4根行线和4根列线形成16个相交点。检测当前是否有键被按下。检测的方法是P1.4-P1.7输出全“1”,读取P1.0-P1.3的状态,若P1.0-P1.3为全“0”,则无键闭合,否则有键闭合;去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断;若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描P1.4-P1.7按下述4种组合依次输出:P1.7 1 1 1 0P1.6 1 1 0 1P1.5 1 0 1 1P1.4 0 1 1 1在每组行输出时读取P1.0-P1.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。为了保证键每闭合一次CPU仅作一次处理,必须却除键释放时的抖动。4.3 硬件的焊接4.3.1 硬件的焊接硬件的焊接是本次设计的重要环节,所用的工具为:30W电烙铁,焊锡和镊子。因为本次设计电路组成相对简单,因此采用实验板焊接电路。实验板上没有连通的导线,所有元器件都要用导线连接,这就要求一定的焊接技能,不过此技能在以前的电装实习中已经学过并熟练掌握。焊接前先要将所需材料准备好,把电路所需元器件按合理的布局在实验板上排好,这样焊接线路比较明朗,不容易出错,检查时也比较容易。(1) 低座的焊接本次设计一共有九个底座,即1个AT89S52,8个74HC595。焊接时,先将低座按照原先排好的布局插到电路板上,因为每个管脚几间隙都很小,因此在焊接是都要很仔细,焊锡不要太多,焊点不要太大,这样可以防止管脚之间的短路,同时在焊接时不能形成虚焊,虚焊会导致电路的断路,底座焊接要稳,松动也会容易导致虚焊。(2) 键盘的焊接本次设计键盘由8个普通开关按键按1行的形式组成。我所选用的普通开关按键有四个脚,其中有两个脚是导通的,如果在焊接时不小心将导通的两端作为按键则按键将不起作用,因此在焊接前应使用万用表检查哪两个脚为导通端,这样会避免按键无作用情况的发生。(3) 导线的焊接电路中导线是用来连接元器件的,它相当于整个电路的血管。导线是整个电路焊接最麻烦的,导线的焊接不仅需要细心还要有耐心,每一根线的长短,怎么布局都要自己由根据整个电路的布局来确定,少一根都不行。因此我在焊接时是先将要连的线在实验板上用铅笔标画好,然后焊接,这样焊出来的不仅美观而且不容易出错。4.3.2 电路板的检查和故障排除(1) 电路板的检查当整个电路板所有元器件及导线都焊接完成后,则开始用万用表检查电路的导通情况。先检查低座,将万用表调到电阻最低挡,再将两个表笔分别接到每个管脚的两端,若有万用表有报警声这说明导通,若没反应即为不导通。再检查导线的导通情况,办法和检查低座一样。(2) 电路故障的排除当在检查低座的时候发现AT89S52低座的21脚没有导通,经检查发现21脚松动,形成虚焊,经重新焊接再用万用表检查,21脚导通,故障排除 .在检查导线时发现AT89S52低座的40叫与地线和火线同时导通,经对整个线路盘查发现火线与地线相连通了,经处理后再次用万用表检查,电路完好,故障排除.高低单色光地方官地方官地方官地方官地方官地方官地方官对法国队似懂非懂所冻豆腐大随风倒反对。4.4 本章小结本章主要叙述了键盘控制电路和显示电路是怎样实现的。LED显示电路的设计,独立按键的电路设计以及硬件的焊接,电路板的检查和故障的排除。,第5 章 键盘控制及显示电路软件设计 软件部分设计是本次设计的另一个重要组成部分,它的设计成败将直接影响到整个设计的功能能否正常实现。本次软件设计采用汇编语言编程,用keil51软件对所编程序进行编译。5.1 软件设计的基本工具5.1.1 汇编语言的简介汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,因此汇编语言是不易移植的。C语言也是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。对于目前普遍使用的RISC架构的8bitMCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什么动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在单片机开发中,通常是建议采用汇编语言。5.1.2 汇编语言的指令系统与程序前面已经讲述了本设计的几个主要组成部分,这些部分只构成了系统的硬件。所谓硬件(Hardware),就是看得到,摸得到的实体。但是,光有这样的硬件,还只是有了实现和控制功能的可能性。整个电路系统要真正地能进行工作,还必须有软件(Software)的配合。软件主要指的是单片机实现各种功能的各种程序。程序是由指令组成的,指令的基本组成是操作码和操作数。单片机的品种很多,设计时怎样表示操作码和操作数,都有各自的规定,再有指令代码也各不相同,因此,必须对所选单片机的全部指令,也就是所谓”指令系统”,有足够的了解。各个系列的单片机虽然有不同的指令系统,但也有其共同性。掌握一种单片机的指令系统,对其它系列单片机可以起到触类旁通的作用。MCS51单片机应用广泛,派生品种多,具有代表性,所以,这里以MCS51系列的指令系统为例说明”指令”的组成和应用。例:MOVA,20H,这条指令表示把20H这个数送入累加器A中(一个特殊功能寄存器)。再如:ADDA,70H,这条指令表示把累加器A中的内容(在上例中送入的20H)和存贮器中地址为70H单元中的内容(也是一个数字),通过算术逻辑单元(英文缩写为ALU)相加,并将结果保留在A中。这里MOV、ADD等称为操作码,而A、20H、70H等均称为操作数。在汇编语言程序中,操作码通常由英文单词缩写而成,这样有助于记忆,所以又称助记符。如MOV就是英文单词MOVE的缩写,含有搬移的意思;而ADD即为英文单词,其意为相加。因此,对于略懂
展开阅读全文