KEYPAD
MATRIX
3/23/2023 3
3/23/2023 4
Vcc
Vcc
Vcc
Vcc
1 1 1
0
0 0
3/23/2023 5
KEYPAD
CONTROLLER
3/23/2023 7
4
4
4
8
DATA BUS
CLK
RESET
DB0-7
RD
WR
CS
A0
IRQ
RL0-7
SHIFT
CNT/STB
SL0-3
OUT A0-3
OUT B0-3
DB
8279
TO KEYPAD
TO DISPLAY
CPU
INTERFACE
3/23/2023 8
CLK RESET DB0-7
OUT A0-3 OUT B0-3 BD
RD WR CS A0 IRQ
SL0-3 RL0-7
SHIFT
CNT/STB
DATA
BUFFERS
I/O
CONTROL
FIFO SENSOR
RAM
DISPLAY
ADDRESS
REG
16X8
DISPLAY
RAM
CONTROL
& TIMING REG
8X8
FIFO/SENSOR
RAM
KEYBOARD
DEBOUNCE
&
CONTROL
DISPLAY
REG
TIMING
&
CONTROL
SCAN COUNTER RETURN
8 4 8
3/23/2023 9
KEYPAD
CONTROL
MODES
3/23/2023 11
3/23/2023 12
3/23/2023 13
Decoded Mode : Internal Decoder
Encoded Mode : External Decoder
SL0 0
SL1 1
SL2 1
SL3 1
1
0
1
1
1
1
0
1
1
1
1
0
SL0 0
SL1 0
SL2 0
1
0
0
0
1
0
1
1
0
0 1 2 3
CH.
0
0
1
4
1
0
1
5
0
1
1
6
1
1
1
7
3/23/2023 14
3/23/2023
14
SL0
SL1
SL2
SL0
SL1
SL2
• Decoded mode
RL0
RL1
RL2
RL3
RL4
RL5
RL6
RL7
0
7
6
5
4
3
2
1
C
B
A
SL0
SL1
SL3
SL2
Encoded mode
3/23/2023 15
3
SL0
SL1
SL3
SL2
OA0
OA1
OA2
OA3
OB0
OB1
OB2
OB3
RL0
RL1
RL2
RL3
RL4
RL5
RL6
RL7
IRQ
BD
SHFT
CN/ST
0
0
0
0
1
1 0 1 1 1 1 1 1 1
0
7 6 5 4 3 2 1 0
0
0
0
0
0
0
x
x
RL0
RL1
RL2
SL0
SL1
SL2
CNT SHFT
1
D E F
. , + : REG
2 3 4 5 6 7
-
8 9 B C
A
7 6 5 4 3 2 1 0
1
0
1
0
0
0
x
x
RL0
RL1
RL2
SL0
SL1
SL2
CNT SHFT
0
0
0
0
1
1 1 1 1 1 1 0 1 1
1
0
0
1
0
1
1 0 1 1 1 1 1 1
7 6 5 4 2 1 0
1
0
0
0
0
0
0
RL0
RL1
RL2
SL0
SL1
SL2
CNT SHFT
74LS145
0
7
6
5
4
3
2
1
IC34
C
B
A
DB0
DB1
DB2
DB3
DB0
DB6
DB4
DB5
RD
WR
CS
CLK
RESET
A0
AD0-AD7
/RD
/WR
8279
PCLK
RESET
A1
8279
IC30
1
Scanned keypad Register
3/23/2023 16
Scan Code
HOW TO
PROGRAM
Mode Command
(Mode Selection)
0 0 0 D D K K K
Keyboard Mode
0 0 0 Encoded Scan, 2 key lockout
0 0 1 Decoded Scan, 2 key lockout
0 1 0 Encoded Scan, N key Rollover
0 1 1 Decoded Scan, N key Rollover
1 0 0 Encoded Scan Sensor Matrix
1 0 1 Decoded Scan Sensor Matrix
1 1 0 Strobed Input,Encoded Display Scan
1 1 0 Strobed Input,Decoded Display Scan
A0=1
D0
D7 D6 D5 D4 D3 D2 D1
3/23/2023 18
0 0 1 P P P P P A0=1
D0
D7 D6 D5 D4 D3 D2 D1
Divide the internal clock by PPPPP to get the basic
internal frequency
2.5 MHz / ? = 100 KHz.
1 1 0 0 1
Clock Command
(Scan Rate Selection)
25D 19h
3/23/2023 19
3/23/2023 20
Read FIFO Command
(Write)
0 1 0 AI X A A A A0=1
D0
D7 D6 D5 D4 D3 D2 D1
Auto Increment
Select the
desired FIFO
location
FIFO Status Register
(Read)
D S/E O U F N N N
D0
D7 D6 D5 D4 D3 D2 D1
Number of
Characters in
FIFO
FIFO Full
Error– Underrun
Error - Overrun
Sensor Closure/Error Flag for
Multiple Closure
Display Unavailable
3/23/2023 21
A0=0
3/23/2023 22
MOV DX,5002h ;CW Address
MOV AL,0
OUT DX,AL
MOV AL,39h ;Clock Command
OUT DX,AL
CONT: MOV DX,5002h ;FIFO Status Add.
IN AL,DX
AND AL,07h
JZ CONT
MOV DX,5000h ;Scan Code Buffer
IN AL,DX
MOV SCODE,AL
JMP CONT
SENSOR
SCAN
MODE
3/23/2023 24
3
7 6 5 4 3 2 1 0
0
0
0
0
0
0
x
x
7 6 5 4 3 2 1 0
1
0
1
0
x
x
7 6 4 2 1 0
RL0 A0=0
RL1
RL2
RL3
RL4
RL5
RL6
RL7
1. Draw the address decoder for an 8086
Microprocessor system having a 4x4 keypad
matrix using 8279 controller putting the control
word address = 3006h using:
 discrete components.
 74138 decoder.
2. Write a program to initialize the controller then
read keypad states and save it continuously in the
memory.
3. Add a PPI with LEDs and a 7-Seg with start
address=5000h, and display the key-N0. on both .
3/23/2023 26

8279keypadN.pptx