第10章单片机课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LJMP KEY1
;是K1键按下,转K1键处理 ;子程序PKEY1
KEY2: CJNE A,#1DH,KEY3 ;S2键未按下,转KEY3
LJMP KEY2
;S2键按下,转PKEY2处理
KEY3: CJNE A,#1BH,KEY4 ;S3未按下,转KEY4
LJMP KEY3
;S3按下,转PKEY3处理
(3)求按下键的键号。
(4)等待按键释放后,再进行按键功能的处理操作。
2. 定时扫描工作方式 利用单片机内的定时器,产生10ms的定时中断,
对键盘进行扫描。
3.中断工作方式 只有在键盘有键按下时,才执行键盘扫描程序,
如无键按下,单片机将不理睬键盘。
三种工作方式: ①编程扫描②定时扫描 ③中断扫描。 按键的识别方法: ①扫描法;②线反转法。
串行口为方式0输出,串行口外接移位寄存器74LS164。
74LS164(0)~74LS164(7):作为8位LED的段码输出, 89C51的P3.4、P3.5:两行键的行状态输入 P3.3(TXD):同步移位脉冲输出控制线,
MOV R4,#00H ;R4为列号计数器
LK4: MOV DPTR,#7F01H ;列选码→8155H的PA口
MOV A,R2
;
MOVX @DPTR,A
;
INC DPTR
;数据指针增2,指向PC口
INC DPTR
;
MOVX A,@DPTR
;读8155H PC口
JB Acc.0,LONE ;0行线为高,无键闭合,跳 LONE,转判1行
1. 静态显示方式
2. 动态显示方式 所有位的段码线相应段并在一起,由一个8位I/O
口控制,形成段码线的多路复用,各位的公共端分别 由相应的I/O线控制,形成各位的分时选通。
8位LED动态显示2003.10.10的过程
10.2 键盘接口原理 1. 键盘输入的特点
行线电压信号通过键盘开关机械触点的断开、闭合。
2. 按键的确认 检测行线电平,便可确认按键按下与否。
3.如何消除按键的抖动 常用软件来消除按键抖动。 基本思想:检测到有键按下,键对应的行线为低,
软件延时10ms后,行线如仍为低,则确认该行有键 按下。
二.键盘接口的工作原理 独立式按键接口和行列式键盘接口。
1.独立式键盘接口 各键相互独立,每个按键各接一根输入线,通过检
ACALL KS1
JNZ LK3
POP
A
RET
;调用判有无键闭合子程序,延时 ;6ms ;判键释放否,未释放,则循环 ;键已释放,键号出栈→A
NEXT:INC R4 ;列计数器加1,为下一列扫描作准备 MOV A,R2 ;判是否已扫到最后一列(最右一列) JNB Acc.7,KND ;键扫描已扫到最后一列,跳KND,
2. 行列式(矩阵式)键盘接口
按键数目较多的场合,行列式键盘与独立式键盘 相比,要节省很多的I/O口线。
(1)行列式键盘工作原理
无键按下,该行线为高电平,当有键按下时, 行线电平有列线的电平来决定。
由于行、列线为多键共用,各按键彼此将相互发 生影响,必须将行、列线信号配合起来并作适当的处 理,才能确定闭合键的位置。
AJMP KEYI
LK1: ACALL DIR ;可能有键闭合,延迟12ms,软件去抖
ACALL DIR
ACALL KS1
;调用判有无键闭合子程序
JNZ LK2 ;经去抖,判键确实闭合,跳LK2处理
ACALL DIR
;调用显示子程序延迟6ms
AJMP KEYI
;抖动引起,跳KEYI
LK2: MOV R2,#0FEH ;列选码→R2
第10章 89C51与键盘/显示器/ 拨盘/打印机的接口设计
10.1 LED显示器接口原理 10.2 键盘接口原理 10.3 键盘/显示器接口设计实例 10.4 89C51与液晶显示器(LCD)的接口 10.5 89C51与微型打印机的接口 10.6 89C51与BCD码拨盘的接口设计
教学目的: 1、掌握LED显示器接口原理 2、掌握键盘接口原理 3、掌握89C51与键盘/显示器接口的设计 4、了解89C51与液晶显示器(LCD)的
;重新进行整个键盘扫描
RL A
;键扫描未扫到最后一列,,位选码左移 ;一位
MOV R2,A ;位选码→R2
AJMP LK4 ; KND: AJMP KEYI ;
KS1: MOV DPTR ,#7F01H;判有无键闭合子程序,全“0”→
MOV MOVX INC INC MOVX CPL ANL RET
MOV A,R3 JB Acc.5,LD1
RL A
;段码→8155HPB口 ;该位显示1ms ;指针指向下一个数据单元 ;位选码送入A中 ;判断是否扫描到最右边的
; LED,如到最右边则返回 ;位选码向左移一位,准备让
; 右边的下一位LED亮位选码
MOV R3,A AJMP LD0 LD1: RET
;送R3中保存 ; ;
DSEG:
DL1ms: DL: DL6:
DB 3FH,06H,5BH,4FH,66H,6DH ;共阴极段码表 DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3EH DB 31H,6EH,1CH,23H,40H,03H DB 18H,00H MOV R7,#02H ;延时1ms子程序 MOV R6,#0FFH DJNZ R6,DL6 DJNZ R7,DL RET
MOV A,#10H AJMP LKP LTHR:JB Acc.3,NEXT
MOV A,#18H LKP: ADD A,R4
PUSH A LK3: ACALL DIR
;转判3行 ;2行有键闭合,首键号10H→A ;跳LKP,计算键号 ;3行线为高,无键 ;闭合,跳NEXT,准备下一列扫描 ;3行有键闭合,首键号18H→A ;计算键号:首键号+列号=键号 ;键号进栈保护 ;调用显示子程序,延时6ms
执行键处理程序。
10.3 键盘/显示器接口设计实例
一般把键盘和显示器放在一起考虑。 可采用以下几种方法:
利用并行I/O芯片实现键盘/显示器接口 利用89C51的串行口实现键盘/显示器接口 利用通用键盘/显示器接口芯片8279、 HD7279A实现键盘/显示器接口
一.利用并行I/O芯片实现键盘/显示器接口
A,#00H @DPTR,A DPTR DPTR A,@DPTR A A,#0FH
;扫描口(PA口) ;即列线全为低电平 ; ;DPTR增2,指向PC口 ;指针增1,指向PC口 ;从PC口读行线的状态 ;行线取反,如无键按下,则A为0; ;屏蔽无用的高4位
二.利用89C51的串行口实现键盘/显示器接口
KEY4: CJNE A,#17H,KEY5 ;S4键未按下,转KEY5
LJMP KEY4
;S4按下,转PKEY4处理
KEY5: CJNE A,#0FH,PASS ;S5未按下,转RETURN
LJMP KEY5
;S5按下,转PKEY5处理
RETURN:RET
;重键或无键按下,从子程序返回
识别和编程简单,用在按键数较少的场合。
有共阳极和共阴极两种。
为使LED显示不同的符号或数字,要为LED提供 段码(或称字型码)。
各段与字节中各位对应关系如下:
LED段码(8段)
显示字符 共阴极 共阳极 显示字符 共阴极 共阳极
段码 段码
段码 段码
0
3FH
C0H
c
39H
C6H
1
06H
F9H
d
5EH
A1H
2
5BH
A4H
E
79H
86H
3
b. 线反转法
确定按键所在行和列,分两步进行:
第1步:列线输出为全低电平,则行线中电平由高变低 的所在行为按键所在行。 第2步:行线输出为全低电平,则列线中电平由高变低 所在列为按键所在列。
结合上述两步,可确定按键所在行和列。
(3)键盘的编码 根据实际需要灵活编码。
三.键盘的工作方式
单片机在忙于各项工作任务时,如何兼顾键盘 的输入,取决于键盘的工作方式。
MOVX A,@DPTR ;读键盘状态
ANL A,#1FH MOV R3,A
;屏蔽高三位 ;保存键盘状态值
LCALL DELAY10 ;延时10ms去键盘抖动
MOVX A,@DPTR ;再读键盘状态
ANL A,#1FH
;屏蔽高三位
CJNE A,R3,RETURN ;两次不同,抖动引起转RETURN
CJNE A,#1EH,KEY2 ;相等,有键按下,不等转KEY2
RAM地址为7E00H~7EFFH。 I/O口地址为7F00H~7F05H。
PA口为输出口,控制键盘列线的扫描,同时又是 6位共阴极显示器的位扫描口。
PB口作为显示器段码输出口。 PC口作为键盘的行线状态的输入口。
75452:反相驱动器,7407:同相驱动器。
1.动态显示程序设计 8031内部RAM设置6个显示缓冲单元79H~7EH,存
放要显示的6位数据。
8155H的PB口输出相应位的段码,依次的改变PA口 输出为高的位使某一位显示某一字符,其它位为暗。
动态地显示出由缓冲区中显示数据所确定的字符。
参考程序如下:
DIR: MOV R0,#79H ;置缓冲器指针初值
MOV R3,#01H ;位选码的初值送R3
MOV A,R3
LD0: MOVX DPTR,#7F01H;位选码→PA口(PA.0位)
测输入线的电平状态可很容易判断那个键被按下。
此种接口适于键数较少或操作速度较高的场合。
82C55扩展I/O口的独立式按键接口电路
用三态缓冲器扩展的I/O口的按键接口电路
例:键盘编程,软件消抖,查询方式检测键的状态。 仅有一键按下时才有效才处理。
KEYIN:MOV DPTR,#0BFFFH;键盘端口地址BFFFH
接口
教学重点: LED显示器接口原理 键盘接口原理 89C51与键盘/显示器接口的设计
10.1 LED显示器接口原理
LED(Light Emitting Diode):发光二极管的缩写。 显示器前面冠以“LED”。
一.LED显示器的结构
常用的LED显示器为8段(或7段,8段比7段多了一 个小数点“dp”段)。
2.键盘程序设计
(1)判别键盘上有无键闭合 (2)去除键的机械抖动 (3)判别闭合键的键号 (4)使CPU对键的一次闭合仅作一次处理
键盘子程序如下:
KEYI:ACALL KS1
;调用判有无键闭合子程序
JNZ LK1
;有键闭合,跳LK1
NI: ACALL DIR
;无键闭合,调用显示子程序,延
;迟6ms后,跳KEYI
4FH
B0H
F
71H
8EH
4
66H
99H
P
73H
8CH
5
6DHBiblioteka Baidu
92H
U
3EH
C1H
6
7DH
82H
T
31H
CEH
7
07H
F8H
y
6EH
91H
8
7FH
80H
H
76H
89H
9
6FH
90H
L
38H
C7H
A
77FH
88H
“灭”
00H
FFH
b
7CH
83H
…
…
…
二.LED显示器工作原理
N个LED显示块有N位位选线和8×N根段码线。 静态显示和动态显示两种显示方式。
MOV A,#00H
;0行有键闭合,首键号0→A
AJMP LKP
;跳LKP,计算键号
LONE:JB Acc.1,LTW0 ;1行线为高,无键闭合,跳LTW0,
;转判2行
MOV A,#08H
;1行有键闭合,首键号8→A
AJMP LKP
LTW0:JB A.2,LTHR ;2行线为高,无键闭合,跳LTHR,
;最左边LED亮
MOV @DPTR,A
INC DPTR
;数据指针指向PB口
MOV A,@R0 ADD A,#0DH
;显示数据→A
;加偏移量(下条指令到表首间 ;所有指令占的单元数)
MOVC A,@A+PC ;根据显示数据来查表取段码
DIR1:
MOVX @DPTR,A ACALL DL1ms INC R0
原则:即要保证能及时响应按键操作,又不要过多 用CPU的工作时间。
键盘工作方式有3种,即编程扫描、定时扫 描和中断扫描。
1. 编程扫描方式
只有当单片机空闲时,才调用键盘扫描子程序, 扫描键盘。 工作过程: (1)在键盘扫描子程序中,先判断有无键按下。
方法:PA口8位输出全0,读PC口低4位状态,若PC0~ PC3为全1,则说明键盘无键按下;若不全为1,则说明 键盘可能有键按下。 (2)用软件来消除按键抖动的影响。如有键按下,则 进行下一步。
(2)按键的识别方法 a. 扫描法
识别键盘有无键被按下的方法,分两步进行:
第1步:识别键盘有无键按下; 第2步:如有键被按下,识别出具体的按键。
把所有列线置0,检查各行线电平是否有变化,如 有变化,说明有键按下,如无变化,则无键按下。
上述方法称为扫描法,即先把某一列置低电平, 其余各列为高电平,检查各行线电平的变化,如果某 行线电平为低,可确定此行列交叉点处的按键被按 下。