uc 2012 ch8-1键盘显示sxj1

上传人:san****019 文档编号:82965334 上传时间:2019-02-25 格式:PPT 页数:52 大小:1.56MB
返回 下载 相关 举报
uc 2012 ch8-1键盘显示sxj1_第1页
第1页 / 共52页
uc 2012 ch8-1键盘显示sxj1_第2页
第2页 / 共52页
uc 2012 ch8-1键盘显示sxj1_第3页
第3页 / 共52页
uc 2012 ch8-1键盘显示sxj1_第4页
第4页 / 共52页
uc 2012 ch8-1键盘显示sxj1_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《uc 2012 ch8-1键盘显示sxj1》由会员分享,可在线阅读,更多相关《uc 2012 ch8-1键盘显示sxj1(52页珍藏版)》请在金锄头文库上搜索。

1、第8章 键盘显示及模拟量通道技术,8.1 键盘/显示器接口扩展技术 8.2 模拟量I/O通道,8.1 键盘/显示器接口扩展技术,8.1.1 显示器结构与工作原理 8.1.2 键盘接口工作原理,8.1.1 显示器结构与工作原理,显示器概述 作用 显示单片机的运行结果与运行状态 分类 LED(发光二极管):亮度清晰、成本低、控制简单 LCD(液晶):功耗低 CRT(阴极射线管):图形显示方便 使用场合 电子显示屏、工业测控领域、仪器仪表、电子钟、家用电器等,LED数码管显示器结构,LED数码管显示原理与段码,1 1 1 1 1 1 0 0,0 0 0 0 0 0 1 1,共阳段码表,共阴段码表,3

2、FH,C0H,显示代码表,LED数码显示方法,静态 动态,2. 静态显示法接口设计,静态显示 每个显示器各笔画段都独占具有锁存功能的输出口线 因为各笔画段接口具有锁存功能,CPU不再去访问它,显示的内容也不会消失 优点 程序简单,显示亮度大,节约了CPU时间 缺点 占用的I/O口线较多,成本较高,典型静态显示接口图一,程序(1):8位显示,显示缓冲30H-37H,用串口方式0 DIS: MOV SCON, #00H MOV R0, #30H MOV R7, #08H MOV DPTR, #TAB LP: MOV A, R0 MOVC A, A+DPTR MOV SBUF, A JNB TI,

3、$ CLR TI INC R0 DJNZ R7, LP RET TAB: DB 3FH,06H,CLK BIT P1.0 DAB BIT P1.1 DIS: MOV R0, #30H MOV R7, #08H MOV DPTR, #TAB LP: MOV A, R0 MOVC A, A+DPTR MOV R6, #08H,程序(2):8位显示:显示缓冲30H-37H, 用P1.0-CLK,P1.1-DAB,LP0: CLR CLK RRC A ;循环右移 MOV DAB, C SETB CLK DJNZ R6, LP0 INC R0 DJNZ R7, LP RET TAB: DB 3FH,06

4、H,典型静态显示接口图二,静态显示应用,静态显示应用,3. 动态扫描显示法接口设计,动态扫描显示 对于一组LED数码显示器需要两组信号来控制 段码:字段输出口输出的字形代码 位码:输出口的控制信号,选择第几位显示器工作 一位一位地显示器数码动态扫描显示 利用人的 “视觉暂留效应” 显示刷新的频率达到30Hz以上,否则会出现闪烁,例1 8255A作显示器接口,要求 6个LED采用共阳极连接 79H7EH:存放6位显示器的显示数据(09) 8255的A口:LED显示器段控 8255的C口:LED显示器位控,8255的口地址 A口:7FFCH B口:7FFDH,C口:7FFEH 控制寄存器:7FFF

5、H,段控,位控,共阳极,MODE: MOV A, #80H ;10000000B=80H A、C口基本输出 MOV DPTR, #7FFFH ;控制字 MOVX DPTR, A DISP: MOV R0, #30H ;显示缓冲 MOV R2, #01H ;6个显示器,位选点亮的初始码,程序,8255A初始化,共阳极,LOOP: MOV A, #0FFH ;灭码(共阳极) MOV DPTR, #7FFCH ;A口为段选 MOVX DPTR, A MOV A, R2 MOV DPTR, #7FFEH ;C口为位选 MOVX DPTR, A MOV A, R0 MOV DPTR, #TAB MOVC

6、 A, A+DPTR ;查段码 MOV DPTR, #7FFCH ; A口地址 MOVX DPTR, A ;向A口输出段码 ACALL DY1MS ;显示数据稳定,可保持亮度,8255的口地址 A口:7FFCH C口:7FFEH,INC R0 ;指向下一个显示缓冲 MOV A,R2 JB ACC.5, EXIT ;到第6个数码管了? RL A MOV R2, A AJMP LOOP EXIT: RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H DB 90H,88H,83H,0C6H,0A1H,86H,8EH,8CH,0BFH,0FFH,8

7、.1.2 键盘接口工作原理,键盘 人机交互的一个重要工具 两种基本类型 编码键盘 除了按键以外,还包括产生键码的硬件电路 使用方便、价格较高 非编码键盘 靠软件来识别键盘上的闭合键,由此计算出编码 几乎不需要附加硬件逻辑 在单片机应用系统中被普遍使用,1. 非编码键盘的工作原理,分类 硬件编码式键盘、二维直读式键盘 独立式键盘简单键盘、行列式键盘(矩阵式键盘),独立式按键 行列式键盘,0 1 1 1,1 0 1 1,1 1 0 1,1 1 1 0,2. 按键开关去抖动问题,按键抖动 在按下和释放时,按键有抖动 按键时间:100ms 前跳沿和后跳沿:20ms,抖动时间一般为510ms,A,为确保

8、:对键的一次闭合仅作一次处理 必须:去除抖动,3. 消除抖动不良后果的方法, 硬件去抖动 RC滤波电路去抖动电路简单实用,效果较好。 软件去抖动 检测到按键按下后,执行延时10ms子程序后再确认该键是否确实按下,消除抖动影响。,键处理的流程图,4. 独立式按键,处理过程 查键:扫描有否键按下,若无键按下,返回 有键按下软件去抖:延时20ms 找键 等键释放 软件去抖:延时20ms,例1,有键按下,返回键值;否则,返回0FFH,;准备输入,KE2: MOV B,#0 ;保存键值0 KE3: ANL A,#3FH RRC A ;(A.0)Cy JNC KE4 INC B SJMP KE3 KE4:

9、 ORL P1,#3FH MOV A,P1 ANL A,#3FH CJNE A,#3FH,KE4 MOV A,B ;返回键值 CJNE A,#06H,KE5 KE5: JC KE6 ;Cy=1,(A)=6 KE6: RET,KE: ORL P1,#3FH MOV A,P1 ANL A,#3FH ;P1.0P1.5 CJNE A,#3FH,KE1 SJMP KE7 ;无键按下 KE1: LCALL DL20 ;延时去抖 ORL P1,#3FH ;修改P1 MOV A,P1 ;读P1 ANL A,#3FH CJNE A,#3FH,KE2 SJMP KE7 ;误动作返回,5. 矩阵式键盘,工作方式

10、查询 定时 每隔一段时间对键盘扫描一次 利用单片机内部的定时器的定时器溢出中断。 中断,中断方式,0000,1 1 1 1,处理过程 键扫描 确认有无按键按下 去抖动 延时 按键的识别:确定键的行、列号 扫描算法、线反转法 键号的确定 等待键释放,扫描算法: 逐行置低电平,其余各行为高电平,检查各列电平的变化,如果某列线电平为低电平,即可确定此行列线交叉点处的按键被按下。 交换行列线的输出读取关系也可以实现。 线反转法: 首先,将行线编程为输入线,列线编程为输出线,然后使列线线全输出低电平,读取行线电平,行线从高电平转为低电平的行线为按下按键所在行; 然后,将列线编程为输入线,行线编程为输出线

11、,然后使行线全输出低电平,读取列线电平,列线从高电平转为低电平的列线为按下按键所在列。,例1 扫描算法,用8255A作单片机键盘接口, A口为输出口接键盘列线。C口为输入口接键盘的4条行线,8255A地址 A口:7FFCH B口:7FFDH C口:7FFEH 控制寄存器:7FFFH,子程序 KSI :判定有无闭合键的,KSI: MOV DPTR, #7FFCH ;A口地址 MOV A, #00H MOVX DPTR, A ;A口送00H INC DPTR INC DPTR ;C口地址 MOVX A, DPTR ;读C口 CPL A ANL A, #0FH ;屏蔽高四位 RET,0 0 0 0

12、0 0 0 0,有闭合键,则(A)0 无闭合, 则(A)=0,1 1 1 1,KEY1: ACALL KSI ;检查是否有键闭合 JNZ LK1 ;A非“0”则转移 ACALL DLY6 ;“延时6ms AJMP KEY1 LK1: ACALL DLY6 ;有键闭合二次延时 ACALL DLY6 ;共12ms去抖动 ACALL KSI ;再检查是否有键闭合 JNZ LK2 ;有键闭合转移到LK2 ACALL DLY6 AJMP KEY1 ;无键闭合,延时6ms后转KEY1,有闭合键,则(A)0 无闭合, 则(A)=0,LK2: MOV R2, #0FEH ;扫描初值送R2 MOV R4, #0

13、0H ;扫描列号送R4,第0列 LK4: MOV DPTR, # 7FFCH ;A口地址 MOV A, R2 MOVX DPTR, A ;扫描初值送A口 INC DPTR INC DPTR ;C口地址 MOVX A, DPTR ;读C口,有闭合键,则(A)0 无闭合, 则(A)=0,0 1 1 1 1 1 1 1,JB ACC.0, LONE ;ACC.0=1,第0行无键闭合,转LONE MOV A, #00H ;装第0行值 AJMP LKP LONE: JB ACC.1, LTWO ;ACC.1=1,第1行无键闭合,转LTWO MOV A, #08H ;装第1行值 AJMP LKP LTWO

14、: JB ACC.2, LTHR ;ACC.2=1,第2行无键闭合,转LTHR MOV A, #10H ;装第2行值 AJMP LKP LTHR: JB ACC.3, NEXT ;ACC.3=1,第3行无键闭合,转NEXT MOV A, #18H ;装第3行值 LKP: ADD A, R4 ;计算键码 PUSH ACC ;保护键码 LK3: ACALL DIR ;延时6ms ACALL KSI ;检查是否继续闭合,若闭合再延时 JNZ LK3 POP ACC ;若键起,则键码送A,扫描列号:R4,NEXT: INC R4 ;扫描列号加1 MOV A, R2 JNB ACC.7, KEND ;若

15、第7位=0,已扫完最高列则转KND RL A MOV R2, A AJMP LK4 ;进行下一列扫描 KEND: ;扫描完毕,扫描列号:R4,键盘/显示一体 8255接口图,小结,键盘接口工作原理 相应的程序设计方法,实验:键盘扫描显示,74LS245,双向总线收发器,74LS273,地址锁存器,例2 静态显示两位十进制数,MOV A, #35H ;将显示数的BCD码送累加器A MOV DPTR, #0FEFFH ;取显示口地址 MOVX DPTR, A ;送显示数,0,例3,DIR1: MOV A,30H ;读显示数 MOV B,#100 ;置除数 DIV AB ;产生百位显示数字 MOV

16、DPTR,#TAB MOVC A,A+DPTR ;读百位显示符(段码/字型码) MOV DPTR,#0DFFFH ;置74377(百位)地址 MOVX DPTR,A ;输出百位显示符(段码/字型码) MOV A,B ;读余数 MOV B,#10 ;置除数 DIV AB ;产生十位显示数字 MOV DPTR,#TAB ;置共阳字段码表首址 MOVC A,A+DPTR ;读十位显示符(段码/字型码) MOV DPTR,#0BFFFH ;置74377(十位)地址 MOVX DPTR,A ;输出十位显示符(段码/字型码),显示存在内RAM中30H开始的数据(255),MOV A,B ;读个位显示数字 MOV DPTR,#TAB ;置共阳字段码

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号