版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 1 第第1010章章 MCS-51MCS-51与键盘、显示器、拨盘、打印机的接与键盘、显示器、拨盘、打印机的接 口设计口设计 输入外设:输入外设:键盘、键盘、BCDBCD码拨盘等;码拨盘等; 输出外设:输出外设:LEDLED显示器、显示器、LCDLCD显示器、打印机等。显示器、打印机等。 10.1 10.1 LEDLED显示器接口原理显示器接口原理 LED LED(Light Emitting Diode)(Light Emitting Diode): :发光二极管的缩写。发光二极管的缩写。 显示器前面冠以显示器前面冠以“LED”LE
2、D”。 10.1.1 10.1.1 LEDLED显示器的结构显示器的结构 常用的常用的LEDLED显示器为显示器为8 8段段(或(或7 7段段,8 8段比段比7 7段多了一段多了一 个小数点个小数点“dp”dp”段)。段)。 有有共阳极共阳极和和共阴极共阴极两种。如图两种。如图10-110-1所示。所示。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 2 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 3 为使为使LEDLED显示不同的符号或数字显示不同的符号或数字,要为,要为LEDLED提供提供段码段码 (或称(或称字型码字型码)。)。 提供给提供给LEDLED显示
3、器的段码显示器的段码(字型码字型码)正好是一个字正好是一个字 节(节(8 8段)段)。各段与字节中各位对应关系如下:。各段与字节中各位对应关系如下: 按上述格式,按上述格式,8 8段段LEDLED的段码如表的段码如表10-110-1所示。所示。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 4 显示字符显示字符共阴极共阴极 段码段码 共阳极共阳极 段码段码 显示字符显示字符共阴极共阴极 段码段码 共阳极共阳极 段码段码 0 03 3FHFHC0HC0Hc c3939H HC6HC6H 1 10606H HF9HF9Hd d5 5EHEHA1HA1H 2 25 5BHBHA4HA4
4、HE E7979H H8686H H 3 34 4FHFHB0HB0HF F7171H H8 8EHEH 4 46666H H9999H HP P7373H H8 8CHCH 5 56 6DHDH9292H HU U3 3EHEHC1HC1H 6 67 7DHDH8282H HT T3131H HCEHCEH 7 70707H HF8HF8Hy y6 6EHEH9191H H 8 87 7FHFH8080H HH H7676H H8989H H 9 96 6FHFH9090H HL L3838H HC7HC7H A A7777FHFH8888H H“灭灭”0000H HFFHFFH b b7
5、7CHCH8383H H 表表10-1 10-1 LEDLED段码(段码(8 8段)段) MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 5 表表10-110-1只列出了部分段码,只列出了部分段码,可根据实际情况选用可根据实际情况选用。 另外,另外,段码是相对的段码是相对的,它由各字段在字节中所处的,它由各字段在字节中所处的 位决定。例如表位决定。例如表10-110-1中中8 8段段LEDLED段码是按格式段码是按格式: 而形成的,而形成的, “0”“0”的段码为的段码为3 3FHFH(共阴)。共阴)。反之,如反之,如 将格式改为下列格式:将格式改为下列格式: 则则 “0”“0”的
6、段码为的段码为7 7EHEH(共阴)共阴)。 字型及段码由设计者自行设定,字型及段码由设计者自行设定,习惯上还是以习惯上还是以“a”a” 段对应段码的最低位。段对应段码的最低位。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 6 N N个个LEDLED显示块有显示块有N N位位选线位位选线和和8 8N N根段码线根段码线。 10.1.2 10.1.2 LEDLED显示器工作原理显示器工作原理 图图10-210-2是是4 4位位 LEDLED显示器的结构原理图。显示器的结构原理图。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 7 段码线段码线控制控制显示的字型显示的
7、字型, 位选线位选线控制控制该显示位的亮或暗。该显示位的亮或暗。 静态显示静态显示和和动态显示动态显示两种显示方式。两种显示方式。 1. 1. 静态显示方式静态显示方式 各位的公共端连接在一起(接地或各位的公共端连接在一起(接地或+5+5V V)。)。 每位的段码线(每位的段码线(a adpdp)分别分别与一个与一个8 8位的锁存器位的锁存器 输出相连。输出相连。 显示字符一确定,相应锁存器的段码输出将维持显示字符一确定,相应锁存器的段码输出将维持 不变,直到送入另一个段码为止。不变,直到送入另一个段码为止。显示的亮度高显示的亮度高。 图图10-3:10-3: 4 4位静态位静态LEDLED显
8、示器电路。该电路各位显示器电路。该电路各位 可独立显示。可独立显示。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 8 2. 2. 动态显示方式动态显示方式 所有位的段码线所有位的段码线相应段并在一起,由一个相应段并在一起,由一个8 8位位I/OI/O 口控制口控制,形成,形成段码线的多路复用,段码线的多路复用,各位的各位的公共端公共端分别由分别由 相应的相应的I/OI/O线控制,形成各位的线控制,形成各位的分时选通。分时选通。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 9 图图10-410-4:4 4位位8 8段段LEDLED动态显示电路。其中段码线占用一动态
9、显示电路。其中段码线占用一 个个8 8位位I/OI/O口,而位选线占用一个口,而位选线占用一个4 4位位I/OI/O口。口。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 10 图图10-510-5为为8 8位位LEDLED动态显示动态显示2003.10.102003.10.10的过程的过程。 图(图(a)a)是显示过程,是显示过程,某一时刻,只有一位某一时刻,只有一位LEDLED被选通被选通 显示,其余位则是熄灭的;显示,其余位则是熄灭的; 图(图(b)b)是实际显示结果,是实际显示结果,人眼看到的是人眼看到的是8 8位稳定位稳定的的 同时显示同时显示的字符。的字符。 MCS-
10、51与键盘、显示器、拨盘、 打印机的接口设计(3) 11 10.2 10.2 键盘接口原理键盘接口原理 1. 1. 键盘输入的特点键盘输入的特点 键盘:一组按键开关的集合键盘:一组按键开关的集合。 行线电压信号通过键盘开关机械触点的断开、闭合,行线电压信号通过键盘开关机械触点的断开、闭合, 输出波形如图输出波形如图10-610-6。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 12 2. 2. 按键的确认按键的确认 检测检测行线行线电平电平 高电平:高电平:断开;断开;低电平低电平:闭合,:闭合, 常用常用软件来消除按键抖动。软件来消除按键抖动。 基本思想基本思想:检测到有键按
11、下,键对应的行线为低,软检测到有键按下,键对应的行线为低,软 件延时件延时1010msms后,行线如仍为低,则确认该行有键按下。后,行线如仍为低,则确认该行有键按下。 3.3.如何消除按键的抖动如何消除按键的抖动 当键松开时当键松开时,行线变高,软件延时,行线变高,软件延时1010msms后,行线仍后,行线仍 为为 高,说明按键已松开。高,说明按键已松开。 采取以上措施,采取以上措施,躲开了两个抖动期躲开了两个抖动期t1t1和和t3t3的影响的影响。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 13 10.2.2 10.2.2 键盘接口的工作原理键盘接口的工作原理 独立式独立式
12、按键接口和按键接口和行列式行列式键盘接口。键盘接口。 1.1.独立式键盘接口独立式键盘接口 各键相互独立,每个按键各接一根输入线,通过各键相互独立,每个按键各接一根输入线,通过检检 测输入线的电平状态测输入线的电平状态可很容易判断那个键被按下。可很容易判断那个键被按下。 此种接口此种接口适于键数较少适于键数较少或或操作速度较高操作速度较高的场合。的场合。 图图10-710-7(a a)为为中断方式的独立式中断方式的独立式键盘工作电路键盘工作电路 图图10-710-7(b b)为为查询方式的独立式查询方式的独立式键盘工作电路键盘工作电路。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3
13、) 14 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 15 图图10-810-8为为82558255A A扩展扩展I/OI/O口口的的独立式独立式按键接口电路。按键接口电路。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 16 图图10-910-9用用三态缓冲器三态缓冲器扩展的扩展的I/OI/O口的按键接口电口的按键接口电 路路。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 17 对图对图10-910-9独立式键盘编程,软件消抖,查询方式检独立式键盘编程,软件消抖,查询方式检 测键的状态。仅有一键按下时才有效才处理。测键的状态。仅有一键按下时才有效
14、才处理。 KEYIN:MOV DPTR,#0BFFFHKEYIN:MOV DPTR,#0BFFFH;键盘端口地址键盘端口地址BFFFHBFFFH MOVX A,DPTRMOVX A,DPTR;读键盘状态读键盘状态 ANL A,#1FHANL A,#1FH;屏蔽高三位屏蔽高三位 MOV R3,AMOV R3,A;保存键盘状态值保存键盘状态值 LCALL DELAY10LCALL DELAY10;延时延时1010msms去键盘抖动去键盘抖动 MOVX A,DPTRMOVX A,DPTR;再读键盘状态再读键盘状态 ANL A,#1FHANL A,#1FH;屏蔽高三位屏蔽高三位 CJNE A,R3,R
15、ETURN CJNE A,R3,RETURN ;两次不同,抖动引起转两次不同,抖动引起转RETURNRETURN CJNE A,#1EH,KEY2 CJNE A,#1EH,KEY2 ;相等,有键按下,不等转相等,有键按下,不等转KEY2KEY2 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 18 LJMP PKEY1LJMP PKEY1; ;是是K1K1键按下,转键按下,转K1K1键处理键处理 ;子程序子程序PKEY1PKEY1 KEY2: CJNE A,#1DH,KEY3 ;S2KEY2: CJNE A,#1DH,KEY3 ;S2键未按下,转键未按下,转KEY3KEY3 LJM
16、P PKEY2LJMP PKEY2 ;S2 ;S2键按下,转键按下,转PKEY2PKEY2处理处理 KEY3:KEY3: CJNE A,#1BH,KEY4CJNE A,#1BH,KEY4 ;S3;S3未按下,转未按下,转KEY4KEY4 LJMP PKEY3 ;S3LJMP PKEY3 ;S3按下,转按下,转PKEY3PKEY3处理处理 KEY4: CJNE A,#17H,KEY5 ;S4KEY4: CJNE A,#17H,KEY5 ;S4键未按下,转键未按下,转KEY5KEY5 LJMP PKEY4 ;S4LJMP PKEY4 ;S4按下,转按下,转PKEY4PKEY4处理处理 KEY5:K
17、EY5: CJNE A,#0FH,PASS ;S5CJNE A,#0FH,PASS ;S5未按下,转未按下,转RETURNRETURN LJMP PKEY5 ;S5LJMP PKEY5 ;S5按下,转按下,转PKEY5PKEY5处理处理 RETURN:RET ;RETURN:RET ;重键或无键按下,从子程序返回重键或无键按下,从子程序返回 识别和编程简单,识别和编程简单,用在按键数较少的场合。用在按键数较少的场合。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 19 2. 行列式行列式(矩阵式矩阵式)键盘接口键盘接口 用于按键数目较多的场合,用于按键数目较多的场合,由由行线和列
18、线组成行线和列线组成, 按键位于行、列的交叉点上。如图按键位于行、列的交叉点上。如图10-1010-10所示。所示。 按键数目较多的场合按键数目较多的场合,行列式键盘与独立式键盘,行列式键盘与独立式键盘 相比,要相比,要节省很多的节省很多的I/OI/O口线口线。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 20 (1)行列式键盘工作原理)行列式键盘工作原理 无键按下,该行线为高电平,无键按下,该行线为高电平,当有键按下时,当有键按下时, 行线电平由列线的电平来决定行线电平由列线的电平来决定。 由于行、列线为多键共用,各按键彼此将相互发由于行、列线为多键共用,各按键彼此将相互发
19、生影响,必须生影响,必须将行、列线信号配合起来并作适当的处将行、列线信号配合起来并作适当的处 理,才能确定闭合键的位置理,才能确定闭合键的位置。 (2 2)按键的识别方法按键的识别方法 a. a. 扫描法扫描法 图图10-1010-10(b b)中中3 3号键被按下为例,来说明此键号键被按下为例,来说明此键 时如何被识别出来的。时如何被识别出来的。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 21 识别键盘有无键被按下的方法,分两步进行:识别键盘有无键被按下的方法,分两步进行: 第第1 1步:步:识别键盘有无键按下;识别键盘有无键按下; 第第2 2步:步:如有键被按下,识别出具
20、体的按键。如有键被按下,识别出具体的按键。 把所有列线置把所有列线置0 0,检查各行线电平是否有变化,如,检查各行线电平是否有变化,如 有变化,说明有键按下,如无变化,则无键按下。有变化,说明有键按下,如无变化,则无键按下。 上述方法称为上述方法称为扫描法扫描法,即,即先把某一列置低电平,先把某一列置低电平, 其余各列为高电平,检查各行线电平的变化其余各列为高电平,检查各行线电平的变化,如果某,如果某 行线电平为低,可确定行线电平为低,可确定此行列交叉点此行列交叉点处的按键被按处的按键被按 下。下。 b. b. 线反转法线反转法 只需两步便能获得此按键所在的行列值,线反转只需两步便能获得此按键
21、所在的行列值,线反转 法的原理如图法的原理如图10-1110-11。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 22 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 23 第第1 1步:步:列线输出为全低电平,则行线中电平由高变低列线输出为全低电平,则行线中电平由高变低 的所在行为按键所在行。的所在行为按键所在行。 第第2 2步:步:行线输出为全低电平,则列线中电平由高变低行线输出为全低电平,则列线中电平由高变低 所在列为按键所在列。所在列为按键所在列。 结合上述两步,可确定按键所在行和列。结合上述两步,可确定按键所在行和列。 (3 3)键盘的编码)键盘的编码 根
22、据实际需要灵活编码。根据实际需要灵活编码。 10.2.3 10.2.3 键盘的工作方式键盘的工作方式 单片机在忙于各项工作任务时,如何兼顾键盘的输单片机在忙于各项工作任务时,如何兼顾键盘的输 入,取决于键盘的工作方式。入,取决于键盘的工作方式。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 24 原则:原则:即要保证能及时响应按键操作,又不要过多占即要保证能及时响应按键操作,又不要过多占 用用CPUCPU的工作时间。的工作时间。 通常,通常,键盘工作方式有键盘工作方式有3 3种种,即编程扫描、定时扫,即编程扫描、定时扫 描和中断扫描。描和中断扫描。 1. 1. 编程扫描方式编程扫
23、描方式 只有当单片机空闲时,才调用键盘扫描子程序,只有当单片机空闲时,才调用键盘扫描子程序, 扫描键盘。扫描键盘。 工作过程:工作过程: (1 1)在键盘扫描子程序中,先判断有无键按下。)在键盘扫描子程序中,先判断有无键按下。 方法:方法:PAPA口口8 8位位输出输出全全0 0,读读PCPC口口低低4 4位状态,若位状态,若PC0PC0 PC3PC3为全为全1 1,则说明键盘无键按下;若不全为,则说明键盘无键按下;若不全为1 1,则说明,则说明 键盘可能有键按下。键盘可能有键按下。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 25 (2 2)用软件来消除按键抖动的影响。如有键
24、按下,则)用软件来消除按键抖动的影响。如有键按下,则 进行下一步。进行下一步。 (3 3)求按下键的键号。)求按下键的键号。 (4 4)等待按键释放后,再进行按键功能的处理操作。)等待按键释放后,再进行按键功能的处理操作。 2. 2. 定时扫描工作方式定时扫描工作方式 利用单片机内的定时器,产生利用单片机内的定时器,产生1010msms的定时中断,对的定时中断,对 键盘进行扫描。键盘进行扫描。 3.3.中断工作方式中断工作方式 只有在键盘有键按下时,才执行键盘扫描程序,如只有在键盘有键按下时,才执行键盘扫描程序,如 无键按下,单片机将不理睬键盘。无键按下,单片机将不理睬键盘。 键盘所做的工作分
25、为三个层次键盘所做的工作分为三个层次,如图,如图10-1310-13。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 26 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 27 第第1 1层:层:单片机如何来监视键盘的输入。三种工作方单片机如何来监视键盘的输入。三种工作方 式:编程扫描定时扫描中断扫描。式:编程扫描定时扫描中断扫描。 第第2 2层:层:确定具体按键的键号。体现在按键的识别方确定具体按键的键号。体现在按键的识别方 法上就是:扫描法;线反转法。法上就是:扫描法;线反转法。 第第3 3层:层:执行键处理程序。执行键处理程序。 10.3 10.3 键盘键盘/
26、/显示器接口设计实例显示器接口设计实例 一般把键盘和显示器放在一起考虑。一般把键盘和显示器放在一起考虑。 10.3.1 10.3.1 利用并行利用并行I/OI/O芯片实现键盘芯片实现键盘/ /显示器接口显示器接口 图图10-1410-14:80318031用扩展用扩展I/OI/O接口芯片接口芯片81558155H H实现的实现的 6 6位位LEDLED显示和显示和3232键的键盘键的键盘/ /显示器接口电路。图中显示器接口电路。图中 81558155H H也可用也可用82558255A A来替代。来替代。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 28 MCS-51与键盘、显
27、示器、拨盘、 打印机的接口设计(3) 29 8031 8031外扩一片外扩一片81558155H H。RAMRAM地址:地址:7 7E00HE00H7EFFH7EFFH。 I/OI/O口地址:口地址:7 7F00HF00H7F05H7F05H。 PAPA口口为输出口为输出口,控制键盘控制键盘列线的扫描列线的扫描,同时又是,同时又是6 6 位共阴极显示器的位共阴极显示器的位扫描口位扫描口。 PBPB口口作为显示器段码输出口,作为显示器段码输出口,PCPC口作为键盘的行口作为键盘的行 线状态的输入口。线状态的输入口。 75452 75452:反相驱动器,反相驱动器,74077407:同相驱动器。同
28、相驱动器。 1 1动态显示程序设计动态显示程序设计 内部内部RAM RAM 6 6个显示缓冲单元:个显示缓冲单元:7979H H7EH7EH,存放要显示的存放要显示的 6 6位数据。位数据。 81558155H H的的PBPB口输出相应位的段码,口输出相应位的段码,依次改变依次改变PAPA口输出为口输出为 高高的位的位使某一位显示某一字符,其它位为暗。使某一位显示某一字符,其它位为暗。 动态地显示出由缓冲区中显示数据所确定的字符。程动态地显示出由缓冲区中显示数据所确定的字符。程 序流程如图序流程如图10-15 10-15 。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 30 M
29、CS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 31 参考程序参考程序: DIRDIR: MOV R0, MOV R0,79H79H;置缓冲器指针初值置缓冲器指针初值 MOV R3,MOV R3,01H01H;位选码的初值送位选码的初值送R3R3 MOV A,R3MOV A,R3 LD0LD0: MOV DPTR, MOV DPTR,7F01H 7F01H ;位选码位选码PAPA口(口(PA.0PA.0位)位) ;最左边最左边LEDLED亮亮 MOVX DPTR,AMOVX DPTR,A INC DPTRINC DPTR ;数据指针指向数据指针指向PBPB口口 MOV A,R0 MO
30、V A,R0 ;显示数据显示数据A A ADD A,ADD A,0DH 0DH ;加偏移量(下条指令到表首间加偏移量(下条指令到表首间 ;所有指令占的单元数);所有指令占的单元数) MOVC A,AMOVC A,APC PC ;根据显示数据来查表取段码根据显示数据来查表取段码 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 32 DIR1DIR1: MOVX DPTR,AMOVX DPTR,A ;段码段码81558155H H PBPB口口 ACALL DL1ms ACALL DL1ms ;该位显示该位显示1 1msms INC R0INC R0 ;指针指向下一个数据单元指针指向下
31、一个数据单元 MOV A,R3MOV A,R3 ;位选码送入位选码送入A A中中 JB Acc.5,LD1 JB Acc.5,LD1 ;判断是否扫描到最右边的判断是否扫描到最右边的 ; LEDLED,如到最右边则返回如到最右边则返回 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,
32、06H,5BH,4FH,66H,6DH ;共阴极段码表共阴极段码表 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,3EH MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 33 DB 31H,6EH,1CH,23H,40H,03HDB 31H,6EH,1CH,23H,40H,03H DB 18H,00HDB 18H,00H DL1msDL1ms: MOV R7,MOV R7,02H02H;延时延时1 1msms子程序子程序
33、DLDL: MOV R6,MOV R6,0FFH0FFH DL6DL6: DJNZ R6,DL6DJNZ R6,DL6 DJNZ R7,DLDJNZ R7,DL RETRET 2 2键盘程序设计键盘程序设计 (1 1)判别键盘上有无键闭合)判别键盘上有无键闭合 (2 2)去除键的机械抖动)去除键的机械抖动 (3 3)判别闭合键的键号)判别闭合键的键号 (4 4)使)使CPUCPU对键的一次闭合仅作一次处理对键的一次闭合仅作一次处理 键盘程序的流程如图键盘程序的流程如图10-1610-16。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 34 MCS-51与键盘、显示器、拨盘、 打
34、印机的接口设计(3) 35 键盘子程序如下:键盘子程序如下: KEYIKEYI:ACALL KS1ACALL KS1 ;调用判有无键闭合子程序调用判有无键闭合子程序 JNZ LK1 JNZ LK1 ;有键闭合,跳有键闭合,跳LK1LK1 NINI: ACALL DIR ACALL DIR ;无键闭合,调用显示子程序无键闭合,调用显示子程序, ,延延 ;迟;迟6 6msms后,跳后,跳KEYIKEYI AJMP KEYIAJMP KEYI LK1LK1: ACALL DIR ACALL DIR ;可能有键闭合,软件延迟可能有键闭合,软件延迟1212msms去抖去抖 ACALL DIRACALL
35、DIR ACALL KS1 ACALL KS1 ;调用判有无键闭合子程序调用判有无键闭合子程序 JNZ LK2JNZ LK2 ;经去抖,判键确实闭合,跳经去抖,判键确实闭合,跳LK2LK2 ACALL DIRACALL DIR;调用显示子程序延迟调用显示子程序延迟6 6msms AJMP KEYIAJMP KEYI;抖动引起,跳抖动引起,跳KEYIKEYI LK2LK2: MOV R2, MOV R2,0FEH0FEH ;列选码列选码R2R2 MOV R4,MOV R4,00H00H;R4R4为列号计数器为列号计数器 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 36 LK4LK
36、4: MOV DPTR, MOV DPTR,7F01H 7F01H ;列选码列选码81558155H H的的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,DPTR ;读读81558155H PCH PC口口 JB Acc.0,LONEJB Acc.0,LONE ;0 0行线为高,无键闭合,跳行线为高,无键闭合,跳 LONE LONE,转判转判1 1行行 MOV A,
37、MOV A,00H00H ;0 0行有键闭合行有键闭合, ,首键号首键号00A A AJMP 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行有键闭合行有键闭合, ,首键号首键号88A A AJMP LKPAJMP LKP MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 37 LTW0LTW0:JB A.2,LTHR JB A.2,LTHR ;2 2行
38、线为高,无键闭合,跳行线为高,无键闭合,跳 ;LTHRLTHR,转判转判3 3行行 MOV A,MOV A,10H 10H ;2 2行有键闭合行有键闭合, ,首键号首键号1010HAHA AJMP LKPAJMP LKP;跳跳LKPLKP,计算键号计算键号 LTHRLTHR:JB Acc.3,NEXT JB Acc.3,NEXT ;3 3行线为高,无键行线为高,无键 ;闭合,跳;闭合,跳NEXTNEXT,准备下一列扫描准备下一列扫描 MOV A,MOV A,18H18H;3 3行有键闭合行有键闭合, ,首键号首键号1818HAHA LKPLKP: ADD A,R4ADD A,R4 ;计算键号:
39、首键号列号计算键号:首键号列号= =键号键号 PUSH APUSH A ;键号进栈保护键号进栈保护 LK3LK3: ACALL DIR ACALL DIR;调用显示子程序,延时调用显示子程序,延时6 6msms ACALL KS1ACALL KS1;调用判有无键闭合子程序,延时调用判有无键闭合子程序,延时 ;6 6msms JNZ LK3 JNZ LK3 ;判键释放否,未释放,则循环判键释放否,未释放,则循环 POP A POP A ;键已释放,键号出栈键已释放,键号出栈A A RETRET MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 38 NEXTNEXT:INC R4 IN
40、C 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 ;位选码位选码R2R2 AJMP LK4 ;AJMP LK4 ; KNDKND: AJMP KEYI ; AJ
41、MP 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口口 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 39 INC DPTRINC DPTR ;指针增指针增1 1,指向,指向PCPC口口 MOVX A,DPTR MOVX A
42、,DPTR ;从从PCPC口读行线的状态口读行线的状态 CPL A CPL A ;行线取反,如行线取反,如无键按下,则无键按下,则A A为为0 0; ANL A,ANL A,0FH 0FH ;屏蔽无用的高屏蔽无用的高4 4位位 RETRET 10.3.2 10.3.2 利用利用80318031的串行口实现键盘的串行口实现键盘/ /显示器接口显示器接口 串口未作它用,可用来外扩键盘串口未作它用,可用来外扩键盘/ /显示器。显示器。 串口为方式串口为方式0 0输出,串口外接移位寄存器输出,串口外接移位寄存器7474LS164LS164。 接口电路如图接口电路如图10-1710-17。 74 74L
43、S164(0)LS164(0)74LS164(7):74LS164(7):作为作为8 8位位LEDLED的段码输出,的段码输出, 8031 8031的的P3.4P3.4、P3.5P3.5:两行键的行状态输入两行键的行状态输入 P3.3 P3.3(TXDTXD):同步移位脉冲输出控制线,同步移位脉冲输出控制线, MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 40 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 41 优点:优点:亮度大亮度大,容易做到,容易做到显示不闪烁显示不闪烁,且,且CPUCPU不必不必 频繁的为显示服务频繁的为显示服务,从而使单片机有更多的时间处理
44、,从而使单片机有更多的时间处理 其它事务。其它事务。 显示子程序:显示子程序: DIRDIR: SETB P3.3 SETB P3.3 ;P3.3=1P3.3=1允许允许TXDTXD脚同步移位脚同步移位 ;脉冲输出;脉冲输出 MOV R7,MOV R7,08H 08H ;送出的段码个数,送出的段码个数,R7R7为段为段 ;码个数计数器;码个数计数器 MOV R0,MOV R0,7FH 7FH ;7FH7FH78H78H为显示数据缓冲区为显示数据缓冲区 DL0DL0: MOV A,R0 MOV A,R0 ;取出要显示的数送取出要显示的数送A A ADD A,ADD A,0DH 0DH ;加上偏移
45、量加上偏移量 MOVC A,AMOVC A,APC PC ;查段码表查段码表SEGTAGSEGTAG,取出段码取出段码 MOV SBUF ,A MOV SBUF ,A ;将段码送将段码送SBUFSBUF MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 42 DL1DL1: JNB TI,DL1 JNB TI,DL1;输出段码,查询输出段码,查询TITI状态,状态,1 1个字节个字节 ;的段码输出完否?;的段码输出完否? CLR TI CLR TI ;1 1个字节的段码输出完个字节的段码输出完, ,清清TITI标志标志 DEC R0DEC R0;指向下一个显示数据单元指向下一个显示数
46、据单元 DJNZ R7,DL0DJNZ R7,DL0;段码个数计数器段码个数计数器R7R7是否为是否为0, 0, 如不如不 ; ; 为为0 0,继续送段码,继续送段码 CLR P3.3 CLR P3.3 ;8 8个段码输出完毕,关显示器输出个段码输出完毕,关显示器输出 RET RET ;返回返回 SEGTABSEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99HDB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极段码表,共阳极段码表, ;0,1,2,3,40,1,2,3,4 DB 92H,82H,0F8H,90HDB 92H,82H,0F8H,90H;5,6,7,8,95
47、,6,7,8,9 DB 88H,83H,0C6H,0A1H,86HDB 88H,83H,0C6H,0A1H,86H;A,B,C,D,EA,B,C,D,E DB 8FH,0BFH,8CH,0FFH,0FFHDB 8FH,0BFH,8CH,0FFH,0FFH;F,F,P,P,暗暗 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 43 键盘扫描子程序:键盘扫描子程序: KEYIKEYI:MOV A,MOV A,00H00H;判有无键按下,使所有列线为判有无键按下,使所有列线为0 0 ;的编码送;的编码送A A MOV SBUF,AMOV SBUF,A;扫描键盘的(扫描键盘的(8 8)号)
48、号7474LS164LS164输输 ;出为;出为0000H,H,使使所有列线为所有列线为0 0 KL0KL0: JNB TI,KL0 JNB TI,KL0;串行输出完否?串行输出完否? CLR TICLR TI;串行输出完毕,清串行输出完毕,清TITI KL1KL1: JNB P3.4,PK1 JNB P3.4,PK1;第第1 1行有闭合键吗?如有,跳行有闭合键吗?如有,跳 ;PK1PK1进行处理进行处理 JB P3.5,KL1JB P3.5,KL1;在第在第2 2行键中有闭合键吗?无闭行键中有闭合键吗?无闭 ;合键跳;合键跳KL1KL1 PK1PK1: ACALL DL10 ACALL DL
49、10;调用延时调用延时1010msms子程序子程序DL10DL10,软软 ;件消除抖动;件消除抖动 JNB P3.4,JNB P3.4,PK2PK2;判是否抖动引起的?判是否抖动引起的? MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 44 JB P3.5,KL1 JB P3.5,KL1 ;不是抖动引起的,往下执行不是抖动引起的,往下执行 PK2PK2: MOV R7MOV R7, ,08H08H ;R7R7为列计数器,扫一列减为列计数器,扫一列减1 1 MOV R6,MOV R6,0FEH0FEH;判别是哪一个键按下,判别是哪一个键按下,FEHFEH为最为最 ;左一列为低;左一列
50、为低 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行有键闭行有键闭 ;合,跳;合,跳PKONEPKONE处理处理 JB P3.5,NEXT JB P
51、3.5,NEXT ;读第读第2 2行状态,是第行状态,是第2 2行某键否?行某键否? MOV R4MOV R4, ,08H08H;第第2 2行键中有键被按下,行首键行键中有键被按下,行首键 ;号;号0808H H送送R4R4 AJMP PK3 ;AJMP PK3 ; MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 45 PKONEPKONE:MOV R4MOV R4, ,00H00H ;第第1 1行有键按下,行首键号行有键按下,行首键号0000H H送送R4R4 PK3PK3: MOV SBUF, MOV SBUF,00H 00H ;等待键释放,发送等待键释放,发送0000H H使
52、所有列使所有列 ;线为低;线为低 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 ;计算得到键码计算得到键码A A RETRET NEXTNEXT: MOV A,R6 MOV A,R6 ;列扫描码左移一位,判下列键列扫描码左移一位,判下列键 R
53、L A ;RL A ; MOV R6,AMOV R6,A ;记住列扫描码于记住列扫描码于R6R6中中 INC R3INC R3 ;列号增列号增1 1 DJNZ R7,KL5DJNZ R7,KL5 ;列计数器列计数器R7R7减减1 1,8 8列键都检查列键都检查 ;完?;完? MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 46 AJMP KEYIAJMP KEYI ;8 8列键扫描完毕,开始下一个键列键扫描完毕,开始下一个键 ;盘扫描周期;盘扫描周期 DL10DL10: MOV R7, MOV R7,0AH0AH;延时延时1010msms子程序子程序 DLDL: MOV R6, M
54、OV R6,0FFH0FFH DL6DL6: DJNZ R6,DL6 DJNZ R6,DL6 DJNZ DJNZ R7,DLR7,DL RETRET 10.3.3 10.3.3 利用通用键盘利用通用键盘/ /显示器接口芯片显示器接口芯片82798279实现键盘实现键盘/ / 显示器接口显示器接口 Intel Intel 82798279芯片:芯片:通用可编程键盘通用可编程键盘/ /显示器接口芯片。显示器接口芯片。 对键盘部分提供扫描工作方式,能对对键盘部分提供扫描工作方式,能对6464个个键键盘阵键键盘阵 列不断扫描,列不断扫描,自动消抖自动消抖,自动识别出闭合的键自动识别出闭合的键并并得到键
55、得到键 号号,能对,能对双键或双键或N N键同时按下键同时按下进行处理。进行处理。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 47 扫描方式的显示接口,可显示多达扫描方式的显示接口,可显示多达1616位位的字符。的字符。 1.82791.8279的引脚及内部结构的引脚及内部结构 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 48 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 49 2. 2. 引脚功能介绍引脚功能介绍 (1)(1)与与CPUCPU的接口引脚的接口引脚 DB0 DB0DB7DB7:数据总线、双向、三态,与单片机数据数据总线、双向、三态
56、,与单片机数据 总线相连,在总线相连,在CPUCPU和和82798279之间传送命令或数据。之间传送命令或数据。 CLK CLK:系统时钟,用于系统时钟,用于82798279内部定时,以产生其工作内部定时,以产生其工作 所需的时序。所需的时序。 RESET RESET:高电平时,高电平时,82798279被复位,被复位,复位后的状态如下复位后的状态如下: * * 1616个字符左边输入显示方式个字符左边输入显示方式 * * 编码扫描键盘、双键锁定方式编码扫描键盘、双键锁定方式 CS CS* *:片选片选 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 50 A0 A0:=1=1,写
57、入写入的是的是命令命令字节字节; ; 读出读出的是的是状态状态字节。字节。 =0 =0,写入或读出的字节均为,写入或读出的字节均为数据数据。 RD RD* *、WRWR* *:读、写控制引脚读、写控制引脚 IRQ IRQ:中断请求线。在键盘方式中,当键盘中断请求线。在键盘方式中,当键盘RAMRAM(先先 进先出)中进先出)中存有按下键的数据时,存有按下键的数据时,IRQIRQ为高电平为高电平,向,向 CPUCPU提出中断申请。提出中断申请。 (2 2)扫描信号输出引脚扫描信号输出引脚 CPUCPU每次从键盘每次从键盘RAMRAM中读出一个字节数据时,中读出一个字节数据时,IRQIRQ就变就变
58、为低电平。为低电平。如果键盘如果键盘RAMRAM中还有未读完的数据,中还有未读完的数据,IRQIRQ将将 再次变为高电平,再次提出中断请求。再次变为高电平,再次提出中断请求。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 51 SL0 SL0SL3SL3 扫描输出。用来扫描键盘和显示器。可编程设定扫描输出。用来扫描键盘和显示器。可编程设定 为为编码输出编码输出,即,即SL0SL0SL3SL3需外接需外接4-164-16译码器,输出译码器,输出1616 取取1 1的扫描信号,也可编程设定为的扫描信号,也可编程设定为译码输出译码输出,即由,即由SL0SL0 SL3SL3直接输出直接输
59、出4 4取取1 1的扫描信号。的扫描信号。 (3 3)与键盘连接的引脚)与键盘连接的引脚 RL0 RL0RL7RL7 键盘矩阵的行信号输入线。键盘矩阵的行信号输入线。 SHIFT SHIFT 输入线,通常用作键盘上、下档功能的控制键。输入线,通常用作键盘上、下档功能的控制键。 CNTL/STB CNTL/STB 输入线,高电平有效。在键盘方式时,通常用来输入线,高电平有效。在键盘方式时,通常用来 作为键盘控制功能键使用。作为键盘控制功能键使用。 MCS-51与键盘、显示器、拨盘、 打印机的接口设计(3) 52 (4 4)与显示器连接的引脚)与显示器连接的引脚 OUTA0 OUTA0OUTA3O
60、UTA3(A A组显示数据)组显示数据)、OUTB0OUTB0OUTB3OUTB3(B B 组显示数据)组显示数据): :向向LEDLED显示器输出的段码显示器输出的段码, , 与扫描信号与扫描信号 线线SL0SL0SL3SL3同步。两组可独立使用,也可合并使用。同步。两组可独立使用,也可合并使用。 BD BD* *: :消隐显示控制消隐显示控制。 3. 82793. 8279的基本功能部件的基本功能部件 (1 1)扫描计数器)扫描计数器 编码方式编码方式: :扫描线扫描线SL0SL0SL3SL3输出,经外部输出,经外部4-164-16译码器译码器 译码后,为键盘和显示器提供译码后,为键盘和显
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年赣州环保工程承包合同
- 2024年版电子竞技赛事组织合同
- 2024年美术培训学校聘请美术教学研究专家服务协议3篇
- 2025版汽车抵押贷款服务专项合同
- 2024年甲乙双方关于新能源汽车充电设施建设与运营的合同
- 2025年度高新技术公司技术入股合作协议3篇
- 2025年度企业搬迁项目策划与办公设备搬迁服务合同3篇
- 2025版智能交通信号控制系统合作合同3篇
- 2025年度专业翻译公司兼职翻译人员聘用协议3篇
- 2025版建筑泥水工劳务分包与建筑信息化管理系统合同3篇
- 分离工程课件
- 珠宝店应急预案范本
- 医药电商行业发展趋势报告
- 有限空间作业安全管理协议
- 劳务派遣方案
- 电费异常问题筛选及处理途径
- 介绍河南的英文课件演讲
- 道路绿化养护投标方案(技术方案)
- 跨省户口网上迁移告知单
- 屋面工程质量控制
- 幼儿园中班语言绘本《三只蝴蝶》课件
评论
0/150
提交评论