第五章 单片机键盘及显示器接口技术汇编
由于本案例中的4个按键分别对应4个不同的功能,且具有不同的按键值“keyval”,具体如 下:
按下K1按键时,keyval=1
按下K2按键时,keyval=2 按下K3按键时,keyval=3 按下K4按键时,keyval=4 本独立式键盘工作原理如下: (1)首先判断是否有按键按下。将接有4个按键的P1口低4位(P1.0~P1.3)写入“1”,使 P1口低4位为输入状态。然后读入低4位的电平,只要有一位不为“1”,则说明有键按下。 读取方法:
第五章 单片机键盘及显示器接口技术
键盘接口技术
LED显示技术
LCD显示技术 实例
5.1 键盘接口技术
键盘向单片机输入数据、命令等功能,是人机对话的主要手段。 键盘由若干按 键按照一定规则组成,每一个按键实质上是一个按键开关。
图5-1 键盘开关及其行线波形 按键的识别:按键闭合与否,反应在行线输出电压上就是高电平或低电平,对 行线电平高低状态检测,便可确认按键是否按下与松开。
8
【例5-1】单片机与4个独立按键k1~k4及8个LED指示灯的一个独立式键盘。4个 按键接在P1.0~P1.3引脚,P3口接8个LED指示灯,控制LED指示灯亮与灭,原理 电路见图5-24。当按下k1键,P3口8个LED正向(由上至下)流水点亮;按下k2 键,P3口8个LED全部点亮;按下k3键,P3口8个LED全部熄灭; k4键按下, 高、低4个LED交替点亮。
该行线为高电平,说明按键确实已经松开。
(2)键盘状态的监测方法:中断方式还是查询方式。 如第四章例4-2 (3)键盘编码方法:编码键盘和非编码键盘。
编码键盘是由硬件完成键盘识别功能的,它通过识别键是否按下以及所按下键的位置, 由编码电路产生一个唯一对应的编码信息(如ASCII码)。非编码键盘是由软件完成键盘识别功 能的,它利用简单的硬件和一套专用键盘编码程序来识别按键的位置,然后由CPU将位置码 通过查表程序转换成相应的编码信息。非编码键盘的速度较低,但结构简单的,并且通过软 件能为某些键的重定义提供很大的方便。
2
键盘接口设计应解决的问题: (1)开关状态的可靠输入:硬件去抖动、软件去抖动。
软件去抖动的基本思想:在检测到有键按下时,该键所对应的行线为低电平,执行一段 延时10ms的子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实 有键按下。当按键松开时,行线的低电平变为高电平,执行一段延时10ms 的子程序后,检测
P1=0xff;
if((P1&0xf0)!=0x0f);//读P1口低4位按键值,按位“与”运算后结果非0x0f, //表明低4位必有1位是“0”, 说明有键按下 (2)按键去抖动。当判别有键按下时,调用软件延时子程序,延时约10ms后再进行判别, 若按键确实按下,则执行相应的按键功能,否则重新开始进行扫描。 (3)获得键值。确认有键按下时,可采用扫描方法,来判哪个键按下,并获取键值。Βιβλιοθήκη (4)键盘控制程序的编写。
3
【例4-2】在AT89C51单片机的P1口上接有8只LED。程序运行后,8只发 光二极管流水点亮。按下按钮开关K1,低4位的LED和高4位的LED交替闪 烁,闪烁5次后, 8只发光二极管再次流水点亮。
4
#include<reg51.h> sbit K1=P3^2; unsigned char code play[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delay(unsigned int i) { unsigned int j; for(;i>0;i--) for(j=0;j<125;j++); } void Alter() { unsigned char n; for(n=0;n<5;n++) { P1=0x0f;delay(500); P1=0xf0;delay(500); } } void main() { unsigned int a; for(;;) { for(a=0;a<8;a++) { delay(500); P1=play[a]; } if(K1==0) Alter(); } }
6
5.1.1 独立式键盘接口技术 非编码键盘是利用按键直接与单片机相连接而成,常用在按键数量较少的场合。 该类键盘,系统功能比较简单,需要处理任务较少,成本低、电路设计简单。按下按 键的键号信息通过软件来获取。非编码键盘常见的有:独立式键盘和矩阵式键盘两种 结构。
图5-2 独立式键盘的接口电路(查询方式)
5
#include<reg51.h> unsigned char code play[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delay(unsigned int i) { unsigned int j; for(;i>0;i--) for(j=0;j<125;j++); } void main() { unsigned int a; for(;;) { EA=1; EX0=1; IT0=1; for(a=0;a<8;a++) { delay(500); P1=play[a]; } } } void int0() interrupt 0 using 1 { unsigned char n; for(n=0;n<5;n++) { P1=0x0f;delay(500); P1=0xf0;delay(500); } }
7
独立式键盘接口设计案例-查询方式 独立式键盘特点各键相互独立,每个按键各接一条I/O口线,通过检测I/O输入 线的电平状态,易判断哪个按键被按下。 图5-2为一独立式键盘,8个按键k1~k8分别接到单片机的P1.0~ P1.7引脚上, 图中上拉电阻保证按键未按下时,保证对应I/O口线为稳定高电平。当某一按键按 下时,对应I/O口线就变成低电平,与其他按键相连的I/O口线仍为高电平。 因此,只需读入I/O口线状态,判别是否为低电平,就很容易识别出哪个键被 按下。可见独立式键盘优点是电路简单,各条检测线独立,识别按键号的软件编写 简单。独立式键盘适于按键数目较少场合,如按键数目较多,要占用较多I/O口 线。 对图5-2所示独立式键盘,用查询方式实现键盘扫描,根据按下不同按键,对 其进行处理。扫描程序如下:
单片机 键盘 显示器接口-PPT课件
PC机除了主 机以外还需要 哪些部分呢?
单片机电路有时候也需要键盘、显示等外设。
1
键盘分类
6.3 键盘接口
编码式的:由其内部硬件逻辑电路自动产
生被按键的编码。使用方便,键盘码产生速 度快,占用CPU时间少,但对按键的检测与 消除抖动干扰是靠硬件电路来完成的,硬件 电路复杂、成本高。
键按下/释放判断
P1.0--1.3作为输入口 P1.4--1.7作为输出口
KS: MOV MOV MOV MOV ANL RET
A,#00H P1,A P1,#0FH A,P1
A,#0FH
P1.7
P1.6
P1.5
+5V
MCS-51 P1.4 0 1 2 3
P1.3 4 5 6 7
P1.2 8 9 10 11
中断扫描方式
为提高CPU工作效率,可采用中断扫描工作方 式。其工作过程如下:当无键按下时,CPU处理自 己的工作,当有键按下时,产生中断请求,CPU转 去执行键盘扫描子程序,并识别键号。
16
ME830 矩阵式摁键
0
1
2
3
4
5
6
7
8
9
A
b
C
d
E
F
P1口: 低4位作为列线 高4位作为行线
17
实验八源程序 线反转法
前沿抖动
后沿抖动
机械按键抖动时间在
5ms~10ms之间
断开
Q
消除方法:
闭合
Q
硬件方案——双稳态去抖电路
软件方案——延时10ms~20ms后再次判断
4
*
+5V
在此期间,CPU对一次 键入做多次键处理
单片机原理及接口技术单片机的开关检测键盘输入与显示的接口设计
单片机原理及接口技术单片机的开关检测键盘输入与显示的接口设计单片机是一种集成了中央处理器、存储器和输入/输出接口的微型电子计算机,其核心是一个集成电路芯片。
它简单、灵活,用于控制电子设备和执行各种任务。
单片机有很多种,其中C51单片机是一种非常常用的型号。
在C51编程中,开关检测、键盘输入和显示是非常常见的接口设计。
接下来,将分别介绍它们的原理和实现方法。
1.开关检测:开关检测是指通过单片机检测开关的状态,以实现对开关的控制。
常见的开关检测方法有两种,一种是使用外部电阻和开关,通过检测电流或电压来判断开关状态;另一种是使用内部电阻和开关,通过检测电阻的值来判断开关状态。
具体实现方法如下:a.外部电阻和开关:检测开关状态的方法是连接一个电阻到开关,并将另一端连接到单片机的输入引脚。
当开关打开时,电阻与单片机输入引脚之间形成一条路径,使得输入引脚接收到高电平信号;当开关关闭时,电阻与单片机输入引脚之间断开,使得输入引脚接收到低电平信号。
b.内部电阻和开关:单片机的引脚通常具有内部上拉或下拉电阻。
当引脚配置为输入模式时,可以选择使能内部上拉或下拉电阻。
通过连接一个开关到引脚,并将另一端连接到电源或地,从而完成开关状态的检测。
当开关打开时,引脚被拉高,输入引脚接收到高电平信号;当开关关闭时,引脚被拉低,输入引脚接收到低电平信号。
2.键盘输入:键盘输入是指通过单片机接收和处理来自键盘的输入信息。
键盘通常是一种矩阵按键结构,可以通过多行多列的方式进行编码。
键盘输入的实现需要通过接口电路将键盘连接到单片机,并在程序中编写相应的扫描算法。
具体实现方法如下:a.键盘连接方式:键盘的行和列线分别连接到单片机的输出和输入引脚上。
行线和列线可以使用独立的引脚,也可以使用矩阵开关编码的方式进行连接。
b.扫描算法:扫描算法是通过逐行扫描和逐列检测的方式来实现键盘输入的。
具体步骤如下:1)将所有行引脚置为高电平,所有列引脚配置为输入模式。
单片机原理及接口技术张毅刚第5章习题及答案
第5章 I/O口应用-显示与开关/键盘输入思考题及习题51.判断下列说法是否正确。
A.HD7279是用于键盘和LED数码管的专用接口芯片。
答:对B.LED数码管的字型码是固定不变的。
答:错C.为给扫描法工作的88非编码键盘提供接口电路,在接口电路中需要提供两个8位并行的输入口和一个8位并行的输出口。
答:错D.LED数码管工作于动态显示方式时,同一时间只有一个数码管被点亮。
答:对2.动态显示的数码管,任一时刻只有一个LED处于点亮状态,是LED的余辉与人眼的“视觉暂留”造成数码管同时显示的“假象”。
答:对3.为什么要消除按键的机械抖动软件消除按键机械抖动的原理是什么答:消除按键的机械抖动,避免由于机械抖动造成的对键盘是否按下误判。
软件消除按键机械抖动的原理是采用软件延时,躲过键盘按键的机械抖动期。
4.LED的静态显示方式与动态显示方式有何区别各有什么优缺点答:静态显示时,欲显示的数据是分开送到每一位LED上的。
而动态显示则是数据是同时送到每一个LED上,再根据位选线来确定是哪一位LED被显示。
静态显示亮度很高,但口线占用较多。
动态显示口线占用较少,但是需要编程进行动态扫描,适合用在显示位数较多的场合。
5.分别写出表5-1中共阴极和共阳极LED数码管仅显示小数点“.”的段码。
答: 80H(共阴极);7FH(共阳极)。
6. 已知8段共阴极LED数码显示器要显示某字符的段码为7DH(a段为最低位),此时显示器显示的字符为。
答:67.已知8段共阳极LED数码显示器要显示字符“6”(a段为最低位),此时的段码为。
答:82H8.当键盘的按键数目少于8个时,应采用式键盘。
当键盘的按键数目为64个时,应采用式键盘。
答:独立式,矩阵式9.已知8段共阳极LED数码管要显示字符“5”(a段为最低位),此时的段码为。
答:92H10. AT89S51单片机控制LCD显示英文字符或数字字符时,要把欲显示字符的码送给LCD控制模块。
单片机原理及接口技术(C51编程)单片机的开关检测、键盘输入 与显示的接口设计
5.2.1 开关检测案例1
图5-3 开关、LED发光二极管与P1口的连接
5.2.1 开关检测案例1
参考程序如下: #include <reg51.h> #define uchar unsigned char void delay( ) {
uchar i,j; for(i=0; i<255; i++) for(j=0; j<255; j++); }
5.1.2 I/O端口的编程举例
03 用循环左、右移位函数实现
OPTION
使用C51提供的库函数,即循环左移n位函数和循环右
移n位函数,控制发光二极管点亮。参考程序:
#include <reg51.h> #include <intrins.h> 函数的头文件 #define uchar unsigned char void delay( ) {
5.1.2 I/O端口的编程举例
#include <reg51.h> #define uchar unsigned char uchar tab[ ]={ 0xfe , 0xfd , 0xfb , 0xf7 , 0xef , 0xdf , 0xbf , 0x7f , 0x7f , 0xbf , 0xdf , 0xef , 0xf7 , 0xfb , 0xfd , 0xfe }; /*前8个数据为左移点亮 数据,后8个为右移点亮数据*/ void delay( ) {
// P1口为输入 // 读入P1口的状态,送入state // 屏蔽P1口的高6位
5.2.2 开关检测案例2
switch (state) {
// 判P1口低2位开关状态
单片机原理与接口技术(第5章)
第5章 单片机的C语言程序设计
(1)指针变量的定义 C语言规定,所有的变量在使用之前必须定义,以确定其
类型。指针变量也不例外,由于它是用来专门存放地址的, 因此要将它定义为“指针类型”。
格式:类型标识符 *指针变量名; 例:int *i;
float *pointer; 注意:指针变量名前面的“*”号表示该变量为指针变量,但
(3)逻辑运算符 优先级: ! → &&,| | 结合性:左结合 结果:结果为逻辑值,即真或假。以1代表真,以0代表假。 【例5.16】若a=2,b=3,则
!a 因为a=2为真,所以表达式值为0 a | | b 因为a,b为真,所以两者相或也为真, 故表达式值为1 !a&&b 因为!优先级高于&&,所以!a值为0,而 0&&b值为0 (4)位运算符 说明:① 位运算可用于改变8051片内外I/O口某一位的值。 ② 位运算符只能是整型或字符型数,不能为实型数据。 ③ 左移“<<”或“右移”>>后,空白位补0,而溢出 的位舍弃。
② 间接访问:通过存放变量地址的变量去访问变量。 使用间接访问,则为:x=*i_pointer; /* 先从指针变量 i_pointer中取出i变量的指针(地址)2000,然后从地址 2000的内存单元中取出i变量的值3赋给了x */
对于上图中,在完成了指针变量的定义和引用后,即: int *i_pointer,int i; i_pointer=&i; 则在进行指针运算时,有:
第5章 单片机的C语言程序设计
格式:数据类型 [存储器类型1] * [存储器类型2] 标示符 说明:[存储器类型1]定义该指针所指向数据的存储类型, [存储器类型2]定义指针标示符的存储类型,此两者可省略。 (1)通用指针
单片机实用接口技术键盘接口技.pptx
LED显示器接口设计
• LED的结构 • LED静态显示 • LED动态显示
1. LED静态显示方式 各数码管的共阴极(或共阳极)
连接在一起并接地(接+5V),每个数 码管的各段分别与一个8位的锁存器输 出相连,这样当锁存器存入一个数据后, 数码管将始终显示此数据。
OE为0时,D0~D7呈高阻态。 START:启动信号,下降沿启动。 EOC:转换结束信号。该信号从启动信号上升沿开始经1、8个
时钟周期后由高电平变为低电平,表征A/D转换正在 进行;64个时钟周期后(每位转换需8个时钟周期)由低
CLK:时钟输入。时钟频率≤640kHz。 、:基准电压输入.基准电压必须满足: 0≤<≤Vcc
一般I/O接口不能提供这么大的电流,需要 使用驱动电路。常用的有 ULN2003A,7 段驱动, ULN2803 8段驱动。
特点: 1。 最大驱动电流可达500ma 2。反相驱动 3。需要限流电阻,数码管越多,限流电
A/D转换器的接口设计
1。根据要求的精度选择位数。8,12,16位 2。根据信号性质选择转换速度。
;判断有无键按下 ;有键按下
;去抖延时 ;再判断有无键按下 ;有键按下,确定按键位置
POP
A
RET
; 判断有无键按下子程序, 有键按下时,A的值不为0
KEY_ON:
MOV
A, #00H
MOV
DPTR, #0700H ;PA口
MOVX
@DPTR, A
MOV
DPTR, #0702H
MOVX
A,@DPTR
中断服务程序中读转换结果的程序段如下:
单片机原理及接口技术(C51编程)(第2版)-习题答案 - 第5章习题解答
第5章思考题及习题5参考答案一、填空1. AT89S51单片机任何一个端口要想获得较大的驱动能力,要采用电平输出。
答:低2.检测开关处于闭合状态还是打开状态,只需把开关一端接到I/O端口的引脚上,另一端接地,然后通过检测来实现。
答: I/O端口引脚的电平3. “8”字型的LED数码管如果不包括小数点段共计段,每一段对应一个发光二极管,有和两种。
答:7,共阳极,共阴极4. 对于共阴极带有小数点段的数码管,显示字符“6”(a段对应段码的最低位)的段码为,对于共阳极带有小数点段的数码管,显示字符“3”的段码为。
答:7DH,B0H5. 已知8段共阳极LED数码显示器要显示某字符的段码为A1H(a段为最低位),此时显示器显示的字符为。
答:d6. LED数码管静态显示方式的优点是:显示闪烁,亮度,比较容易,但是占用的线较多。
答:无,较高,软件控制,I/O口7. 当显示的LED数码管位数较多时,一般采用显示方式,这样可以降低,减少的数目。
答:动态,成本,I/O端口8. LCD 1602是型液晶显示模块,在其显示字符时,只需将待显示字符的由单片机写入LCD 1602的显示数据RAM(DDRAM),内部控制电路就可将字符在LCD上显示出来。
答:字符,ASCII码9. LCD 1602显示模块内除有字节的 RAM外,还有字节的自定义,用户可自行定义个5×7点阵字符。
答:80,显示数据,64,字符RAM,810.当按键数目少于8个时,应采用式键盘。
当按键数目为64个时,应采用式键盘。
答:独立,矩阵11.使用并行接口方式连接键盘,对独立式键盘而言,8根I/O口线可以接个按键,而对矩阵式键盘而言,8根I/O口线最多可以接个按键。
答:8,6412.LCD 1602显示一个字符的操作过程为:首先,然后,随后,最后。
答:读忙标志位BF,写命令,写显示字符,自动显示字符二、判断对错1.P0口作为总线端口使用时,它是一个双向口。
键盘与显示器接口技术
今天我们学习键盘与显示器接口技术,先来看键盘接口及处理程序。
(1)键盘是一组按键的集合,它是最常用的单片机输入设备,操作人员可以通过键盘输入数据或命令,实现简单的人机通讯。
键是一种常开型按钮开关,平时键的二个触点处于断开状态,按下键时它们才闭合。
键盘分编码和非编码键盘。
键盘上闭合键的识别由专用的硬件译码器实现并产生键编号或键值的称为编码键盘,如BCD码键盘,ASCII码键盘等;靠软件识别的称为非编码键盘。
在单片机组成的测控系统及智能化仪器中,用得最多的是非编码键盘。
所以我们着重讨论非编码矩阵式键盘原理。
矩阵式键盘适用于按键数量较多的场合,它由行线和列线组成,按键位于行、列的交叉点上。
一个3*3的行、列结构可以构成一个由9个按键的键盘。
同理一个4*4的行、列可以构成一个含有16个按键的键盘等等。
很明显,在按键数量较多的场合,矩阵键盘与独立按键键盘相比,要节省很多的I/O口。
矩阵键盘的按键设置在行、列线的交点上,行、列线分别连接到按键开关的两端。
列线通过上拉电阻接到+5V。
平时无按键动作时,列线处于高电平状态,而当由按键按下时,列线电平状态将由与此列线相连的行线电平决定。
行线电平如果为低,则列线电平为低;行线电平如果为高,则列线电平亦为高。
这一点是识别矩阵键盘按键是否被按下的关键所在。
该电路中还有一个与门,这个与门用来产生中断信号,当键盘中没有键按下时,所有行线的输出都应为低电平,以区别于列线状态,当矩阵键盘中任何一只键按下时,与门输出由高电平变为低电平,向CPU 申请中断,由于矩阵键盘中行、列线为多键共用,各按键均影响该键所在行和列的电平。
因此各按键彼此将相互发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。
下面我们以一个4乘4键的键盘为例来说明按键是如何被识别出来的,在开始讨论问题之前,我们先要强调一个事实,用户的按键速度相对于单片机的运行速度来说是相当慢的,在用户按下键到释放键这一段时间内,单片机有足够多的时间运行键盘识别程序。
显示和键盘接口技术详解
现在是1页\一共有25页\编辑于星期六
(优选)显示和键盘接口技术
现在是2页\一共有25页\编辑于星期六
5.1.1 LED数码管的结构及原理
一、LED数码管的结构 在单片机系统中,经常采用LED数码管来显示单片机系
统的工作状态、运算结果等各种信息,LED数码管是单片机 人机对话的一种重要输出设备。
现在是16页\一共有25页\编辑于星期六
5.1.3 LED数码管动态显示
请大家思考:如果在LED数码管动态显示程序中,把延 时50ms函数修改为延时1s,LED数码管显示会有什么变化, 为什么?
答案是6个数码管上轮流显示“012345”,间隔时间为 1s,不能稳定显示。具体原因是人的眼睛存在“视觉驻留效 应”,必须保证每位数码管显示间断的时间间隔小于眼睛的 驻留时间,才可以给人一种稳定显示的视觉效果,如果延时 时间太长,每位数码管闪动频率太慢,就不能产生稳定的显 示效果。
现在是6页\一共有25页\编辑于星期六
5.1.2 LED数码管静态显示
以下是两位数码管静态显示的接口电路,两个共阳极数 码管的段码分别由单片机的P1和P2口来控制,com公共端都 接在+5V电源上。
现在是7页\一共有25页\编辑于星期六
5.1.2 LED数码管静态显示
静态显示是指当数码管显示某一字符时,相应的发光二 极管恒定导通或恒定截止。这种显示方式的各位数码管的公 共端恒定接地(共阴极)或+5V电源(共阳极)。每个数码管的8 个段控制引脚分别与一个8位的端口相连。只要I/O端口有显 示字型码输出,数码管就显示给定的字符,并保持不变,直 到I/O端口输出新段码。
现在是25页\一共有25页\编辑于星期六
单片机原理及应用键盘与显示器接口
按键识别子程序
KEY: MOV DPTR, #7F00H ;8155命令口地址
MOV A, #03H
;置PA、PB口为输出,
MOVX @DPTR,A ;PC口为输入
MOV R4,#00H
;0→键号寄存器R4
MOV R2,#01H
;扫描模式01H→R2
KEY1:MOV DPTR,#7F01H
MOV A,R2
2、串键保护
由于操作不慎,可能会造成同时有几个键被按下,这种情况 称为串键。有三种处理串键的技术:两键同时按下、n键同时 按下和n键锁定。
“两键同时按下”技术是在两个键同时按下时产生保护作用。 最简单的办法是当只有一个键按下时才读取键盘的输出,最后 仍被按下的键是有效的正确按键。当用软件扫描键盘时常采用 这种方法。另一种方法是当第一个按键未松开时,按第二个键 不产生选通信号。这种方法常藉助硬件来实现。
典型非编码键盘结构
非编码键盘大都采用按行、列排列的矩阵开关 结构,这种结构可以减少硬件和连线。
矩阵键盘接口
行扫描法识别按键
行扫描法是采用步进扫描方式,CPU通过输出口 把一个“步进的0”逐行加至键盘的行线上,然后通过 输入口检查列线的状态。由行线列线电平状态的组合 来确定是否有键按下,并确定被按键所处的行、列位 置。
1、反弹跳
当按键开关的触点闭合或断开到其稳定,会产生一个短暂的抖 动和弹跳,如下图所示,这是机械式开关的一个共同性问题。 消除由于键抖动和弹跳产生的干扰可采用硬件方法,也可采用 软件延迟的方法。
采用RS触发器实现硬件反弹跳
当键数较多时经常用软件 延时的方法来反弹跳,如 流程图所示。当检出有键 按下后,先执行一个反颤 延时20ms的子程序,待前 沿弹跳消失后再转入键闭 合CLOSE子程序。然后再 判断此次按键是否松开, 如果没有,则进行等待。 若已松开,则又执行一次 延时20ms的子程序以消除 后沿弹跳的影响,再去检 测下次按键的闭合。
