《数码管显示4×4矩阵键盘的键盘号--万意.docx》由会员分享,可在线阅读,更多相关《数码管显示4×4矩阵键盘的键盘号--万意.docx(21页珍藏版)》请在三一办公上搜索。
1、理与数码管显示4X4矩阵键盘的键盘号学院:物理与电子工程学院专业:自动化班级:13级7班学号:姓名:万意指导教师:马世榜日期:2013年12月31日目录1引言12设计方案23硬件设计33.1AT89S5133.24*4矩阵式键盘63.2.1矩阵式键盘介绍63.2.2键盘扫描原理73.3硬件电路连接91. 4.1单片机时钟电路92. 机复位电路103. 4.3矩阵式键盘电路104. 4.4LED数码管显示电路104软件设计124.1 所用软件简介125. 1.1Keil125.1 .2Proteus125.2 程序流程图144.3源程序155电路原理图17参考文献18矩阵式键盘乃是当今使用最为广
2、泛的键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路局部,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个局部进行实现。4*4矩阵式键盘采用AT89S51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用汇编语言编程。单片机将检测到的按键信号转换成数字量,显示于LED显示器上。该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。2设计方案单片机的PI口的Pl.O-Pl.7连接4X4矩阵键盘,PO口控制一只数码管,当4X4矩阵键盘中的
3、某一按键按下时,数码管上显示对应的键号。例如,1号键按下时,数码管显示“1”,14号键按下时,数码管显示“E”等等。本论文主要研究单片机控制的键盘识别显示系统,分别对按键信息和显示电路以及软、硬件各个局部进行研究。主要内容如下:根据矩阵式键盘的特点,进行键盘控制系统的整体研究与设计;LED实时显示按键信息;采用软件编程的方法实现按键信息的提取和显示。3.1AT89S51AT89S51是一种带4K字节FLASH存储器(FPEROM-FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。AT89S51单片机为很多嵌入
4、式控制系统提供了一种灵活性高且价廉的方案。引脚如下图1P1.0J/VCCPl.lP0.0P1.2PO.1P1.3P0.2P1.4P0,3P1.5P0.4P1.6P0.5P1.7P0.6RST/VPDP0.7RXDP3.0SEA/VPPTXDP3.13ALEPRINT0P3.2-PSEN而P3,3P2.7TOP34P2.6TlP3.5P2.5海P3,6P2.4RDP3,7P2.3XTAI2P2.2XTALlP2.1VSSP2.0402393384375366357348339321031113012291328142715261625172418231力2021图3-1AT89S51管脚图AT8
5、9S51其具有以下特性:与MCS-51兼容4K字节可编程FLASH存储器寿命:IOoo写/擦循环数据保存时间:10年全静态工作:OHZ-24MHz三级程序存储器锁定128X8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路特性概述:AT89S51提供以下标准功能:4k字节FIaSh闪速存储器,128字节内部RAM,32个I/O接口,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至OHZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的
6、工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。管脚说明:VCC:供电电压。GND:接地。PO11:PO口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当PO口的管脚第一次写1时,被定义为高阻输入。Po能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FlASH编程时,PO口作为原码输入口,当FIASH进行校验时,PO输出原码,此时PO外部必须接上拉电阻。Pl:Pl口是一个内部提供上拉电阻的8位双向I/O口,Pl口缓冲器能接收输出4TTL门电流。PI口管脚写入1后,被
7、内部上拉为高,可用作输入,Pl口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,Pl口作为低八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能存放器的内容0P2口在FLASH编程和校
8、验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89S51的一些特殊功能口,如下表所示:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INTO(外部中断0)P3.3/INTI(外部中断1)P3.4TO(记时器0外部输入)P3.5Tl(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接
9、收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的l6o因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:
10、外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,那么在此期间外部程序存储器(OOOOH-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)oXTALl:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTALl和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为
11、片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的上下电平要求的宽度。3.24*4矩阵式键盘3.2.1矩阵式键盘介绍矩阵式键盘(或者叫行列式键盘)常应用在按键数量比拟多的系统之中。这种键盘由行线和列线组成,按键设置在行、列结构的交叉点上,行、列线分别接在按键开关的两端。行列式键盘可分为非编码键盘和编码键盘两大类。编码键盘内部设有键盘编码器,被按下键的键号由键盘编码器直接给出,同时具有防抖和解决重键的功能。非编码键盘通常采用软件的方法,逐行逐列检查键盘状态,当有键按
12、下时,通过计算或查表的方法获取该键的键值,通常,计算机通过程序控制对键盘扫描,从而获取键值,根据计算机扫描的方法可以分为定时扫描法和中断扫描法两种。本系统中的4*4矩阵式键盘结构简单,按键数较少,采用非编码式键盘,当有键按下时,由单片机通过程序扫描确定键值,并将获得的键值通过LED数码管显示出来,4*4矩阵式键盘结构及键值分布如下列图:图3-2矩阵式键盘电路原理图HHHHBWKN图3-3键盘键值分布3. 2.2键盘扫描原理为了更加贴近实际应用,本系统采用中断式扫描法,这样可以节约单片机开销,提高单片机工作效率,使得单片机在没有键盘输入时可以处理其他工作,其具体工作过程为:在没有键按下时矩阵键盘
13、行线接高电平,列线接低电平,当某个键被按下时,该按键所在行线电位被拉低,触发单片机的外部中断INT0,进入中断子程序,在中断程序中,单片机对矩阵键盘进行扫描以确定按下的键值,扫描过程如下:1、 检测行线电平,确定是否有按键被按下;2、 延时去抖动;3、 重新确认是否有按键被按下,假设有,扫描键值,假设没有,返回主程序;4、 扫描键值,首先行线接高电平,列线接低电平,对行线电平进行检测,以确定按下的键所在的行;5、 行线接低电平,列线接高点平,对列线电平进行检测,确定按下的键所在的列;6、 将扫描所得的按键值送入LED数码管显示。3LED数码管1.ED(发光二级管)显示器件是计算机控制控制系统中
14、的廉价输出设备,它由多个发光二极管组成,能显示许多种字符。由于制作材料不同,LED可以发出红、黄、篮、紫等各种单色光,一个发光二级管正常发光时的电流大约为IomA,本系统中使用的是七段共阴极LED数码管。图4、5所示为七段共阴极LED显示器件的结构及外形图。七段LED显示器件就是将7个发光二极管按一定的方式组合在一起,如图4所示。图3-47段LED显示器件外形图VVVVVVVCOM图3-57段LED显示器件结构图下表给出了共阴极7段LED显示器件所能显示的局部字符与7段控制显示代码的对应关系表3-1共阴极7段LED显示器件所能显示的局部字符与7段控制显示代码的对应关系显示字符控制显示代码(十六
15、进制)显示字符控制显示代码(十六进制)106A7725BB7C34FC39466D5E56DE7967DF71707H7687FP7396F-40O3F不显示00在本系统中,4*4键盘共有16个键,对其编号09,AF,所以用一个7段数码管静态显示即可满足即时显示按键信息的要求。所谓静态显示,就是当显示器件显示某个字符时,相应的显示段(发光二级管)恒定地导通或截止,直到显示另一个字符为止。这种显示方式显示一个字符时,只需要微处理器送一次代码,因此占用机时少,而且显示稳定可靠,其缺点是,使用元器件相对较多,且线路比拟复杂,相对而言本钱较高,比拟适合显示位数较少的情况。3. 3硬件电路连接3.1.1
16、 单片机时钟电路时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALI和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比拟稳定,实际使用中常采用这种方式,如图6所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反应元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。图6中外接晶体以及电容Cl和C2构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值为30pF左右,晶振频率选
17、11.0592MHZ。3.1.2 单片机复位电路为了初始化单片机内部的某些特殊功能存放器,必须利用复位电路,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(1/0)端口存放器置为FFH,堆栈指针SP置为07H,SBUF内置为不定值,其余的存放器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系
18、统采用上电复位方式。图6中R2、R3和C3组成上电复位电路,其值R2、R3取为1K,C3取为10pF3.4.3矩阵式键盘电路4*4矩阵式键盘接于单片机的P2口,P2.0P2.3接行线,P2.4P2.7接列线,初始化和无按键按下时,P2.0P2.3输出高电平,P2.4P2.7输出低电平,当P2.(TP2.3中某个位为低电平时说明有按键按下,触发单片机中断完成相应功能,键盘与单片机的连接如图5.3.4.4LED数码管显示电路1.ED显示器接在单片机的Pl口,其中PL(TPI.6接LED的控制端,PL7接COM端,工作时PL7端始终输出低电平,PLOP1.6根据要显示的字符输出相应的数据。图3-6系
19、统硬件连接图4软件设计4.1 所用软件简介4.1.1 KeilKeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全WindOWS界面,并将这些局部组合在一起。其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能表达高级语言的优势。1 .系统概述KeilC5
20、1软件提供丰富的库函数和功能强大的集成开发调试工具,全WindoWS界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能表达高级语言的优势。2 .KeilC51单片机软件开发系统的整体结构C51工具包的整体结构,uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件
21、可由LIB51创立生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)oABS文件由0H51转换成标准的HeX文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPRoM中。使用独立的Keil仿真器时,考前须知仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。仿真器上的复位按钮只复位仿真芯片,不复位目标系统。仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外RoM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连
22、,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。4.1.2ProteusProteUS是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HCll、PIeIO/12/16/18/24/30/DSPlC33、AVR.ARM、8086和MSP430等,2010年又增加了COrteX和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、K
23、eil和MPLAB等多种编译器。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。广泛应用于各个领域。ProteUS为用户提供了丰富的资源,主要有:1.ProteUS可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。2 .Proteus可提供的仿真仪表资源:示波器、逻辑分析仪、虚拟终端、SPl调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中
24、随意的调用。3 .除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。4 .Proteus可提供的调试手段Proteus提供了比拟丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。PROTEUS是单片机课堂教学的先进助手。PROTEUS不仅可将许
25、多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者那么是实物演示实验难以到达的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台随着科技的开展,“计算机仿真技术”已成为许多设计部门重要的前
26、期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTEUS也能茯得愈来愈广泛的应用。使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和全国大学生电子设计竞赛中,我们使用Proteus开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计
27、效率。因此,Proteus有较高的推广利用价值。图4-1主程序流程图ttincludevoidmainOPl=OxOO;TCON=OxOI;IE=0x85;while(1)(P2=0x0f;)voidcounterO(void)interrupt0(charkey,key_h,key_l,delay;if(P2!=OxOf)初始化LED数码管设置INT0、INTl触发方式使能INTOINTl中断接通矩阵键盘INTo中断效劳程序for(delay=0;delay100;delay+);if(P2!=OxOf)(P2=0x0f;key-h-P20x0f;P2=0xf0;key-l=P20xf0;确
28、认是否有键按下延时去抖动重新确认是否有键按下检测按键所在行检测按键所在列key-key_h+key_l;)switch(key)caseOx11:P1=0x06;break;case0x21:Pl=0x5b;break;case0x41:Pl=0x4f;break;确定按键值并送入LED显示case0x81:Pl=0x66;break;case0x12:Pl=0x6d;break;case0x22:Pl=0x7d;break;case0x42:Pl=0x07;break;case0x82:Pl=0x7f;break;case0xl4:Pl=0x6f;break;case0x24:Pl=0x3f
29、;break;case0x44:Pl=0x77;break;case0x84:Pl=0x7c;break;case0x18:Pl=0x39;break;case0x28:Pl=0x5e;break;case0x48:Pl=0x79;break;case0x88:Pl=0x71;break;default:Pl=OxOO;break;)/INTl中断效劳程序voidCounterl(void)interrupt1(chari;下延确认OFF键是否按时去抖动重新确认复位键是否按下关闭LED显示for(i=0;i100;i+);if(P33=0)if(P33=0)Pl=OxOO;5电路原理图参考文献1、单片机原理及应用技术国防工业出版社张淑清等编著2、计算机控制技术(第二版)电子工业出版社朱玉玺等编著3、数字电子技术根底(第五版)高等教育出版社阎石主编4、51单片机快速上手机械工业出版社陈志旺李亮等编著5、VisualC+使用教程电子工业出版社郑阿奇主编