第六章单片机的典型外围接口接术.ppt
《第六章单片机的典型外围接口接术.ppt》由会员分享,可在线阅读,更多相关《第六章单片机的典型外围接口接术.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章:单片机的典型外围接口接术本讲重点:本讲重点:键盘接口(键盘种类键盘接口(键盘种类,矩阵键盘的行扫描与矩阵键盘的行扫描与 线反转法的电路、原理与编程)线反转法的电路、原理与编程);LEDLED显示接口(动态与静态,硬件译码与显示接口(动态与静态,硬件译码与 软件译码,电路与编程应用)软件译码,电路与编程应用).扩展键盘接口键盘接口键盘键盘 单片机系统中完成控制参数输入及修改的单片机系统中完成控制参数输入及修改的基本输基本输入设备入设备,是人工干预系统的重要手段。,是人工干预系统的重要手段。单片机与计算机在键盘规模单片机与计算机在键盘规模/键符设置等方面差别键符设置等方面差别很大。很大。键
2、盘分类键盘分类 按键值按键值编码方式编码方式分分 编码键盘编码键盘与与非编码键盘非编码键盘。按键组按键组连接方式连接方式分分 独立连接键盘独立连接键盘与与矩阵连接键盘矩阵连接键盘。编码键盘编码键盘:采用专用的编码采用专用的编码/译码译码器件器件,被按下的键被按下的键由该器件译码输出相应的由该器件译码输出相应的键码键码/键值键值。特点:特点:增加了硬件开销,编码因选用器件而异,编增加了硬件开销,编码因选用器件而异,编码固定,但编程简单。适用于规模大的键盘。码固定,但编程简单。适用于规模大的键盘。非编码键盘非编码键盘:单片机系统多采用此类键盘单片机系统多采用此类键盘 采用采用软件软件编编/译码的方
3、式译码的方式,通过扫描,对每个被按下通过扫描,对每个被按下的键判别输出相应的的键判别输出相应的键码键码/键值键值。特点:特点:不增加硬件开销,编码灵活,适用于小规模不增加硬件开销,编码灵活,适用于小规模的键盘,特别是单片机系统。但编程较复杂的键盘,特别是单片机系统。但编程较复杂,占占CPUCPU时间,还须软件时间,还须软件“消颤消颤”。按键值编码方式:编码键盘与非编码键盘按键组连接方式:独立连接键盘与矩阵连接键盘独立连接键盘独立连接键盘:每键相互独立,各自与一条每键相互独立,各自与一条I/OI/O线相线相连,连,CPUCPU可直接读取该可直接读取该I/OI/O线的高线的高/低电平状态。低电平状
4、态。特点:特点:占占I/OI/O口线多,但判键速度快,多用于设置控口线多,但判键速度快,多用于设置控制键、功能键。适用于键数少的场合。制键、功能键。适用于键数少的场合。矩阵连接键盘矩阵连接键盘:键按矩阵排列键按矩阵排列,各键处于矩阵行各键处于矩阵行/列列的的结点结点处处,CPUCPU通过对连在通过对连在行行(列列)的的I/OI/O线送已知电平线送已知电平的信号的信号,然后读取然后读取列列(行行)线的状态信息。逐线扫描线的状态信息。逐线扫描,得出键码。得出键码。特点:特点:键多时键多时占用占用I/OI/O口线少口线少,但判键速度慢但判键速度慢,多用于多用于设置数字键。适用于键数多的场合。设置数字
5、键。适用于键数多的场合。键盘接口程序应具有如下功能:键盘接口程序应具有如下功能:(1)键扫描功能键扫描功能。即检测是否有键按下。即检测是否有键按下。(2)键键识识别别功功能能。确确定定被被按按下下键键所所在在的的行行列列位置。位置。(3)产生相应键的代码产生相应键的代码(键值键值)。(4)消除按键弹跳以及能够识别多键及串键消除按键弹跳以及能够识别多键及串键(复合按键复合按键)。延时等待延时等待10ms 仍有按键信号?仍有按键信号?Y 有按键信号?有按键信号?NYN键盘处理键盘处理 按键释放?按键释放?NY消抖动程序框图消抖动程序框图软件消除抖动软件消除抖动独立连接式键盘独立连接式键盘例例1 1
6、:特点:特点:此子程序需此子程序需不断不断(或或定时定时)调用调用,否则可能,否则可能漏判。漏判。4 4个键的优先级由指令顺序决定。个键的优先级由指令顺序决定。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,FUNC4JNB P1.3,FUNC4 RET RET ;无任何键按下由此返回无任何键按下由此返回FUNC1:FUNC1:;做做P1.0P1.
7、0要求的要求的“功能功能1”1”RETRETFUNC2:FUNC2:;做做P1.1P1.1要求的要求的“功能功能2”2”RETRETFUNC3:FUNC3:;做做P1.2P1.2要求的要求的“功能功能3”3”RETRETFUNC4:FUNC4:;做做P1.3P1.3要求的要求的“功能功能4”4”RETRET51单片机单片机独立连接式键盘独立连接式键盘例例2 2 特点:特点:此子程序采用此子程序采用中断中断查询查询不会漏判不会漏判,省时。省时。键的优先级由指令键的优先级由指令顺序决定。顺序决定。P1.0P1.0P1.1P1.1P1.2P1.2P1.3P1.3 ORG 0003HORG 0003H
8、 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,FUNC4JNB P1.3,FUNC4 RETI RETI ;无任何键按下由此返回无任何键按下由此返回FUNC1:FUNC1:;做做P1.0P1.0要求的要求的“功能功能1”1”RETIRETIFUNC2:FUNC2:;做做P1.1P1.1要求的要求的“功能功能2”2”RETIRETIFUNC3:FUNC3:;做做P1.2P1
9、.2要求的要求的“功能功能3”3”RETIRETIFUNC4:FUNC4:;做做P1.3P1.3要求的要求的“功能功能4”4”RETIRETIINT0INT0&(上拉上拉)51单片机单片机矩阵式键盘矩阵式键盘5151单片机单片机81558155P0P0ALEALECECERESETRESETAD0-7AD0-7EAEARESETRESETRDRDWRWRWRWRRDRDPA7PA7PA6PA6PA5PA5PA4PA4PA3PA3PA2PA2PA1PA1PA0PA0PC0PC0PC1PC1PC2PC2PC3PC3P2.7P2.7ALEALE+5v+5v行线行线列列线线0行行7行行0列列3列列 0
10、 4 8 12 16 20 24 28 0 4 8 12 16 20 24 28 1 5 9 13 17 21 25 29 1 5 9 13 17 21 25 29 2 6 10 14 18 22 26 30 2 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 控制寄存器:控制寄存器:0100H 8155 A口地址:口地址:0101H 8155 C口地址:口地址:0103H A口为输出口为输出 C口为输入口口为输入口矩阵式键盘名词注释矩阵式键盘名词注释0 0行行 1 1行行 2
11、 2行行 3 3行行 4 4行行 5 5行行 6 6行行 7 7行行行线行线(PA0PA7)列列 线线 PC 0-3 0列列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 31矩阵式键盘工作原理矩阵式键盘工作原理:先先由行线送出数据由行线送出数据,送全送全“0”“0”或每次只送一位或每次只送一位“0”“0”;
12、然后然后读进列线,判有无键读进列线,判有无键按下或按键的位置并算出键按下或按键的位置并算出键值。顺序扫描。值。顺序扫描。1列列2列列 行号:行号:第第0 0行行第第7 7行行R3R3 (0,1,2,3,4,5,6,7)(0,1,2,3,4,5,6,7)行首值:行首值:(R3)X 4R3)X 4 R5R5 (0,4,8,12,16,20,24,28)(0,4,8,12,16,20,24,28)列值:列值:C C口低口低4 4位读进值位读进值R4R4 (0F,0E,0D,0B,07)(0F,0E,0D,0B,07)0F0F:表示此行无键按下。表示此行无键按下。0 0E07E07:表示此行的表示此行
13、的0303列列 有键按下。有键按下。键值:查得最后结果键值:查得最后结果 R5R5 等于已知按键所在的等于已知按键所在的行首值行首值,再加上所在再加上所在列的序号列的序号。同一行中,键值等于同一行中,键值等于行首值行首值 连续依次加连续依次加 1 1。KEY1:LCALL KEY1:LCALL KS1KS1 ;查有无键闭合查有无键闭合 JNZ LK1 JNZ LK1 ;有键闭合转消颤有键闭合转消颤 LJMP LJMP LK8LK8 ;无键闭合则退出无键闭合则退出LK1LK1:LCALL DL6msLCALL DL6ms ;消颤消颤1212msms LCALL DL6msLCALL DL6ms
14、LCALL LCALL KS1KS1 ;再查有无键闭合再查有无键闭合 JNZ JNZ LK2LK2 ;的确有,转的确有,转处理处理 LJMP LJMP LK8LK8 ;确实无,退确实无,退出去出去查有无键闭合的子程序查有无键闭合的子程序KS1KS1:KS1KS1:MOV DPTRMOV DPTR,#0101H#0101H ;指向指向 A A口口 MOV A,MOV A,#00H#00H;8;8条行线都送条行线都送0 0 MOVXMOVX,DPTRDPTR,A A;送到行线上去送到行线上去 INC DPTRINC DPTR INC DPTRINC DPTR ;指向指向 C C口口 MOVX AM
15、OVX A,DPTRDPTR ;读列线的电平读列线的电平 ANL AANL A,#0FH#0FH ;保留保留C C口低口低4 4位位 若确有键按下若确有键按下,则则AccAcc中必有中必有“0”“0”ORL AORL A,#0F0H#0F0H;将将AccAcc高高4 4位赋位赋1 1 CPL A CPL A;Acc;Acc取反后,高取反后,高4 4位位=0;=0;若有键按下若有键按下,则低则低4 4位中必有位中必有“1”“1”RETRET检查的结果(出口)检查的结果(出口):若若(A)A)0,0,则有键按下;则有键按下;若若(A)A)0,0,则无键按下。则无键按下。行线行线列列线线0列列3列列
16、1列列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 31KEY1:LCALL KEY1:LCALL KS1KS1 ;查有无键闭合查有无键闭合 JNZ LK1 JNZ LK1 ;有键闭合转消颤有键闭合转消颤 LJMP
17、 LJMP LK8LK8 ;无键闭合则退出无键闭合则退出LK1LK1:LCALL LCALL DL6msDL6ms ;消颤消颤1212msms LCALL LCALL DL6msDL6ms LCALL LCALL KS1KS1 ;再查有无键闭合再查有无键闭合 JNZ JNZ LK2LK2 ;的确有,转的确有,转处理处理 LJMP LJMP LK8LK8 ;确实无,退确实无,退出去出去LK2LK2:MOV MOV R3R3,#0000H H ;(R3)(R3)行号初值行号初值 MOV MOV R2R2,#0 0FEFEH H;(R2)(R2)行扫描初值行扫描初值LK3LK3:MOV DPTR#0
18、101HMOV DPTR#0101H;指向指向8155 8155 A A口口 MOV AMOV A,R2 R2 ;取取行扫描值行扫描值 MOVX DPTRMOVX DPTR,A A ;送送到行线上去到行线上去 INC DPTRINC DPTR INC DPTRINC DPTR ;指向指向8155 8155 C C口口 MOVX AMOVX A,DPTRDPTR ;读读列线的电平列线的电平 ANL AANL A,#0FH#0FH ;保留保留C C口低口低4 4位位 MOV MOV R4R4,A A ;列值暂存进列值暂存进R4R4 CJNE ACJNE A,#0F0FH,LK4H,LK4;列值列值
19、全全“1”“1”表明表明此次送此次送0 0的行的行有键按下有键按下,转转LK4LK4处理处理,若全若全1,1,表明表明此次送此次送0 0的行的行无键按下。无键按下。行号:第行号:第0 0行行第第7 7行行(R3)R3)(0,1,2,3,4,5,6,7)(0,1,2,3,4,5,6,7)行扫描值:行扫描值:0 0FEH(R2)FEH(R2)(FEFE,FD,FB,F7,EF,DF,BF,7F),FD,FB,F7,EF,DF,BF,7F)FEHFEH=1111 1111111 1110 0 B B(首次扫描首次扫描)FDHFDH=1111 111111 110 01 1 B B(2(2次扫描次扫描
20、)FBHFBH=1111 11111 10 01111 B B(3(3次扫描次扫描)F7HF7H=1111 1111 0 0111111 B B(4(4次扫描次扫描)EFHEFH=1111110 0 1111 1111 B B(5(5次扫描次扫描)DFHDFH=11110 01 11111 1111 B B(6(6次扫描次扫描)BFHBFH=1 10 011 111111 1111 B B(7(7次扫描次扫描)7 7FHFH=0 0111 1111111 1111 B B(8(8次扫描次扫描)列值:列值:(0(0F,0E,0D,0B,07)F,0E,0D,0B,07)从从C C口低口低4 4位
21、读进位读进 (R4)R4)0F0F:表示此行无键按下。表示此行无键按下。0 0E07E07:此行的此行的0303列有键按下。列有键按下。KEY1:LCALL KEY1:LCALL KS1KS1 ;查有无键闭合查有无键闭合 JNZ LK1 JNZ LK1 ;有键闭合转消颤有键闭合转消颤 LJMP LJMP LK8LK8 ;无键闭合则退出无键闭合则退出LK1LK1:LCALL DL6msLCALL DL6ms ;消颤消颤1212msms LCALL DL6msLCALL DL6ms LCALL LCALL KS1KS1 ;再查有无键闭合再查有无键闭合 JNZ JNZ LK2LK2 ;的确有,转的确
22、有,转处理处理 LJMP LJMP LK8LK8 ;确实无,退确实无,退出去出去LK2LK2:MOV R3,#00HMOV R3,#00H ;(R3)(R3)行号初值行号初值 MOV R2,#0FEHMOV R2,#0FEH;(R2)(R2)行扫描初值行扫描初值LK3LK3:MOV DPTR#0101HMOV DPTR#0101H;指向指向8155 8155 A A口口 MOV AMOV A,R2 R2 ;取取行扫描值行扫描值 MOVXMOVX,DPTRDPTR,A A ;送到行线上去送到行线上去 INC DPTRINC DPTR INC DPTRINC DPTR ;指向指向8155 8155
23、 C C口口 MOVX AMOVX A,DPTRDPTR ;读列线的电平读列线的电平 ANL AANL A,#0FH#0FH ;保留保留C C口低口低4 4位位 MOV MOV R4R4,A A ;列值暂存进列值暂存进R4R4 CJNE A,#0FH,LK4CJNE A,#0FH,LK4;列值列值全全“1”“1”表明此次送表明此次送0 0的行有键按下的行有键按下,转转LK4LK4处理处理,若全若全1,1,表明此次送表明此次送0 0的行无键按下。的行无键按下。MOV AMOV A,R2 R2;取出此次取出此次行扫描值行扫描值 JNB AJNB ACCCC.7,.7,LK8LK8 ;若已扫过最后若
24、已扫过最后 一行就一行就退出扫描退出扫描,否则扫下一行。否则扫下一行。RL ARL A ;Acc;Acc中的中的“0”“0”左移一左移一位位 MOV R2,A MOV R2,A;新扫描值新扫描值仍存进仍存进R2R2 INC R3INC R3 ;行号加行号加1 1指向下一行指向下一行 SJMP SJMP LK3LK3 ;转转LK3LK3去扫描下一行去扫描下一行 行号:第行号:第0 0行行第第7 7行行(R3)R3)(0,1,2,3,4,5,6,7)(0,1,2,3,4,5,6,7)行扫描值:行扫描值:0 0FEH(R2)FEH(R2)(FEFE,FD,FB,F7,EF,DF,BF,7F),FD,
25、FB,F7,EF,DF,BF,7F)FEHFEH=1111 1111111 1110 0 B B(首次扫描首次扫描)BFHBFH=1 10 011 111111 1111 B B(7(7次扫描次扫描)7 7FHFH=0 0111 1111111 1111 B B (8(8次扫描次扫描)注意:注意:只有只有第第8 8次次扫描值扫描值最高位最高位=0=0KEY1:LCALL KEY1:LCALL KS1KS1 ;查有无键闭合查有无键闭合 JNZ LK1 JNZ LK1 ;有键闭合转消颤有键闭合转消颤 LJMP LJMP LK8LK8 ;无键闭合则退出无键闭合则退出LK1LK1:LCALL DL6m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六 单片机 典型 外围 接口
限制150内