第六章单片机的典型外围接口接术.ppt

上传人:s****8 文档编号:93911654 上传时间:2023-07-17 格式:PPT 页数:40 大小:634.50KB
返回 下载 相关 举报
第六章单片机的典型外围接口接术.ppt_第1页
第1页 / 共40页
第六章单片机的典型外围接口接术.ppt_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《第六章单片机的典型外围接口接术.ppt》由会员分享,可在线阅读,更多相关《第六章单片机的典型外围接口接术.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

26、sLCALL DL6ms ;消颤消颤1212msms LCALL DL6msLCALL DL6ms LCALL LCALL KS1KS1 ;再查有无键闭合再查有无键闭合 JNZ JNZ LK2LK2 ;的确有,转的确有,转处理处理 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 A

27、MOV A,R2 R2 ;取取行扫描值行扫描值 MOVXMOVX,DPTRDPTR,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 A,#0FH,LK4CJNE A,#0FH,LK4;列值列值全全“1”“1”表明此次送表明此次送0 0的行有键按下的行有键按下,转转LK4LK4处

28、理处理,若全若全1,1,表明此次送表明此次送0 0的行无键按下。的行无键按下。MOV AMOV A,R2 R2;取出此次取出此次行扫描值行扫描值 JNB ACC.7,JNB ACC.7,LK8LK8 ;若已扫过最后若已扫过最后 一行就退出扫描一行就退出扫描,否则扫下一行。否则扫下一行。RL A RL A ;Acc;Acc中的中的“0”“0”左移一左移一位位 MOV R2,AMOV R2,A ;新扫描值新扫描值仍存进仍存进R2R2 INC R3INC R3 ;行号加行号加1 1指向下一行指向下一行 SJMP SJMP LK3 LK3;转转LK3LK3去扫描下一行去扫描下一行LK4LK4:MOV

29、A,R3MOV A,R3;此行有按键此行有按键,取行号取行号 ADD A,R3 ADD A,R3 ;行号乘行号乘 4 4 MOV R5,A MOV R5,A ;得得行首值行首值 ADD A,R5 ADD A,R5 ;即即:0,4,8,120,4,8,12 MOV R5,A MOV R5,A ;暂存进暂存进 R5R5 KEY1:LCALL KEY1:LCALL KS1KS1 ;查有无键闭合查有无键闭合 JNZ LK1 JNZ LK1 ;有键闭合转消颤有键闭合转消颤 LJMP LJMP LK8LK8 ;无键闭合则退出无键闭合则退出LK1LK1:LCALL DL6msLCALL DL6ms ;消颤消

30、颤1212msms LCALL DL6msLCALL DL6ms LCALL LCALL KS1KS1 ;再查有无键闭合再查有无键闭合 JNZ JNZ LK2LK2 ;的确有,转的确有,转处理处理 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 ;取取行扫

31、描值行扫描值 MOVXMOVX,DPTRDPTR,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 A,#0FH,LK4CJNE A,#0FH,LK4;列值列值全全“1”“1”表明此次送表明此次送0 0的行有键按下的行有键按下,转转LK4LK4处理处理,若全若全1,1,表明此次送

32、表明此次送0 0的行无键按下。的行无键按下。MOV AMOV A,R2 R2;取出此次取出此次行扫描值行扫描值 JNB ACC.7,JNB ACC.7,LK8LK8 ;若已扫过最后若已扫过最后 一行就退出扫描一行就退出扫描,否则扫下一行。否则扫下一行。RL A RL A ;Acc;Acc中的中的“0”“0”左移一左移一位位 MOV R2,AMOV R2,A ;新扫描值新扫描值仍存进仍存进R2R2 INC R3INC R3 ;行号加行号加1 1指向下一行指向下一行 SJMP SJMP LK3 LK3;转转LK3LK3去扫描下一行去扫描下一行LK4LK4:MOV A,R3MOV A,R3;此行有按

33、键此行有按键,取行号取行号 ADD A,R3 ADD A,R3 ;行号乘行号乘 4 4 MOV R5,A MOV R5,A ;得得行首值行首值 ADD A,R5 ADD A,R5 ;即即:0,4,8,120,4,8,12 MOV R5,A MOV R5,A ;暂存进暂存进 R5R5 MOV A,MOV A,R4R4 ;列值只可能列值只可能#0#0F,#0E,#0D,#0B,#07HF,#0E,#0D,#0B,#07HLK5:RRC A LK5:RRC A ;取列值的最低位到取列值的最低位到CyCy JNCJNC LK6 LK6;Cy=0;Cy=0就找到了就找到了,即即R5R5 INC R5IN

34、C R5 ;否则行值增否则行值增1,1,即同即同 行中的下一个键值行中的下一个键值 SJMP LK5 SJMP LK5;再转再转LK5LK5判判C C键值键值LK6:LK6:PUSH PUSH 05H05H ;将找到的键值压栈将找到的键值压栈 保存起来。保存起来。KEY1:LCALL KEY1:LCALL KS1KS1 JNZ LK1 JNZ LK1 LJMP LJMP LK8LK8 LK1LK1:LCALL DL6msLCALL DL6ms LCALL DL6msLCALL DL6ms LCALL LCALL KS1KS1 JNZ JNZ LK2LK2 LJMP LJMP LK8LK8 LK

35、2LK2:MOV R3,#00HMOV R3,#00H MOV R2,#0FEHMOV R2,#0FEHLK3LK3:MOV DPTR#0101HMOV DPTR#0101H MOV AMOV A,R2 R2 MOVXMOVX,DPTRDPTR,A A INC DPTRINC DPTR INC DPTRINC DPTR MOVX AMOVX A,DPTRDPTR ANL AANL A,#0FH#0FH MOV MOV R4R4,A A CJNE A,#0FH,LK4CJNE A,#0FH,LK4 MOV AMOV A,R2 R2 JNB ACC.7,JNB ACC.7,LK8LK8 RL A

36、RL A MOV R2,AMOV R2,A INC R3INC R3 SJMP SJMP LK3LK3LK4LK4:MOV A,R3MOV A,R3 ADD A,R3 ADD A,R3 MOV R5,A MOV R5,A ADD A,R5 ADD A,R5 MOV R5,A MOV R5,A MOV A,R4 MOV A,R4 LK5:RRC A LK5:RRC A ;取列值的最低位到取列值的最低位到CyCy JNCJNC LK6 LK6;Cy=0;Cy=0就找到了就找到了,即即R5R5 INC R5INC R5 ;否则行值增否则行值增1,1,即同即同 行中的下一个键值行中的下一个键值 SJM

37、P LK5 SJMP LK5;再转再转LK5LK5判判C C键值键值LK6:PUSH 05HLK6:PUSH 05H ;将找到的键值压栈将找到的键值压栈 保存起来。保存起来。LK7LK7:LCALL LCALL DL6msDL6ms;延延6 6msms LCALL KS1 LCALL KS1;键释放?键释放?JNZ LK7JNZ LK7;未释放未释放,等等 LCALL LCALL DL6msDL6ms ;消颤消颤 LCALL LCALL DL6msDL6ms POP ACC POP ACC;键值键值A ARNDRND:RETRETLK8LK8:MOV AMOV A,#0FFH#0FFH ;无键

38、闭合标志无键闭合标志A A RET RET 显示器接口扩展三、三、LEDLED显示器的扩展显示器的扩展(结构结构)P.193P.193LEDLED数码管的数码管的结构结构:共阳与共阴共阳与共阴 单片机系统扩展单片机系统扩展LEDLED数码管时数码管时多用多用共阳共阳LEDLED:共阳数码管每个段笔画是用低电平共阳数码管每个段笔画是用低电平(“0”)(“0”)点亮的点亮的,要求驱要求驱动功率很小;而共阴数码管段笔画是用高电平动功率很小;而共阴数码管段笔画是用高电平(“0”)(“0”)点亮点亮的,要求驱动功率较大。的,要求驱动功率较大。通常每个段笔画要串一个数百欧姆的通常每个段笔画要串一个数百欧姆

39、的降压电阻降压电阻。公共公共阳阳极极h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh h公共公共阴阴极极h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh hh g f ah g f a高电平点亮高电平点亮低电平点亮低电平点亮接高电平接高电平接地接地LEDLED数码管的数码管的译码译码:硬件译码与软件译码硬件译码与软件译码硬件译码特点硬件译码特点:采用专用的译码采用专用的译码/驱动器件驱动器件,驱动功驱动功率较大率较大;增加了硬件的开销增加了硬件的开销;软件软件编程简单编程简单;字型固

40、字型固定定(比如比如:只有七段只有七段,只可译数字只可译数字,字型不好看字型不好看)。共阴共阴LEDa ab bc cd dg ge ef fh hg gf fe ed dc cb b a aD DC CB BA AP1.3P1.3P1.2P1.2P1.1P1.1P1.0P1.0CD4511CD4511AT89C51AT89C517474LS48/CD4511LS48/CD4511是是“BCDBCD码码七段七段共阴共阴译码译码/驱动驱动”IC;IC;74LS4774LS47是是“BCDBCD码码七段七段共阳共阳译码译码/驱动驱动”ICIC三、三、LEDLED显示器的扩展显示器的扩展(结构结构)

41、三、三、LEDLED显示器的扩展显示器的扩展(软件译码软件译码)LEDLED数码管的译码:数码管的译码:软件译码软件译码软件译码特点软件译码特点:不用专用的译码不用专用的译码/驱动器件,驱动驱动器件,驱动功率较小功率较小;不增不增加加硬件的开销;软件硬件的开销;软件编程较复杂编程较复杂;字型;字型灵活灵活(比如:比如:有八段,可译多种字符,字型好看有八段,可译多种字符,字型好看)。共阳共阳LEDa ab bc cd dg ge ef fh hP1.0P1.0P1.1P1.1P1.2P1.2P1.3P1.3P1.4P1.4P1.5P1.5P1.6P1.6P1.7P1.7+5+5V V5151单片

42、机单片机硬件译码特点硬件译码特点:采用专用译码采用专用译码/驱动器件,驱动器件,驱动功率较大;增加了硬驱动功率较大;增加了硬件的开销;软件编程简单;件的开销;软件编程简单;字型固定字型固定(比如:只有七比如:只有七段,只可译数字,字型不段,只可译数字,字型不好看好看)。LEDLED数码管的软件译码数码管的软件译码八段八段LEDLED数码管数码管段代码编码表段代码编码表(连线不同可有多种表连线不同可有多种表):):公共阳极公共阳极h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh h公共阴极公共阴极h g f e d c b ah g f e

43、 d c b aa ab bc cd dg ge ef fh hh g f ah g f a高电平点亮高电平点亮低电平点亮低电平点亮接高电平接高电平接地接地字形字形0123456789黑黑共阳共阳0C00F90A40B09992820F880900FF共阴共阴3F065B4F666D7D077F6F00三、三、LEDLED显示器的扩展显示器的扩展(显示方式显示方式)P.194-198P.194-198P.194-198P.194-198LEDLED数码管的数码管的显示方式显示方式:静态与动态静态与动态动态显示特点动态显示特点:有闪烁有闪烁,用,用元器件少元器件少,占占I/OI/O线少线少,必须

44、扫描必须扫描,花费花费CPUCPU时间时间,编程复杂。编程复杂。(有多个有多个LEDLED时尤为突出)时尤为突出)静态显示特点静态显示特点:无闪烁无闪烁,用,用元器件多元器件多,占占I/OI/O线多线多,无须扫描无须扫描,节省节省CPUCPU时间时间,编程简单。编程简单。静态显示静态显示:各数码管在显示过程中各数码管在显示过程中持续持续得到送显信号,与各数码管接口得到送显信号,与各数码管接口的的I/OI/O口线口线是是专用专用的。的。动态显示动态显示:各数码管在显示过程中各数码管在显示过程中轮流轮流得到送显信号,与各数码管接口得到送显信号,与各数码管接口的的I/OI/O口线口线是是共用共用的。

45、的。A AB BCLKCLKh g f e d c b ah g f e d c b aCLRCLRA AB BCLKCLKCLRCLRA AB BCLKCLKCLRCLR+5+5V VVCCVCCTxDTxDRxDRxD51单片单片机机74LS16474LS16474LS164h g f e d c b ah g f e d c b ah g f e d c b ah g f e d c b a+5+5V V共阳共阳LED数码管数码管LEDLED数码管数码管静态静态显示举例显示举例(学习串行口已见过学习串行口已见过)有几个有几个LEDLED就要几个就要几个7474LS164LS164,但只要

46、数据不变,但只要数据不变,送一次就保持住了,且不闪烁,编程十分简单。送一次就保持住了,且不闪烁,编程十分简单。要求:要求:根据上图编写通过串行口和根据上图编写通过串行口和7474LS164LS164驱动驱动共共 阳阳LEDLED数码管数码管查表显示的子程序。查表显示的子程序。条件:条件:系统有系统有6 6个个LEDLED数码管数码管,待显数据待显数据(00(00H09H)H09H)已放在已放在3535H30HH30H单元中单元中(分别对应分别对应十万位十万位个位个位),DSPLYDSPLY:MOV DPTR,#TABLE:MOV DPTR,#TABLE;共阳共阳LEDLED数码管译码数码管译码

47、表首址表首址 MOV R0MOV R0,#30H#30H ;待显数据缓冲区的待显数据缓冲区的个位个位地址地址REDOREDO:MOV AMOV A,R0 R0 ;通过通过R0R0实现寄存器实现寄存器间接寻址间接寻址 MOVC A,A+DPTR MOVC A,A+DPTR ;查表查表 MOV SBUF,A MOV SBUF,A ;经串行口经串行口发送发送到到7474LS164LS164 JNB TI,$JNB TI,$;查询查询送完一个字节的第送完一个字节的第8 8位?位?CLR TI CLR TI ;为下一字节发送为下一字节发送作准备作准备 INC R0 INC R0 ;R0;R0指向下一个指

48、向下一个数据缓冲单元数据缓冲单元 CJNE R0CJNE R0,#36H#36H,REDO REDO ;判断判断是否发完是否发完6 6个数?个数?RET RET ;发完发完6 6个数就个数就返回返回TABLETABLE:DB 0C0H,0F9H,0A4H,0B0H,99H DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳共阳LEDLED译码表译码表 DB 92H,82H,0F8H,80H,90HDB 92H,82H,0F8H,80H,90HLEDLED数码管数码管动态动态显示举例显示举例 (图见图见P.197)P.197)P1.5 P1.5 P1.4P1.4P1.3P1.3P1.2

49、P1.2P1.2P1.2P1.0P1.0P0.7 P0.7 P0.6 P0.6 P0.5 P0.5 P0.4 P0.4 P0.3 P0.3 P0.2 P0.2 P0.1 P0.1 P0.0P0.07406 7406 OCOC门门X3X3上拉上拉电阻电阻1414+5+5V V51单片机单片机工作原理工作原理:从从P0P0口送段代码口送段代码,P1P1口送位选信号口送位选信号。段码虽同时。段码虽同时到达到达 6 6个个LEDLED,但但一次仅一个一次仅一个LEDLED被选中被选中。利用。利用“视觉暂留视觉暂留”,每送一个字符并选中相应位线,延时一会儿,每送一个字符并选中相应位线,延时一会儿,再送再

50、送/选选下一个下一个循环扫描循环扫描即可。即可。共阴共阴 数码管数码管位位选选线线段段代代码码P1.5 P1.5 P1.4P1.4P1.3P1.3P1.2P1.2P1.2P1.2P1.0P1.0P0.7 P0.7 P0.6 P0.6 P0.5 P0.5 P0.4 P0.4 P0.3 P0.3 P0.2 P0.2 P0.1 P0.1 P0.0P0.07406 7406 OCOC门门 X 3X 3+5+5V VAT89C51位位选选线线段段代代码码要求要求:此处为共阴数码管,此处为共阴数码管,P0P0口送段代码,口送段代码,P1P1口送位选信号。口送位选信号。通过查表实现动态显示。通过查表实现动态

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁