第07章 显示器与键盘接口技术_第1页
第07章 显示器与键盘接口技术_第2页
第07章 显示器与键盘接口技术_第3页
第07章 显示器与键盘接口技术_第4页
第07章 显示器与键盘接口技术_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 1/52/52第七章 显示器与键盘接口技术 键盘与显示系统键盘与显示系统 非编码键盘接口非编码键盘接口 LEDLED数码管显示接口数码管显示接口 2 2/52/527.1 LED数码管显示接口显示器和键盘是两种重要外设显示器和键盘是两种重要外设键盘用于输入数据和命令键盘用于输入数据和命令显示器用于显示控制过程和运算结果显示器用于显示控制过程和运算结果3 3/52/52一、LED数码管显示原理 LED数码管是单片机系统常用的显示数码管是单片机系统常用的显示器件。它由若干发光二极管组成器件。它由若干发光二极管组成 控制不同组合的发光二极管导通,就控制不同组合的发光二极管导通,就能显示出不同的数

2、字能显示出不同的数字LED数码管分为数码管分为共阴极共阴极和和共阳极共阳极两种两种7.1 LED数码管显示接口4 4/52/527.1 LED数码管显示接口1. 1. 共阴极共阴极LEDLED数码管数码管 sp g f e d c b a显示显示2: 0 1 0 1 1 0 1 1 = 5BH sp g f e d c b a显示显示b: 0 1 1 1 1 1 0 0 = 7CH5 5/52/527.1 LED数码管显示接口共阴极数码管段码表6 6/52/527.1 LED数码管显示接口2. 2. 共阳极共阳极LEDLED数码管数码管 sp g f e d c b a显示显示2: 1 0 1

3、 0 0 1 0 0 = A4H sp g f e d c b a显示显示b: 1 0 0 0 0 0 1 1 = 83H7 7/52/527.1 LED数码管显示接口共阳极数码管段码表8 8/52/52二、数码管的显示方式 7.1 LED数码管显示接口显示方式显示方式静态静态显示显示 动态动态显示显示 9 9/52/52 静态显示是指静态显示是指LED数码管显示数码管显示某一字符时,相应的发光二极管某一字符时,相应的发光二极管恒定导通或恒定截止。恒定导通或恒定截止。7.1 LED数码管显示接口1. 静态显示方式1010/52/527.1 LED数码管显示接口LED1LED2GGabcdefg

4、gfedcba图示为图示为51单片机控制单片机控制2位位LED数码管数码管静态静态显示接口电路,图中数码管为共阳极显示接口电路,图中数码管为共阳极1111/52/527.1 LED数码管显示接口 完成完成099循环计数循环计数静态显示功能的程序静态显示功能的程序流程图。流程图。LED2显示十位计数值显示十位计数值LED1显示个位计数值显示个位计数值 1212/52/527.1 LED数码管显示接口源 程 序CNT_H EQU 61H;计数待显示十位数据计数待显示十位数据CNT_L EQU 60H ;计数待显示个位数据计数待显示个位数据 ORG 0000HLJMP MAINORG 0066HMA

5、IN:MOV SP, #70HMOV CNT_H, #00H ; 61H、60H单元清单元清0MOV CNT_L, #00HLCALL DISPLAY ;调用显示子程序调用显示子程序1313/52/527.1 LED数码管显示接口LOOP:LCALL DELAY1SINC CNT_LMOV A, CNT_LXRL A, #10JNZ DSPMOV CNT_L, #00HINC CNT_HMOV A, CNT_HXRL A, #10JNZ DSPMOV CNT_H, #00HDSP: LCALL DISPLAY ;调用显示子程序调用显示子程序LJMP LOOP1414/52/527.1 LED数

6、码管显示接口DISPLAY:MOV DPTR, #TABLE ;显示子程序显示子程序 MOVA, CNT_H MOVCA, A+DPTR MOVP3, A MOVDPTR, #TABLE MOVA, CNT_L MOVCA, A+DPTR MOVP1, A RETTABLE: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H, 82H, 0F8H, 80H, 90H1515/52/527.1 LED数码管显示接口;*DELAY1S: MOVR3, #04H;延时延时1秒子程序秒子程序LOOP3: MOVR2, #0FAHLOOP2: MOVR1, #0F9H NOPLOOP1

7、: NOP NOP DJNZR1, LOOP1 DJNZR2, LOOP2 DJNZR3, LOOP3 RET ENDMHzfosc121616/52/52利用人眼的视觉暂留效应,就利用人眼的视觉暂留效应,就可以给人同时显示的感觉可以给人同时显示的感觉7.1 LED数码管显示接口2. 动态显示方式动态显示是一位一位地轮流循环点亮各动态显示是一位一位地轮流循环点亮各位数码管,每位点亮的时间为位数码管,每位点亮的时间为15ms1717/52/527.1 LED数码管显示接口图示为图示为51单片机控制的单片机控制的4位位LED数码管数码管动态动态显示接口电路显示接口电路1818/52/52 为方便与

8、数码管的显示接口,在片内为方便与数码管的显示接口,在片内RAM的的30H开始设置显示缓冲区,如图所示开始设置显示缓冲区,如图所示7.1 LED数码管显示接口什么叫显示缓冲区?1919/52/52DPLAY: MOV R0, #30H ;R0指针指向指针指向显示缓冲区显示缓冲区首址首址 MOV DPTR,#SEGTAB MOV R2, #01H ;置置位选码位选码初值初值 MOV A, R2DISP: MOV P1, A ;输出位选码输出位选码 MOV A, R0 ;取出要显示的数,准备查段选码取出要显示的数,准备查段选码 MOVC A, A+DPTR ;查字型码查字型码 MOV P3, A ;

9、段选码送段选码送P3口口 ACALL DELAY1MS ;延时延时1ms。延时子程序。延时子程序DELAY1MS略略 INC R0 ;修改显示缓冲区单元地址修改显示缓冲区单元地址 MOV A, R2 JB ACC.3,GORET;4位显示完否?位显示完否? RL A ;未显示完,位选码左移未显示完,位选码左移1位位 MOV R2, A AJMP DISPGORET: RETSEGTAB:DB C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H DB 88H,83H,C6H,A1H,86H,8EH 4位LED数码管动态显示子程序2020/52/52如果要在4位数码管上

10、动态显示 .,显示缓冲区中应放什么内容?程序如何修改?2121/52/52 共阳极数码管L的段码是多少? 共阳极数码管y的段码是多少?如果要在4位数码管上动态显示PLAY,显示缓冲区中应放什么内容?程序如何修改? sp g f e d c b a显示显示L: 1 1 0 0 0 1 1 1 = C7H sp g f e d c b a显示显示y: 1 0 0 1 0 0 0 1 = 91H2222/52/52讨 论 题 共阴极数码管与共阳极数码管有什么共阴极数码管与共阳极数码管有什么不同?不同? 动态扫描显示是基于什么机理?动态扫描显示是基于什么机理? 静态显示与动态显示各有什么特点?静态显示

11、与动态显示各有什么特点?2323/52/52 消除按键抖动有哪些方法?消除按键抖动有哪些方法? 独立式键盘和行列式键盘各有什么独立式键盘和行列式键盘各有什么特点?特点? 行列式键盘是如何识别按键的?行列式键盘是如何识别按键的?下次课前预习下次课前预习7.2和和7.3,并思考下列问题,并思考下列问题2424/52/527.2 非编码键盘接口键键 盘盘编码键盘编码键盘通过编码通过编码电路识别电路识别键码,硬键码,硬件较复杂件较复杂非编码键非编码键盘盘通过软通过软件识别键件识别键码,硬件码,硬件简单简单2525/52/527.2 非编码键盘接口键盘是若干按键的集合,是单片机常用输入键盘是若干按键的集

12、合,是单片机常用输入设备,操作人员可以通过键盘输入数据或命令设备,操作人员可以通过键盘输入数据或命令单片机的键盘通常使用机械触点式按键开关单片机的键盘通常使用机械触点式按键开关按键按键触点在闭合或断开时会产生抖动现象触点在闭合或断开时会产生抖动现象2626/52/527.2 非编码键盘接口触点的去抖动方法触点的去抖动方法软件去抖动软件去抖动:软件延时软件延时10ms硬件去抖动硬件去抖动:R-S触发器触发器2727/52/52一、独立式按键接口 常用于按键数量较少的场合常用于按键数量较少的场合7.2 非编码键盘接口2828/52/52 ORG 0100HKEYSCAN: MOV P1, #0FF

13、H MOV A, P1 LCALL DEL10MS MOV B, P1 CJNE A, B, GORET JNB ACC.0, KEY0 JNB ACC.1, KEY1 JNB ACC.2, KEY2 JNB ACC.3, KEY3 JNB ACC.4, KEY4 JNB ACC.5, KEY5 JNB ACC.6, KEY6 JNB ACC.7, KEY7 GORET: RET独立式键盘接口按键查询子程序这条指令做什么用?2929/52/52KEY0:LCALLFUNC0RETKEY1:LCALLFUNC1RETKEY2:LCALLFUNC2RETKEY3:LCALLFUNC3RETKEY4

14、:LCALLFUNC4RETKEY5:LCALLFUNC5RETKEY6:LCALLFUNC6RETKEY7:LCALLFUNC7RET独立式键盘接口按键查询子程序(续)3030/52/52二、行列式非编码键盘接口 按键设置在行线和列线的交叉处按键设置在行线和列线的交叉处 7.2 非编码键盘接口x3x2x1x0y3y2y1y015141312111098765432103131/52/527.2 非编码键盘接口判别是否有键按下判别是否有键按下 识别按键位置(逐行扫描)识别按键位置(逐行扫描) 键值的计算键值的计算 3232/52/52x3x2x1x0y3y2y1y015141312111098

15、765432107.2 非编码键盘接口1. 判别是否有键按下全扫描 各行线同时送低电平各行线同时送低电平 同时读各列线的值同时读各列线的值全为全为1,1,则无键按下则无键按下不全为不全为1,1,则有键按下则有键按下3333/52/527.2 非编码键盘接口2. 识别按键位置逐行扫描x3x2x1x0y3y2y1y01514131211109876543210 依次使每条行线为低电依次使每条行线为低电平,分别读取列线值平,分别读取列线值全为全为1,1,则按键不在这一行则按键不在这一行不全为不全为1,1,按键就在这一行按键就在这一行3434/52/527.2 非编码键盘接口3. 键值的计算键值 =(

16、行号列数) + 列号 = 行首键值 + 列号 行首键值:行首键值:每行第每行第0列的键值列的键值 列号:列号:指列的序号指列的序号 例如例如Y0列的列号为列的列号为0 例如例如Y1列的列号为列的列号为1 例如例如5号键的列号是号键的列号是1 5号键的行首键值是号键的行首键值是4 键值键值 = 行首键值行首键值 + 列号列号 = 53535/52/52键盘扫描子程序流程图3636/52/52KEYSCAN:ACALL KSCAN ;全扫描全扫描,查看有没有键按下,查看有没有键按下 JZ GORET ;A=0说明没有键按下,返回说明没有键按下,返回 LCALL DEL10MS ;有键按下,延时有键

17、按下,延时10ms去抖动去抖动 ACALL KSCAN ;全扫描全扫描,再查有没有键按下,再查有没有键按下 JZ GORET ;A=0说明没有键按下,返回说明没有键按下,返回 ACALL KEYSUM ;有键按下,有键按下,逐行扫描逐行扫描确定键值确定键值 RL A RL A ;键值键值4 MOV DPTR, #FTAB JMP A+DPTR ;散转,执行所按键相应功能子程序散转,执行所按键相应功能子程序GORET: RET 44行列式键盘扫描子程序3737/52/52FTAB: LCALLFUNC0 ;调用调用0号键功能子程序号键功能子程序 RET ;返回主程序返回主程序 LCALLFUNC

18、1 ;调用调用1号键功能子程序号键功能子程序 RET ;返回主程序返回主程序 . . . LCALLFUNC15 ;调用调用15键功能子程序键功能子程序 RET ;返回主程序返回主程序 LCALLERRSUB ;键值为键值为16,异常处理,异常处理 RET; KSCAN为判断有无键按下子程序为判断有无键按下子程序,A0表示有键按下表示有键按下KSCAN:MOV P1, #0F0H ;行线同时低电平,列线准备读行线同时低电平,列线准备读 MOV A, P1 ;读取列线数据,读取列线数据,全为全为1无键按下无键按下 CPL A ;A取反取反 ANL A, #0F0H ;屏蔽行线,屏蔽行线,A全为全

19、为0无键按下无键按下 RET ;返回,返回, A0表示有键按下表示有键按下44矩阵式键盘扫描子程序(续)3838/52/52识别按键位置逐行扫描x3x2x1x0y3y2y1y01514131211109876543210 依次使每条行线为低电依次使每条行线为低电平,分别读取列线值平,分别读取列线值全为全为1,1,则按键不在这一行则按键不在这一行不全为不全为1,1,按键就在这一行按键就在这一行3939/52/52KEYSUM:MOV R6, #00H ;R6存放行首键值存放行首键值,0行首键值行首键值=0 MOV R7, #0FEH ;第第0行的行扫描字行的行扫描字LOOP: MOV P1, R

20、7 ;逐行输出行扫描字逐行输出行扫描字 MOV A, P1 ;读列线数据读列线数据 SWAP A ;A的高低半字节交换的高低半字节交换 JB ACC.0, L1 ;第第0列无键按下,转查第列无键按下,转查第1列列 MOV A, #0 ;第第0列有键按下,列有键按下,列号列号0送送A SJMP KSOLVE ;转求键值转求键值 L1: JB ACC.1, L2 ;第第1列无键按下,转查第列无键按下,转查第2列列 MOV A, #1 ;第第1列有键按下,列有键按下,列号列号1送送A SJMP KSOLVE ;转求键值转求键值 L2: JB ACC.2, L3 ;第第2列无键按下,转查第列无键按下,

21、转查第3列列 MOV A, #2 ;第第2列有键按下,列有键按下,列号列号2送送A SJMP KSOLVE ;转求键值转求键值 L3: JB ACC.3, NEXT ;第第3列无键按下,本行扫描结束列无键按下,本行扫描结束 MOV A, #3 ;第第3列有键按下,列有键按下,列号列号3送送A SJMP KSOLVE ;转求键值转求键值 求键值子程序(键值在A中返回)4040/52/52NEXT: MOV A, R7;取出行扫描字取出行扫描字 JNB ACC.3,ERR;已扫描完仍未查到被按键,异常处理已扫描完仍未查到被按键,异常处理 RL A;未扫描完,则未扫描完,则R7循环左移一位循环左移一

22、位 MOV R7, A;得到下一行的行扫描字得到下一行的行扫描字 ADD R6, #4;得到得到下一行的行首键值下一行的行首键值 SJMP LOOP;转转LOOP,扫描下一行,扫描下一行ERR: MOV A, #16;键值赋键值赋16,表示出错,表示出错! RETKSOLVE:ADD A, R6;计算键值,计算键值,键值键值 = 行首键值行首键值 + 列号列号 PUSH ACC;键值进栈暂存键值进栈暂存WAIT: ACALL KSCAN;查按键释放否?防止重复执行键功能查按键释放否?防止重复执行键功能 JNZ WAIT;没有释放,等待没有释放,等待 POP ACC;键值出栈键值出栈 RET ;

23、返回到返回到 ACALL KEYSUM 的下一句的下一句求键值子程序(续)4141/52/527.3 键盘与显示系统在单片机应用系统中,为节省在单片机应用系统中,为节省I/O口线,口线,可将数码管显示器和键盘结合起来,构成可将数码管显示器和键盘结合起来,构成实用的键盘与显示系统实用的键盘与显示系统。4242/52/527.3 键盘与显示系统IC0IC1IC2IC3共阳x3x2x1x0y3y2y1y01514131211109876543210LED0abc d efgdpGGdpgfedcbaLED1LED2LED3ab c d efgdpGGdpgfedcba4343/52/527.3 键盘

24、与显示系统图中图中44行列式键盘刚才介绍过,键盘扫行列式键盘刚才介绍过,键盘扫描程序与前面的描程序与前面的KEYSCAN子程序相同子程序相同 图中的图中的4位位LED动态扫描显示电路上节课已动态扫描显示电路上节课已介绍过,介绍过,4位数码管动态显示子程序如下:位数码管动态显示子程序如下: 4444/52/52DPLAY: MOV R0, #30H ;R0指向显示缓冲区首址指向显示缓冲区首址 MOV DPTR,#SEGTAB MOV R2, #01H ;置位选码初值置位选码初值 MOV A, R2DISP: MOV P1, A ;输出位选码输出位选码 MOV A, R0 ;取出要显示的数,准备查

25、段选码取出要显示的数,准备查段选码 MOVC A, A+DPTR ;查字形码查字形码 MOV P3, A ;字形码送字形码送P3口口 ACALL DELAY1MS ;延时延时1ms。延时子程序。延时子程序DELAY1MS略略 INC R0 ;修改显示缓冲区单元地址修改显示缓冲区单元地址 MOV A, R2 JB ACC.3,GORET;4位显示完否?位显示完否? RL A ;未显示完,位选码左移未显示完,位选码左移1位位 MOV R2, A AJMP DISPGORET: RETSEGTAB:DB C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H DB 88H,8

26、3H,C6H,A1H,86H,8EH 4位LED数码管动态显示子程序4545/52/52键盘与显示系统程序流程图键盘与显示系统程序流程图 4646/52/52键盘与显示系统主程序 ORG0000H LJMPMAIN ORG0100HMAIN: . ;初始化部分(略)初始化部分(略) . .KEYSCAN:LCALLKSCAN ;全扫描全扫描,检查是否有键按下,检查是否有键按下 JZ KS1 ;A=0表示没有键按下,转表示没有键按下,转KS1 AJMPKS2KS1: LCALLDPLAY ;调用调用动态显示动态显示子程序,显示一遍子程序,显示一遍 AJMPKEYSCANKS2: MOVR3, #

27、L ;利用动态扫描利用动态扫描防抖动防抖动延时约延时约10msDELY: LCALLDPLAY ;调用动态显示子程序,显示一遍调用动态显示子程序,显示一遍 DJNZR3, DELY ;延时大约延时大约10ms时间到时间到 LCALLKSCAN ;全扫描全扫描,再查是否有键按下,再查是否有键按下 JZ KS1 ;A=0表示没有键按下,转表示没有键按下,转KS1 LCALLKEYSUM ;有键按下,逐行扫描确定键值有键按下,逐行扫描确定键值KSCAN:MOV P1, #0F0H ;准备读准备读 MOV A, P1 CPL A ANL A, #0F0H RET ; A=0则无键按下则无键按下KEYSUM为求键值子程序,键值在为求键值子程序,键值在A中返回中返回4747/52/52MOVR2, A RL AADDA,R2;键值键值3RL A;键值键值6MOVDPTR, #FTABJMPA+DPTR;散转,执行所按键相应功能子程序散转,执行所按键相应功能子程序FTAB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论