《单片机学习第十章2.ppt》由会员分享,可在线阅读,更多相关《单片机学习第十章2.ppt(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、10 10 扩展键盘接口扩展键盘接口1键盘接口键盘接口键盘键盘 单片机系统中完成控制参数输入及修改的基本单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。输入设备,是人工干预系统的重要手段。单片机与计算机在键盘规模单片机与计算机在键盘规模/键符设置等方面键符设置等方面差别很大。差别很大。键盘分类键盘分类 按键值编码方式分按键值编码方式分 (硬件硬件)编码键盘编码键盘与与非非(硬件硬件)编码键盘编码键盘。按键组连接方式分按键组连接方式分 独立连接键盘独立连接键盘与与矩阵连接键盘矩阵连接键盘。2编码键盘编码键盘:采用专用的采用专用的编码编码/译码译码器件器件,被按下的键被
2、按下的键由该器件译码输出相应的键码由该器件译码输出相应的键码/键值。键值。特点:增加了硬件开销,编码因选用器件而异,编特点:增加了硬件开销,编码因选用器件而异,编码固定,但编程简单。适用于规模大的键盘。码固定,但编程简单。适用于规模大的键盘。非编码键盘非编码键盘:单片机系统多采用此类键盘单片机系统多采用此类键盘 采用软件编采用软件编/译码的方式译码的方式,通过扫描,对每个被通过扫描,对每个被按下的键判别输出相应的键码按下的键判别输出相应的键码/键值。键值。特点特点:不增加硬件开销,编码灵活,适用于小规模:不增加硬件开销,编码灵活,适用于小规模的键盘,特别是单片机系统。但编程较复杂的键盘,特别是
3、单片机系统。但编程较复杂,占占CPUCPU时间,还须软件时间,还须软件“消颤消颤”。按键值编码方式按键值编码方式:编码键盘编码键盘与与非编码键盘非编码键盘3按键组连接方式按键组连接方式:独立连接键盘与矩阵连接键盘独立连接键盘与矩阵连接键盘独立连接键盘独立连接键盘:每键相互独立,各自与一条每键相互独立,各自与一条I/OI/O线相线相连,连,CPUCPU可直接读取该可直接读取该I/OI/O线的高线的高/低电平状态。低电平状态。特点:占特点:占I/OI/O口线多,但判键速度快,多用于设置口线多,但判键速度快,多用于设置控制键、功能键。适用于键数少的场合。控制键、功能键。适用于键数少的场合。矩阵连接键
4、盘矩阵连接键盘:键按矩阵排列键按矩阵排列,各键处于矩阵行各键处于矩阵行/列列的结点处的结点处,CPUCPU通过对连在行通过对连在行(列列)的的I/OI/O线送已知电平线送已知电平的信号的信号,然后读取列然后读取列(行行)线的状态信息。逐线扫描线的状态信息。逐线扫描,得出键码。得出键码。特点:键多时占用特点:键多时占用I/OI/O口线少口线少,但判键速度慢但判键速度慢,多用多用于设置数字键。适用于键数多的场合。于设置数字键。适用于键数多的场合。4独立连接式键盘例独立连接式键盘例1 1:特点:此子程序需特点:此子程序需不断不断(或定时或定时)调用调用,否则可能,否则可能漏判。漏判。4 4个键的优先
5、级由个键的优先级由指令顺序指令顺序决定。决定。P1.0P1.0P1.1P1.1P1.2P1.2P1.3P1.3KEY:JNB P1.0,FUNC1 ;KEY:JNB P1.0,FUNC1 ;逐键判别逐键判别 JNB P1.1,FUNC2 JNB P1.1,FUNC2 JNB P1.2,FUNC3 JNB P1.2,FUNC3 JNB P1.3,FUNC4 JNB P1.3,FUNC4 RET ;RET ;无任何键按下由此返回无任何键按下由此返回FUNC1:;FUNC1:;做做P1.0P1.0要求的要求的“功能功能1”1”RET RETFUNC2:;FUNC2:;做做P1.1P1.1要求的要求的
6、“功能功能2”2”RET RETFUNC3:;FUNC3:;做做P1.2P1.2要求的要求的“功能功能3”3”RET RETFUNC4:;FUNC4:;做做P1.3P1.3要求的要求的“功能功能4”4”RET RETAT89C51AT89C515独立连接式键盘例独立连接式键盘例2 2 特点:特点:此子程序采用此子程序采用中断中断查询查询不会漏判不会漏判,省时。省时。键的键的优先级优先级由指令由指令顺序决定。顺序决定。为防止为防止一次按键多一次按键多次中断次中断,在功能子程,在功能子程序里应安排序里应安排“关关/开中开中断指令断指令”并并“延时延时”。P1.0P1.0P1.1P1.1P1.2P1
7、.2P1.3P1.3 ORG 0003HORG 0003H LJMP KEY LJMP KEY KEY:JNB P1.0,FUNC1 ;KEY:JNB P1.0,FUNC1 ;逐键判别逐键判别 JNB P1.1,FUNC2 JNB P1.1,FUNC2 JNB P1.2,FUNC3 JNB P1.2,FUNC3 JNB P1.3,FUNC4 JNB P1.3,FUNC4 RETI ;RETI ;无任何键按下由此返回无任何键按下由此返回FUNC1:;FUNC1:;做做P1.0P1.0要求的要求的“功能功能1”1”RETI RETIFUNC2:;FUNC2:;做做P1.1P1.1要求的要求的“功能
8、功能2”2”RETI RETIFUNC3:;FUNC3:;做做P1.2P1.2要求的要求的“功能功能3”3”RETI RETIFUNC4:;FUNC4:;做做P1.3P1.3要求的要求的“功能功能4”4”RETI RETIINT0INT0&(上拉上拉)AT89C51AT89C516矩阵式键盘矩阵式键盘AT89C51AT89C5181558155P0P0ALEALECECERESETRESETAD0-7AD0-7EAEARESETRESETRDRDWRWRWRWRRDRDPA7PA7PA6PA6PA5PA5PA4PA4PA3PA3PA2PA2PA1PA1PA0PA0PC0PC0PC1PC1PC2
9、PC2PC3PC3P2.7P2.7ALEALE+5v+5v+5v+5v行线行线列列线线0 0行行7 7行行0 0列列3 3列列 0 4 8 12 16 20 24 280 4 8 12 16 20 24 28 1 5 9 13 17 21 25 291 5 9 13 17 21 25 29 2 6 10 14 18 22 26 302 6 10 14 18 22 26 30 3 7 11 15 19 23 26 313 7 11 15 19 23 26 31P2.0P2.0IO/MIO/M8155 8155 控制寄存器:控制寄存器:01000100H H 8155 A8155 A口地址:口地址
10、:01010101H H 8155 C8155 C口地址:口地址:01030103H H A A口口为输出为输出 C C口为输入口口为输入口70 0行行 1 1行行 2 2行行 3 3行行 4 4行行 5 5行行 6 6行行 7 7行行行行线线(PA0PA0PA7)PA7)列列 线线 PC PC 0-3 0-3 0 0列列3 3列列 0 4 8 12 16 20 24 280 4 8 12 16 20 24 28 1 5 9 13 17 21 25 291 5 9 13 17 21 25 29 2 6 10 14 18 22 26 302 6 10 14 18 22 26 30 3 7 11
11、15 19 23 26 313 7 11 15 19 23 26 31矩阵式键盘工作原理矩阵式键盘工作原理:先由行线送出数据先由行线送出数据,送全送全“0”0”或每次只送一位或每次只送一位“0”0”;然后读进列线,判有无键;然后读进列线,判有无键按下或按键的位置并算出键按下或按键的位置并算出键值。顺序扫描。值。顺序扫描。1 1列列2 2列列8KEY1:LCALL KS1 ;KEY1:LCALL KS1 ;查有无键闭合查有无键闭合 JNZ LK1 ;JNZ LK1 ;有键闭合转消颤有键闭合转消颤 LJMP LK8 ;LJMP LK8 ;无键闭合则退出无键闭合则退出LK1LK1:LCALL DL6
12、ms ;LCALL DL6ms ;消颤消颤1212msms LCALL DL6ms LCALL DL6ms LCALL KS1 ;LCALL KS1 ;再查有无键闭合再查有无键闭合 JNZ LK2 ;JNZ LK2 ;的确有,转处理的确有,转处理 LJMP LK8 ;LJMP LK8 ;确实无,退出去确实无,退出去查有无键闭合的子程序查有无键闭合的子程序KS1KS1:KS1KS1:MOV DPTRMOV DPTR,#0101H;#0101H;指向指向 A A口口 MOV A,#00H;MOV A,#00H;8 8条行线都送条行线都送0 0 MOVX MOVX,DPTRDPTR,A;A;送到行线
13、上去送到行线上去 INC DPTRINC DPTR INC DPTR ;INC DPTR ;指向指向 C C口口 MOVX AMOVX A,DPTR;DPTR;读列线的电平读列线的电平 ANL AANL A,#0FH ;#0FH ;保留保留C C口低口低4 4位位 若确有键按下若确有键按下,则则AccAcc中必有中必有“0”0”ORL A ORL A,#0F0H;#0F0H;将将AccAcc高高4 4位赋位赋1 1 CPL A;CPL A;AccAcc取反后,高取反后,高4 4位位=0=0;若有键按下若有键按下,则低则低4 4位中必有位中必有“1”1”RET RET检查的结果(出口)检查的结果
14、(出口):若若(A)(A)0,0,则有键按下;则有键按下;若若(A)(A)0,0,则则无键按下。无键按下。行线行线列列线线0 0列列3 3列列1 1列列2 2列列0 0行行 1 1行行 2 2行行 3 3行行 4 4行行 5 5行行 6 6行行 7 7行行 0 4 8 12 16 20 24 280 4 8 12 16 20 24 28 1 5 9 13 17 21 25 291 5 9 13 17 21 25 29 2 6 10 14 18 22 26 302 6 10 14 18 22 26 30 3 7 11 15 19 23 26 313 7 11 15 19 23 26 319矩阵式
15、键盘线反转法矩阵式键盘线反转法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+5v+5v0 0行行1 1行行2 2行行3 3行行0 0列列1 1列列2 2列列3 3列列原理原理:由行线输出全由行线输出全“0 0”,读入,读入 列线,判有无键按下。列线,判有无键按下。若有键按下若有键按下,再将读入的列再将读入的列 线值由列线输出线值由列线输出,读进行线读进行线 的值。的值。第一步读进的列线值与第第一步读进的列线值与第 二步读进的行线值相加,二步读进的行线值相加,
16、从而得到代表此键的唯一从而得到代表此键的唯一 的特征值。的特征值。线反转法因输入与输出线线反转法因输入与输出线 反过来用而得名。反过来用而得名。优点是判键速度快,两次优点是判键速度快,两次 即可。即可。10矩阵式键盘线反转法图例矩阵式键盘线反转法图例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+5v+5vMOV P1MOV P1,#0F0H;#0F0H;低位送全低位送全“0”0”MOV A MOV A,P1 ;P1 ;读进读进P1P1口电平口电平 ANL A
17、ANL A,#0F0H;#0F0H;保留高保留高4 4位位 CJNE A,#0F0H,MK3()CJNE A,#0F0H,MK3();若有键按下则若有键按下则P1.4P1.7P1.4P1.7必必 有有“0”0”位位,跳转到跳转到MK3MK3去处理去处理;若无键按下则退出键扫描。若无键按下则退出键扫描。0 0行行1 1行行2 2行行3 3行行0 0列列1 1列列2 2列列3 3列列设设:第第3 3行行/第第1 1列结点有键按下列结点有键按下首先首先:“1111 0000”:“1111 0000”P1P1然后读然后读P1:P1P1:P1 “1101 “1101 xxxxxxxx”只留高只留高4 4
18、位位:A A “1101 1101 0000”0000”因为有键按下因为有键按下,A 11110000A 1111000011MOV P1MOV P1,#0F0H;#0F0H;低位送全低位送全“0”0”MOV A MOV A,P1 ;P1 ;读进读进P1P1口电平口电平 ANL AANL A,#0F0H ;#0F0H ;保留高保留高4 4位位 CJNE A,#0F0H,MK3()CJNE A,#0F0H,MK3()此时:此时:R2R2 “1101 1101 00000000”然后:然后:A “A “1101 1101 11111111”返送返送P1P1口口:“:“1101 11111101 1
19、111”P1P1再读再读P1P1口口 P1P1 “xxxxxxxx 01110111”只留低只留低4 4位位:A “A “0000 0000 01110111”特征值特征值:A+R2=“A+R2=“1101 1101 01110111”MK3:MOVMK3:MOV R2 R2,A ;A ;暂存回暂存回R2R2 ORL ORL A 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,R2 ;R2 ;得到键特征值得到键特征值矩阵式键盘线反转法图例矩阵式键盘线反转法图例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+5v+5v0 0行行1 1行行2 2行行3 3行行0 0列列1 1列列2 2列列3 3列列12OVER!13
限制150内