单片机实验.docx

上传人:b****6 文档编号:6710545 上传时间:2023-01-09 格式:DOCX 页数:32 大小:179.41KB
下载 相关 举报
单片机实验.docx_第1页
第1页 / 共32页
单片机实验.docx_第2页
第2页 / 共32页
单片机实验.docx_第3页
第3页 / 共32页
单片机实验.docx_第4页
第4页 / 共32页
单片机实验.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

单片机实验.docx

《单片机实验.docx》由会员分享,可在线阅读,更多相关《单片机实验.docx(32页珍藏版)》请在冰豆网上搜索。

单片机实验.docx

单片机实验

第七章键盘及其接口

§7.1单片机与键盘接口

教学目的:

1、熟悉键盘接口的特点及应用

2、掌握键盘的结构

3、掌握扫描法检测按键的编程方法

教学重点:

键盘的结构

教学难点:

扫描法检测按键

教学过程:

组织教学:

授课课时:

(2课时)

扳书课题:

§7.1单片机与键盘接口

知识回顾:

1、可编程并行接口芯片8255有几个I/O口?

2、几种工作方式?

由谁来确定?

引入新课:

一、按键操作存在的问题——键抖动

键在电路中的连接如图8-15所示。

当操作键时.其一对触点闭合或断开,引起A点电压的变化。

A点电压就用来向单片机输入键的通断状态。

由于机械触点的弹性作用,触点在闭合和断开瞬间的电接触情况不稳定,造成了电压信号的抖动现象,如图8-15所示。

键的抖动时间一般为5~10ms。

这种现象会引起单片机对于一次键操作进行多次处理,因此须设法消除键接通或断时的抖动现象。

去抖动的方法有硬件和软件两种。

硬件去抖动和软件去抖动。

1、硬件消除抖动

2、软件去抖动

采用软件去抖动的方法是在单片机检测到有键按下时执行一个10~20ms的延时程序后再次检查该键电平是否仍保持闭合状态.如保持闭合状态,则确认为有键按下,否则从头检测。

这样就能消除键的抖动影响。

二、按键分类

1、独立式键盘的结构

独立式键盘的结构如图l所示,这是最简单的键盘结构形式,每个按键的电路是独立的,都有单独一根数据线输出键的通断状态。

单片机一条I/O口线对应一个按键。

 

图1独立式键盘的结构

2、矩阵式键盘

若干I/O口线作行线;若干I/O口线作列线,在每个行列交点设置按键组成。

如图2所示。

图2矩阵式键盘结构

三、按键监测方法

1、监测有无键按下

2、按键的识别(哪一个键被按下)

扫描法——有键按下时,读入行或列值,则为0值的行列交点的键便是。

下面以图2为例讲解扫描法的程序。

小结:

(略)

思考题:

1、键盘的特点及健的消抖动方法

2、按键的种类及扫描方式

3、按键的监测。

 

§7.2键盘的扩展方法

教学目的:

1、熟悉键盘接口

2、掌握串行口扩展按键的方法

3、掌握并行口扩展按键的方法

4、掌握扫描法检测按键的编程方法

教学重点:

行列式键盘扩展

教学难点:

扩展按键的工作原理及程序编写

教学过程:

组织教学:

授课课时:

(2课时)

扳书课题:

§7.2键盘的扩展方法

知识回顾:

1、可编程并行接口芯片8255有几个I/O口?

2、键盘接口的基本方法是什么?

引入新课:

键盘接口的扩展

在第七章我们已经了解到,通过串行口和可编程控制芯片可以扩展I/O口,同样键盘接口也可通过扩展的I/O口连接,举例说明如下。

一、串行口扩展键盘接口

图8-7是通过串行口扩展的行列式键盘接口。

不过需注意的是,采用串口扩展键盘接口时,需要用到串-并转换器件,图中采用的是串行输入、并行输出TTL器件74HC164芯片。

本图中,串行输出数据为按键扫描信号(列信号),扫描时,扫描信号按先低位后高位从串口输出,低位对应74HC164的Q7位,高位对应Q0位;P1.0、P1.1为行输入信号。

键值由列和行共同决定,因不在同一I/O口,故不能用8位数据表示。

若把P1.0线上的8个按键编码为:

00H、01H、02H、03H、04H、05H、06H、07H,P1.1线上的8个按键编码为08H、09H、0AH、0BH、0CH、0DH、0EH、0FH,识别键盘编码的程序(结果存R5中)如下:

 

图8-7串行口扩展的行列式键盘接口电路

ORG0000H

JMPMAIN

ORG0050H

MAIN:

MOVSCON,#00H;串行口方式0

MOVR4,#00H;列计数

MOVA,#00H;初始化扫描线

MOVSBUF,A;发送

JNBTI,$

CLRTI

FIND:

JNBP1.0,KEY1;P1.0=0,P1.0线上有键按下

JNBP1.1,KEY1;P1.1=0,P1.1线上有键按下

JMPFIND;无键按下,继续查找

KEY1:

CALLD10MS;迟时10ms,消除抖动

JNBP1.0,KEY2

JNBP1.1,KEY2

JMPFIND

KEY2:

MOVR2,#7FH;首列扫描字,Q0输出为0

MOVA,R2

KEY6:

MOVSBUF,A;发送列扫描字

JNBTI,$

CLRTI

JBP1.0,KEY3;检查P1.0线上有无按键按下

MOVR5,#00H;P1.0线上首个按键编码

JMPKEY4;确定键号

KEY3:

JBP1.1,KEY5;检查P1.1线上有无按键按下

MOVR5,#08H;P1.0线上首个按键编码

KEY4:

ADDA,R4;首键号加列号得键编码

MOVR5,A;编码保存至R5

;键处理程序略

KEY5:

INCR4;指向下一列

MOVA,R2;取扫描字

JNBACC.0,KEY7;判断是否扫描完

RRA;扫描下一列

MOVR2,A;暂存扫描字

JMPKEY6

KEY7:

JMPFIND;扫描完成,继续下一次按键扫描

D10MS:

;延时10ms程序略

RET

END

二、并行口扩展键盘接口

图8-8是利用可编程控制器8255扩展的行列式键盘接口电路。

该图利用8255的两个端口PA和PB,PB作为扫描信号输出口,PA作为信号接收口(回扫信号输入口)扩展的32个按键接口电路。

当PB口输出全部为低电平时,若无键按下,则PA口输入都是高电平;若有键按下,PA口必有一个输入为低电平。

按键的识别采用逐列扫描键盘方法,即让PB0先为低,PB1到PA3为高,检测PA口输入是否有为低电平的。

如果有,则闭合键在第一列上,如果无,则再使PB1为低,PB口其它输出线均为高,依次扫描下去,找到按键所在的列,同时根据检测到的PA口输入数据判断哪一位为低,便可知道键在哪一行上。

根据图中的连接,可得知PA口的地址为7CFFH,PB口的地址为7DFFH,控制口的地址为7FFFH,下面给出识别按键的子程序。

图8-88255扩展I/O口组成的行列式键盘

程序设计思路:

首先判断是否有键按下,如果有,延时一段时间,再判断是否有键按下,其目的是为了消除电路抖动和消除干扰信号。

一般按键的时间至少有十几毫秒,而干扰信号的时间都很短。

只有两次判断都有键按下,才认为是真有键按下。

当确认有键按下后,再逐列扫描判断按键的位置。

按键识别子程序如下(键号存入R5):

KEY:

ACALL

KS

;有键按下吗?

JZ

NK

;无键按下返回

ACALL

D10MS

;调用延时程序,消除抖动

ACALL

KS

;再次判断是否有键按下

JZ

NK

;无键按下返回

MOV

A,#0FEH

;列扫描信号,从PB0开始

MOV

R4,#00H

;列计数器

MOV

R5,#00H

;键号初值

K1:

MOV

R2,A

;列扫描控制字暂存R2

ACALL

KS

;扫描键盘

JNZ

FIND

;找到键转移

INC

R4

;列计数器加1,指向下一列

MOV

A,R2

;取列扫描控制字

RL

A

;列扫描信号左移一位

CJNE

A,#0EFH,K1

;4列扫描完?

CLR

F0

;置没找到标志

SJMP

NK

FIND:

CLR

C

;有键按下,求出键编码

K2:

RRC

A

;判断该列键位置

INC

R5

JNC

K2

MOV

A,R4

;列号送A,然后乘8

RL

A

RL

A

RL

A

ADD

A,R5

;键编码值

MOV

R5,A

;保存在R5

NK:

RET

;判断是否有键按下子程序

KS:

MOV

DPTR,#7FFFH

;控制口地址送DPTR

MOV

A,#90H

;A口方式0输入,B口方式0输出

MOVX

@DPTR,A

MOV

DPTR,#7DFFH

;B口地址送DPTR

MOV

A,#00H

MOVX

@DPTR,A

;送列扫描信号,PB0~PB3为0

MOV

DPTR,#7CFFH

;A口地址送DPTR

MOVX

A,@DPTR

;读行回扫信号

CPL

A

;求反,A=0,无键,否则有键按下

RET

小结:

(略)

思考题:

1、键盘扩展有几种方法?

2、串行扩展与并行扩展键盘的主要区别是什么

3、扩展键盘如何编写程序

 

§7.2单片机与显示器接口

教学目的:

1、熟悉发光二极管、LED、数码LED、点阵LED、LCM、LCD显示原理

2、掌握数码LED与单片机的接口方式

3、掌握静态显示方式与动态显示方式

3、掌握显示扫描的编程方法

教学重点:

LED的静态显示和动态显示方式

教学难点:

显示程序的编写

教学过程:

组织教学:

授课课时:

(2课时)

扳书课题:

§7.2单片机与显示器接口

引入新课

一、常用的显示器件

1、CRT显示器

2、LCD显示器

3、LED显示器

二、LED显示器件

1、单个发光二极管

2、七段数码管

三、LED显示方式

有共阴极和共阳极两种。

1)字形码表的产生,P192表8-1

2)显示方式:

静态显示

在静态显示方式下,每一位显示器的字段控制线是独立的。

当显示某一字时,该位的各字段线和字位线的电平不变,也就是各字段的亮灭状态不变。

静态显示方式下LED显示器的电路连接方法是:

每位LED的字位控制线门共阴极点或共阳极点连在一起,接地或接+SV;其字段控制线(a~dP)分别接到一个8位口。

动态显示

利用人眼的视觉暂留效应。

分时显示不同的数码管。

四、LED显示器接口方法

1、硬件译码法

举例:

现要求将单片机内存30H-33H中存放的四个数分高低位分别用8个数码管显示出来。

采用4线---7线译码芯片MC14495实现单片机与数码管之间的连接。

如图1所示。

1)硬件连接

2)控制软件

2、软件译码法

举例1

利用8255A实现静态显示方式将8031单片机内部RAM区30H—32H内的三个数在数码管中显示出来。

(1)硬件连接如图2所示。

图2

(2)控制软件

现要求利用图84所示电路编一程序,将8031片内存储器30H、3lH、32H单元的数值(十六进制数0~F之间)分别显示于0#、1#、2#LED显示器上。

所编程序采用查表法。

将对应于0~F这16个数码的字段码依次存放在以TABLE为起始地址的存储单元中。

然后根据地址指针RI的内容查表得到对应的字段码,送相应的UO口输出。

图2中8255作于方式0输出,A口、B口、C口和控制口的地址为7F00H~7F03H。

程序如下:

举例2

利用8155实现动态显示方式,显示2005年5月16日。

(1)硬件设计

连接如图3所示。

图中采用了8155作为单片机与数码管的接口芯片。

同时考虑到有八个数码管,故采用了两片7406和三片75452作为驱动。

图3

(2)软件设计

小结:

(略)

思考题:

1、8155有哪些功能?

有几个并行I/O口?

2、如何去除按键抖动?

按键查询有几种方法?

§7.3可编程8279显示芯片应用

教学目的:

1、熟悉8279的特点

2、掌握8279的功能及引脚

3、掌握8279的显示方式及可编程控制

4、掌握8279的初始化编程

教学重点:

8279的显示方式及编程控制

教学难点:

8279的命令及控制方法

教学过程:

组织教学:

授课课时:

(2课时)

扳书课题:

§7.3可编程8279显示芯片应用

知识回顾:

1、静态显示方式与动态显示方式的区别?

2、静态显示方式的优缺点、动态显示方式的优缺点?

引入新课:

一、可编程键盘/显示并行接口芯片8279

INTEL8279芯片是一种通用可编程的键盘、显示接口器件,单个芯片就能完成键盘输入和LED自动显示控制两种功能。

内含8个字符的键盘输入FIFO,16个字节的显示RAM。

键盘部分提供的扫描方式,可以和具有64个按键或传感器的阵列相连。

能自动清除开关抖动以及N键同时按下的保护。

显示部分按扫描方式工作,可以显示8或16位LED数码管。

1、8279的引脚及功能

8279芯片采用双列直插式封装,各引脚排列如图8-22。

其中:

A0:

地址输入线,A0=0为数据口地址,A0=1为命令/状态口地址。

D7~D0:

双向数据线,三态,用于与CPU之间的命令和数据传送。

CLK:

时钟输入线,用于8279的时钟输入,以产生内部定时的时钟脉冲,其工作频率为100kHz,一般由CPU的ALE信号分频得到。

RST:

复位输入线,高电平有效。

片选输入线,低电平有效。

读信号输入控制线,低电平有效。

写信号输入控制线,低电平有效。

INT:

中断请求输出线,高电平有效。

在键盘工作方式下,当FIFO/传感器RAM中有数据时,输出高电平,在FIFO/传感器RAM每次读出时,下降为低电平,若在RAM中还有信息,则又变为高电平。

在传感器工作方式中,每当探测到传感器信号变化时,中断线就变为高电平。

SL0~SL3:

扫描输出线,用来扫描按键开关、传感器阵列和显示。

RL0~RL7:

回送输入线,按键或传感器扫描时,回送扫描状态。

其内部有上拉电阻,使之保持为高电平,当有按键闭合时,对应的回送输入线变为低电平。

SHIFT:

换档输入线,高电平有效,用于键盘上下档功能设置。

在传感器方式时,输入无效。

CNTL:

在键盘方式时,常用来扩展键开关的控制功能。

OA3~OA0及OB3~OB0:

A组显示输出线和B组显示输出线,输出与扫描线SL0~SL3同步,可被独立控制输出,也可看成一个8位端口控制输出。

消隐信号输出线,低电平有效,在显示信息切换时,不使切换信息输出至LED上显示。

VCC:

+5V电源输入线。

    VSS:

地线输入线。

2、命令及命令格式

8279有三种工作方式:

键盘工作方式、显示工作方式和传感器工作方式。

键盘工作方式:

双键互锁和N键轮回。

双键互锁是指当有两个以上按键同时按下时,只能识别最后一个被释放的按键,并把其键值送入内部FIFORAM中。

N键轮回是指当有多个按键同时按下时,所有按键的键值均可按扫描顺序依次存入FIFORAM中。

显示工作方式:

是指CPU输入至8279内部FIFORAM的数据的输出格式,有8个字符左端入口显示、16个字符左端入口显示、8个字符右端入口显示、16个字符右端入口显示四种方式。

传感器方式:

是指扫描传感器阵列时,一旦发现传感器的状态发生变化就置位INT向CPU申请中断。

选择不同的工作方式均是通过CPU对8279送入命令来进行控制。

8279共有8种命令,命令寄存器为8位,其中D7~D5为命令特征位,D4~D0为命令的控制位。

CPU对8279写入的命令数据为命令字,读出的数据为状态字。

8279共有八条命令,其功能及命令字格式分述如下。

(1)键盘/显示方式设置命令字

命令格式:

D7D6D5D4D3D2D1D0

000DDKKK

其中:

D7、D6、D5=000为方式设置命令特征位。

DD(D4、D3):

用来设定显示方式,如表8-5所示。

表8-5显示方式选择

D4

D3

显示方式

0

0

8个字符显示,左端入口

0

1

16个字符显示,左端入口

1

0

8个字符显示,右端入口

1

0

16个字符显示,右入口

所谓左入口,即显示位置从最左一位(最高位)开始,以后逐次输入的显示字符逐个向右顺序排列;所谓右入口,则是显示位置从最右一位(最低位)开始,以后逐次输入显示字符时,已有的显示字符依次向左移动。

KKK(D2、D1、D0):

用来设定七种键盘/显示扫描方式,如表8-6所示。

表8-6键盘/显示扫描方式

D2

D1

D0

键盘/显示扫描方式

0

0

0

编码扫描键盘,双键锁定

0

0

1

译码扫描键盘,双键锁定

0

1

0

编码扫描键盘,N键轮回

0

1

1

译码扫描键盘,N键轮回

1

0

0

编码扫描传感器矩阵

1

0

1

译码扫描传感器矩阵

1

1

0

选通输入,编码显示扫描

1

1

1

选通输入,译码显示扫描

(2)时钟编程命令

命令格式:

D7D6D5D4D3D2D1D0

001PPPPP

其中:

D7、D6、D5=001为时钟命令特征位。

PPPPP(D4、D3、D2、D1、D0)用来设定外部输入CLK时钟脉冲的分频系数N。

N取值范围为2~31。

如CLK输入时钟频率为2MHZ,PPPPP应被置为10100(N=20),才可获得8279内部要求的100KHZ的时钟频率。

(3)读FIFO/传感器RAM命令

命令格式:

D7D6D5D4D3D2D1D0

010AIXAAA

其中:

D7、D6、D5=010为读FIFO/传感器RAM命令特征位。

该命令字只在传感器方式时使用。

在CPU读传感器RAM之前,必须用这条命令来设定所读传感器RAM中的地址。

AAA(D2、D1、D0)为传感器RAM中的八个字节地址。

AI(D4)为自动增量特征位。

当AI=1时,每次读出传感器RAM后地址自动加1使地址指向下一个存储单元。

这样,下一个数据便从下一个地址读出,而不必重新设置读FIFO/传感器RAM命令。

在键盘工作方式中,由于读出操作严格按照先入先出顺序,因此,不需使用这条命令。

(4)读显示RAM命令

命令格式:

D7D6D5D4D3D2D1D0

011AIAAAA

其中:

D7、D6、D5=011为读显示RAM命令字的特征位。

该命令字用来设定将要读出的显示RAM地址。

AAAA(D3、D2、D1、D0)用来寻址显示RAM中的存储单元。

由于位显示RAM中有16个字节单元,故需要4位寻址。

AI(D4)为自动增量特征位。

AI=1时,每次读出后地址自动加1,指向下一地址。

(5)写显示RAM命令

命令格式:

D7D6D5D4D3D2D1D0

100AIAAAA

其中:

D7、D6、D5=100为写显示RAM命令字的特征位。

在写显示RAM之前用这个命令字来设定将要写入的显示RAM地址。

AAAA(D3、D2、D1、D0)为将要写入的显示RAM中的存储单元地址。

AI(D4)为自动增量特征位。

AI=1时,每次写入后地址自动加1,指向下一次写入地址。

(6)显示禁止写入/消隐命令

命令格式:

D7D6D5D4D3D2D1D0

101XIW/AIW/BBL/ABL/B

其中:

D7、D6、D5=101为显示禁止写入/消隐命令特征位。

IW/A、IW/B(D3、D2)为A、B组显示RAM写入屏蔽位。

当A组的屏蔽位D3=1时,A组的显示RAM禁止写入。

因此,从CPU写入显示器RAM数据时,不会影响A的显示。

这种情况通常在采用双4位显示器时使用。

因为两个四位显示器是相互独立的。

为了给其中一个四位显示器输入数据而又不影响另一个四位显示器,因此必须对另一组的输入实行屏蔽。

BL/A、BL/B(D1、D0)为消隐设置位。

用于对两组显示输出消隐。

若BL=1,对应组的显示输出被消隐。

当BL=0,则恢复显示。

(7)清除命令

命令格式:

D7D6D5D4D3D2D1D0

110CDCDCDCFCA

其中:

D7、D6、D5=110为清除命令特征位。

清除显示RAM方式如表8-7所示。

表8-7显示RAM清除方式

D4

D3

D2

清除方式

1

0

×

将全部显示RAM清为00H

1

1

0

将全部显示RAM置为20H,A组输出0010,B组输出0000

1

1

1

将全部显示RAM置为FFH

0

×

×

D0=0不清除,D0=1按上述方法清除

CF(D1)用来置空FIFO存储器,当CF=1时,执行清除命令后,FIFORAM被置空,使INT输出线复位。

同时,传感器RAM的读出地址也被置为0。

CA(D0)为总清的特征位。

它兼有CD和CF的联合效能。

在CF=1时,对显示的清除方式由D3、D2的编码决定。

显示RAM清除时间约需160us。

在此期间状态字的最高位Du=1,表示显示无效。

CPU不能向显示RAM写入数据。

(8)结束中断/错误方式设置命令

命令格式:

D7D6D5D4D3D2D1D0

111EXXXX

其中:

D7、D6、D5=111为该命令的特征位。

此命令有两种不同的作用。

①作为结束中断命令。

在传感器工作方式中使用。

每当传感器状态出现变化时,扫描检测电路就将其状态写入传感器RAM,并启动中断逻辑,使INT变高,向CPU请求中断,并且禁止写入传感器RAM。

此时,若传感器RAM读出地址的自动递增特性没有置位(AI=0),则中断请求INT在CPU第一次从传感器RAM读出数据时就被清除。

若自动递增特征已置位(AI=1),则CPU对传感器RAM的读出并不能清除INT,而必须通过给8279写入结束中断/错误方式设置命令才能使INT变低。

因此,在传感器工作方式中,此命令用来结束传感器RAM的中断请求。

②作为特定错误方式设置命令。

在8279已被设定为键盘扫描N键轮回方式以后,如果CPU给8279又写入结束中断/错误方式设置命令(E=1),则8279将以一种特定的错误方式工作。

这种方式的特点是:

在8279的消抖周期内,如果发现多个按键同时按下,则FIFO状态字中的错误特征位S/E将置1,并产生中断请求信号和禁止写入FIFORAM。

上述八种用于确定8279操作方式的命令字皆由D7D6D5特征位确定,输入8279后能自动寻址相应的命令寄存器。

因此,写入命令字时唯一的要求是使数据选择信号A0=1。

3、状态字与状态格式

8279的FIFO状态字,主要用于键盘和选通工作方式,以指示FIFORAM中的字符数和有无错误发生。

其格式为:

D7D6D5D4D3D2D1D0

DUS/EOUFNNN

其中:

Du(D7)为显示无效特征位。

当Du=1表示显示无效。

当显示RAM由于清除显示或全清命令尚未完成时,Du=1,此时不能对显示RAM写入。

S/E(D6)为传感器信号结束/错误特征位。

该特征位在读出FIFO状态字时被读出。

而在执行CF=1的清除命令时被复位。

当8279工作在传感器工作方式时,若S/E=1,表示传感器的最后一个传感器信号已进入传感器RAM;而当8279工作在特殊错误方式时,若S/E=1则表示出现了多键同时按下错误。

O

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1