版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机应用技术(第2版)项目5项目4项目3项目2项目1C语言基础知识单片机开发软件及硬件系统的认识中断系统与定时/计数器的应用显示器与键盘接口技术的应用串行接口技术的应用目录项目7项目6A/D与D/A转换技术的应用单片机综合实践项目4显示器与键盘接口技术的应用项目导读单片机应用系统在运行时需要与外部设备交换信息,其中显示器与键盘是实现人机交互不可或缺的设备。本项目主要介绍显示器与键盘接口技术的相关知识,通过本项目的学习,学生应能掌握显示器与键盘的工作原理及其应用方法。知识目标 掌握LED数码管显示器的结构及工作原理 了解LED数码管显示器的字形码 掌握LED点阵显示器的结构及工作原理 了解LCD液晶显示器的功能及分类 掌握LCD液晶显示器的结构及工作原理 掌握按键的结构及工作原理 了解键盘的分类 掌握独立式键盘的结构及工作原理 掌握矩阵式键盘的结构及工作原理达成目标达成目标技能目标能应用显示器控制显示字符或图形能应用键盘进行检测与控制素质目标拥护中国共产党的领导,践行社会主义核心价值观弘扬脚踏实地、刻苦钻研、爱岗敬业的劳模精神加强实践练习,注重学思结合、知行统一,增强勇于探索的创新精神项目导航设计篮球比赛计时计分器——显示器接口技术的应用任务4.1设计密码锁——键盘接口技术的应用任务4.2C设计篮球比赛计时计分器
——显示器接口技术的应用
011211101101011011010010011001101010100100110110100101100101110110101001101110101010101011010100110100104.14.1任务工单扫一扫查看任务工单任务描述篮球比赛是根据比赛队伍在规定时间里的得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统。一些学校的篮球场没有设置计时计分系统,因此在比赛时需要采用人工计时计分,即裁判自带手表计时、人工翻页计分,由于要裁判计时、要人工记录两队累计分数,一旦协同失误就会造成记录错误,影响比赛的正常进行。因此,设计一款适合比赛、性能稳定、操作方便的篮球比赛计时计分器,具有重要的意义。任务实施1.整体设计思想
2.硬件设计3.软件设计4.仿真调试详细内容扫码观看4.1.1LED数码管显示器单片机应用系统中最常用的显示器是LED数码管显示器、LED点阵显示器和LCD液晶显示器。这3种显示器可以显示数字、字符、图像等信息,它们的驱动电路简单、易于实现且价格低廉,因而应用较为广泛。4.1.1LED数码管显示器目前LED数码管显示器的种类有很多,按外观不同,LED数码管显示器可以分为七段LED数码管显示器、米字形LED数码管显示器等,如图所示。七段LED数码管显示器米字形LED数码管显示器4.1.1LED数码管显示器单片机应用系统中常用的是七段LED数码管显示器,下面以它为例来进行介绍。七段LED数码管显示器由8个发光二极管(以下简称段)构成,其引脚排列如图所示。通过不同的组合可以显示数字0~9,字符A~F、H、L、P、U,符号“-”及小数点“.”。1.LED数码管显示器的结构及工作原理七段LED数码管显示器的引脚排列4.1.1LED数码管显示器在七段LED数码管显示器中,由于小数点段不常用,因此这类数码管显示器一般被称为“七段”。4.1.1LED数码管显示器共阳极LED数码管显示器的结构原理如图所示,由于所有段的阳极均连接高电平,因此在使用时,需要在相应段上加低电平,才能使其发光。共阴极LED数码管显示器的结构原理如图所示,由于所有段的阴极均连接低电平,因此在使用时,需要在相应段上加高电平,才能使其发光。bit变量名=变量值;1)共阴极LED数码管显示器共阳极LED数码管显示器2)七段LED数码管显示器根据发光二极管物理连接的不同,可分为共阴极和共阳极两种类型。bit变量名=变量值;4.1.1LED数码管显示器如果说我们国家是块闪闪发光的显示器,那么我们每个人都是属于这块显示器的一个“数码管”,是这块显示器不可缺少的部分。所谓“天生我材必有用”,随着国家的蓬勃发展,各行各业都亟须专业人才。我们作为新时代的青年,应当正视自己,发挥自己的优势,学成一技之长,为祖国的发展贡献自己的力量。4.1.1LED数码管显示器2.LED数码管显示器的字形码LED数码管显示器只要控制LED段的亮与灭即可显示相应的字符。当LED数码管显示器的连接方式确定时,若要显示某一特定字符,其控制字形是固定不变的。控制字形控制的是LED数码管显示器上要显示的字符形状,称为字形代码,简称为字形码。LED数码管显示器八段的各代码位与显示段的对应关系如表所示。代码位D7D6D5D4D3D2D1D0显示段dpgfedcba4.1.1LED数码管显示器【例4-1】
LED数码管显示器要显示数字“6”,如图所示,试确定其字形码。4.1.1LED数码管显示器【问题分析】
LED数码管显示器有共阴极和共阳极两种不同的连接,连接不同,其对应的字形码也不同。【确定方法】
在共阴极连接中,要点亮的段为高电平,不点亮的段为低电平,则各显示段的状态如表所示。显示段dpgfedcba各段状态011111014.1.1LED数码管显示器【确定方法】
因此,在共阴极连接中,数字“6”的字形码为:7DH。在共阳极连接中,要点亮的段为低电平,不点亮的段为高电平,则各显示段的状态如表所示。因此,在共阳极连接中,数字“6”的字形码为:82H。依此类推,可得到LED数码管显示器的字形码,如表所示。显示段dpGfedcba各段状态10000010显示
字符共阴极LED数码管显示器共阳极LED数码管显示器dpgfedcba字形码dpgfedcba字形码0001111113FH11000000C0H10000011006H11111001F9H2010110115BH10100100A4H3010011114FH10110000B0H40110011066H1001100199H5011011016DH1001001092H6011111017DH1000001082H70000011107H11111000F8H8011111117FH1000000080H9011011116FH1001000090HA0111011177H1000100088HB011111007CH1000001183HC0011100139H11000110C6HD010111105EH10100001A1HE0111100179H1000011086HF0111000171H100011108EHH0111011076H1000100189HL0011100038H11000111C7HP0111001173H100011008CHU001111103EH11000001C1H-0100000040H10111111BFH.1000000080H011111117FH4.1.1LED数码管显示器对于同一个字符,共阴极和共阳极字形码的关系是互为反码。4.1.1LED数码管显示器3.LED数码管显示器的显示方式要使LED数码管显示器显示某一字符,不仅需要对每一位显示器的公共端(com)进行控制,称为位控(控制LED数码管显示器的状态);还需要对每一位显示器中的各段(a~g、dp)进行控制,称为段控。LED数码管显示器的显示方式可分为静态显示方式和动态显示方式。静态显示方式动态显示方式4.1.1LED数码管显示器
数码管显示器的显示方式1)静态显示方式静态显示方式是指数码管的位控始终被选中的方式。在这种显示方式下,每一个LED数码管显示器都需要一个8位输出端口进行控制,其接口电路如图所示。LED4.1.1LED数码管显示器
数码管显示器的显示方式1)静态显示方式静态显示方式的优点是电路设计简单、显示稳定、编程简单。静态显示方式的缺点是占用硬件资源较多,每个LED数码管显示器需要独占8条输出线,随着LED数码管显示器位数的增加,需要的I/O端口输出线也将增加。LED4.1.1LED数码管显示器
数码管显示器的显示方式2)动态显示方式动态显示方式是指多个数码管共用一组段控,每个数码管的位控被轮流选中的方式。动态显示方式一般称为“扫描”,段控数据仅对位控选中的数码管有效。在动态显示方式中,所有LED数码管显示器的段控线并在一起,接到一个8位的I/O端口上,而位控线则分别接到各自的I/O端口上,其接口电路如图所示。LED4.1.1LED数码管显示器
数码管显示器的显示方式LED动态显示接口电路4.1.2LED点阵显示器LED点阵显示器是以发光二极管为像素组成的阵列,不仅能显示文字、图像,还能显示各种动画。LED点阵显示器由于具有亮度高、引脚少、视角大、寿命长、耐腐蚀等特点,因此被广泛应用于各个领域。常见的LED点阵显示器,按像素可分为5×7、7×9、8×8、16×16、24×24等不同规格;按颜色可分为单基色LED点阵显示器、双基色LED点阵显示器和三基色LED点阵显示器等;按发光二极管物理连接的不同,可分为共阴极LED点阵显示器和共阳极LED点阵显示器。4.1.2LED点阵显示器知识链接单基色LED点阵显示器只能显示固定的单色,如红、绿、黄等。双基色LED点阵显示器和三基色LED点阵显示器可显示不同的颜色,颜色由不同颜色发光二极管点亮的组合方式来决定。例如,单红LED灯亮显示红色,单绿LED灯亮显示绿色,而红绿LED灯都亮则显示黄色。若按脉冲方式控制点亮时间,可实现256级或更高级的灰度显示,即真彩色显示。4.1.2LED点阵显示器1.LED点阵显示器的结构及工作原理8×8共阳极单色LED点阵显示器的实物图如图所示,其内部等效电路图如图所示。它由8行8列发光二极管组成,外部共有16个引脚,其中水平方向的8根行线(Y0~Y7)用数字0~7表示,垂直方向的8根列线(X0~X7)用字母A~H表示。LED点阵显示器是由一个一个的点(发光二极管)组成的,总点数为行数与列数的积,引脚数为行数与列数的和。下面以一个8×8的共阳极单基色LED点阵显示器为例进行介绍。4.1.2LED点阵显示器实物图等效电路图4.1.2LED点阵显示器由图可知,若在某行线上加高电平,同时在某列线上加低电平,则对应行线和列线交叉点处的LED灯将被点亮。例如,若Y7为1,X7为0,则右下角的LED灯点亮;若Y2为1,X0~X7均为0,则Y2行的8个LED灯全亮。4.1.2LED点阵显示器在共阴极LED点阵显示器中,每一行发光二极管的阴极连接在一起,每一列发光二极管的阳极连接在一起。如果需要点亮某个二极管,只需要设置该二极管的列引脚为高电平、行引脚为低电平即可。4.1.2LED点阵显示器2.LED点阵显示器的显示方式静态显示方式:每一个像素都需要1套驱动电路,如果显示器有n×m个像素,则需要n×m套驱动电路。静态显示方式原理简单、控制方便,但硬件接线复杂、占用I/O端口较多。动态显示方式:采用多路复用技术,如果是P路复用,则每P个像素需要1套驱动电路,n×m个像素仅需要n×m/P套驱动电路。对于动态显示方式而言,P越大,驱动电路就越少,成本也就越低,引线也大大减少,更有利于高密度LED点阵显示器的制造。在实际应用中一般采用动态显示方式。LED点阵显示器的显示方式可分为静态显示方式和动态显示方式。4.1.2LED点阵显示器视野拓展动态显示方式利用了人眼的视觉暂留特性,将连续的几帧画面高速地循环显示,人眼看起来就是一个完整的、相对静止的画面。4.1.2LED点阵显示器【例4-2】
利用动态显示的方式显示字符“工”。【问题分析】
假设采用8×8共阳极单基色LED点阵显示器显示“工”,则需要点亮的位置如图所示。4.1.2LED点阵显示器【显示过程】
以行扫描的形式从上到下运行,过程如图所示。4.1.3LCD液晶显示器1.LCD液晶显示器的功能与分类LCD液晶显示器是一种功耗低、体积小的显示器,广泛应用于便携式电子产品中。它不仅省电,而且控制灵活,可以显示文字、曲线、图形等信息。随着液晶显示技术的发展,LCD液晶显示器的显示界面较LED数码管显示器有了质的提高。LCD液晶显示器可分为笔段型LCD液晶显示器、字符型LCD液晶显示器和点阵型LCD液晶显示器三大类。
点阵LCD液晶显示器
笔段LCD液晶显示器
字符LCD液晶显示器4.1.3LCD液晶显示器笔段型LCD液显示器由长条状的显示像素组成,主要用于显示数字、部分英文字母及字符,广泛应用于电子表、数字仪表中,如图所示。主要用于显示数字、字母、符号和简单的图形,广泛应用于遥控器、仪器表盘中,如图所示。字符型LCD液晶显示器
点阵型LCD液晶显示器通常面积较大,由多行多列的显示像素组成矩阵形式,可以用于显示图形等复杂的信息,广泛应用于游戏机、笔记本电脑中,如图所示。4.1.3LCD液晶显示器知识链接LCD液晶显示器是在两片平行的玻璃当中放置液晶材料,通过电场来控制液晶材料的方向,将光线折射出来产生画面。4.1.3LCD液晶显示器2.LCD液晶显示器的结构及工作原理LCD液晶显示器一般是由液晶显示屏LCD,主控制驱动芯片及其扩展驱动电路,以及少量电阻、电容等装配在电路板上制成的。下面以LCD1602字符型液晶显示器(以下简称LCD1602)为例来进行介绍。1)LCD1602的引脚功能和主要参数LCD1602可分为带背光和不带背光两种类型,带背光的比不带背光的厚,是否带背光在应用中并无差别。4.1.3LCD液晶显示器LCD1602采用标准的14引脚(无背光)或16引脚(带背光)接口。带背光的LCD1602的外形和外部引脚如图所示,其引脚功能如表所示。4.1.3LCD液晶显示器引脚号引脚名称引脚功能1VSS电源地线2VDD电源引脚(+5V)3VO液晶显示驱动电源4RS数据/命令选择,RS=0,命令;RS=1,数据5R/读/写选择,R/=0,写;R/=1,读6E使能信号7~14DB0~DB7数据线15A背光源正极16K背光源负极LCD1602的主要技术参数包括:显示容量为32个字符(16列2行);芯片工作电压为4.5~5.5V;工作电流为2.0mA(工作电压为5.0V状态下)。LCD1602内部的主控制驱动芯片HD44780有以下几个重要组成部分。CGROM:字符发生器ROM,它内部存储了160个不同的点阵字符图形用于字符的显示,每一个字符都有一个固定的地址,如表所示。低位高位0000001000110100010101100111101010111100110111101111××××0000CGRAM(1)
0əP\p
一タ三αP××××0001(2)!1AQaq口ァチムäq××××0010(3)"2BRbrгィ川メβθ××××0011(4)#3CScs丿ゥラモε∞××××0100(5)$4DTdt\ェトヤμΩ××××0101(6)%5EUeuロォナュB0××××0110(7)&6FVfvテカニョPΣ××××0111(8)>
7GWgwアキヌラgπ××××1000(1)(8HXhxイクネリ∫××××1001(2))9IYiyウケ丿ル-1y××××1010(3)*:JZjzエコリレj千××××1011(4)+;K[k{オサヒロx万××××1100(5)フ<
L¥1|セシフヮ¢××××1101(6)一=M]m}ユスヘソも+××××1110(7).>
N^n→ヨセホハ
××××1111(8)/?O—o←ツソマロÖ
4.1.3LCD液晶显示器位置DDRAM地址第一行00H01H02H03H04H05H06H07H08H09H0AH0BH0CH0DH0EH0FH第二行40H41H42H43H44H45H46H47H48H49H4AH4BH4CH4DH4EH4FHCGRAM:字符发生器RAM,它包含了8个可由用户自定义的5×7点阵。DDRAM:显示数据RAM,它用于寄存待显示的字符,共有80个字节。LCD1602在送待显示字符的指令之前,要先送DDRAM的地址(即确定显示字符的位置)。DDRAM地址与显示位置的对应关系如表所示。4.1.3LCD液晶显示器经验传承目前市面上使用的绝大多数字符型液晶显示器都是用HD44780芯片控制的,因此它们的外观和控制原理基本相同。只要学会使用一种字符型液晶显示器,就会通晓所有的字符型液晶显示器。4.1.3LCD液晶显示器(1)LCD1602的操作指令。LCD1602的读写操作、移位操作等都是通过向显示屏中写入指令实现的。LCD1602共有11条操作指令,如表所示。2)LCD1602的操作指令及时序序号指令名称RSR/DB7DB6DB5DB4DB3DB2DB1DB01清屏00000000012光标复位000000001×3输入方式设置00000001I/DS4显示状态设置0000001DCB5显示内容或光标移动方向设置000001S/CR/L××6工作方式设置00001DLNF××7CGRAM地址设置0001CGRAM地址8DDRAM地址设置001DDRAM地址9读取忙标志或计数器地址01BF计数器地址10写操作10写入的内容11读操作11读出的内容4.1.3LCD液晶显示器各指令的具体功能如下。清屏:清除液晶显示屏,光标撤回显示屏左上角,地址计数器AC(其内容是DDRAM或CGRAM的单元地址)设置为“0”,光标移动方向为从左向右,且DDRAM的自增量为1(I/D=1)。光标复位:将光标移至显示屏左上角,地址计数器AC设置为“0”,DDRAM内容保持不变。输入方式设置:设定每次写入数据后光标与画面的移动方式。①I/D可指定光标的移动方向。I/D=1时,光标右移;I/D=0时,光标左移。②S可设定显示屏上的画面是否移位。S=0时,画面不移位;S=1时,画面移位。4.1.3LCD液晶显示器
显示状态设置:设置显示、光标和光标闪烁的状态。①D可控制显示功能的开与关。D=1时,显示功能开;D=0时,显示功能关。②C可控制光标的显示。C=1时,显示光标;C=0时,不显示光标。③B可控制光标的闪烁。B=1时,光标闪烁;B=0时,光标不闪烁。
显示内容或光标移动方向设置:设置显示内容或光标的移动方向。①S/C=0、R/L=0时,光标左移,地址计数器AC减1(即显示内容和光标一起左移)。②S/C=0、R/L=1时,光标右移,地址计数器AC加1(即显示内容和光标一起右移)。③S/C=1、R/L=0时,显示内容左移,光标不移动。④S/C=1、R/L=1时,显示内容右移,光标不移动。4.1.3LCD液晶显示器工作方式设置:设置数据总线位数、显示的行数及字形。①DL=1时,数据总线为8位;DL=0时,数据总线为4位。②N=0时,显示1行;N=1时,显示2行。③F=0时,字形为5×7的点阵字符;F=1时,字形为5×10的点阵字符。CGRAM地址设置:设定下一个要存入数据的CGRAM地址。DB5~DB0为CGRAM的地址。4.1.3LCD液晶显示器DDRAM地址设置:设置显示字符的位置,DB6~DB0为DDRAM的地址,与2行液晶显示器位置对应。由于最高位为1,结合DDRAM的地址,命令字符显示位置与命令字符的关系如表所示。位置命令字第一行80H81H82H83H84H85H86H87H88H89H8AH8BH8CH8DH8EH8FH第二行C0HC1HC2HC3HC4HC5HC6HC7HC8HC9HCAHCBHCCHCDHCEHCFH4.1.3LCD液晶显示器读取忙标志位或计数器地址:BF为忙标志位。BF=1时,表示模块此时忙碌,不能进行写指令和写数据等操作;BF=0时,表示不忙,可以进行操作。写操作:向DDRAM或CGRAM写入数据或指令。①
写数据时,RS=1,R/=0,E=1,此时DB0~DB7中装入的是数据。②写指令时,RS=0,R/=0,E=1,此时DB0~DB7中装入的是指令。读操作:从DDRAM或CGRAM读出数据或状态。①读数据时,RS=1,R/=1,E=1,此时DB0~DB7中输出数据。②读状态时,RS=0,R/=1,E=1,此时DB0~DB7中输出状态。4.1.3LCD液晶显示器(2)LCD1602的操作时序。对引脚的操作通常可以结合时序图来理解,时序图的查看一般遵循从上到下、从左到右的原则。LCD1602的读写操作时序如图所示。读操作时序写操作时序4.1.3LCD液晶显示器分析:先对RS引脚进行设置(高电平表示读或写数据,低电平表示读或写指令),R/引脚的值表示是读操作还是写操作。在数据总线上给出数据DB0~DB7。将使能信号E设置为高电平,即可进行读、写操作。将使能信号E设置为低电平。复位RS、R/的状态。4.1.3LCD液晶显示器3)LCD1602的初始化过程LCD1602初始化时需要使用工作方式设置指令、显示状态设置指令、清屏指令及输入方式设置指令等。单片机在向LCD1602发送指令之前,一定要确认其忙标志位BF是否为低电平,如果为低电平,表示模块此时处于空闲状态,可以向它发送指令,否则发出的指令会失效。4.1.3LCD液晶显示器LCD1602的初始化过程如下。(1)写指令38H:工作方式设置指令,设置显示器的数据总线、显示的行数及字形。例如,设置DL=1、N=0、F=0,表示数据总线为8位、只显示一行、字形为5×8点阵字符。本指令的功能与“写指令30H”一样。(2)写指令08H:显示状态设置指令,设置显示、光标和光标闪烁的状态。例如,设置D=1、C=1、B=1,表示开显示功能、显示光标、光标闪烁。(3)写指令01H:清屏指令,将光标设置为第1行第1列。(4)写指令06H:输入方式设置。例如,设置I/D=1、S=0,表示光标右移、整个屏幕不移位。4.1.3LCD液晶显示器经验传承对LCD1602初始化时需要先设置其显示状态,在显示字符时光标是自动向右移的,无需人工干预。4.1.3LCD液晶显示器【例4-3】设计将字符“A”通过LCD1602液晶显示器显示在屏幕的左上角。【参考代码】#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitRS=P3^0; /*RS接到P3.0引脚*/sbitRW=P3^1; /*RW接到P3.1引脚*/sbitE=P3^5; /*E接到P3.5引脚*/ucharnum;4.1.3LCD液晶显示器/********延时1ms函数********/voiddelay(uintz){ uintx,y; for(y=z;y>0;y--) for(x=123;x>0;x--);}4.1.3LCD液晶显示器/********写指令函数********/voidlcd_wcode(ucharinst){
RS=0;RW=0; P1=inst; /*P1端口初始化*/ E=0; delay(1); E=1; delay(1);
E=0;RS=1;}4.1.3LCD液晶显示器/********写数据函数********/voidlcd_wdata(uchardata){
RS=1;RW=0; P1=data; E=0; delay(1); E=1; delay(1);
E=0;RS=1;}4.1.3LCD液晶显示器/********主程序********/voidmain(){ num=0; lcd_wcode(0x38); /*设置8位、2行、5×7点阵*/ lcd_wcode(0x0f); /*显示器开,光标允许闪烁*/ lcd_wcode(0x06); /*文字不动,光标自动右移*/ lcd_wcode(0x01); /*清屏并复位光标*/ lcd_wcode(0x80+1); /*写入第1行第2个位置*/ lcd_wdata('A'); /*显示“A”*/ while(1);}课堂小结1LED数码管显示器2LED点阵显示器3LCD液晶显示器C设计密码锁
——键盘接口技术的应用
011211101101011011010010011001101010100100110110100101100101110110101001101110101010101011010100110100104.24.2任务工单扫一扫查看任务工单任务描述原始社会末期,随着生产力的不断增加、生产工具的发明和应用,人类社会出现了私有制,为了保护自己的私有财产安全,门锁也就诞生了。门锁最早的雏形是用草绳捆成的绳结,后来木匠祖师鲁班对其进行改进,装上机关,才形成了真正意义上的锁,再后来又发展成三簧锁、叶片锁、弹子锁、套筒转心锁等。随着微电子技术的发展,现在出现了密码锁。任务描述密码锁是由电子电路控制锁体的新型锁具,它采用键盘(触摸)方式输入开锁密码,具有操作方便、安全实用及成本低等特点。密码锁符合住宅、办公室的用锁要求,在生活中随处可见,如智能门锁、小型保险柜锁等,如图所示。请设计一个密码锁。任务实施详细内容扫码观看1.整体设计思想
2.硬件设计3.软件设计4.仿真调试4.2.1按键的结构及工作原理键盘是单片机应用系统中最常用的输入设备之一。用户可以通过键盘输入数据、地址和命令等信息,进行简单的人机交互。键盘一般是由多个按键组成的,其实物图如图所示。4.2.1按键的结构及工作原理按键按照结构的不同,可分为触点式按键和无触点式按键。 触点式按键如机械式按键、导电橡胶式按键等。触点式按键价格低,但寿命较短。 无触点式按键如电气式按键、磁感应按键等。无触点式按键价格高,但寿命较长。4.2.1按键的结构及工作原理单片机应用系统中常用的是触点式按键。触点式按键是一种按钮开关,其实物如图所示。触点式按键有四个引脚,如图所示,引脚1与引脚4连通、引脚2与引脚3连通。按下按钮时,内部开关a接通;松开按钮时,a自动弹起,开关断开。4.2.1按键的结构及工作原理视野拓展按键的抖动是指按键的触点在闭合和断开瞬间由于接触不稳定而产生抖动的现象(由按键的机械特性造成,不可避免)。如图所示为按键按下和松开时的实际状态,在按键的前沿和后沿都会有抖动;如图所示为按键按下和松开时的理想状态。4.2.1按键的结构及工作原理视野拓展在实际应用中,按键按下和松开时都将产生抖动,同时也会产生干扰信号,这种干扰信号对数字电路的影响很大,往往会导致计数的错误。对于时钟是微秒级的单片机而言,按键的抖动有可能造成单片机对一次按键的多次处理。为了提高系统的稳定性,必须采用有效的方式消除抖动。消除抖动可以采用硬件方式和软件方式。硬件方式一般是在按键与单片机的输入通道上安装硬件去抖电路(如RS触发器、RC滤波电路)。软件方式的实现方法是:当查询到电路中有按键按下时,先不进行处理,而是先执行5~10ms的延时程序,延时程序结束后,再次查询按键状态,若此时按键仍为按下状态,则视为按键被按下。4.2.1按键的结构及工作原理某电脑维修店接了一台故障电脑。经检查,故障是由键盘的某个按键损坏引起的,需要更换按键。按键虽然不起眼,但总在关键的地方发挥作用,没有它,电脑很难运行。这就像平凡生活、平凡岗位上每个平凡的人,都有自己的价值,都在自己的位置上发挥着不平凡的作用。4.2.2键盘的分类键盘按照接口原理的不同,可分为编码键盘和非编码键盘。
编码键盘由硬件实现对按键闭合状态的识别。编码键盘的优点是所需软件较简单,缺点是硬件电路复杂,价格较贵。
非编码键盘由软件实现对按键闭合状态的识别。非编码键盘的硬件电路比较简单,价格低廉。非编码键盘按结构的不同,可分为独立式键盘和矩阵式键盘。51系列单片机常用的是非编码键盘,下面主要介绍非编码键盘及其接口电路。4.2.3独立式键盘1.独立式键盘的结构及工作原理独立式键盘的各按键相互独立,每个按键占用一根I/O端口线,每个按键的工作状态不会影响其他按键的工作状态。通过检测I/O端口线的高/低电平状态,即可判断哪个按键被按下。独立式键盘的硬件、软件结构简单,判键速度快,使用方便,但占用I/O端口线较多,适用于按键数量较少的系统。4.2.3独立式键盘独立式键盘的结构示意图如图所示。当没有按键被按下时,所有的数据输入线均为高电平;当任意一个按键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有按键被按下。4.2.3独立式键盘2.独立式键盘的程序设计判断有无按键按下。(1)(5)(2)(3)(6)功能计算闭合键的键值。判断闭合键是否释放,若没释放则继续等待。确定闭合键的位置。消除按键的抖动。保存闭合键的键值,同时转去执行该闭合键对应的功能。(4)独立式键盘的程序一般设计为独立函数,方便调用。独立式键盘程序的功能一般包含以下几项。4.2.3独立式键盘独立式键盘的程序设计流程如图所示。4.2.3独立式键盘独立式键盘程序如下。#include<reg51.h>voiddelay10ms(){ TH1=0xd8; /*设置10ms定时初值*/ TL1=0xf0; TR1=1; /*启动定时器1*/ while(!TF1); /*判断10ms定时时间是否到了*/ TF1=0; /*时间到,TF1清零*/}4.2.3独立式键盘voidmain(){ unsignedchari; TMOD=0x10; /*设置定时器1*/ P1=0xff; /*P1端口全置为1*/ i=0; while(1){
do{ i=P1; i=~i; i=i&0x0f; /*屏蔽高位*/ }4.2.3独立式键盘while(i==0); /*循环判断是否有按键按下*/ delay10ms(); /*有按键按下,延迟10ms去抖动*/ do { i=~P1; /*读按键状态*/ i=i&0x0f; } while(i==0);4.2.3独立式键盘 switch(i) /*根据键值调用不同的处理函数*/ { case0x01:KEYA();break; /*调用按键KEYA功能函数*/ case0x02:KEYB();break; /*调用按键KEYB功能函数*/ case0x04:KEYC();break; /*调用按键KEYC功能函数*/ case0x08:KEYD();break; /*调用按键KEYD功能函数*/ default:break; } }}4.2.4矩阵式键盘矩阵式键盘是由行线和列线组成的,按键位于行线与列线的交叉点上。相较于独立式键盘,矩阵式键盘要节省很多I/O端口,更适用于按键数量较多的系统。如图所示为一个4×4矩阵式键盘的结构示意图,行线连接的4根I/O端口线,作为输入端;列线连接的4根I/O端口线作为输出端。当没有按键按下时,所有列线的输出均为高电平,行线的输入也是高电平;当有按键按下时,相应列线的输出为低电平,对应行线的输入也为低电平。通过检测输入线的电平可知是否有按键按下,根据行线和列线的电平信号可以判断按键所在的位置。1.矩阵式键盘的结构及工作原理4.2.4矩阵式键盘4×4矩阵式键盘的结构示意图4.2.4矩阵式键盘2.矩阵式键盘按键的识别矩阵式键盘按键的识别方法有列扫描法和行列反转法两种。1)列扫描法采用列扫描法识别矩阵式键盘按键的方法如下。(1)首先判断是否有按键按下。先使所有的列线输出低电平,然后读取所有行线的电平信号。若读取的行线电平信号全为高电平,则无按键按下;否则,有按键按下。4.2.4矩阵式键盘(2)逐列扫描判断具体的按键。依次使列线输出低电平,然后读取该列线上所有行线的电平信号。若读取的行线电平信号全为高电平,则该列线所连接的按键没有按下;否则,该列线所连接的按键有按键按下。按下的按键位于行、列线均为低电平的位置。4.2.4矩阵式键盘经验传承键值的计算按键的位置确定后,即可计算键值。如图4-32所示为4×4矩阵式键盘键值的编码示意图,键值与行号、列号之间的关系为键值=行号×4+列号4.2.4矩阵式键盘2)行列反转法采用行列反转法识别矩阵式键盘按键的方法如下。(1)将所有的列线输出低电平,行线输出高电平,然后读取行线的电平信号。若按键中有任意一个被按下,那么读取的行线电平则不全为高电平,记录此时的行值。4.2.4矩阵式键盘(2)将所有的列线输出高电平,行线输出低电平,然后读取列线的电平信号。若按键中有任意一个被按下,那么读取的列线电平则不全为高电平,并记录此时的列值。4.2.4矩阵式键盘(3)将行值与列值进行运算,可得到按键的扫描码。例如,4×4矩阵式键盘接口设计如图所示。P2.0~P2.3连接行线,P2.4~P2.7连接列线。先给P2端口输出00001111,假设S15按下了,此时读取的P2端口的值为00000111;再给P2端口输出11110000,假设S15按下了,此时读取的P2端口的值为01110000;最后把两次读取的P2端口的值按位进行“或”运算,可得到01110111,即0x77,这个值就是按键S15的扫描码。依此类推,可得出其他15个按键对应的扫描码,如图所示。4.2.4矩阵式键盘3.矩阵式键盘的程序设计判断有无按键按下。(1)(5)(2)(3)(6)功能计算闭合键的键值。判断闭合键是否释放,若没释放则继续等待。确定闭合键的位置(行、列号)。消除按键的抖动。保存闭合键的键值,同时转去执行该闭合键对应的功能。(4)矩阵式键盘的程序一般采用列扫描法,程序功能一般包含以下几项。4.2.4矩阵式键盘矩阵式键盘列扫描法的程序设计流程如图所示。4.2.4矩阵式键盘独立式键盘程序如下。#include<reg51.h>voiddelay10ms(){ TH1=0xd8; /*设置10ms定时初值*/ TL1=0xf0; TR1=1; /*启动定时器1*/ while(!TF1); /*判断10ms定时时间是否到了*/ TF1=0; /*时间到,TF1清零*/}4.2.4矩阵式键盘unsignedcharkey_scan(void){ unsignedchari,temp,m,n; bitfind=0; /*有按键按下标志位*/ P0=0xff; /*P0端口低4位行线输入,先全置为1*/ P2=0x00; /*P2端口低4位列线输出,全置为0*/ temp=~P0; /*读行线状态*/4.2.4矩阵式键盘while(temp!=0) { delay10ms(); } P2=0x00; /*输出全扫字,列线全置为0*/ temp=~P0; /*读行线状态*/while(temp!=0)
{for(i=0;i<4;i++)
{4.2.4矩阵式键盘P2=0xfe<<1; /*逐列送低电平扫描*/ temp=~P0; /*读行值,并取反*/ temp=temp&0x0f; /*屏蔽行高4位*/ while(temp!=0x00) /*判断是否有按键按下,若为0则无按键按下*/ { m=i; /*保存列号到变量m中*/ find=1; /*设置找到按键标志
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 协议合同失效范本
- 卖方解除合同协议书
- 合同欠款免除协议书
- 吊车租用协议书样本
- 吵架调解协议书模板
- 商家赔偿解协议书
- 商铺转卖协议书范本
- 园地承包协议书范本
- 土地坍塌补偿协议书
- 城墙旺铺转让协议书
- 第节深圳市中考英语听说考试概述
- 2026年山东省菏泽一中自主招生物理试卷试题(含答案详解)
- ICMP协议课件教学课件
- 无人机消防救灾
- T-CECA 20011-2021 含铁含锰地下水接触氧化法给水处理技术规程
- 实验动物学日常检测流程规定
- 中小学实验教学基本目录(2023 年版)
- 操作系统(第5版)全套课件
- 兄弟套结机KE-430F中文使用说明书
- 上海市2025上海申康医疗卫生建设工程公共服务中心工作人员招聘1人笔试历年参考题库附带答案详解
- 2025广东汕头【中考】物理真题(原卷及答案)
评论
0/150
提交评论