Lec10

25
Interfacing Keyboard with MPU without Peripheral Controller Dr A Sahu Dept of Computer Science & Engineering IIT Guwahati

Transcript of Lec10

Page 1: Lec10

Interfacing Keyboard with MPU without Peripheral Controller

Dr A SahuDept of Computer Science & Engineering

IIT Guwahati

Page 2: Lec10

Outline• Peripheral communications • Keyboard – Simple Switch – One Dimensional Keyboard (PIANO) – Two Dimensional (Matrix) Keyboard

• Interfacing 1D Keyboard • Interfacing Matrix Keyboard • Modern Keyboard & Scan code• Timer and Peripheral Controller

Page 3: Lec10

Transmission controller (low speed I/O)• Transmission Controller:– MPU control, Device Control (DMA)

• Type of IO mapping– Peripheral (IN/Out), Memory mapped IO (LD/ST,MV)

• Format of communication– Synchronous (T & R sync with clock), Asynchronous

• Mode of Data Transfer – Parallel, Serial (UART)

• Condition for data transfer – Uncond., Polling, Interrupt, Ready signal, Handshake

Page 4: Lec10

Keyboard Vs Display• Display: Human can’t see the difference after

50Hz– Displaying speed more then 50Hz is value less– Human problem, Computer is faster

• Key board – Computer have to wait for the user Keyboard

response – Only interrupt or Read form ready buffer

Page 5: Lec10

Keyboard

• Keyboard is an input device• Switch:

OFF ON

Page 6: Lec10

How Keyboard work ? ==1D

0 1 2 3 14 15

+5V

N to Lg(n) decoder

A B C D

. . .

Page 7: Lec10

How Keyboard work ? ==1D

0 1 2 3 14 15

+5V

N to Lg(n) decoder

A B C D

. . .

0 0 1 1

Page 8: Lec10

How Keyboard work ? ==1D

0 1 2 3 14

15

+5V

N to Lg(n) decoder

A B C D

. . .

PIANO

Store Note

Page 9: Lec10

Interfacing Push-Button Keys

• Problem statement– A bank of push-button keys

are connected as inputs to PORTB.

– The pull-up resistors are internal to PORTB.

– Write a program to recognize a key pressed, debounce the key, and identify its location in the key bank with numbers from 0 to 7.

Page 10: Lec10
Page 11: Lec10

How key board works: 2D

A B

C D

R1

R2

C1 C2

• Two dimensional– Scan Column for 1– Scan Row for 1

C1 C2

A B

DC

R2

R1

Page 12: Lec10

How key board works :2D

• Scan C1 & C2: found both are zero• Scan R1 & R2: found both are zero

Page 13: Lec10

How key board works :2D

• Scan C1 & C2: found C1=1, C2=0• Scan R1 & R2: found R1=1, R2=0• So Key pressed: C1R1 is Key ‘A’

Page 14: Lec10

Keyboard Debounce

Stable

Noise

Page 15: Lec10

Interfacing a Matrix Keyboard

MPU

Send Data using Data BUS “D7,D6,D5,D4”

Receive data using Data BUS “D3,D2,D1,D0”

Identify the column & Row

Display the proper HEX Digit on LED display

D7

D6

D5

D4

D3

D2

D1

D0

Page 16: Lec10

Interfacing a Matrix Keyboard

• Software– To recognize and encode the key pressed, the

program should:• Ground all the columns by sending zeros.• Check each key in a row for logic zero.• Ground one column at a time and check all the rows in

that column.• Once a key is identified, it is encoded based on its

position in the column.

Page 17: Lec10

Simple keyboard with 64 keys

• Scan Row (6)• Scan Column (3)• Send this to Decoder to generate ASCII value or Scan code

R0

R1

C0 C1 C6

R2

R6

R7

C7C2

Scan RowR6

Scan Col: C2

6,3

Decode to

ACSII

(Memory ROM)

To Host (CPU)

Page 18: Lec10

Simple keyboard with 64 keys: when CAP is On

• Scan Row (6)• Scan Column (3)• Send this to Decoder to generate ASCII value or Scan code

R0

R1

C0 C1 C6

R2

R6

R7

C7C2

Scan RowR6

Scan Col: C2

6,3

(Memory ROM) To

Host (CPU)

(Memory ROM)

CAPS

Page 19: Lec10

Modern Keyboard

• 104 Key• PS2 Serial interface• Scanned code• Scanned to ASCII by software

Page 20: Lec10

Keyboard scan code

Keyboard work is send the codeSoftware handle the rest of the work

Page 21: Lec10

What happens when you press a key?• For most keys: – Key is pressed

• keyboard sends 8-bit scan code for that key

– Key is released : • keyboard sends F0• keyboard sends scan code

• For extended keys:– Key is pressed

• keyboard sends E0• may send 1 or more scan codes

– Key is released: • keyboard sends E0 F0• keyboard sends scan code

Page 22: Lec10

What Sent to PC

• ASCII is not sent, Scan codes for keys– Least significant bit first

• Normally translated by software– You remap your keys, for example– Software takes care of Shift, caps lock, control

• Scan code generated when you press• And when you release

– Two bytes: F0 followed by key scan code– Example:

• Space pressed, 29 sent• Space released, F0 29 sent

• If you hold key, scan code repeated

Page 23: Lec10

23

PS/2 Keyboard (Personal System)

• Uses a synchronous serial protocol– What does that mean?

Page 24: Lec10

Peripheral controller & Timer• Timer– Many devices in system – MPU use many delay routines

• Interrupt controller • Programmable Interrupt controller– ADC/DAC controller– Keyboard controller– Display controller

Page 25: Lec10

Thanks