键盘与显示接口技术课件.ppt

上传人:scccc 文档编号:13938356 上传时间:2022-01-27 格式:PPT 页数:38 大小:406KB
返回 下载 相关 举报
键盘与显示接口技术课件.ppt_第1页
第1页 / 共38页
键盘与显示接口技术课件.ppt_第2页
第2页 / 共38页
键盘与显示接口技术课件.ppt_第3页
第3页 / 共38页
键盘与显示接口技术课件.ppt_第4页
第4页 / 共38页
键盘与显示接口技术课件.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《键盘与显示接口技术课件.ppt》由会员分享,可在线阅读,更多相关《键盘与显示接口技术课件.ppt(38页珍藏版)》请在三一文库上搜索。

1、单片机原理及接口技术,第9章键盘与显示接口技术,本章学习要求:,1.掌握数码管显示原理、电路连接及编程;2.掌握键盘工作原理、电路连接及编程。,9.1 LED显示接口技术,9.1 LED显示接口技术,由LED构成的3种显示部件,指示灯,数码管,点阵屏,LED: Light Emiting Diode,电路符号:,9.1 LED显示接口技术,9.1.1 数码管结构及显示原理,数码管由8个发光二极管(以下简称段)构成,通过不同的组合可用来显示数字0 9、部分字符、符号“”及小数点“”。数码管的外形结构如图所示。数码管又分为共阴极和共阳极两种结构。,9.1 LED显示接口技术,将公共阴极接地,在ag

2、各段的阳极上加不同的电压,就会使各段的发光情况不同,形成不同的发光字符。,段选码的位定义,段码表:段选码的值与显示字符的对应关系.,“8”:共阴极段选码的值为7FH; 共阳极段选码的值为80H.,9.1 LED显示接口技术,共阴极和共阳极的段选码互为反码 。,9.1 LED显示接口技术,9.1.2 数码管的静态显示方式,将公共阴极接地或公共阳极接电源, 段码接一8位并行输出口。需要占用大量的输出端口。,9.1 LED显示接口技术,D0,D7,9.1 LED显示接口技术,例5.1 按照前页电路,编写显示子程序,将33H30H单元存储的字符由高到低显示在四只数码管上。,分析:1.设置串口工作方式0

3、,SCON初值为00H。2.先发送高位数码管的段选码, 后发送低位数码管的段选码。3.段选码采用查表的方式获得。,DXM:MOVDPTR, #TAB;取段选码表首地址MOVC A,A+DPTR;取段选码,变址寻址RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H ; 0,1,2,3,4DB92H,82H,0F8H,80H,90H ; 5,6,7,8,9DB88H,83H,0C6H,0A1H,86H,8EH ; A,b,C,d,E,F,查段选码子程序:入口条件:待显示字符存于A中;出口条件:待显示字符的段选码存于A中;占用资源:DPRT,A。,9.1 LED显示接口技术,DISP

4、:MOV SCON,#00H;串口初始化方式0 SETB P1.0;74HC164处于正常工作状态MOV R0, #33H;首地址赋指针MOVR1,#04H;显示4个数LP1:MOV A,R0 ;取待显示字符LCALL DXM;查段选码 MOV SBUF ,A;启动串行发送命令,输出段位码JNB TI, $;等待发送完毕CLRTI;清发送完毕标志位DECR0;指针减1DJNZ R1,LP1;判断4位段选码是否全部输出RET;,显示子程序:入口条件:待显示字符存于33H-30H单元中;出口条件:占用资源:R0,R1,A。,9.1 LED显示接口技术,9.1.3 数码管的动态显示方式,将所有显示位

5、的段选码接在一起;通过位选线选择某一时刻显示的位,时间单位一般取15ms;采用循环扫描的方法,实现多位显示。,9.1 LED显示接口技术,位选线的驱动位选线为什么需要驱动?位选线如何驱动?ULN20037位达林顿驱动器,ULN2003反相输出单路驱动能力(吸入电流)达500mA,9.1 LED显示接口技术,74HC138,9.1 LED显示接口技术,1.分析8155口地址命令寄存器口地址:1110_xxx1_xxxx_xx00B E100H;PA口寄存器口地址:1110_xxx1_xxxx_xx01B E101H;PB口寄存器口地址:1110_xxx1_xxxx_xx10B E102H;PC口

6、寄存器口地址:1110_xxx1_xxxx_xx11B E103H;,2.分析8155 命令字PA口、 PB口为输出口;PC口未使用,假设为输入口;命令字为03H。,INIT8155: MOV DPTR, #0E100H MOV A, #03H MOVXDPTR, A RET,3. 8155 初始化程序,DXM:MOVDPTR, #TAB;取段选码表首地址MOVC A,A+DPTR;取段选码,变址寻址RETTAB:DB 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h ;0,1,2,3,4,5,6,7 DB 7fh, 6fh, 77h, 7ch, 39h, 5eh,

7、 79h, 71h,0 ;8,9,A,b,C,d,E,F,灭,4.查段选码子程序:入口条件:待显示字符存于A中;出口条件:待显示字符的段选码存于A中;占用资源:DPRT,A。,9.1 LED显示接口技术,9.1 LED显示接口技术,SHIFT:MOVR6, #08H;循环次数MOVDPTR, #E102H;指针指向8155的PB口寄存器LP1:RLCAMOVR7, A;备份A中段选码MOVACC.0, CCLRACC.1MOVXDPTR, A ;输出DAT, 输出CLK为0,SETBACC.1MOVX DPTR, A ; DAT不变, 输出CLK为1CLRACC.1MOVX DPTR, A ;

8、 DAT不变, 输出CLK为0MOVA, R7;恢复A中内容DJNZ R6,LP1;判断8位是否移位完毕RET;,5.输出一个字符的段选码 方法分析:PB0逐位输出数据,PB1输出移位时钟; 入口条件:待显示字符的段选码存放在A中; 占用资源: A,R6,R7。,9.1 LED显示接口技术,6.输出6位字符(扫描一次),方法分析:扫描1次,每位数码管显示一次。以1ms为间隔,顺序将PA0到PA5输出高电平。在某位输出高电平期间,相应输出该位的段选码。,入口条件: 待显示字符存于35H30H单元中占用资源: A, R0, R1,9.1 LED显示接口技术,DISP:MOVR0, #30H;地址指

9、针MOVR1, #01H;位选码,从低位开始显示DP1: MOVDPTR, #0E101H;指针指向8155的PA口寄存器MOVA, #00HMOVXDPTR, A;关显示MOVA, R0;取待显示字符LCALLDXM;查表段选码LCALL SHIFT;移位输出段选码MOVDPTR, #0E101H; 指向8155的PA口寄存器MOVA, R1MOVXDPTR, A ;输出位选码INCR0;地址指针指向下一单元RLA;位选码指向高一位MOVR1, A;保存位选码LCALLDELY1;延时1msJNBACC.6, DP1RET,9.1 LED显示接口技术,ORG0000HLJMP MAINORG

10、0030HMAIN:MOV SP, #6FH;设置堆栈LCALLINIT8155;初始化8155MN1:LCALLDISP;输出显示字符SJMPMN1;循环输出,8.主程序(反复调用扫描显示程序),7.延时1ms子程序,子程序2:延时1ms程序(12M晶体)占用资源:R6, R7DELY1:MOVR7, #02HDL1:MOVR6, #0FFHDJNZR6, $DJNZR7, DL1RET,程序中哪些地方需要用堆栈?,9.1 LED显示接口技术,程序清单:1 主程序2 子程序18155初始化程序3 子程序2延时1ms程序4 子程序3查表段选码5 子程序4输出一个字符的段选码6 子程序5输出6位

11、字符(扫描一次),9.2 键盘接口技术,9.2 键盘接口技术,9.2.1 键盘结构与工作原理,键盘中每个按键都是一个常开开关按下键S3,P1.7口为低电平放开键S3,P1.7口为高电平,9.2 键盘接口技术,由于机械触点的弹性作用,在闭合和断开按键的瞬间,触点会产生机械抖动,表现为P1.7口出现一系列的脉冲信号。如右图所示。抖动时间的长短,由按键的机械特性决定,一般在5ms10ms间。按键抖动的危害按键抖动的消除 硬件消除; 如: R-S双稳态触发器电路 RC阻容滤波电路 软件消除,实际应用多。,在CPU检测到有按键按下时,执行一个10ms的延时程序后,再次判断该键电平是否保持闭合状态电平,如

12、保持闭合状态电平则确认为真正有键按下,从而消除抖动的影响。当CPU检测到按键释放后,也要给一个10ms的延时,待后沿抖动消失后才去执行该键的处理程序。,9.2 键盘接口技术,9.2.2 独立式键盘接口设计,独立式按键是指各按键相互独立,每个按键各接一个输入口。通过检测输入口上的电平状态判断哪个键被按下。接上拉电阻的目的是为了保证在按键断开时,各个输入口有确定的高电平。每个按键需要占用一个输入口,不适合用于需要很多按键的场合。,9.2 键盘接口技术,KEY_START:MOV 30H,P1 ;读键盘状态并保存30H单元ANL 30H,#1FH;屏蔽高3位CJNE 30H,#1FH,NEXT;判断

13、是否有键按下SJMPKEY_STARTNEXT:LCALL D_10ms ;软件延时10ms,消除抖动 MOV A,P1 ;再次读键盘状态ANL A,#1FH;屏蔽高3位CJNE A,30H,KEY_START JNB ACC.0,KEY0JNB ACC.1,KEY1 JNB ACC.2,KEY2 JNB ACC.3,KEY3 JNB ACC.4,KEY4SJMP KEY_START KEY0:LJMP KP0;KEY1:LJMP KP1;KEY2:LJMP KP2;KEY3:LJMP KP3;KEY4:LJMP KP4,为什么不直接跳到KP0,;延时10ms程序D_10ms:MOVR6,#1

14、4HDL:MOVR7,#0FFHDJNZR7,$DJNZ R6,DLRET,9.2 键盘接口技术,KP0: ;KEY0键按下的处理程序 LJMP KEY_STARTKP1: ;KEY1键按下的处理程序LJMP KEY_START;KP2: ;KEY2键按下的处理程序LJMP KEY_START;KP3: ;KEY3键按下的处理程序LJMP KEY_START;KP4: ;KEY4键按下的处理程序LJMP KEY_START;,9.2 键盘接口技术,9.2.3 矩阵式键盘接口设计,矩阵式键盘结构矩阵式键盘由行线和列线构成列线通过上拉电阻接到+5V列线接到输入口上行线接到输出口上按键位于行、列的交

15、叉点上适用于需要按键较多的场合,矩阵式键盘工作原理无按键按下时,列线输入高电平;有按键按下时,列线输入电平由与此列线相连的行线电平决定.如果行线输出低电平,则列线电平为低如果行线输出高电平,则列线电平为高为了确认按键位置,必须将行、列线配合使用。,按键的识别方法(键扫描)首先行线全输出0,判断是否有键按下。如果列线为全1,无按键按下如果列线非全1,有按键按下然后,让行线P10输出0,其它三条行线输出1,读列线状态。如果列线为全1,第一行无按键按下,继续扫描。,如果列线非全1,可以判断按键在第一行,再根据为0的列线序号,可以确定按键具体的列号,停止扫描。如果第一行无按键按下,让行线P11口输出0

16、,其它三条行线输出1,读列线状态,判断按键是否在第二行。如果第二行仍无按键按下,让行线P12口输出0,其他三条行线输出1,读列线状态,判断按键是否在第三行。如果第三行仍无按键按下,让行线P13口输出0,其它三条行线输出1,读列线状态,判断按键是否在第四行。,9.2 键盘接口技术,9.2 键盘接口技术,;判断是否有按键按下KAP:MOVP1,#0F0HMOVA,P1ORLA,#0FHCPLARET,;延时10ms程序DELY:MOVR6,#14HDL:MOVR7,#0FFHDJNZR7,$DJNZ R6,DLRET,编程举例,键值=行首键值+列号,9.2 键盘接口技术,KINP:LCALLKAP

17、;调用键盘查询程序JZKINP ;无键按下,继续查询KP1:LCALLDELY;延时10ms,消除抖动LCALLKAP;再次调用键盘查询程序JZKINP;无键按下,继续查询MOVR2,#0FEH;从第0行开始扫描MOVR4,#00H;置第0行行首键值KP4:MOVP1,R2;置扫描行为0MOVA,P1;读P1状态JBACC.4,L1;第0列不为0,转测第1列MOVA,#00H;列号存入A中AJMPKP5;停止扫描L1:JBACC.5,L2;第1列不为0,转测第2列MOVA,#01H;列号存入A中AJMPKP5;停止扫描L2:JBACC.6,L3;第2列不为0,转测第3列MOVA,#02H;列号

18、存入A中AJMPKP5;停止扫描L3:JBACC.7,NEXT;第3列不为0,转测下一行MOVA,#03H;列号存入A中KP5:ADDA,R4;停止扫描,计算键值,键值=行首键值+列号,9.2 键盘接口技术,PUSHA;保存键值KP3:LCALLKAP;查询键是否释放JNZKP3;未释放,继续查询LCALL DELYLCALLKAP;再次查询键是否释放JNZKP3POPA;弹出键值RETNEXT:MOVA,R2;扫描行指针赋给AJNBACC.3,KINP;扫描结束,未发现按键RLA;准备扫描下一行MOVR2,AADDR4,#04H;置下一行行首键值MOVA, R4ADDA, #04HMOVR4

19、, AAJMPKP4;转开始下一行扫描,执行完以上程序后,键值存放于累加器A中。,9.3 键盘与显示接口应用举例,列,行,键码由键值查表得到,键值=行首键值+列号,列0,9.3 键盘与显示接口应用举例,端口地址译码电路,命令寄存器口地址:E100HPA口寄存器口地址:E101HPB口寄存器口地址:E102HPC口寄存器口地址:E103H,例:编写键盘扫描程序,并利用.1节的数码管动态显示程序,将被按下键的键码显示到个位数码管上。,9.3 键盘与显示接口应用举例,键盘显示扫描程序编写,程序清单:1 子程序6判断是否有键按下2 子程序7键盘扫描程序,确认按下的键3 主程序 将按键码显示在数码管上,

20、子程序6:判断是否有键按下占用资源:AKeyTest:MOVDPTR, #0E101H;指向8155的PA口寄存器MOVA, #00HMOVXDPTR, A;列输出全0MOVDPTR, #0E103H;指向8155的PC口寄存器MOVX A , DPTR;读键值ORLA, #0F0H;屏蔽高四位CPLA;全0无按键RET,9.3 键盘与显示接口应用举例,子程序7:键盘扫描程序,确认按下的键 占用资源:A, R2, R4KeyGet:MOVR2, #11111110B;行扫描码MOVR4, #00H;置第0行首键值KG1:MOVDPTR, #0E101H;指向8155的PA口寄存器MOVA, R

21、2MOVXDPTR, A;一行输出0,其它行输出1MOVDPTR, #0E103H;指向8155的PC口寄存器MOVXA, DPTR;读键值JBACC.0, L1;第0列无按键,跳到L1MOVA, #00H;保存列号,准备计算键值LJMPKG2L1:JBACC.1, L2;第1列无按键,跳到L2MOVA, #01H;保存列号,准备计算键值LJMPKG2L2:JBACC.2, L3;第2列无按键,跳到L3MOVA, #02H;保存列号,准备计算键值LJMPKG2L3:JBACC.3, NEXT;第3列无按键,跳到扫描下一行MOVA, #03H;保存列号,准备计算键值KG2:ADDA, R4; 停

22、止扫描,计算键值,9.3 键盘与显示接口应用举例,MOVDPTR, #TAB1MOVC A, A+DPTR;按照键值查表得到键码PUSH ACC;保存键码WaitRelease:LCALLDISPLCALLKeyTest ;判断是否有键按下JNZ WaitReleaseLCALL DISP;调用显示程序, 延时6ms,消除抖动LCALLKeyTest;再次判断是否有键按下JNZ WaitReleasePOPACCKeyGetEND:RETNEXT:MOVA, R2;扫描行指针JNBACC.5, NEXT1 ;判断6行是否全部扫描完RLA;行扫描码左移MOVR2, AMOVA, R4ADDA,

23、#04;置下一行首键值MOVR4, ALJMPKG1;开始扫描下一行NEXT1:MOVA, #24;未扫描到按键返回键码24LJMP KeyGetENDTAB1:DB0,1,4,7,0FH,2,5,8,0EH,3,6,9,0DH,0CH,0BH,0AH ;键码表DB16,17,18,19,20,21,22,9.3 键盘与显示接口应用举例,按键显示主程序MAIN:MOVSP, #6FHLCALLINIT8155;8155初始化MOV30H, #0FFH;初始化缓冲区,显示00008.MOV31H, # 00HMOV32H, # 00HMOV33H, # 00HMOV34H, # 00HMOV35

24、H, # 00HMAIN1:LCALLDISP;显示LCALLKeyTest;判断是否有键按下JZ MAIN1;无键按下,继续循环LCALLDISP;显示,延时6msLCALLKeyTest;再次判断是否有键按下JZ MAIN1;无键按下,继续循环LCALLKeyGet;扫描键盘,得到键码PUSHACC;保存键码CLRCSUBBA, #16;显示小于15的键码JNCMAIN1POPACC弹出键码MOV30H, A;键码写入显示缓冲区LJMPMAIN1,9.4 键盘显示接口专用芯片,82798位并行接口ZLG7289BI2C接口ZLG7290CI2C接口BC7281二线串口BC7281A二线串口

25、BC7281B二线串口MAX7219 三线串口MAX7221三线串口,9.4 键盘显示接口专用芯片,作业,按照课件9.1.3中数码管动态显示的电路连接,编写程序,将6位数组成的各自班号显示到数码管。按照课件9.1.3中数码管动态显示的电路连接,编写程序,将6位数组成的各自班号闪烁显示到数码管,1秒种亮/1秒钟灭。,9.1 LED显示接口技术,1.分析、整理、抄写9.3节键盘扫描程序,实现将被按下键的键值实时显示到个位数码管上。2.按照 9.3节的键盘显示接口电路,设计程序,实现通过键盘输入6位数的班号,并实时显示到数码管上。输入从个位开始,数码管闪烁显示当前输入的位置。(选做),9.3 键盘与显示接口应用举例,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1