键盘接口实验实验报告总结及程序
时间:2020-10-26 20:59:37 来源:勤学考试网 本文已影响 人
实验六 键盘接口实验
姓名 专业 通信工程 学号 成绩
一、 实验目的
掌握 Keil C51 软件与 Protues 软件联合仿真调试的方法;
掌握单片机的键盘接口电路;
掌握单片机键盘扫描原理;
掌握键盘的去抖原理及处理方法。
二、 实验仪器与设备
微机 1 台 C51 集成开发环境 3 。Proteus 仿真软件三、 实验内容
用 Proteus 设计一矩阵键盘接口电路。
要求利用 P1口接一 4*4 矩阵键盘。串行口通过一 74LS164接一共阴极数码管。参考电路见后面。
2. 用线反转法编写矩阵键盘识别程序,要求采用中断方式(列线通过
4 输
入与门 74LS20接 /INT0 ),无按键按下时,数码管循环画“ 8”;有按键按下时产生中断并将按键的键值 0~F 通过串行口输出,在数码管上显示 3 秒钟后返回;返回后,数码管继续循环画“ 8”。
将 P1 口矩阵键盘改为 8 个独立按键(用中断方式设计),键盘通过 74LS30 (8 输入与非门)和 74LS04(六反相器)与 /INT0 相连,重新编写识别和显示程序。
四、 实验原理
矩阵键盘识别一般应包括以下内容:
判别有无键按下。
键盘扫描取得闭合键的行、列号。
用计算法火或查表法得到键值。
判断闭合键是否释放,如果没释放则继续等待。
将闭合键的键值保存,同时转去执行该闭合键的功能。五、 实验步骤
用 Proteus 设计键盘接口电路;
2. 在 Keil C51 中编写键盘识别程序,编译通过后,与 Proteus 联合调试;
按动任意键,观察键值是否能正确显示。六、 电路设计及调试、程序
程序设计: 矩阵键盘
#include<>
#define uchar unsigned char
#define uint unsigned int
uchar code
table1[]={0x00,0x01,0x21,0x61,0x65,0x6d,0x7d,0x7f}; uchar code
key_table[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0x bb,0x7b,0xe7,0xd7,0xb7,0x77};
R4
S6
S5
S4
S3
1nF
19
XTAL1
P0.0/AD0
39
S2
X1
38
S1
P0.1/AD1
U1
S0
CRYSTAL
P0.2/AD2
37
36
9
SRG8
R3
18
XTAL2
P0.3/AD3
R
35
P0.4/AD4
C1
34
8
P0.5/AD5
C1/->
22pF
9
P0.6/AD6
32
RST
P0.7/AD7
1
3
1uF
P2.0/A8
21
2
&
1D
R17
22
P2.1/A9
23
4
S0
P2.2/A10
29
24
10k
PSEN
P2.3/A11
S1
30
25
5
ALE
P2.4/A12
31
26
EA
P2.5/A13
S2
27
6
P2.6/A14
28
P2.7/A15
10
S3
P1.0 1
P1.0
P3.0/RXD
10
P1.1 2
11
11
S4
P1.1
P3.1/TXD
P1.2 3
12
P1.2
P3.2/INT0
P1.3
4
13
12
S5
P1.3
P3.3/INT1
P1.4 5
14
P1.4
P3.4/T0
P1.5 6
15
13
S6
P1.5
P3.5/T1
P1.6
7
16
P1.6
P3.6/WR
P1.7 8
17
74LS164
P1.7
P3.7/RD
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
1 U3:A
2
6
4
5
74LS21
R4
1nF
19
XTAL1
P0.0/AD0
39
X1
38
P0.1/AD1
U1
CRYSTAL
P0.2/AD2
37
36
9
SRG8
R3
18
XTAL2
P0.3/AD3
R
35
P0.4/AD4
34
8
C1
P0.5/AD5
C1/->
33
P0.6/AD6
22pF
9
32
RST
P0.7/AD7
1
3
&
1uF
P2.0/A8
21
2
1D
R17
22
P2.1/A9
23
4
S0
P2.2/A10
R1
R2
R5
R6
R7
R8
R9
R10
29 PSEN
24
10k
P2.3/A11
5
S1
10k
10k
10k
10k
10k
10k
10k
10k
30
ALE
P2.4/A12
25
31
26
EA
P2.5/A13
27
6
S2
P2.6/A14
28
P2.7/A15
S3
10
P1.0
1
P1.0
P3.0/RXD
10
P1.1
2
11
11
S4
P1.1
P3.1/TXD
P1.2
3
12
P1.2
P3.2/INT0
P1.3
4
13
12
S5
P1.3
P3.3/INT1
P1.4
5
14
P1.4
P3.4/T0
P1.5
6
15
13
S6
P1.5
P3.5/T1
P1.6
7
16
P1.6
P3.6/WR
P1.7
8
17
74LS164
P1.7
P3.7/RD
U2:A
74LS04
1
U3
2
3
4
8
5
6
11
12
74LS30
验中在做矩阵键盘实验时, 会出现进入中断一次后跳出来再按键不会再进入中断显示的情况原因是:
没有在中断函数最后令 P1=0xf0,在边沿触发方式下退出中断程序时P1=0xf,外部中断 0 为低电平,不会有下降产生, 仅执行一次中断后再不会有中断产生,即使有按键按下。
实验中出现了进入中断跳不出来的情况,原因是:
给窗口送键值显示后没加 while(!TI); TI=0; 语句
S6
S5
S4
S3
S2
S1
S0
总结:实验前应画出程序流程图认真分析,有助于程序的编写。在矩阵键盘的实验中,若选择电平触发,不在中断后令 P1=0xf0,则跳出中断后检测到列线全为零,又产生中断,进入中断后扫描按键发现无按键按下又退出,列还是全为零又进入中断,如此反复,效率很低。