版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第1010章章 MCS-51 MCS-51与键盘、显示器、拨盘、打印机的接与键盘、显示器、拨盘、打印机的接 口设计口设计输入外设:键盘、输入外设:键盘、BCDBCD码拨盘等;码拨盘等;输出外设:输出外设:LEDLED显示器、显示器、LCDLCD显示器、打印机等。显示器、打印机等。10.1 LED10.1 LED显示器接口原理显示器接口原理 LED(Light Emitting Diode): LED(Light Emitting Diode):发光二极管的缩写。发光二极管的缩写。显示器前面冠以显示器前面冠以“LED“LED。10.1.1 LED10.1.1 LED显示器的构造显示器的构造 常
2、用的常用的LEDLED显示器为显示器为8 8段或段或7 7段,段,8 8段比段比7 7段多了一段多了一个小数点个小数点“dpdp段。段。有共阳极和共阴极两种。如图有共阳极和共阴极两种。如图10-110-1所示。所示。为使为使LEDLED显示不同的符号或数字,要为显示不同的符号或数字,要为LEDLED提供段码提供段码或称字型码。或称字型码。提供应提供应LEDLED显示器的段码字型码正好是一个字显示器的段码字型码正好是一个字节节8 8段。各段与字节中各位对应关系如下:段。各段与字节中各位对应关系如下:按上述格式,按上述格式,8 8段段LEDLED的段码如表的段码如表10-110-1所示。所示。显示
3、字符显示字符共阴极共阴极段码段码共阳极共阳极段码段码显示字符显示字符共阴极共阴极段码段码共阳极共阳极段码段码0 03 3FHFHC0HC0Hc c3939H HC6HC6H1 10606H HF9HF9Hd d5 5EHEHA1HA1H2 25 5BHBHA4HA4HE E7979H H8686H H3 34 4FHFHB0HB0HF F7171H H8 8EHEH4 46666H H9999H HP P7373H H8 8CHCH5 56 6DHDH9292H HU U3 3EHEHC1HC1H6 67 7DHDH8282H HT T3131H HCEHCEH7 70707H HF8HF8H
4、y y6 6EHEH9191H H8 87 7FHFH8080H HH H7676H H8989H H9 96 6FHFH9090H HL L3838H HC7HC7HA A7777FHFH8888H H“灭灭”0000H HFFHFFHb b7 7CHCH8383H H表表10-1 LED10-1 LED段码段码8 8段段表表10-110-1只列出了部分段码,可根据实践情况选用。只列出了部分段码,可根据实践情况选用。另外,段码是相对的,它由各字段在字节中所处的另外,段码是相对的,它由各字段在字节中所处的位决议。例如表位决议。例如表10-110-1中中8 8段段LEDLED段码是按格式:段码是
5、按格式:而构成的,而构成的, “0 0的段码为的段码为3FH3FH共阴。反之,如共阴。反之,如 将格式改为以下格式:将格式改为以下格式:那么那么 “0 0的段码为的段码为7EH7EH共阴。共阴。字型及段码由设计者自行设定,习惯上还是以字型及段码由设计者自行设定,习惯上还是以“a a 段对应段码的最低位。段对应段码的最低位。N N个个LEDLED显示块有显示块有N N位位选线和位位选线和8 8N N根段码线。根段码线。 10.1.2 LED10.1.2 LED显示器任务原理显示器任务原理图图10-210-2是是4 4位位 LED LED显示器的构造原理图。显示器的构造原理图。段码线控制显示的字型
6、,段码线控制显示的字型,位选线控制该显示位的亮或暗。位选线控制该显示位的亮或暗。静态显示和动态显示两种显示方式。静态显示和动态显示两种显示方式。1. 1. 静态显示方式静态显示方式各位的公共端衔接在一同接地或各位的公共端衔接在一同接地或+5V+5V。 每位的段码线每位的段码线a adpdp分别与一个分别与一个8 8位的锁存器位的锁存器输出相连。输出相连。 显示字符一确定,相应锁存器的段码输出将维持显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止。显示的亮度高。不变,直到送入另一个段码为止。显示的亮度高。 图图10-3: 410-3: 4位静态位静态LEDLED显示器电路。
7、该电路各位显示器电路。该电路各位可独立显示。可独立显示。2. 2. 动态显示方式动态显示方式 一切位的段码线相应段并在一同,由一个一切位的段码线相应段并在一同,由一个8 8位位I/OI/O口控制,构成段码线的多路复用,各位的公共端分别由口控制,构成段码线的多路复用,各位的公共端分别由相应的相应的I/OI/O线控制,构成各位的分时选通。线控制,构成各位的分时选通。图图10-410-4:4 4位位8 8段段LEDLED动态显示电路。其中段码线占用一动态显示电路。其中段码线占用一个个8 8位位I/OI/O口,而位选线占用一个口,而位选线占用一个4 4位位I/OI/O口。口。图图10-510-5为为8
8、 8位位LEDLED动态显示动态显示2019.10.102019.10.10的过程。的过程。图图a)a)是显示过程,某一时辰,只需一位是显示过程,某一时辰,只需一位LEDLED被选通被选通 显示,其他位那么是熄灭的;显示,其他位那么是熄灭的;图图b)b)是实践显示结果,人眼看到的是是实践显示结果,人眼看到的是8 8位稳定的位稳定的 同时显示的字符。同时显示的字符。10.2 10.2 键盘接口原理键盘接口原理1. 1. 键盘输入的特点键盘输入的特点键盘:一组按键开关的集合。键盘:一组按键开关的集合。 行线电压信号经过键盘开关机械触点的断开、闭合,行线电压信号经过键盘开关机械触点的断开、闭合,输出
9、波形如图输出波形如图10-610-6。2. 2. 按键确实认按键确实认 检测行线电平检测行线电平 高电平:断开;低电平:闭合,高电平:断开;低电平:闭合,常用软件来消除按键抖动。常用软件来消除按键抖动。 根本思想:检测到有键按下,键对应的行线为低,软根本思想:检测到有键按下,键对应的行线为低,软件延时件延时10ms10ms后,行线如仍为低,那么确认该行有键按下。后,行线如仍为低,那么确认该行有键按下。3.3.如何消除按键的抖动如何消除按键的抖动 当键松开时,行线变高,软件延时当键松开时,行线变高,软件延时10ms10ms后,行线仍后,行线仍为为高,阐明按键已松开。高,阐明按键已松开。采取以上措
10、施,躲开了两个抖动期采取以上措施,躲开了两个抖动期t1t1和和t3t3的影响。的影响。10.2.2 10.2.2 键盘接口的任务原理键盘接口的任务原理独立式按键接口和行列式键盘接口。独立式按键接口和行列式键盘接口。1.1.独立式键盘接口独立式键盘接口 各键相互独立,每个按键各接一根输入线,经过检各键相互独立,每个按键各接一根输入线,经过检测输入线的电平形状可很容易判别那个键被按下。测输入线的电平形状可很容易判别那个键被按下。此种接口适于键数较少或操作速度较高的场所。此种接口适于键数较少或操作速度较高的场所。图图10-710-7a a为中断方式的独立式键盘任务电路为中断方式的独立式键盘任务电路图
11、图10-710-7b b为查询方式的独立式键盘任务电路。为查询方式的独立式键盘任务电路。图图10-810-8为为8255A8255A扩展扩展I/OI/O口的独立式按键接口电路。口的独立式按键接口电路。图图10-910-9用三态缓冲器扩展的用三态缓冲器扩展的I/OI/O口的按键接口电口的按键接口电路。路。 对图对图10-910-9独立式键盘编程,软件消抖,查询方式检独立式键盘编程,软件消抖,查询方式检测键的形状。仅有一键按下时才有效才处置。测键的形状。仅有一键按下时才有效才处置。KEYIN:MOV DPTR,#0BFFFHKEYIN:MOV DPTR,#0BFFFH;键盘端口地址;键盘端口地址B
12、FFFHBFFFHMOVX A,DPTRMOVX A,DPTR;读键盘形状;读键盘形状ANL A,#1FHANL A,#1FH;屏蔽高三位;屏蔽高三位MOV R3,AMOV R3,A;保管键盘形状值;保管键盘形状值LCALL DELAY10LCALL DELAY10;延时;延时10ms10ms去键盘抖动去键盘抖动MOVX A,DPTRMOVX A,DPTR;再读键盘形状;再读键盘形状ANL A,#1FHANL A,#1FH;屏蔽高三位;屏蔽高三位 CJNE A,R3,RETURN CJNE A,R3,RETURN ;两次不同,抖动引起转;两次不同,抖动引起转RETURNRETURNCJNE A
13、,#1EH,KEY2 CJNE A,#1EH,KEY2 ;相等,有键按下,不等转;相等,有键按下,不等转KEY2KEY2LJMP PKEY1LJMP PKEY1; ;是是K1K1键按下,转键按下,转K1K1键处置键处置 ;子程序;子程序PKEY1PKEY1KEY2: CJNE A,#1DH,KEY3 ;S2KEY2: CJNE A,#1DH,KEY3 ;S2键未按下,转键未按下,转KEY3KEY3LJMP PKEY2LJMP PKEY2 ;S2 ;S2键按下,转键按下,转PKEY2PKEY2处置处置KEY3:KEY3: CJNE A,#1BH,KEY4CJNE A,#1BH,KEY4 ;S3;
14、S3未按下,转未按下,转KEY4KEY4LJMP PKEY3 ;S3LJMP PKEY3 ;S3按下,转按下,转PKEY3PKEY3处置处置KEY4: CJNE A,#17H,KEY5 ;S4KEY4: CJNE A,#17H,KEY5 ;S4键未按下,转键未按下,转KEY5KEY5LJMP PKEY4 ;S4LJMP PKEY4 ;S4按下,转按下,转PKEY4PKEY4处置处置KEY5:KEY5: CJNE A,#0FH,PASS ;S5CJNE A,#0FH,PASS ;S5未按下,转未按下,转RETURNRETURNLJMP PKEY5 ;S5LJMP PKEY5 ;S5按下,转按下,
15、转PKEY5PKEY5处置处置RETURN:RET ;RETURN:RET ;重键或无键按下,从子程序前往重键或无键按下,从子程序前往识别和编程简单,用在按键数较少的场所。识别和编程简单,用在按键数较少的场所。2. 行列式行列式(矩阵式矩阵式)键盘接口键盘接口 用于按键数目较多的场所,由行线和列线组成,用于按键数目较多的场所,由行线和列线组成,按键位于行、列的交叉点上。如图按键位于行、列的交叉点上。如图10-1010-10所示。所示。 按键数目较多的场所,行列式键盘与独立式键盘按键数目较多的场所,行列式键盘与独立式键盘相比,要节省很多的相比,要节省很多的I/OI/O口线。口线。1行列式键盘任务
16、原理行列式键盘任务原理 无键按下,该行线为高电平,当有键按下时,无键按下,该行线为高电平,当有键按下时,行线电平由列线的电平来决议。行线电平由列线的电平来决议。 由于行、列线为多键共用,各按键彼此将相互发由于行、列线为多键共用,各按键彼此将相互发生影响,必需将行、列线信号配合起来并作适当的处生影响,必需将行、列线信号配合起来并作适当的处理,才干确定闭合键的位置。理,才干确定闭合键的位置。2 2按键的识别方法按键的识别方法a. a. 扫描法扫描法 图图10-1010-10b b中中3 3号键被按下为例,来阐明此键号键被按下为例,来阐明此键时如何被识别出来的。时如何被识别出来的。识别键盘有无键被按
17、下的方法,分两步进展:识别键盘有无键被按下的方法,分两步进展:第第1 1步:识别键盘有无键按下;步:识别键盘有无键按下;第第2 2步:如有键被按下,识别出详细的按键。步:如有键被按下,识别出详细的按键。 把一切列线置把一切列线置0 0,检查各行线电平能否有变化,如,检查各行线电平能否有变化,如有变化,阐明有键按下,如无变化,那么无键按下。有变化,阐明有键按下,如无变化,那么无键按下。 上述方法称为扫描法,即先把某一列置低电平,上述方法称为扫描法,即先把某一列置低电平,其他各列为高电平,检查各行线电平的变化,假设某其他各列为高电平,检查各行线电平的变化,假设某行线电平为低,可确定此行列交叉点处的
18、按键被按行线电平为低,可确定此行列交叉点处的按键被按下。下。 b. b. 线反转法线反转法 只需两步便能获得此按键所在的行列值,线反转只需两步便能获得此按键所在的行列值,线反转法的原理如图法的原理如图10-1110-11。第第1 1步:列线输出为全低电平,那么行线中电平由高变低步:列线输出为全低电平,那么行线中电平由高变低的所在行为按键所在行。的所在行为按键所在行。第第2 2步:行线输出为全低电平,那么列线中电平由高变低步:行线输出为全低电平,那么列线中电平由高变低所在列为按键所在列。所在列为按键所在列。 结合上述两步,可确定按键所在行和列。结合上述两步,可确定按键所在行和列。3 3键盘的编码
19、键盘的编码 根据实践需求灵敏编码。根据实践需求灵敏编码。10.2.3 10.2.3 键盘的任务方式键盘的任务方式 单片机在忙于各项任务义务时,如何兼顾键盘的输单片机在忙于各项任务义务时,如何兼顾键盘的输入,取决于键盘的任务方式。入,取决于键盘的任务方式。原那么:即要保证能及时呼应按键操作,又不要过多占原那么:即要保证能及时呼应按键操作,又不要过多占用用CPUCPU的任务时间。的任务时间。 通常,键盘任务方式有通常,键盘任务方式有3 3种,即编程扫描、定时扫种,即编程扫描、定时扫描和中断扫描。描和中断扫描。1. 1. 编程扫描方式编程扫描方式 只需当单片机空闲时,才调用键盘扫描子程序,只需当单片
20、机空闲时,才调用键盘扫描子程序,扫描键盘。扫描键盘。任务过程:任务过程:1 1在键盘扫描子程序中,先判别有无键按下。在键盘扫描子程序中,先判别有无键按下。方法:方法:PAPA口口8 8位输出全位输出全0 0,读,读PCPC口低口低4 4位形状,假设位形状,假设PC0PC0PC3PC3为全为全1 1,那么阐明键盘无键按下;假设不全为,那么阐明键盘无键按下;假设不全为1 1,那么阐明,那么阐明键盘能够有键按下。键盘能够有键按下。2 2用软件来消除按键抖动的影响。如有键按下,那么用软件来消除按键抖动的影响。如有键按下,那么进展下一步。进展下一步。3 3求按下键的键号。求按下键的键号。4 4等待按键释
21、放后,再进展按键功能的处置操作。等待按键释放后,再进展按键功能的处置操作。2. 2. 定时扫描任务方式定时扫描任务方式 利用单片机内的定时器,产生利用单片机内的定时器,产生10ms10ms的定时中断,对的定时中断,对键盘进展扫描。键盘进展扫描。3.3.中断任务方式中断任务方式 只需在键盘有键按下时,才执行键盘扫描程序,如只需在键盘有键按下时,才执行键盘扫描程序,如无键按下,单片机将不理睬键盘。无键按下,单片机将不理睬键盘。 键盘所做的任务分为三个层次,如图键盘所做的任务分为三个层次,如图10-1310-13。第第1 1层:单片机如何来监视键盘的输入。三种任务方层:单片机如何来监视键盘的输入。三
22、种任务方 式:编程扫描定时扫描中断扫描。式:编程扫描定时扫描中断扫描。第第2 2层:确定详细按键的键号。表达在按键的识别方层:确定详细按键的键号。表达在按键的识别方 法上就是:扫描法;线反转法。法上就是:扫描法;线反转法。第第3 3层:执行键处置程序。层:执行键处置程序。10.3 10.3 键盘键盘/ /显示器接口设计实例显示器接口设计实例 普通把键盘和显示器放在一同思索。普通把键盘和显示器放在一同思索。10.3.1 10.3.1 利用并行利用并行I/OI/O芯片实现键盘芯片实现键盘/ /显示器接口显示器接口 图图10-1410-14:80318031用扩展用扩展I/OI/O接口芯片接口芯片8
23、155H8155H实现的实现的6 6位位LEDLED显示和显示和3232键的键盘键的键盘/ /显示器接口电路。图中显示器接口电路。图中8155H8155H也可用也可用8255A8255A来替代。来替代。 8031 8031外扩一片外扩一片8155H8155H。RAMRAM地址:地址:7E00H7E00H7EFFH7EFFH。I/OI/O口地址:口地址:7F00H7F00H7F05H7F05H。 PA PA口为输出口,控制键盘列线的扫描,同时又是口为输出口,控制键盘列线的扫描,同时又是6 6位共阴极显示器的位扫描口。位共阴极显示器的位扫描口。 PB PB口作为显示器段码输出口,口作为显示器段码输
24、出口,PCPC口作为键盘的行口作为键盘的行线形状的输入口。线形状的输入口。 75452 75452:反相驱动器,:反相驱动器,74077407:同相驱动器。:同相驱动器。1 1动态显示程序设计动态显示程序设计 8031 8031内部内部RAM 6RAM 6个显示缓冲单元:个显示缓冲单元:79H79H7EH7EH,存,存放要显示的放要显示的6 6位数据。位数据。 8155H 8155H的的PBPB口输出相应位的段码,依次改动口输出相应位的段码,依次改动PAPA口口输出为高的位使某一位显示某一字符,其它位为暗。输出为高的位使某一位显示某一字符,其它位为暗。动态地显示出由缓冲区中显示数据所确定的字符
25、。程动态地显示出由缓冲区中显示数据所确定的字符。程序流程如图序流程如图10-15 10-15 。参考程序:参考程序:DIRDIR: MOV R0, MOV R0,79H79H;置缓冲器指针初值;置缓冲器指针初值MOV R3,MOV R3,01H01H;位选码的初值送;位选码的初值送R3R3MOV A,R3MOV A,R3LD0LD0: MOV DPTR, MOV DPTR,7F01H7F01H;位选码;位选码PAPA口口PA.0PA.0位位;最左边;最左边LEDLED亮亮MOVX DPTR,AMOVX DPTR,AINC DPTRINC DPTR ;数据指针指向;数据指针指向PBPB口口MOV
26、 A,R0 MOV A,R0 ;显示数据;显示数据AAADD A,ADD A,0DH 0DH ;加偏移量下条指令到表首间;加偏移量下条指令到表首间 ;一切指令占的单元数;一切指令占的单元数MOVC A,AMOVC A,APC PC ;根据显示数据来查表取段码;根据显示数据来查表取段码DIR1DIR1: MOVX DPTR,A MOVX DPTR,A ;段码;段码8155HPB8155HPB口口ACALL DL1ms ACALL DL1ms ;该位显示;该位显示1ms1msINC R0INC R0 ;指针指向下一个数据单元;指针指向下一个数据单元MOV A,R3MOV A,R3 ;位选码送入;位
27、选码送入A A中中JB Acc.5,LD1 JB Acc.5,LD1 ;判别能否扫描到最右边的;判别能否扫描到最右边的 ; LED LED,如到最右边那么前往,如到最右边那么前往RL A RL A ;位选码向左移一位,预备让;位选码向左移一位,预备让 ; ; 右边的下一位右边的下一位LEDLED亮亮MOV R3,AMOV R3,A ;位选码送;位选码送R3R3中保管中保管AJMP LD0 ;AJMP LD0 ;LD1LD1: RET ; RET ;DSEGDSEG: DB 3FH,06H,5BH,4FH,66H,6DH DB 3FH,06H,5BH,4FH,66H,6DH ;共阴极段码表;共阴
28、极段码表 DB 7DH,07H,7FH,6FH,77H,7CH DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3EH DB 39H,5EH,79H,71H,73H,3EHDB 31H,6EH,1CH,23H,40H,03HDB 31H,6EH,1CH,23H,40H,03HDB 18H,00HDB 18H,00HDL1msDL1ms: MOV R7,MOV R7,02H02H;延时;延时1ms1ms子程序子程序DLDL: MOV R6,MOV R6,0FFH0FFHDL6DL6: DJNZ R6,DL6DJNZ R6,DL6DJNZ R7,
29、DLDJNZ R7,DLRETRET2 2键盘程序设计键盘程序设计1 1判别键盘上有无键闭合判别键盘上有无键闭合2 2去除键的机械抖动去除键的机械抖动 3 3判别闭合键的键号判别闭合键的键号4 4使使CPUCPU对键的一次闭合仅作一次处置对键的一次闭合仅作一次处置 键盘程序的流程如图键盘程序的流程如图10-1610-16。键盘子程序如下:键盘子程序如下:KEYIKEYI:ACALL KS1ACALL KS1 ;调用判有无键闭合子程序;调用判有无键闭合子程序JNZ LK1 JNZ LK1 ;有键闭合,跳;有键闭合,跳LK1LK1NINI: ACALL DIR ACALL DIR ;无键闭合,调用
30、显示子程序;无键闭合,调用显示子程序, ,延延 ;迟;迟6ms6ms后,跳后,跳KEYIKEYIAJMP KEYIAJMP KEYILK1LK1: ACALL DIR ACALL DIR ;能够有键闭合,软件延迟;能够有键闭合,软件延迟12ms12ms去抖去抖ACALL DIRACALL DIRACALL KS1 ACALL KS1 ;调用判有无键闭合子程序;调用判有无键闭合子程序JNZ LK2JNZ LK2 ;经去抖,判键确实闭合,跳;经去抖,判键确实闭合,跳LK2LK2ACALL DIRACALL DIR;调用显示子程序延迟;调用显示子程序延迟6ms6msAJMP KEYIAJMP KEY
31、I;抖动引起,跳;抖动引起,跳KEYIKEYILK2LK2: MOV R2, MOV R2,0FEH0FEH ;列选码;列选码R2R2MOV R4,MOV R4,00H00H;R4R4为列号计数器为列号计数器LK4LK4: MOV DPTR, MOV DPTR,7F01H 7F01H ;列选码;列选码8155H8155H的的PAPA口口MOV A,R2 ;MOV A,R2 ;MOVX DPTR,A ; MOVX DPTR,A ; INC DPTRINC DPTR ;数据指针增;数据指针增2 2,指向,指向PCPC口口INC DPTR ;INC DPTR ;MOVX A,DPTRMOVX A,D
32、PTR ;读;读8155H PC8155H PC口口JB Acc.0,LONEJB Acc.0,LONE ;0 0行线为高,无键闭合,跳行线为高,无键闭合,跳 LONE LONE,转判,转判1 1行行MOV A,MOV A,00H00H ;0 0行有键闭合行有键闭合, ,首键号首键号0A0AAJMP LKPAJMP LKP ;跳;跳LKPLKP,计算键号,计算键号LONELONE:JB Acc.1,LTW0 JB Acc.1,LTW0 ;1 1行线为高,无键闭合,跳行线为高,无键闭合,跳LTW0LTW0, ;转判;转判2 2行行MOV A,MOV A,08H 08H ;1 1行有键闭合行有键闭
33、合, ,首键号首键号8A8AAJMP LKPAJMP LKPLTW0LTW0:JB A.2,LTHR JB A.2,LTHR ;2 2行线为高,无键闭合,跳行线为高,无键闭合,跳 ;LTHRLTHR,转判,转判3 3行行MOV A,MOV A,10H 10H ;2 2行有键闭合行有键闭合, ,首键号首键号10HA10HAAJMP LKPAJMP LKP;跳;跳LKPLKP,计算键号,计算键号LTHRLTHR:JB Acc.3,NEXT JB Acc.3,NEXT ;3 3行线为高,无键行线为高,无键;闭合,跳;闭合,跳NEXTNEXT,预备下一列扫描,预备下一列扫描MOV A,MOV A,18
34、H18H;3 3行有键闭合行有键闭合, ,首键号首键号18HA18HALKPLKP: ADD A,R4 ADD A,R4 ;计算键号:首键号列号;计算键号:首键号列号= =键号键号PUSH A PUSH A ;键号进栈维护;键号进栈维护LK3LK3: ACALL DIR ACALL DIR;调用显示子程序,延时;调用显示子程序,延时6ms6msACALL KS1ACALL KS1;调用判有无键闭合子程序,延时;调用判有无键闭合子程序,延时;6ms6msJNZ LK3 JNZ LK3 ;判键释放否,未释放,那么循环;判键释放否,未释放,那么循环POP A ;键已释放,键号出栈ARETRETNEX
35、TNEXT:INC R4 INC R4 ;列计数器加;列计数器加1 1,为下一列扫描作预备,为下一列扫描作预备MOV A,R2 MOV A,R2 ;判能否已扫到最后一列最右一列;判能否已扫到最后一列最右一列JNB Acc.7,KND JNB Acc.7,KND ;键扫描已扫到最后一列,跳;键扫描已扫到最后一列,跳KNDKND, ;重新进展整个键盘扫描;重新进展整个键盘扫描RL A RL A ;键扫描未扫到最后一列,位选码左移;键扫描未扫到最后一列,位选码左移;一位;一位MOV R2,A MOV R2,A ;位选码;位选码R2R2AJMP LK4 ;AJMP LK4 ;KNDKND: AJMP
36、KEYI ; AJMP KEYI ;KS1KS1: MOV DPTR ,#7F01H MOV DPTR ,#7F01H;判有无键闭合子程序,全;判有无键闭合子程序,全“0“0 ;扫描口;扫描口PAPA口口MOV A,MOV A,00H00H ;即列线全为低电平;即列线全为低电平MOVX DPTR,A ;MOVX DPTR,A ;INC DPTRINC DPTR ;DPTRDPTR增增2 2,指向,指向PCPC口口INC DPTRINC DPTR ;指针增;指针增1 1,指向,指向PCPC口口MOVX A,DPTR MOVX A,DPTR ;从;从PCPC口读行线的形状口读行线的形状CPL A
37、CPL A ;行线取反,如无键按下,那么;行线取反,如无键按下,那么A A为为0 0;ANL A,ANL A,0FH 0FH ;屏蔽无用的高;屏蔽无用的高4 4位位RETRET10.3.2 10.3.2 利用利用80318031的串行口实现键盘的串行口实现键盘/ /显示器接口显示器接口 串口未作它用,可用来外扩键盘串口未作它用,可用来外扩键盘/ /显示器。显示器。 串口为方式串口为方式0 0输出,串口外接移位存放器输出,串口外接移位存放器74LS16474LS164。接口电路如图接口电路如图10-1710-17。 74LS164(0) 74LS164(0)74LS164(7):74LS164(
38、7):作为作为8 8位位LEDLED的段码输出,的段码输出, 8031 8031的的P3.4P3.4、P3.5P3.5:两行键的行形状输入:两行键的行形状输入 P3.3 P3.3TXDTXD:同步移位脉冲输出控制线,:同步移位脉冲输出控制线, 优点:亮度大,容易做到显示不闪烁,且优点:亮度大,容易做到显示不闪烁,且CPUCPU不用不用频繁的为显示效力,从而使单片机有更多的时间处置频繁的为显示效力,从而使单片机有更多的时间处置其它事务。其它事务。 显示子程序:显示子程序:DIRDIR: SETB P3.3 SETB P3.3 ;P3.3=1P3.3=1允许允许TXDTXD脚同步移位脚同步移位 ;
39、脉冲输出;脉冲输出MOV R7,MOV R7,08H 08H ;送出的段码个数,;送出的段码个数,R7R7为段为段 ;码个数计数器;码个数计数器MOV R0,MOV R0,7FH 7FH ;7FH7FH78H78H为显示数据缓冲区为显示数据缓冲区DL0DL0: MOV A,R0 MOV A,R0 ;取出要显示的数送;取出要显示的数送A AADD A,ADD A,0DH 0DH ;加上偏移量;加上偏移量MOVC A,AMOVC A,APC PC ;查段码表;查段码表SEGTAGSEGTAG,取出段码,取出段码MOV SBUF ,A MOV SBUF ,A ;将段码送;将段码送SBUF SBUF
40、DL1DL1: JNB TI,DL1 JNB TI,DL1;输出段码,查询;输出段码,查询TITI形状,形状,1 1个字节个字节;的段码输出完否?;的段码输出完否?CLR TI CLR TI ;1 1个字节的段码输出完个字节的段码输出完, ,清清TITI标志标志DEC R0DEC R0;指向下一个显示数据单元;指向下一个显示数据单元 DJNZ R7,DL0DJNZ R7,DL0;段码个数计数器;段码个数计数器R7R7能否为能否为0, 0, 如不如不; ; 为为0 0,继续送段码,继续送段码CLR P3.3 CLR P3.3 ;8 8个段码输出终了,关显示器输出个段码输出终了,关显示器输出RET
41、 RET ;前往;前往SEGTABSEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99HDB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极段码表,;共阳极段码表, ;0,1,2,3,40,1,2,3,4DB 92H,82H,0F8H,90HDB 92H,82H,0F8H,90H;5,6,7,8,95,6,7,8,9DB 88H,83H,0C6H,0A1H,86HDB 88H,83H,0C6H,0A1H,86H;A,B,C,D,EA,B,C,D,EDB 8FH,0BFH,8CH,0FFH,0FFHDB 8FH,0BFH,8CH,0FFH,0FFH;F,F,P,P,暗暗 键
42、盘扫描子程序:键盘扫描子程序:KEYIKEYI:MOV A,MOV A,00H00H;判有无键按下,使一切列线为;判有无键按下,使一切列线为0 0;的编码送;的编码送A AMOV SBUF,AMOV SBUF,A;扫描键盘的;扫描键盘的8 8号号74LS16474LS164输输 ;出为;出为00H,00H,使一切列线为使一切列线为0 0KL0KL0: JNB TI,KL0 JNB TI,KL0;串行输出完否?;串行输出完否?CLR TICLR TI;串行输出终了,清;串行输出终了,清TITIKL1KL1: JNB P3.4,PK1 JNB P3.4,PK1;第;第1 1行有闭合键吗?如有,跳行
43、有闭合键吗?如有,跳;PK1PK1进展处置进展处置JB P3.5,KL1JB P3.5,KL1;在第;在第2 2行键中有闭合键吗?无闭行键中有闭合键吗?无闭;合键跳;合键跳KL1KL1PK1PK1: ACALL DL10 ACALL DL10;调用延时;调用延时10ms10ms子程序子程序DL10DL10,软,软;件消除抖动;件消除抖动JNB P3.4,PK2JNB P3.4,PK2;判能否抖动引起的?;判能否抖动引起的?JB P3.5,KL1JB P3.5,KL1PK2PK2: MOV R7,MOV R7,08H 08H ;不是抖动引起的;不是抖动引起的MOV R6,MOV R6,0FEH0
44、FEH;判别是哪一个键按下,;判别是哪一个键按下,FEHFEH为最为最;左一列为低;左一列为低MOV R3,MOV R3,00H 00H ;R3R3为列号存放器为列号存放器MOV A,R6MOV A,R6 ;KL5KL5: MOV SBUF,A MOV SBUF,A;列扫描码从串行口输出;列扫描码从串行口输出KL2KL2: JNB TI,KL2 JNB TI,KL2;等待串行口发送完;等待串行口发送完CLR TICLR TI;串行口发送终了,清;串行口发送终了,清TITI标志标志JNB P3.4,PKONEJNB P3.4,PKONE;读第;读第1 1行线形状,第行线形状,第1 1行有键闭行有
45、键闭;合,跳;合,跳PKONEPKONE处置处置JB P3.5,NEXT JB P3.5,NEXT ;读第;读第2 2行形状,是第行形状,是第2 2行某键否?行某键否?MOV R4,MOV R4,08H08H;第;第2 2行键中有键被按下,行首键行键中有键被按下,行首键;号;号08H08H送送R4R4AJMP PK3 ;AJMP PK3 ;PKONEPKONE:MOV R4,MOV R4,00H 00H ;第;第1 1行有键按下,行首键号行有键按下,行首键号00H00H送送R4R4PK3PK3: MOV SBUF, MOV SBUF,00H 00H ;等待键释放,发送;等待键释放,发送00H0
46、0H使一切列使一切列 ;线为低;线为低KL3KL3: JNB TI,KL3 ; JNB TI,KL3 ;CLR TICLR TI ;发送终了,清标志;发送终了,清标志KL4KL4: JNB P3.4,KL4 JNB P3.4,KL4 ;判行线形状;判行线形状JNB P3.5,KL4 ;JNB P3.5,KL4 ;MOV A,R4MOV A,R4 ;两行线均为高,阐明键已释放;两行线均为高,阐明键已释放 ADD A,R3ADD A,R3 ;计算得到键码;计算得到键码AARETRETNEXTNEXT: MOV A,R6 MOV A,R6 ;列扫描码左移一位,判以下键;列扫描码左移一位,判以下键RL
47、 A ;RL A ;MOV R6,AMOV R6,A ;记住列扫描码于;记住列扫描码于R6R6中中INC R3INC R3 ;列号增;列号增1 1DJNZ R7,KL5DJNZ R7,KL5 ;列计数器;列计数器R7R7减减1 1,8 8列键都检查列键都检查 ;完?;完?AJMP KEYIAJMP KEYI ;8 8列键扫描终了,开场下一个键列键扫描终了,开场下一个键;盘扫描周期;盘扫描周期DL10DL10: MOV R7, MOV R7,0AH0AH;延时;延时10ms10ms子程序子程序DLDL: MOV R6, MOV R6,0FFH0FFHDL6DL6: DJNZ R6,DL6 DJN
48、Z R6,DL6DJNZ R7,DLDJNZ R7,DLRETRET10.3.3 10.3.3 利用通用键盘利用通用键盘/ /显示器接口芯片显示器接口芯片82798279实现键盘实现键盘/ / 显示器接口显示器接口 Intel 8279 Intel 8279芯片:通用可编程键盘芯片:通用可编程键盘/ /显示器接口芯片。显示器接口芯片。 对键盘部分提供扫描任务方式,能对对键盘部分提供扫描任务方式,能对6464个键键盘阵个键键盘阵列不断扫描,自动消抖,自动识别出闭合的键并得到键列不断扫描,自动消抖,自动识别出闭合的键并得到键号,能对双键或号,能对双键或N N键同时按下进展处置。键同时按下进展处置。
49、扫描方式的显示接口,可显示多达扫描方式的显示接口,可显示多达1616位的字符。位的字符。1.82791.8279的引脚及内部构造的引脚及内部构造 2. 2. 引脚功能引见引脚功能引见(1)(1)与与CPUCPU的接口引脚的接口引脚 DB0 DB0DB7DB7:数据总线、双向、三态,与单片机数据:数据总线、双向、三态,与单片机数据 总线相连,在总线相连,在CPUCPU和和82798279之间传送命令或数据。之间传送命令或数据。 CLK CLK:系统时钟,用于:系统时钟,用于82798279内部定时,以产生其任务内部定时,以产生其任务 所需的时序。所需的时序。 RESET RESET:高电平常,:
50、高电平常,82798279被复位,复位后的形状如下:被复位,复位后的形状如下:* * 16 16个字符左边输入显示方式个字符左边输入显示方式* * 编码扫描键盘、双键锁定方式编码扫描键盘、双键锁定方式 CS CS* *:片选:片选 A0 A0:=1=1,写入的是命令字节,写入的是命令字节; ; 读出的是形状字节。读出的是形状字节。 =0 =0,写入或读出的字节均为数据。,写入或读出的字节均为数据。 RD RD* *、WRWR* *:读、写控制引脚:读、写控制引脚 IRQ IRQ:中断恳求线。在键盘方式中,当键盘:中断恳求线。在键盘方式中,当键盘RAMRAM先先进先出中存有按下键的数据时,进先出
51、中存有按下键的数据时,IRQIRQ为高电平,向为高电平,向CPUCPU提出中断恳求。提出中断恳求。2 2扫描信号输出引脚扫描信号输出引脚 CPU CPU每次从键盘每次从键盘RAMRAM中读出一个字节数据时,中读出一个字节数据时,IRQIRQ就变就变为低电平。假设键盘为低电平。假设键盘RAMRAM中还有未读完的数据,中还有未读完的数据,IRQIRQ将将再次变为高电平,再次提出中断恳求。再次变为高电平,再次提出中断恳求。 SL0 SL0SL3 SL3 扫描输出。用来扫描键盘和显示器。可编程设定扫描输出。用来扫描键盘和显示器。可编程设定为编码输出,即为编码输出,即SL0SL0SL3SL3需外接需外接
52、4-164-16译码器,输出译码器,输出1616取取1 1的扫描信号,也可编程设定为译码输出,即由的扫描信号,也可编程设定为译码输出,即由SL0SL0SL3SL3直接输出直接输出4 4取取1 1的扫描信号。的扫描信号。3 3与键盘衔接的引脚与键盘衔接的引脚 RL0 RL0RL7RL7 键盘矩阵的行信号输入线。键盘矩阵的行信号输入线。 SHIFT SHIFT 输入线,通常用作键盘上、下档功能的控制键。输入线,通常用作键盘上、下档功能的控制键。 CNTL/STB CNTL/STB 输入线,高电平有效。在键盘方式时,通常用来输入线,高电平有效。在键盘方式时,通常用来作为键盘控制功能键运用。作为键盘控
53、制功能键运用。4 4与显示器衔接的引脚与显示器衔接的引脚 OUTA0 OUTA0OUTA3OUTA3A A组显示数据、组显示数据、OUTB0OUTB0OUTB3OUTB3B B组显示数据组显示数据: :向向LEDLED显示器输出的段码显示器输出的段码, , 与扫描信号与扫描信号线线SL0SL0SL3SL3同步。两组可独立运用,也可合并运用。同步。两组可独立运用,也可合并运用。 BD BD* *: :消隐显示控制。消隐显示控制。3. 82793. 8279的根本功能部件的根本功能部件1 1扫描计数器扫描计数器编码方式编码方式: :扫描线扫描线SL0SL0SL3SL3输出,经外部输出,经外部4-1
54、64-16译码器译码器译码后,为键盘和显示器提供译码后,为键盘和显示器提供1616取取1 1的扫描线。的扫描线。译码方式译码方式: :计数器的最低二位在计数器的最低二位在82798279内部译码后,从内部译码后,从SL0SL0SL3SL3输出,为键盘和显示器提供输出,为键盘和显示器提供4 4取取1 1扫描线。扫描线。D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0CNTLCNTLSHIFTSHIFT扫扫 描描回回 复复2 2键盘去抖动及回复缓冲器键盘去抖动及回复缓冲器 RL0 RL0RL7RL7被接到键盘的行线。被接到键盘的行线。 在逐列扫描时,当某一键闭合,消抖电路延时等在逐
55、列扫描时,当某一键闭合,消抖电路延时等待待10ms10ms之后,再检验该键能否仍闭合。假设闭合,那么该之后,再检验该键能否仍闭合。假设闭合,那么该键的行、列地址和附加的移位、控制形状一同构成键键的行、列地址和附加的移位、控制形状一同构成键盘数据,送入盘数据,送入82798279内部的键盘内部的键盘RAMRAM存储器。格式为:存储器。格式为: 控制控制CNTLCNTL和移位和移位SHIFTSHIFT的形状由两个独立的形状由两个独立的附加开关决议,而扫描的附加开关决议,而扫描D5D5、D4D4、D3D3是被按键的是被按键的列编码,而回复列编码,而回复D2D2、D1D1、D0D0那么是被按键的行位置
56、那么是被按键的行位置数据。数据。3 3键盘键盘RAMRAM及其形状存放器及其形状存放器键盘键盘RAMRAM:8 8字节先进先出字节先进先出FIFOFIFO存储器。内部的存储器。内部的FIFOFIFO形状存放器存放形状存放器存放FIFOFIFO的任务形状,如的任务形状,如FIFOFIFO是空还是满,是空还是满,其中存有多少字符,能否操作出错等等。其中存有多少字符,能否操作出错等等。 当当FIFOFIFO存储器空间缺乏时,形状逻辑将产生存储器空间缺乏时,形状逻辑将产生IRQ=1IRQ=1信号,向信号,向CPUCPU发出中断恳求。发出中断恳求。4 4显示显示RAMRAM和显示地址存放器和显示地址存放
57、器显示显示RAMRAM:存显示数据。:存显示数据。1616个字节,可存放个字节,可存放1616位显示信位显示信息。显示息。显示RAMRAM的输出与显示扫描配合,同时轮番驱动被的输出与显示扫描配合,同时轮番驱动被选中的显示位,使显示器呈现稳定的显示动态扫选中的显示位,使显示器呈现稳定的显示动态扫描。描。4. 82794. 8279的命令字和形状字的命令字和形状字命令字:命令字:D7D7、D6D6、D5D5为命令特征位,来区分为命令特征位,来区分8 8条不同条不同的命令字。的命令字。 形状字:主要用于键盘任务方式,以指示键盘形状字:主要用于键盘任务方式,以指示键盘RAMRAM中中的字符数和有无错误
58、发生。的字符数和有无错误发生。5. 82795. 8279与键盘与键盘/ /显示器的接口显示器的接口 图图10-2010-20为为82798279与与8 8位显示器,位显示器,4 48 8键盘的接口电路。键盘的接口电路。行线接行线接82798279的的RL0RL0RL3RL3,82798279选用外部译码方式,选用外部译码方式,SL0SL0SL2SL2经经74LS74LS1 1译码输出,接列线,实现键盘逐译码输出,接列线,实现键盘逐列扫描。列扫描。 SL0 SL0SL2SL2又由又由74LS(2)74LS(2)译码输出到显示器各位的公译码输出到显示器各位的公共阴极,进展逐位扫描显示。共阴极,进
59、展逐位扫描显示。OUTB0OUTB03 3、OUTA 0OUTA 03 3输输出出8 8位段码。位段码。 当位切换时,当位切换时,BDBD* *输出为低电平,使输出为低电平,使74LS(2)74LS(2)输出输出全为高电平,显示消隐。全为高电平,显示消隐。 当键盘上出现有效的闭合键时,键输入数据自动进入当键盘上出现有效的闭合键时,键输入数据自动进入中断读取键盘中断读取键盘RAMRAM中的键输入数据。假设要更新显示器中的键输入数据。假设要更新显示器输输出,仅需改动出,仅需改动82798279中显示中显示RAMRAM中的内容。中的内容。 图图10-20:827910-20:8279的命令的命令/
60、/形状口地址为形状口地址为7FFFH7FFFH,数据口,数据口地址为地址为7FFEH7FFEH。 8279 8279初始化程序:初始化程序:INITI: SETB EX1INITI: SETB EX1 ; ; 允许外部中断允许外部中断1 1中断中断MOVMOV DPTR,#7FFFH ; DPTR,#7FFFH ; 命令命令/ /形状口地址写入形状口地址写入DPTRDPTRMOVMOV A,#0D1H A,#0D1H ; ; 控制字控制字D1HD1H送送A AMOVX DPTR,AMOVX DPTR,A ; ; 向命令向命令/ /形状口写入控制字形状口写入控制字LP: MOVX A,DPTRL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高速公路水泥稳定基层施工方案
- 本科层次职业教育装备制造类专业新形态教材建设研究
- 食物安全水平的区域差异及动态演进特征
- 教师评副高个人述职报告
- 软件测试岗位招聘面试题与参考回答(某大型国企)2024年
- 10月第04期2022年广东省新高考数学复习新题好题速递(新高考专版)
- 研究生课程案例教学及案例库建设探讨
- 2024充电网络布局设计与优化服务合同
- 2024历史文化街区保护性开发合同
- Unit7 SectionB教材改题 人教版八年级英语上册
- 输血相关移植物抗宿主疾病课件
- 5.2探秘人工智能+教学设计
- 《工程项目审计》课件
- 2024年巴西机器人工具快换装置市场机会及渠道调研报告
- 基础教育质量提升调研报告(3篇模板)
- JT-T-1116-2017公路铁路并行路段设计技术规范
- GB/T 18488-2024电动汽车用驱动电机系统
- DZ∕T 0130-2006 地质矿产实验室测试质量管理规范(正式版)
- 2024入团知识题库(含答案)
- 电梯改造工程施工方案
- 数字人文建设方案
评论
0/150
提交评论