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

下载本文档

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

文档简介

第七章显示器与键盘接口技术

键盘与显示系统

非编码键盘接口

LED数码管显示接口

7.1LED数码管显示接口显示器和键盘是两种重要外设键盘用于输入数据和命令显示器用于显示控制过程和运算结果一、LED数码管显示原理

◆LED数码管是单片机系统常用的显示器件。它由若干发光二极管组成

◆控制不同组合的发光二极管导通,就能显示出不同的数字◆LED数码管分为共阴极和共阳极两种7.1LED数码管显示接口7.1LED数码管显示接口1.共阴极LED数码管

spgfedcba显示2:01011011=5BH

spgfedcba显示b:01111100=7CH7.1LED数码管显示接口共阴极数码管段码表7.1LED数码管显示接口2.共阳极LED数码管

spgfedcba显示2:10100100=A4H

spgfedcba显示b:10000011=83H7.1LED数码管显示接口共阳极数码管段码表二、数码管的显示方式

7.1LED数码管显示接口显示方式静态显示

动态显示

◆静态显示是指LED数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。7.1LED数码管显示接口1.静态显示方式7.1LED数码管显示接口图示为51单片机控制2位LED数码管静态显示接口电路,图中数码管为共阳极7.1LED数码管显示接口◆完成0~99循环计数静态显示功能的程序流程图。LED2显示十位计数值LED1显示个位计数值

7.1LED数码管显示接口源程序

CNT_HEQU61H ;计数待显示十位数据

CNT_LEQU60H ;计数待显示个位数据

ORG0000H LJMPMAIN ORG 0066HMAIN: MOVSP,#70H MOVCNT_H,#00H ;61H、60H单元清0 MOVCNT_L,#00H LCALLDISPLAY ;调用显示子程序7.1LED数码管显示接口LOOP:LCALLDELAY1S INC CNT_L MOV A, CNT_L XRL A, #10 JNZ DSP MOV CNT_L,#00H INC CNT_H MOV A, CNT_H XRL A, #10 JNZ DSP MOV CNT_H,#00HDSP: LCALLDISPLAY ;调用显示子程序

LJMP LOOP7.1LED数码管显示接口DISPLAY:MOVDPTR,#TABLE;显示子程序

MOV A,CNT_H MOVC A,@A+DPTR MOV P3,A MOV DPTR,#TABLE MOV A,CNT_L MOVC A,@A+DPTR MOV P1,A RETTABLE:DB0C0H,0F9H,0A4H,0B0H,99H DB92H,82H,0F8H,80H,90H7.1LED数码管显示接口;************************************DELAY1S:MOV R3,#04H ;延时1秒子程序LOOP3:MOV R2,#0FAHLOOP2:MOV R1,#0F9H NOPLOOP1:NOP NOP DJNZ R1,LOOP1 DJNZ R2,LOOP2 DJNZ R3,LOOP3 RET END利用人眼的视觉暂留效应,就可以给人同时显示的感觉7.1LED数码管显示接口2.动态显示方式动态显示是一位一位地轮流循环点亮各位数码管,每位点亮的时间为1~5ms7.1LED数码管显示接口图示为51单片机控制的4位LED数码管动态显示接口电路为方便与数码管的显示接口,在片内RAM的30H开始设置显示缓冲区,如图所示7.1LED数码管显示接口什么叫显示缓冲区?DPLAY:MOV R0,#30H ;R0指针指向显示缓冲区首址

MOV DPTR,#SEGTAB MOV R2,#01H ;置位选码初值

MOV A,R2DISP: MOV P1,A ;输出位选码

MOV A,@R0 ;取出要显示的数,准备查段选码

MOVCA,@A+DPTR;查字型码

MOV P3,A ;段选码送P3口

ACALLDELAY1MS ;延时1ms。延时子程序DELAY1MS略

INC R0 ;修改显示缓冲区单元地址

MOV A,R2 JB ACC.3,GORET;4位显示完否?

RLA ;未显示完,位选码左移1位

MOV R2,A AJMPDISPGORET:RETSEGTAB:DBC0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90HDB

88H,83H,C6H,A1H,86H,8EH4位LED数码管动态显示子程序如果要在4位数码管上动态显示××.×,显示缓冲区中应放什么内容?程序如何修改?共阳极数码管L的段码是多少?共阳极数码管y的段码是多少?如果要在4位数码管上动态显示PLAY,显示缓冲区中应放什么内容?程序如何修改?

spgfedcba显示L:11000111=C7H

spgfedcba显示y:10010001=91H讨论题共阴极数码管与共阳极数码管有什么不同?动态扫描显示是基于什么机理?静态显示与动态显示各有什么特点?消除按键抖动有哪些方法?独立式键盘和行列式键盘各有什么特点?行列式键盘是如何识别按键的?下次课前预习7.2和7.3,并思考下列问题7.2非编码键盘接口键盘编码键盘通过编码电路识别键码,硬件较复杂非编码键盘通过软件识别键码,硬件简单7.2非编码键盘接口◆键盘是若干按键的集合,是单片机常用输入设备,操作人员可以通过键盘输入数据或命令◆单片机的键盘通常使用机械触点式按键开关◆按键触点在闭合或断开时会产生抖动现象7.2非编码键盘接口◆触点的去抖动方法●软件去抖动:软件延时10ms●硬件去抖动:R-S触发器一、独立式按键接口

常用于按键数量较少的场合7.2非编码键盘接口

ORG0100HKEYSCAN: MOVP1,#0FFH MOVA,P1 LCALLDEL10MS MOVB,P1 CJNEA,B,GORET JNBACC.0,KEY0 JNBACC.1,KEY1 JNBACC.2,KEY2 JNBACC.3,KEY3 JNBACC.4,KEY4 JNBACC.5,KEY5 JNBACC.6,KEY6 JNBACC.7,KEY7GORET:RET独立式键盘接口按键查询子程序这条指令做什么用?KEY0: LCALL FUNC0 RET KEY1: LCALL FUNC1 RET KEY2: LCALL FUNC2 RET KEY3: LCALL FUNC3 RET KEY4: LCALL FUNC4 RET KEY5: LCALL FUNC5 RET KEY6: LCALL FUNC6 RET KEY7: LCALL FUNC7 RET 独立式键盘接口按键查询子程序(续)二、行列式非编码键盘接口

按键设置在行线和列线的交叉处7.2非编码键盘接口7.2非编码键盘接口判别是否有键按下

识别按键位置(逐行扫描)

键值的计算按键识别步骤

7.2非编码键盘接口1.判别是否有键按下──全扫描各行线同时送低电平同时读各列线的值全为1,则无键按下不全为1,则有键按下7.2非编码键盘接口2.识别按键位置──逐行扫描依次使每条行线为低电平,分别读取列线值全为1,则按键不在这一行不全为1,按键就在这一行7.2非编码键盘接口3.键值的计算键值=(行号×列数)+列号

=行首键值+列号行首键值:每行第0列的键值列号:指列的序号例如Y0列的列号为0例如Y1列的列号为1例如5号键的列号是15号键的行首键值是4键值=行首键值+列号=5键盘扫描子程序流程图KEYSCAN:ACALLKSCAN ;全扫描,查看有没有键按下

JZ GORET ;A=0说明没有键按下,返回

LCALLDEL10MS;有键按下,延时10ms去抖动

ACALLKSCAN ;全扫描,再查有没有键按下

JZ GORET ;A=0说明没有键按下,返回

ACALLKEYSUM ;有键按下,逐行扫描确定键值

RL A RL A ;键值×4 MOVDPTR,#FTAB JMP@A+DPTR ;散转,执行所按键相应功能子程序GORET:RET

4×4行列式键盘扫描子程序FTAB: LCALL FUNC0 ;调用0号键功能子程序

RET ;返回主程序

LCALL FUNC1 ;调用1号键功能子程序

RET ;返回主程序

. . . LCALL FUNC15;调用15键功能子程序

RET ;返回主程序

LCALL ERRSUB;键值为16,异常处理

RET;KSCAN为判断有无键按下子程序,A≠0表示有键按下KSCAN:MOV P1,#0F0H;行线同时低电平,列线准备读

MOV A,P1 ;读取列线数据,全为1无键按下

CPL A ;A取反

ANL A,#0F0H;屏蔽行线,A全为0无键按下

RET ;返回,A≠0表示有键按下4×4矩阵式键盘扫描子程序(续)识别按键位置──逐行扫描依次使每条行线为低电平,分别读取列线值全为1,则按键不在这一行不全为1,按键就在这一行KEYSUM:MOV R6,#00H;R6存放行首键值,0行首键值=0 MOV R7,#0FEH;第0行的行扫描字LOOP: MOV P1,R7 ;逐行输出行扫描字

MOV A,P1 ;读列线数据

SWAPA ;A的高低半字节交换

JB ACC.0,L1 ;第0列无键按下,转查第1列

MOV A,#0 ;第0列有键按下,列号0送A SJMPKSOLVE ;转求键值

L1: JB ACC.1,L2 ;第1列无键按下,转查第2列

MOV A,#1 ;第1列有键按下,列号1送A

SJMPKSOLVE ;转求键值

L2: JB ACC.2,L3 ;第2列无键按下,转查第3列

MOV A,#2 ;第2列有键按下,列号2送A

SJMPKSOLVE ;转求键值

L3: JB ACC.3,NEXT;第3列无键按下,本行扫描结束

MOV A,#3 ;第3列有键按下,列号3送A

SJMPKSOLVE ;转求键值求键值子程序(键值在A中返回)NEXT: MOV A,R7 ;取出行扫描字

JNB ACC.3,ERR ;已扫描完仍未查到被按键,异常处理

RL A ;未扫描完,则R7循环左移一位

MOV R7,A ;得到下一行的行扫描字

ADD R6,#4 ;得到下一行的行首键值

SJMP LOOP ;转LOOP,扫描下一行ERR: MOV A,#16 ;键值赋16,表示出错! RETKSOLVE:ADD A,R6 ;计算键值,键值=行首键值+列号

PUSHACC ;键值进栈暂存WAIT: ACALLKSCAN ;查按键释放否?防止重复执行键功能

JNZ WAIT ;没有释放,等待

POP ACC ;键值出栈

RET ;返回到ACALLKEYSUM的下一句求键值子程序(续)7.3键盘与显示系统◆在单片机应用系统中,为节省I/O口线,可将数码管显示器和键盘结合起来,构成实用的键盘与显示系统。7.3键盘与显示系统7.3键盘与显示系统◆图中4×4行列式键盘刚才介绍过,键盘扫描程序与前面的KEYSCAN子程序相同

◆图中的4位LED动态扫描显示电路上节课已介绍过,4位数码管动态显示子程序如下:

DPLAY:MOV R0,#30H ;R0指向显示缓冲区首址

MOV DPTR,#SEGTAB MOV R2,#01H ;置位选码初值

MOV A,R2DISP: MOV P1,A ;输出位选码

MOV A,@R0 ;取出要显示的数,准备查段选码

MOVCA,@A+DPTR;查字形码

MOV P3,A ;字形码送P3口

ACALLDELAY1MS ;延时1ms。延时子程序DELAY1MS略

INC R0 ;修改显示缓冲区单元地址

MOV A,R2 JB ACC.3,GORET;4位显示完否?

RLA ;未显示完,位选码左移1位

MOV R2,A AJMPDISPGORET:RETSEGTAB:DBC0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90HDB

88H,83H,C6H,A1H,86H,8EH4位LED数码管动态显示子程序键盘与显示系统程序流程图

键盘与显示系统主程序

ORG 0000H LJMP MAIN ORG 0100HMAIN: . ;初始化部分(略)

. .KEYSCAN:LCALL KSCAN;全扫描,检查是否有键按下

JZ KS1 ;A=0表示没有键按下,转KS1 AJMP KS2KS1: LCALL DPLAY ;调用动态显示子程序,显示一遍

AJMP KEYSCANKS2: MOV R3,#L ;利用动态扫描防抖动延时约10msDELY: LCALL DPLAY ;调用动态显示子程序,显示一遍

DJNZ R3,DELY;延时大约10ms时间到

LCALL KSCAN ;全扫描,再查是否有键按下

JZ KS1 ;A=0表示没有键按下,转KS1 LCALL KEYSUM;有键按下,逐行扫描确定键值KSCAN:MOV P1,#0F0H;准备读

MOV A,P1 CPL A ANL A,#0F0H RET ;A=0则无键按下KEYSUM为求键值子程序,键值在A中返回

MOV R2,ARL A ADD A,R2 ;键值×3 RL A ;键值×6 MOV DPTR,#FTAB JMP @A+DPTR ;散转,执行所按键相应功能子程序FTAB: LCALL FUNC0 ;调用0号键功能子程序

LJMP KS1 ;程序进入循环

LCALL FUNC1 ;调用1键

温馨提示

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

评论

0/150

提交评论