实验四 8279键盘显示实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(0F000H)CS1 A0
(B2)2M
VCC
OE1
1
A1
2
A2
4
A3
6
A4
8
Y4
12
Y3
14
Y2
16
Y1
18
Y8
3
Y7
5
GND
10
Y6
7
Y5
9
A5
11
VCC
20
OE2
19
A6
13
A8
17
A7
15
SN74LS240P
U40
OUTA0
27
OUTB0
31
OUTA1
26
OUTB1
30
OUTA2
25
OUTB2
29
OUTA3
24
OUTB3
28
DB0
12
BD
23
DB1
13
DB2
14
SL0
32
DB3
15
SL1
33
DB4
16
SL2
34
DB5
17
SL3
35
DB6
18
DB7
19
RL0
38
RL1
39
IRQ
4
RL2
1
RL3
2
CS
22
RL4
5
RD
10
RL5
6
WR
11
RL6
7
A0
21
RL7
8
CLK
3
SHIFT
36
RESET
9
CNTL/S
37
8279
U37
D0
D1
D2
D3
D4
D5
D6
D7
RST
WR
RD
8279
1
2
3
4
5
6
7
8
JP62
A
1
B
2
C
3
OE2A
4
OE2B
5
OE1
6
Y7
7
GND
8
Y6
9
Y5
10
Y4
11
Y3
12
Y2
13
Y1
14
Y0
15
VCC
16
SN74LS138N
U39
VCC
VCC
12345678
JP93
a
b
c
d
f
g
dp
e
CLK
A0
INT
OE1
1
A1
2
A2
4
A3
6
A4
8
Y4
12
Y3
14
Y2
16
Y1
18
Y8
3
Y7
5
GND
10
Y6
7
Y5
9
A5
11
VCC
20
OE2
19
A6
13
A8
17
A7
15
SN74LS240P
U40
1
2
3
4
5
6
7
8
JP78
a
b
c
d
f
g
dp
e
VCC
1
2
3
4
5
6
7
8
9
10K
R123
VCC
CS
1
2
3
4
5
6
7
8
JP77
C
D
B
A
LJMP STAR
ORG 0100H
STAR: MOV SP,#60H
ACALL INIT8279 ;初始化子程序
MOV KeyCount,#0
STAR1: CALL SCAN_KEY ;键扫描
JNC STAR1 ;没有按键
XCH A,KeyCount
INC A
CJNE A,#9,STAR2
MOV KeyCount,#0
ACALL INIT8279_1 ;8个数码块全有字符显示后,再按键,清除显示
SJMP STAR1
STAR2: XCH A,KeyCount
CALL KEY_NUM ;键值转换为键号
MOV DPTR,#LED_TAB ;字型码表
MOVC A,@A+DPTR
CALL WRITE_DATA
SJMP STAR1
;8279初始化
INIT8279: MOV A,#34H ;可编程时钟设置,设置分频系数(20分频) MOVX @DPTR,A
CLR A ;8*8字符显示,左边输入, 外部译码键扫描方式
MOV DPTR,#CMD_8279
MOVX @DPTR,A
INIT8279_1: CALL CLEAR ;清显示
MOV A,#90H ;从最后一个数码管开始移位显示
MOVX @DPTR,A
RET
CLEAR: MOV A,#0DEH ;清除命令
MOV DPTR,#CMD_8279
MOVX @DPTR,A
WAIT1: MOVX A,@DPTR
JB ACC.7,WAIT1 ;显示RAM清除完毕吗?
RET
SCAN_KEY: MOV DPTR,#CMD_8279
MOVX A,@DPTR ;读状态
READ_FIFO: ANL A,#7
JZ NO_KEY ;是否有键按下
READ: MOV A,#40H
MOVX @DPTR,A ;读FIFO RAM
MOV DPTR,#DATA_8279
MOVX A,@DPTR
SETB C ;有键