1、朱明工作室 zhubob 授人以鱼不如授人以渔2022-11-10第第8 8章章 常用外围设备接口电路常用外围设备接口电路 主讲:朱明高级工程师、高级技师、国家经济师 高级国家职业技能鉴定考评员 高级技能专业教师朱明工作室 zhubob 授人以鱼不如授人以渔v 知足常乐,历经兵农工商学。知足常乐,历经兵农工商学。v 历经:历经:兵团开车,地方修车,企业管理:技术、兵团开车,地方修车,企业管理:技术、v 运营、运营、物流、安全、保卫,物流、安全、保卫,v 职任:职任:客运站长、客运站长、公司经理,公司经理,集团技术总监,集团技术总监,总经总经理及法人代表。理及法人代表。v 学历:学历:本科、本科
2、、MBA,v 专业:专业:汽车维修与使用、企业管理、经济管理。汽车维修与使用、企业管理、经济管理。v 职业资格与职称:职业资格与职称:高级工程师、高级技师、国家经济高级工程师、高级技师、国家经济师、高级技能专业教师、高级国家职业资格考评员。师、高级技能专业教师、高级国家职业资格考评员。管理科学研究院特约讲师、管理科学研究院特约讲师、管理顾问有限公司高级讲管理顾问有限公司高级讲师。师。v 客座任教:客座任教:大学、大学、技师学院、国家职业资格培训与考技师学院、国家职业资格培训与考评及企业内部职业培训。评及企业内部职业培训。朱明工作室 zhubob 授人以鱼不如授人以渔2022-11-103第第8
3、 8章章 常用外围设备接口电路常用外围设备接口电路 LED显示器及其接口技术8.2A/D转换电路接口技术8.3D/A转换电路接口电路8.4开关量驱动输出接口电路8.5键盘接口技术8.1朱明工作室 zhubob 授人以鱼不如授人以渔第第8 8章章 常用外围设备接口电路常用外围设备接口电路本章要点本章要点:键盘去抖动和连接、控制方式键盘去抖动和连接、控制方式独立式按键及其接口电路独立式按键及其接口电路矩阵式键盘及其接口电路矩阵式键盘及其接口电路LEDLED数码管及编码方式数码管及编码方式静态显示方式及其典型应用电路静态显示方式及其典型应用电路动态显示方式及其典型应用电路动态显示方式及其典型应用电路
4、虚拟虚拟I I2 2C C总线串行显示电路总线串行显示电路并行并行A/D ADC0809A/D ADC0809及其接口电路及其接口电路串行串行A/D ADC0832A/D ADC0832及其接口电路及其接口电路I I2 2C C串行串行A/DA/D典型应用电路典型应用电路DAC0832DAC0832及其接口电路及其接口电路I I2 2C C串行串行D/AD/A典型应用电路典型应用电路开关量驱动输出接口电路开关量驱动输出接口电路朱明工作室 zhubob 授人以鱼不如授人以渔2022-11-10朱明工作室 zhubob 键盘接口键盘接口键盘键盘 单片机系统中完成控制参数输入及修改的单片机系统中完成
5、控制参数输入及修改的基本输基本输入设备入设备,是人工干预系统的重要手段。,是人工干预系统的重要手段。单片机与计算机在键盘规模单片机与计算机在键盘规模/键符设置等方面差别键符设置等方面差别很大。很大。键盘分类键盘分类 按键值按键值编码方式编码方式分分 (硬件硬件)编码键盘编码键盘与与非非(硬件硬件)编码键盘编码键盘。按键组按键组连接方式连接方式分分 独立连接键盘独立连接键盘与与矩阵连接键盘矩阵连接键盘。8.1 8.1 键盘接口技术键盘接口技术-p209-p209朱明工作室 zhubob 8.1 8.1 键盘接口技术键盘接口技术编码键盘编码键盘:采用专用的编码采用专用的编码/译码译码器件器件,被按
6、下的键被按下的键由该器件译码输出相应的由该器件译码输出相应的键码键码/键值键值。特点:特点:增加了硬件开销,编码因选用器件而异,编增加了硬件开销,编码因选用器件而异,编码固定,但编程简单。适用于规模大的键盘。码固定,但编程简单。适用于规模大的键盘。非编码键盘非编码键盘:单片机系统多采用此类键盘单片机系统多采用此类键盘 采用采用软件软件编编/译码的方式译码的方式,通过扫描,对每个被按下通过扫描,对每个被按下的键判别输出相应的的键判别输出相应的键码键码/键值键值。特点:特点:不增加硬件开销,编码灵活,适用于小规模不增加硬件开销,编码灵活,适用于小规模的键盘,特别是单片机系统。但编程较复杂的键盘,特
7、别是单片机系统。但编程较复杂,占占CPUCPU时间,还须软件时间,还须软件“消抖消抖”。按键值编码方式:编码键盘与非编码键盘朱明工作室 zhubob 8.1 8.1 键盘接口技术键盘接口技术按键组连接方式:独立连接键盘与矩阵连接键盘独立连接键盘独立连接键盘:每键相互独立,各自与一条每键相互独立,各自与一条I/OI/O线线相连,相连,CPUCPU可直接读取该可直接读取该I/OI/O线的高线的高/低电平状态。低电平状态。特点:特点:占占I/OI/O口线多,但判键速度快,多用于设置控口线多,但判键速度快,多用于设置控制键、功能键。适用于键数少的场合。制键、功能键。适用于键数少的场合。矩阵连接键盘矩阵
8、连接键盘:键按矩阵排列键按矩阵排列,各键处于矩阵行各键处于矩阵行/列列的的结点结点处处,CPU,CPU通过对连在通过对连在行行(列列)的的I/OI/O线送已知电线送已知电平的信号平的信号,然后读取然后读取列列(行行)线的状态信息。逐线扫描线的状态信息。逐线扫描,得出键码。得出键码。特点:特点:键多时键多时占用占用I/OI/O口线少口线少,但判键速度慢但判键速度慢,多用多用于设置数字键。适用于键数多的场合。于设置数字键。适用于键数多的场合。朱明工作室 zhubob 2022-11-10朱明工作室 zhubob 授人以鱼不如授人以渔8.1 8.1 键盘接口技术键盘接口技术-P209P209一、单片
9、机键盘和键盘接口概述(1 1)键盘的功能:)键盘的功能:键盘是单片机应用系统最常见的一种输入设备,用户通过键盘可以向CPU输入数据、地址和命令。(2 2)键盘的分类:)键盘的分类:(a)键盘按照接口原理按照接口原理可分为编码键盘与非编码键盘两类。这两类键盘的主要区别是识别键符及给出相应键码的方法。1.编码键盘编码键盘主要是用硬件来实现对键的识别;2.非编码键盘非编码键盘主要是由软件来实现键盘的定义与识别。(b)键盘按照其结构按照其结构可分为独立式键盘与矩阵式键盘两类。1.独立式键盘独立式键盘主要用于按键较少的场合;朱明工作室 zhubob 授人以鱼不如授人以渔 2.矩阵式键盘矩阵式键盘主要用于
10、按键较多的场合,也称行列式键盘。(3 3)MCS-51MCS-51单片机键盘接口方法及接口芯片:单片机键盘接口方法及接口芯片:(a)利用单片机芯片本身的并行口;(b)利用单片机芯片本身的串行口;(c)利用通用接口芯片(8255、8155等);(d)利用专用接口芯片8279。(4 4)单片机键盘接口电路应完成的操作功能:)单片机键盘接口电路应完成的操作功能:(a)判定是否有闭合键;(b)确定闭合键的位置;(c)形成闭合键的键码;(d)排除多键、串键及去抖动。以上操作功能通常是以软硬件结合的方式来完成的。以上操作功能通常是以软硬件结合的方式来完成的。8.1 8.1 键盘接口技术键盘接口技术-续续朱
11、明工作室 zhubob 授人以鱼不如授人以渔(5 5)单片机键盘按键的结构及特点:)单片机键盘按键的结构及特点:(a a)单片机键盘按键的结构;)单片机键盘按键的结构;单片机的键盘通常是由多个按键组成的,按键通常有两类:1 1)触点式)触点式开关开关按键:如机械式开关、导电橡胶式开关等;2 2)无触点式开关)无触点式开关按键:如电气式按键,磁感应按键等;前者造价低,后者寿命长。单片机应用系统中最常见的是机械触点式开关按键。(b b)机械触点式开关按键的功能及特点)机械触点式开关按键的功能及特点;1 1)机械触点式开关按键的功能:)机械触点式开关按键的功能:把开关按键机械上的通断关系转换成为电气
12、上的逻辑关系。也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相兼容。8.1 8.1 键盘接口技术键盘接口技术-续续朱明工作室 zhubob 授人以鱼不如授人以渔 2 2)机械触点式开关按键的特点:)机械触点式开关按键的特点:机械触点式开关按键的理想波形:见图 机械触点式开关按键的实际波形:见图 机械开关特点:闭合时,不会马上稳定地接通。断开时,也不会一下子断开。即在闭合,断开的瞬间,均伴随有一连串的抖动,抖动时间的长短由按键机械特性决定,一般为510ms,按键闭合稳定期长短由操作人员按键动作决定,一般为十分之几秒到几秒。8.1 8.1 键盘接口技术键盘接口技术-续续朱明工
13、作室 zhubob 授人以鱼不如授人以渔闭合闭合稳定稳定键按下键按下前沿抖动前沿抖动后沿抖动后沿抖动R RK K+5V+5V80C5180C51P1.0P1.0“0”“0”“1”“1”“1”“1”返回8.1 8.1 键盘接口技术键盘接口技术-续续-p210-p210朱明工作室 zhubob 授人以鱼不如授人以渔(6 6)按键的确认按键的确认:键的闭合与否,反应在口线的电平上键的闭合与否,反应在口线的电平上,即口线的电平是呈现高电平还是低电平状态。因此,可以通过口线电平高、低状态的检测,来确认按键是否按下。但如果在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认
14、为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,确保CPU对一次按键动作只确认一次按键,必须采取去抖动措施。8.1 8.1 键盘接口技术键盘接口技术-续续朱明工作室 zhubob 授人以鱼不如授人以渔8.1.1 按键的状态输入及去抖动-P209 1.1.消除按键抖动的措施消除按键抖动的措施:如果在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,确保CPU对一次按键动作只确认一次按键,必须采取去抖动措施。具体措施可从硬件、软件两方面予以考虑。在键数较少键数
15、较少时,可采用硬件去抖,而当键数较多键数较多时,采用软件去抖。8.1 8.1 键盘接口技术键盘接口技术-续续朱明工作室 zhubob 授人以鱼不如授人以渔8.1 8.1 键盘接口技术键盘接口技术-续续键盘的抖动时间一般为键盘的抖动时间一般为5 510ms10ms,抖动现象会引起抖动现象会引起CPUCPU对一次键操作进行多次处理,从而可能产生错误。对一次键操作进行多次处理,从而可能产生错误。v 1.1.消除按键抖动的措施消除按键抖动的措施:v 具体措施可从硬件、软件两方面予以考虑。在键数较少时,可采用具体措施可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖
16、。硬件去抖,而当键数较多时,采用软件去抖。朱明工作室 zhubob 授人以鱼不如授人以渔 硬件去抖动硬件去抖动 1.1.消除按键抖动的措施消除按键抖动的措施:-p210-p210其中其中RCRC滤波电路去抖动电路简单实用,效果较好滤波电路去抖动电路简单实用,效果较好。软件去抖动软件去抖动 检测到按键按下后,执行检测到按键按下后,执行延时延时10ms10ms子程序后再确认子程序后再确认该键该键是否确实按下,消除抖动影响。是否确实按下,消除抖动影响。8.1 8.1 键盘接口技术键盘接口技术-续续朱明工作室 zhubob 授人以鱼不如授人以渔 (a a)硬件措施)硬件措施:由两个与非门构成一个由两个
17、与非门构成一个RSRS触发器,触发器,当按键未按下时未按下时,OUT1输出为“1”,OUT2输出为“0”。当按键按下时按下时,则OUT1输出为“0”,OUT2输出为“1”。&VCC+5VOUT1ab4.7 k 4.7 k OUT21.1.消除按键抖动的措施消除按键抖动的措施:8.1 8.1 键盘接口技术键盘接口技术-续续朱明工作室 zhubob 授人以鱼不如授人以渔 1.1.消除按键抖动的措施消除按键抖动的措施:(a a)硬件措施)硬件措施:即使在按键过程中产生抖动(在与非门输入端输入一串O或1),只要按键不返回原始状态,经双稳态电路之后,其输出为正规的矩形方波(即已消失抖动影响)。(b b)
18、软件措施:)软件措施:在第一次检测到有键按下时,执行一段延时10ms的子程序,之后,再次检测该键的电平状态,如果该键电平仍保持闭合状态电平,则确认为真正有键按下。否则,认为无键按下;同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。&VCC+5VO UT1ab4.7 k 4.7 k O UT28.1 8.1 键盘接口技术键盘接口技术-续续朱明工作室 zhubob 授人以鱼不如授人以渔(8 8)按键的编码)按键的编码 根据键盘结构的不同,采用不同的编码方式。(9 9)编制键盘程序编制键盘程序 一个完善的键盘控制程序应具备以下功能:一个完善的键盘控制程序应具备以下功能:(
19、a)检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响;(b)有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序;(c)准确输出按键编码值(或键号),以满足跳转指令要求。8.1 8.1 键盘接口技术键盘接口技术-续续朱明工作室 zhubob 授人以鱼不如授人以渔8.1.38.1.3、键盘扫描控制方式键盘扫描控制方式-P211P211 程序控制扫描方式程序控制扫描方式 键处理程序固定在主程序的某个程序段。键处理程序固定在主程序的某个程序段。特点:特点:对对CPUCPU工作影响小,但应考虑键盘处理
20、程序的运行间隔周期不能太工作影响小,但应考虑键盘处理程序的运行间隔周期不能太长,否则会影响对键输入响应的及时性。长,否则会影响对键输入响应的及时性。定时控制扫描方式定时控制扫描方式 利用定时利用定时/计数器每隔一段时间产生定时中断,计数器每隔一段时间产生定时中断,CPUCPU响应中断后对键响应中断后对键盘进行扫描。盘进行扫描。特点:特点:与程序控制扫描方式的区别是,在扫描间隔时间内,前者用与程序控制扫描方式的区别是,在扫描间隔时间内,前者用CPUCPU工工作程序填充,后者用定时作程序填充,后者用定时/计数器定时控制。定时控制扫描方式也应考虑定计数器定时控制。定时控制扫描方式也应考虑定时时间不能
21、太长,否则会影响对键输入响应的及时性。时时间不能太长,否则会影响对键输入响应的及时性。中断控制方式中断控制方式 中断控制方式是利用外部中断源,响应键输入信号。中断控制方式是利用外部中断源,响应键输入信号。特点:特点:克服了前两种控制方式可能产生的空扫描和不能及时响应键输入的克服了前两种控制方式可能产生的空扫描和不能及时响应键输入的缺点,既能及时处理键输入,又能提高缺点,既能及时处理键输入,又能提高CPUCPU运行效率,但要占用一个宝贵的运行效率,但要占用一个宝贵的中断资源。中断资源。朱明工作室 zhubob 授人以鱼不如授人以渔8.1.4 8.1.4 独立式按独立式按键键-P211P211 (
22、1 1)独立式键盘结构)独立式键盘结构 独立式键盘的按键相互独立,每个按键接一根I/O口线,一根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态。因此,通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下。P1.0P1.1P1.2P1.380C51VCCKEYAKEYDKEYCKEYB朱明工作室 zhubob 授人以鱼不如授人以渔(2 2)独立式键盘的程序设计)独立式键盘的程序设计 一般把键盘扫描程序设计成子程序子程序,以便其它各程序调用。程序设计通常采用查询法。假设键盘扫描子程序的名称为 KEY,则键盘扫描子程序则键盘扫描子程序KEYKEY应具有以下功能:应具有以下功能:(a)
23、判定有无按键动作;(b)去抖动;(c)确认是否真正有闭合键;(d)计算并保存闭合键键码(键号);(e)判定闭合键是否释放;(f)恢复闭合键键码(键号)。以上图为例,说明独立式键盘的程序设计过程:以上图为例,说明独立式键盘的程序设计过程:假设四个按键名称依次是KEYA A、KEYB B、KEYC C、KEYD D;显示子程序的名称为DIRDIR,执行一次时间约6ms6ms。P1.0P1.1P1.2P1.380C51VCCK EYAK EYDK EYCK EYB8.148.14 独立式按键独立式按键-续续朱明工作室 zhubob 授人以鱼不如授人以渔(3 3)键盘扫描子程序)键盘扫描子程序KEYK
24、EY流程框图流程框图:Y YN N开开始始调调D DI IR R去去抖抖动动有有键键按按下下?键键确确实实按按下下?调调D DI IR R去去抖抖动动计计算算保保存存键键值值按按键键释释放放?恢恢复复键键值值返返回回调调D DI IR R延延时时Y YN NN NY Y开开始始读读P P1 1口口P P1 1口口数数据据取取反反P P1 1口口数数据据处处理理P P1 1口口数数据据保保存存返返回回P P1 1口口数数据据处处理理子子程程序序K KE EY YC CH HU UL LI I保保护护现现场场保保护护现现场场8.148.14 独立式按键独立式按键-续续朱明工作室 zhubob 授人
25、以鱼不如授人以渔(4 4)键盘扫描子程序)键盘扫描子程序KEYKEY程序清单:程序清单:键盘扫描子程序键盘扫描子程序KEYKEY:出口:键值在内部RAM 20H单元中 KEY:LCALL KEYCHULI;调P1口数据处理子程序 JZ EXIT;没有键按下,转返回 LCALL DIR;调显示子程序去抖动 LCALL DIR;LCALL KEYCHULI;调P1口数据处理子程序 JZ EXIT;没有键按下,转返回 MOV B,20H;保存取反后的键值 KEYSF:LCALL KEYCHULI;调P1口数据处理子程序 JZ KEY1;键释放,转恢复键值 LCALL DIR;调显示子程序延时 LJM
26、P KEYSF;等待键释放 KEY1:MOV 20H,B;键值送20H保存 EXIT:RET;子程序返回8.148.14 独立式按键独立式按键-续续朱明工作室 zhubob 授人以鱼不如授人以渔 P1P1口数据处理子程序口数据处理子程序KEYCHULI:出口:A,20H KEYCHULI:PUSH PSW;保护现场 CLR RS1;改变当前寄存器组为组1 SETB RS0;MOV P1,#0FFH;先向P1口写1 MOV A;P1;读P1口数据 CPL A;P1口数据取反 ANL A,#0FH;屏蔽P1口高4位 MOV 20H,A;保存取反后的键值 CLR RS1;恢复当前寄存器组为组0 CL
27、R RS0;POP PSW;恢复现场 RET;子程序返回8.148.14 独立式按键独立式按键-续续朱明工作室 zhubob 授人以鱼不如授人以渔(5 5)系统监控程序流程框图:)系统监控程序流程框图:假设四个按键KEYA、KEYB、KEYC、KEYD的功能程序名分别是KEYAA、KEYBB、KEYCC、KEYDD,则流程框图如图所示:8.148.14 独立式按键独立式按键-续续N N开开始始K KE EY YA A键键按按下下?调调D DI IR R显显示示子子程程序序结结束束Y YN NN N系系统统初初始始化化调调K KE EY Y子子程程序序执执行行K KE EY YA A键键功功能能
28、程程序序K KE EY YB B键键按按下下?K KE EY YC C键键按按下下?K KE EY YD D键键按按下下?调调D DI IR R显显示示子子程程序序执执行行K KE EY YB B键键功功能能程程序序执执行行K KE EY YC C键键功功能能程程序序执执行行K KE EY YD D键键功功能能程程序序Y YY YY YN N幻幻灯灯片片 3 33 3朱明工作室 zhubob 授人以鱼不如授人以渔(6 6)系统监控程序:)系统监控程序:ORG 0000H MAIN:MOV SP,#60H;堆栈初始化 LOOP:LCALL DIR;调显示子程序 LCALL KEY;调键扫描子程序
29、 JB 20H.0 KEYAA;是KEYA键,转KEYAA执行 JB 20H.1 KEYBB;是KEYB键,转KEYBB执行 JB 20H.2 KEYCC;是KEYC键,转KEYCC执行 JB 20H.3 KEYDD;是KEYD键,转KEYDD执行8.148.14 独立式按键独立式按键-续续朱明工作室 zhubob 授人以鱼不如授人以渔 LCALL DIR;LJMP LOOP;重复执行 KEYAA:;KEYA键功能程序 LJMP LOOP;KEYBB:;KEYB键功能程序 LJMP LOOP;KEYCC:;KEYC键功能程序 LJMP LOOP;KEYDD:;KEYD键功能程序 LJMP LO
30、OP;END(6 6)系统监控程序:)系统监控程序:朱明工作室 zhubob 授人以鱼不如授人以渔 ORG 0000H MAIN:MOV SP,#60H;堆栈初始化 LOOP:LCALL DIR;调显示子程序 LCALL KEY;调键扫描子程序 MOV A,20H;键值送A KEY0:CJNE A,#01H,KEY1;不是KEYA键,转KEY1 LJMP KEYAA;是KEYA键,转KEYAA执行 KEY1:CJNE A,#02H,KEY2;不是KEYB键,转KEY2 LJMP KEYBB;是KEYB键,转KEYBB执行 KEY2:CJNE A,#04H,KEY3;不是KEYC键,转KEY3
31、LJMP KEYCC;是KEYC键,转KEYCC执行 KEY3:CJNE A,#08H,KEY4;不是KEYD键,转KEY4 LJMP KEYDD;是KEYD键,转KEYDD执行(6 6)系统监控程序:)系统监控程序:朱明工作室 zhubob 授人以鱼不如授人以渔 KEY4:LCALL DIR;LJMP LOOP;重复执行 KEYAA:;KEYA键功能程序 LJMP LOOP;KEYBB:;KEYB键功能程序 LJMP LOOP;KEYCC:;KEYC键功能程序 LJMP LOOP;KEYDD:;KEYD键功能程序 LJMP LOOP;END(6 6)系统监控程序:)系统监控程序:朱明工作室
32、zhubob 授人以鱼不如授人以渔1 1、按键直接与按键直接与I/OI/O口连接口连接-p212-p212 二、二、独立式按键及其接口电路独立式按键及其接口电路幻幻灯灯片片 3 36 6朱明工作室 zhubob 授人以鱼不如授人以渔【例【例9-89-8】按图】按图9-13(a)9-13(a)、(b)(b),试分别编制按键扫描子程序。,试分别编制按键扫描子程序。解:按图解:按图9-13(a)9-13(a)编程如下:编程如下:KEYA:ORL P1,#07H KEYA:ORL P1,#07H ;置置P1.0P1.0P1.2P1.2为输入态为输入态 MOV A,P1 MOV A,P1 ;读键值读键值
33、,键闭合相应位为键闭合相应位为0 0 CPL A CPL A ;取反取反,键闭合相应位为键闭合相应位为1 1 ANL A,#00000111B ANL A,#00000111B;屏蔽高屏蔽高5 5位位,保留有键值信息的低保留有键值信息的低3 3位位 JZ GRET JZ GRET ;全全0,0,无键闭合无键闭合,返回返回 LCALL DY10ms LCALL DY10ms ;非全非全0,0,有键闭合有键闭合,延时延时10ms,10ms,软件去抖动软件去抖动 MOV A,P1 MOV A,P1 ;重读键值重读键值,键闭合相应位为键闭合相应位为0 0 CPL A CPL A ;取反取反,键闭合相应
34、位为键闭合相应位为1 1 ANL A,#00000111B ANL A,#00000111B;屏蔽高屏蔽高5 5位位,保留有键值信息的低保留有键值信息的低3 3位位 JZ GRET JZ GRET ;全全0,0,无键闭合无键闭合,返回返回;非全非全0,0,确认有键闭合确认有键闭合 JB Acc.0,KA0 JB Acc.0,KA0 ;转转0#0#键功能程序键功能程序 JB Acc.1,KA1 JB Acc.1,KA1 ;转转1#1#键功能程序键功能程序 JB Acc.2,KA2 JB Acc.2,KA2 ;转转2#2#键功能程序键功能程序GRET:RETGRET:RETKA0:LCALL WO
35、RK0 KA0:LCALL WORK0 ;执行执行0#0#键功能子程序键功能子程序 RETRETKA1:LCALL WORK1 KA1:LCALL WORK1 ;执行执行1#1#键功能子程序键功能子程序 RETRETKA2:LCALL WORK2 KA2:LCALL WORK2 ;执行执行2#2#键功能子程序键功能子程序 RETRET朱明工作室 zhubob 授人以鱼不如授人以渔按图按图9-13(b)9-13(b)编程如下编程如下:KEYB:ORL P1,#07H KEYB:ORL P1,#07H ;置置P1.0P1.0P1.2P1.2为输入态为输入态 MOV A,P1 MOV A,P1 ;读
36、键值读键值,键闭合相应位为键闭合相应位为1 1 ANL A,#00000111B ANL A,#00000111B ;屏蔽高屏蔽高5 5位位,保留有键值信息的低保留有键值信息的低3 3位位 JZ GRET JZ GRET ;全全0,0,无键闭合无键闭合,返回返回 LCALL DY10ms LCALL DY10ms ;非全非全0,0,有键闭合有键闭合,延时延时10ms,10ms,软件去抖动软件去抖动 MOV A,P1 MOV A,P1 ;重读键值重读键值,键闭合相应位为键闭合相应位为1 1 ANL A,#00000111B ANL A,#00000111B ;屏蔽高屏蔽高5 5位位,保留有键值信
37、息的低保留有键值信息的低3 3位位 JZ GRET JZ GRET ;全全0,0,无键闭合无键闭合,返回返回;非全非全0,0,确认有键闭合确认有键闭合 JB Acc.0,KB0 JB Acc.0,KB0 ;转转0#0#键功能程序键功能程序 JB Acc.1,KB1 JB Acc.1,KB1 ;转转1#1#键功能程序键功能程序 JB Acc.2,KB2 JB Acc.2,KB2 ;转转2#2#键功能程序键功能程序GRET:RETGRET:RETKB0:LCALL WORK0 KB0:LCALL WORK0 ;执行执行0#0#键功能子程序键功能子程序 RETRETKB1:LCALL WORK1 K
38、B1:LCALL WORK1 ;执行执行1#1#键功能子程序键功能子程序 RETRETKB2:LCALL WORK2 KB2:LCALL WORK2 ;执行执行2#2#键功能子程序键功能子程序 RETRET朱明工作室 zhubob 授人以鱼不如授人以渔 按键与并行扩展按键与并行扩展I/OI/O口连接口连接 2 2、按键与扩展按键与扩展I/OI/O口连接口连接朱明工作室 zhubob 授人以鱼不如授人以渔【例【例9-99-9】按图】按图9-149-14,试编制按键扫描子程序,将键信号存,试编制按键扫描子程序,将键信号存入内入内RAM 30HRAM 30H。解:编程如下:解:编程如下:KEY99:
39、MOV DPTR,#7FFFH KEY99:MOV DPTR,#7FFFH ;置置7437374373口地址口地址 MOVX A,DPTR MOVX A,DPTR ;输入键信号输入键信号(“0”(“0”有效有效)MOV 30H,A MOV 30H,A ;存键信号数据存键信号数据 RET RET ;参阅参阅8.2.48.2.4,图,图8-68-6,【例,【例8-28-2】。】。按键与串行扩展按键与串行扩展I/OI/O口连接口连接朱明工作室 zhubob 授人以鱼不如授人以渔8.1.5 8.1.5 矩阵式键盘矩阵式键盘-P213P213v1.1.矩阵式键盘矩阵式键盘 I/OI/O端线分为行线和列线
40、,按键跨接在行线端线分为行线和列线,按键跨接在行线和列线上,按键按下时,行线与列线发生短路和列线上,按键按下时,行线与列线发生短路。特点:特点:占用占用I/OI/O端线较少;端线较少;软件结构教复杂。软件结构教复杂。适用于按键较多的场合适用于按键较多的场合。2022-11-10朱明工作室 zhubob 授人以鱼不如授人以渔1.矩阵式键盘及其接口电路矩阵式键盘及其接口电路-p214 8.1.5 矩阵式键盘矩阵式键盘朱明工作室 zhubob 矩阵式键盘矩阵式键盘行反转法行反转法-p214-p214 AT89C51AT89C51P1.0 P1.0 P1.1 P1.1 P1.2 P1.2 P1.3P1
41、.3 P1.4 P1.4 P1.5 P1.5 P1.6 P1.6 P1.P1.7 7+5v0行行1行行2行行3行行0列列1列列2列列3列列原理原理:由行线输出全由行线输出全“0”0”,读入,读入 列线,判有无键按下。列线,判有无键按下。若有键按下若有键按下,再将读入的列再将读入的列 线值由列线输出线值由列线输出,读进行线读进行线 的值。的值。第一步读进的列线值与第第一步读进的列线值与第 二步读进的行线值相加,二步读进的行线值相加,从而得到代表此键的唯一从而得到代表此键的唯一 的特征值。的特征值。行行反转法因输入与输出线反转法因输入与输出线 反过来用而得名。反过来用而得名。优点是判键速度快,两次
42、优点是判键速度快,两次 即可。即可。朱明工作室 zhubob 矩阵式键盘矩阵式键盘线反转法线反转法图例图例AT89C51AT89C51P1.0 P1.0 P1.1 P1.1 P1.2 P1.2 P1.3P1.3 P1.4 P1.4 P1.5 P1.5 P1.6 P1.6 P1.7P1.7+5vMOV P1MOV P1,#0F0H#0F0H;低位送全低位送全“0 0”MOV A MOV A,P1 P1 ;读进读进P1P1口电平口电平 ANL AANL A,#0F0H#0F0H;保留高保留高4 4位位 CJNE A,#0F0H,CJNE A,#0F0H,MK3(MK3();若有键按下则若有键按下则
43、P1.4P1.4P1.7P1.7必必 有有“0 0”位位,跳转到跳转到MK3MK3去处理去处理;若无键按下若无键按下则退出键扫描则退出键扫描。0行行1行行2行行3行行0列列1列列2列列3列列设设:第第3行行/第第1列结点有键按下列结点有键按下首先首先:“1111 0000”P1 P1然后读然后读P1:P1P1 “1101 xxxx”只留高只留高4位位:A “1101 0000”因为有键按下因为有键按下,A 1111000011110000朱明工作室 zhubob AT89C51AT89C51P1.0 P1.0 P1.1 P1.1 P1.2 P1.2 P1.3P1.3 P1.4 P1.4 P1.
44、5 P1.5 P1.6 P1.6 P1.7P1.7+5vMOV P1MOV P1,#0F0H;#0F0H;低位送全低位送全“0 0”MOV A MOV A,P1 ;P1 ;读进读进P1P1口电平口电平 ANL AANL A,#0F0H ;#0F0H ;保留高保留高4 4位位 CJNE A,#0F0H,CJNE A,#0F0H,MK3(MK3()0行行1行行2行行3行行0列列1列列2列列3列列此时:此时:R2 “1101 0000”然后:然后:A “1101 1111”返送返送P1口口:“1101 1111”P1 P1再读再读P1口:口:P1P1 “xxxx 0111”只留低只留低4位位:A “
45、0000 0111”特征值特征值:A+R2=“11110 01 1 0 0111111”MOV R2MOV R2,A ;A ;暂存回暂存回R2R2 ORL A ORL A,#0FH ;#0FH ;高高4 4位保留位保留;低低4 4位充位充“1 1”MOV P1,A ;MOV P1,A ;新值返送新值返送P1P1口口 MOV AMOV A,P1;P1;再再读进读进P1P1口电平口电平 ANL AANL A,#0FH ;#0FH ;只留低只留低4 4位位 ADD AADD A,R2R2 ;得到键特征值得到键特征值矩阵式键盘矩阵式键盘线反转法线反转法图例图例朱明工作室 zhubob 授人以鱼不如授人
46、以渔【例【例9-109-10】按图按图9-159-15及图及图9-169-16,试编制矩阵式键盘扫描程序。试编制矩阵式键盘扫描程序。解:解:KEY:MOV P1,#0F0H KEY:MOV P1,#0F0H ;行线置低电平行线置低电平,列线置输入态列线置输入态KEY0:MOV A,P1 KEY0:MOV A,P1 ;读列线数据读列线数据 CPL A CPL A ;数据取反数据取反,“1”,“1”有效有效 ANL A,#0F0H ANL A,#0F0H ;屏蔽行线屏蔽行线,保留列线数据保留列线数据 MOV R1,A MOV R1,A ;存列线数据存列线数据(R1(R1高高4 4位位)JZ GRE
47、T JZ GRET ;全全0,0,无键按下无键按下,返回返回KEY1:MOV P1,#0FH KEY1:MOV P1,#0FH ;行线置输入态行线置输入态,列线置低电平列线置低电平 MOV A,P1 MOV A,P1 ;读行线数据读行线数据 CPL A CPL A ;数据取反数据取反,“1”,“1”有效有效 ANL A,#0FH ANL A,#0FH ;屏蔽列线屏蔽列线,保留行线数据保留行线数据 MOV R2,A MOV R2,A ;存行线数据存行线数据(R2(R2低低4 4位位)JZ GRET JZ GRET ;全全0,0,无键按下无键按下,返回返回 JBC F0,WAIT JBC F0,W
48、AIT ;已有消抖标志已有消抖标志,转转 SETB F0 SETB F0 ;无消抖标志无消抖标志,置消抖标志置消抖标志 LCALL DY10ms LCALL DY10ms ;调用调用10ms10ms延时子程序延时子程序(参阅例参阅例4.13),4.13),消抖消抖 SJMP KEY0 SJMP KEY0 ;重读行线列线数据重读行线列线数据GRET:RET GRET:RET ;朱明工作室 zhubob 授人以鱼不如授人以渔WAIT:MOV A,P1 WAIT:MOV A,P1 ;等待按键释放等待按键释放 CPL A CPL A ;ANL A,#0FH ANL A,#0FH ;JNZ WAIT J
49、NZ WAIT ;按键未释放按键未释放,继续等待继续等待KEY2:MOV A,R1 KEY2:MOV A,R1 ;取列线数据取列线数据(高高4 4位位)MOV R1,#03H MOV R1,#03H ;取列线编号初值取列线编号初值 MOV R3,#03H MOV R3,#03H ;置循环数置循环数 CLR C CLR C ;KEY3:RLC A KEY3:RLC A ;依次左移入依次左移入C C中中 JC KEY4 JC KEY4 ;C=1,;C=1,该列有键按下该列有键按下,(,(列线编号存列线编号存R1)R1)DEC R1 DEC R1 ;C=0,;C=0,无键按下无键按下,修正列编号修正
50、列编号 DJNZ R3,KEY3 DJNZ R3,KEY3 ;判循环结束否判循环结束否?未结束继续寻找有键按下的列线未结束继续寻找有键按下的列线KEY4:MOV A,R2 KEY4:MOV A,R2 ;取行线数据取行线数据(低低4 4位位)MOV R2,#00H MOV R2,#00H ;置行线编号初值置行线编号初值 MOV R3,#03H MOV R3,#03H ;置循环数置循环数 CLR C CLR C ;KEY5:RRC A KEY5:RRC A ;依次右移入依次右移入C C中中 JC KEY6 JC KEY6 ;C=1,;C=1,该行有键按下该行有键按下,(,(行线编号存行线编号存R2