键盘以及显示接口技术高效应用_第1页
键盘以及显示接口技术高效应用_第2页
键盘以及显示接口技术高效应用_第3页
键盘以及显示接口技术高效应用_第4页
键盘以及显示接口技术高效应用_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

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

P1.0~1.7MCS-51afbge cddpabh将公共阴极接地,在a~g各段的阳极上加不同的电压,就会使各段的发光情况不同,形成不同的发光字符。D7D6D5D4D3D2D1D0dpgfedcba段选码的位定义R段码表:段选码的值与显示字符的对应关系.“8”:共阴极段选码的值为7FH;

共阳极段选码的值为80H.9.1LED显示接口技术共阴极和共阳极的段选码互为反码。显示字符共阴极段选码共阳极段选码显示字符共阴极段选码共阳极段选码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8HY6EH91H87FH80HL38HC7H96FH90H8.FFH00HA77H88H“灭”00FFHB7CH83H………………9.1LED显示接口技术§9.1.2数码管的静态显示方式将公共阴极接地或公共阳极接电源,段码接一8位并行输出口。需要占用大量的输出端口。

abhCOM

abhCOM

abhCOMafbge

cdh9.1LED显示接口技术D0D79.1LED显示接口技术例5.1按照前页电路,编写显示子程序,将33H~30H单元存储的字符由高到低显示在四只数码管上。分析: 1.设置串口工作方式0,SCON初值为00H。

2.先发送高位数码管的段选码, 后发送低位数码管的段选码。

3.段选码采用查表的方式获得。DXM: MOV DPTR,#TAB ;取段选码表首地址

MOVC A,@A+DPTR ;取段选码,变址寻址

RETTAB: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H ;0,1,2,3,4 DB 92H, 82H, 0F8H, 80H, 90H ;5,6,7,8,9 DB 88H, 83H, 0C6H, 0A1H, 86H,8EH;A,b,C,d,E,F查段选码子程序:入口条件:待显示字符存于A中;出口条件:待显示字符的段选码存于A中;占用资源:DPRT,A。9.1LED显示接口技术DISP: MOV SCON,#00H ;串口初始化方式0 SETBP1.0 ;74HC164处于正常工作状态

MOV R0,#33H ;首地址赋指针

MOV R1,#04H ;显示4个数LP1: MOV A,@R0 ;取待显示字符

LCALLDXM ;查段选码

MOV SBUF,A ;启动串行发送命令,输出段位码

JNB TI,$ ;等待发送完毕

CLR TI ;清发送完毕标志位

DEC R0 ;指针减1 DJNZ R1,LP1 ;判断4位段选码是否全部输出

RET ;显示子程序:入口条件:待显示字符存于33H-30H单元中;出口条件:占用资源:R0,R1,A。9.1LED显示接口技术§9.1.3数码管的动态显示方式将所有显示位的段选码接在一起;通过位选线选择某一时刻显示的位,时间单位一般取1~5ms;采用循环扫描的方法,实现多位显示。9.1LED显示接口技术位选线的驱动位选线为什么需要驱动?位选线如何驱动?ULN2003—7位达林顿驱动器ULN2003反相输出单路驱动能力(吸入电流)达500mA9.1LED显示接口技术74HC1389.1LED显示接口技术1.分析8155口地址命令寄存器口地址: 1110_xxx1_xxxx_xx00BE100H;PA口寄存器口地址: 1110_xxx1_xxxx_xx01BE101H;PB口寄存器口地址: 1110_xxx1_xxxx_xx10BE102H;PC口寄存器口地址: 1110_xxx1_xxxx_xx11BE103H;2.分析8155命令字PA口、PB口为输出口;PC口未使用,假设为输入口;命令字为03H。INIT8155:MOVDPTR,#0E100H MOVA,#03H MOVX @DPTR,A RET3.8155初始化程序DXM: MOV DPTR,#TAB ;取段选码表首地址

MOVC A,@A+DPTR ;取段选码,变址寻址

RETTAB: DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h;0,1,2,3,4,5,6,7 DB7fh,6fh,77h,7ch,39h,5eh,79h,71h,0;8,9,A,b,C,d,E,F,灭4.查段选码子程序:入口条件:待显示字符存于A中;出口条件:待显示字符的段选码存于A中;占用资源:DPRT,A。9.1LED显示接口技术9.1LED显示接口技术SHIFT: MOV R6,#08H ;循环次数

MOV DPTR,#E102H ;指针指向8155的PB口寄存器LP1: RLC A MOV R7,A ;备份A中段选码

MOV ACC.0,C CLR ACC.1 MOVX @DPTR,A ;输出DAT,输出CLK为0, SETB ACC.1 MOVX @DPTR,A ;DAT不变,输出CLK为1

CLR ACC.1

MOVX @DPTR,A ;DAT不变,输出CLK为0 MOV A,R7 ;恢复A中内容

DJNZ R6,LP1 ;判断8位是否移位完毕

RET ;5.输出一个字符的段选码

方法分析:PB0逐位输出数据,PB1输出移位时钟;入口条件:待显示字符的段选码存放在A中;占用资源:A,R6,R7。9.1LED显示接口技术6.输出6位字符(扫描一次)方法分析:扫描1次,每位数码管显示一次。以1ms为间隔,顺序将PA0到PA5输出高电平。在某位输出高电平期间,相应输出该位的段选码。入口条件:待显示字符存于35H~30H单元中占用资源:

A,R0,R19.1LED显示接口技术DISP: MOV R0,#30H ;地址指针

MOV R1,#01H ;位选码,从低位开始显示DP1: MOV DPTR,#0E101H ;指针指向8155的PA口寄存器

MOV A,#00H

MOVX @DPTR,A ;关显示

MOV A,@R0 ;取待显示字符

LCALL DXM ;查表段选码

LCALLSHIFT ;移位输出段选码

MOV DPTR,#0E101H ;指向8155的PA口寄存器

MOV A,R1 MOVX @DPTR,A ;输出位选码

INC R0 ;地址指针指向下一单元

RL A ;位选码指向高一位

MOV R1,A ;保存位选码

LCALL DELY1 ;延时1ms JNB ACC.6,DP1 RET9.1LED显示接口技术ORG 0000H LJMPMAINORG 0030HMAIN: MOV SP,#6FH;设置堆栈

LCALL INIT8155;初始化8155MN1: LCALL DISP ;输出显示字符

SJMP MN1 ;循环输出8.主程序(反复调用扫描显示程序)7.延时1ms子程序子程序2:延时1ms程序(12M晶体)占用资源:R6,R7DELY1:MOV R7,#02HDL1: MOV R6,#0FFH DJNZ R6,$ DJNZ R7,DL1 RET程序中哪些地方需要用堆栈?9.1LED显示接口技术程序清单: 1主程序

2子程序1——8155初始化程序

3子程序2——延时1ms程序

4子程序3——查表段选码

5子程序4——输出一个字符的段选码

6子程序5——输出6位字符(扫描一次)9.2键盘接口技术9.2键盘接口技术§9.2.1键盘结构与工作原理键盘中每个按键都是一个常开开关按下键S3,P1.7口为低电平放开键S3,P1.7口为高电平9.2键盘接口技术由于机械触点的弹性作用,在闭合和断开按键的瞬间,触点会产生机械抖动,表现为P1.7口出现一系列的脉冲信号。如右图所示。抖动时间的长短,由按键的机械特性决定,一般在5ms~10ms间。按键抖动的危害按键抖动的消除硬件消除;如:R-S双稳态触发器电路

RC阻容滤波电路软件消除,实际应用多。在CPU检测到有按键按下时,执行一个10ms的延时程序后,再次判断该键电平是否保持闭合状态电平,如保持闭合状态电平则确认为真正有键按下,从而消除抖动的影响。当CPU检测到按键释放后,也要给一个10ms的延时,待后沿抖动消失后才去执行该键的处理程序。9.2键盘接口技术§9.2.2独立式键盘接口设计独立式按键是指各按键相互独立,每个按键各接一个输入口。通过检测输入口上的电平状态判断哪个键被按下。接上拉电阻的目的是为了保证在按键断开时,各个输入口有确定的高电平。每个按键需要占用一个输入口,不适合用于需要很多按键的场合。9.2键盘接口技术KEY_START:

MOV 30H,P1 ;读键盘状态并保存30H单元

ANL 30H,#1FH ;屏蔽高3位

CJNE 30H,#1FH,NEXT ;判断是否有键按下

SJMP KEY_STARTNEXT:LCALLD_10ms ;软件延时10ms,消除抖动

MOVA,P1 ;再次读键盘状态

ANL A,#1FH ;屏蔽高3位

CJNEA,30H,KEY_START JNBACC.0,KEY0 JNBACC.1,KEY1 JNBACC.2,KEY2 JNBACC.3,KEY3 JNBACC.4,KEY4 SJMPKEY_STARTKEY0: LJMPKP0;KEY1: LJMPKP1;KEY2: LJMP KP2;KEY3: LJMPKP3;KEY4: LJMPKP4为什么不直接跳到KP0;延时10ms程序D_10ms: MOV R6,#14HDL: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DL RET9.2键盘接口技术KP0: … ;KEY0键按下的处理程序

LJMPKEY_STARTKP1: … ;KEY1键按下的处理程序

LJMPKEY_START;KP2: … ;KEY2键按下的处理程序

LJMP KEY_START;KP3: … ;KEY3键按下的处理程序

LJMPKEY_START;KP4: … ;KEY4键按下的处理程序

LJMPKEY_START;9.2键盘接口技术§9.2.3矩阵式键盘接口设计矩阵式键盘结构矩阵式键盘由行线和列线构成列线通过上拉电阻接到+5V列线接到输入口上行线接到输出口上按键位于行、列的交叉点上适用于需要按键较多的场合矩阵式键盘工作原理无按键按下时,列线输入高电平;有按键按下时,列线输入电平由与此列线相连的行线电平决定.如果行线输出低电平,则列线电平为低如果行线输出高电平,则列线电平为高为了确认按键位置,必须将行、列线配合使用。按键的识别方法(键扫描)首先行线全输出0,判断是否有键按下。如果列线为全1,无按键按下如果列线非全1,有按键按下然后,让行线P10输出0,其它三条行线输出1,读列线状态。如果列线为全1,第一行无按键按下,继续扫描。如果列线非全1,可以判断按键在第一行,再根据为0的列线序号,可以确定按键具体的列号,停止扫描。如果第一行无按键按下,让行线P11口输出0,其它三条行线输出1,读列线状态,判断按键是否在第二行。如果第二行仍无按键按下,让行线P12口输出0,其他三条行线输出1,读列线状态,判断按键是否在第三行。如果第三行仍无按键按下,让行线P13口输出0,其它三条行线输出1,读列线状态,判断按键是否在第四行。9.2键盘接口技术9.2键盘接口技术;判断是否有按键按下KAP: MOV P1,#0F0H MOV A,P1 ORL A,#0FH CPL A RET;延时10ms程序DELY: MOV R6,#14HDL: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DL RET编程举例键值=行首键值+列号9.2键盘接口技术KINP: LCALL KAP ;调用键盘查询程序

JZ KINP ;无键按下,继续查询 KP1: LCALL DELY ;延时10ms,消除抖动

LCALL KAP ;再次调用键盘查询程序

JZ KINP ;无键按下,继续查询

MOV R2,#0FEH ;从第0行开始扫描

MOV R4,#00H ;置第0行行首键值KP4: MOV P1,R2 ;置扫描行为0 MOV A,P1 ;读P1状态

JB ACC.4,L1 ;第0列不为0,转测第1列

MOV A,#00H ;列号存入A中

AJMP KP5 ;停止扫描L1: JB ACC.5,L2 ;第1列不为0,转测第2列

MOV A,#01H ;列号存入A中

AJMP KP5 ;停止扫描L2: JB ACC.6,L3 ;第2列不为0,转测第3列

MOV A,#02H ;列号存入A中

AJMP KP5 ;停止扫描L3: JB ACC.7,NEXT ;第3列不为0,转测下一行

MOV A,#03H ;列号存入A中KP5: ADD A,R4 ;停止扫描,计算键值R2R4行0FE0行1FD4行2FB8行3F7C键值=行首键值+列号9.2键盘接口技术 PUSH A ;保存键值KP3: LCALL KAP ;查询键是否释放

JNZ KP3 ;未释放,继续查询

LCALL DELY LCALL KAP ;再次查询键是否释放

JNZ KP3 POP A ;弹出键值

RETNEXT: MOV A,R2 ;扫描行指针赋给A JNB ACC.3,KINP ;扫描结束,未发现按键

RL A ;准备扫描下一行

MOV R2,A

ADD R4,#04H

;置下一行行首键值

MOV A,R4

ADD A,#04H

MOV R4,A AJMP KP4 ;转开始下一行扫描执行完以上程序后,键值存放于累加器A中。9.3键盘与显示接口应用举例列3行0键码由键值查表得到键值=行首键值+列号R2R4行0FE0行1FD4行2FB8行3F7C行4EF10行5DF14列09.3键盘与显示接口应用举例端口地址译码电路命令寄存器口地址: E100HPA口寄存器口地址: E101HPB口寄存器口地址: E102HPC口寄存器口地址: E103H例:编写键盘扫描程序,并利用9.1节的数码管动态显示程序,将被按下键的键码显示到个位数码管上。9.3键盘与显示接口应用举例键盘显示扫描程序编写程序清单: 1子程序6——判断是否有键按下

2子程序7——键盘扫描程序,确认按下的键

3主程序——将按键码显示在数码管上子程序6:判断是否有键按下占用资源:AKeyTest: MOV DPTR,#0E101H ;指向8155的PA口寄存器

MOV A,#00H MOVX @DPTR,A ;列输出全0 MOV DPTR,#0E103H ;指向8155的PC口寄存器

MOVX A,@DPTR ;读键值

ORL A,#0F0H ;屏蔽高四位

CPL A ;全0无按键

RET9.3键盘与显示接口应用举例子程序7:键盘扫描程序,确认按下的键占用资源:A,R2,R4KeyGet: MOV R2,#11111110B ;行扫描码

MOV R4,#00H ;置第0行首键值KG1: MOV DPTR,#0E101H ;指向8155的PA口寄存器

MOV A,R2 MOVX @DPTR,A ;一行输出0,其它行输出1 MOV DPTR,#0E103H ;指向8155的PC口寄存器

MOVX A,@DPTR ;读键值

JB ACC.0,L1 ;第0列无按键,跳到L1 MOV A,#00H ;保存列号,准备计算键值

LJMP KG2L1: JB ACC.1,L2 ;第1列无按键,跳到L2 MOV A,#01H ;保存列号,准备计算键值

LJMP KG2L2: JB ACC.2,L3 ;第2列无按键,跳到L3 MOV A,#02H ;保存列号,准备计算键值

LJMP KG2L3: JB ACC.3,NEXT ;第3列无按键,跳到扫描下一行

MOV A,#03H ;保存列号,准备计算键值KG2: ADD A,R4 ;停止扫描,计算键值R2R4行0FE0行1FD4行2FB8行3F7C行4EF10行5DF149.3键盘与显示接口应用举例 MOV DPTR,#TAB1 MOVC A,@A+DPTR ;按照键值查表得到键码

PUSH ACC ;保存键码 WaitRele

温馨提示

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

评论

0/150

提交评论