Presentation

Download Report

Transcript Presentation

I/O devices (Peripherals)

Examples: switches, LED, LCD, printers, keyboard, keypad

Interface chips


are needed to resolve the speed problem

synchronizes data transfer between CPU and I/O device
Connection of Interface and CPU

Data pins are connected to CPU data bus

I/O port pins are connected to I/O device

CPU may be connected to multiple interface

IO ports are simplest interface
I/O Interfacing

Dedicated instructions for IO operations (Isolated I/O)

same instruction for memory and IO (memory-mapped I/O)

MCS-51 (8051) is memory mapped
Synchronization of CPU
and interface chip

To make sure that there are valid data in the interface

two ways

Polling method: Read status bit - Simple method

Interrupt driven method: interface interrupts the CPU when it has
new data - CPU executes the ISR
Synchronization of CPU
and interface chip

Output synchronization: two ways of doing this
1.
Polling method
2.

interface chip uses a status bit to indicate that the data
register is empty

CPU keeps checking status bit until it is set, and then writes
data into interface chip
Interrupt driven method: interface chip interrupts the
CPU when it data register is empty. CPU executes
the ISR
Synchronization of CPU
and interface chip

Methods used to synchronize data transfer between interface
chip and I/O devices:
1.
Brute force method: interface chip returns voltage levels in its
input ports to CPU and makes data written by CPU directly
available on its output ports

2.
3.
All 8051 port can perform brute force I/O
Strobe method:

During input, the I/O device activates a strobe signal when data
are stable. Interface chip latches the data

For output, interface chip places output data on output port.
when data is stable, it activates a strobe signal. I/O device
latches the data
Handshake method: two handshake signals are needed

One is asserted by interface chip and the other by I/O device
8051 - Switch On I/O Ports



Case-1:

Gives a logic 0 on switch close

Current is 0.5ma on switch close
Case-2:

Gives a logic 1 on switch close

High current on switch close
Case-3:

Can damage port if 0 is output
Simple input devices

DIP switches usually have 8 switches

Use the case-1 from previous page

Sequence of instructions to read is:
MOV
P1,#FFH
MOV
A,P1,
Bouncing contacts

Contact:

Push-button switches

Toggle switches

Electromechanical relays

Make and break Contact normally open switch

The effect is called "contact bounce" or, in a switch, "switch
bounce”.

If used as edge-triggered input (as INT0), several interrupt is
accorded
Hardware Solution

An RC time constant to suppress the bounce

The time constant has to be larger than the switch bounce
Vcc
OUT
Hardware Solution
Software Solution

Read the new state of switch N time

Wait-and-see technique

When the input drops

an “appropriate” delay is executed (10 ms)

then the value of the line is checked again to make sure the
line has stopped bouncing
Interfacing a Keypad
16 keys arranged as a 4X4 matrix

Place a 0 on R0 port

Read C port

If there is a 0 bit
then the button
at the column/row
intersection has
been pressed.

Otherwise, try next row

Repeat constantly
F
E
D
C
B
A
9
8
7
6
5
4
3
2
1
R1
R2
R3
R4
0
C1
C2
C3
C4
Interfacing a Keypad
scan:
mov P1,#EFH
jnb P1.0,db_0
scan1: jnb P1.1,db_1
scan2: jnb P1.2,db_2
F
E
D
B
A
9
8
7
6
5
4
scan3: jnb P1.3,db_3
scan4: mov P1,#DFH
jnb P1.0,db_4
3
2
8051
C
1
P1.7
P1.6
P1.5
P1.4
0
…..
…..
…..
P1.3
P1.2
P1.1
P1.0
Interfacing a Keypad
db_0:
db_1:
lcall wt_10ms
jb P1.0, scan1
mov A, #0
ljmp
get_code
lcall wt_10ms
jb P1.1, scan2
mov A, #1
ljmp
get_code
…..
…
…..
get_code: movDPTR, #key_tab
movc A, @A+DPTR
ljmp scan
key_tab: db ‘0123456789ABCDEF’
END
Simple output devices



Case-1

LED is ON if output=zero

Most LEDs drop 1.7 volts and need about 10ma

Current is (5-1.7)/470
Case-2

Too much current

Failure of Port or LED
Case-3

Not enough drive (1ma)

LED is too dim
The 7-Segment Display

7 LEDs arranged to form the number 8.


By turning on and off (LEDs), different combinations can be
produced.
useful for displaying the digits 0 through 9, and some characters.
a
f
b
g
e
c
d
The 7-segment Display (Cont.)

7-segment displays come in 2 configurations:
Common Anode
Connect cathode to the output

Common Cathode
Connect cathode to the output
Therefore, the common anode variety would be better for our
interfacing needs.
Interfacing a 7-segment display


A resistor will be needed to control the current
This leaves two possibilities:
Case1


Case 2
Case 2 would be more appropriate
Case 1 will produce different brightness depending on the
number of LEDs turned on.
Continued on next slide
Continued from previous
Use of current buffer
 Interfacing to a DIP switch and 7-segment display
 Output a ‘1’ to ON a segment
 We can use 74244 to common cathode 7_seg
LCD Connections
BCD to 7_Seg lookup table
mov
anl
a,p3
a,0fh
get_code: mov DPTR, #7s_tab
pgfedcba
7_seg
he
x
0000
001111 11
3f
0001
00110000
30
0010
0101101 1
5b
movc
A, @A+DPRT
0011
010011 11
4f
mov
p1,a
0100
011001 10
66
0101
01101101
6d
0110
01111101
7d
0111
00000111
07
1000
01111111
7f
1001
01101111
6f
7s_tab:
db 3fh,30h,5bh,4fh,66h
db 6dh,7dh,07h,7fh,6fh
END
a
a
f
b
f
e
c
e
d
BCD
g
a
b
g
e
a
b
c
d
d
f
g
b
f
a
f
g
c
c
d
a
g
e
c
d
a
b
f
c
e
g
a
b
f
g
c
d
b
c
d
LCD Interfacing

Liquid Crystal Displays (LCDs)

cheap and easy way to display text

Various configurations (1 line by 20 X char up to 8 lines X 80)

Integrated controller

The display has two register

command register

data register

By RS you can select register

Data lines (DB7-DB0) used to transfer data and
commands
Alphanumeric LCD Interfacing

Pinout





8 data pins D7:D0
RS: Data or Command
Register Select
R/W: Read or Write
E: Enable (Latch data)
E
R/W

DB7–DB0
8
LCD
controller
RS = 0  Command Register
RS = 1  Data Register
R/W = 0  Write ,
 E – Enable


R/W = 1  Read
Used to latch the data present on the data pins.
D0 – D7


communications
bus
RS
RS – Register Select


Microcontrolle
r
Bi-directional data/command pins.
Alphanumeric characters are sent in ASCII format.
LCD Module
LCD Commands


The LCD’s internal controller can accept several
commands and modify the display accordingly.
Such as:

Clear screen

Return home

Decrement/Increment cursor
After writing to the LCD, it takes some time for it to
complete its internal operations. During this time, it
will not accept any new commands or data.

We need to insert time delay between any two commands
or data sent to LCD
Command
Codes
LCD Addressing
LCD Timing
Interfacing LCD with 8051
8051
LM015
P3.4
RW
P3.5
E
P3.3
RS
P1.7-P1.0
D7-D0
mov A, command
Interfacing LCD
with 8051
call cmd
delay
mov A, another_cmd
call cmd
delay
mov A, #’A’
call data
delay
mov A, #’B’
call data
delay
….
Command and Data Write Routines
data:mov P1, A
setb P3.3
clr P3.4
;A is ascii data
;RS=1 data
;RW=0 for write
setb P3.5 ;H->L pulse on E
clr P3.5
ret
cmd:mov P1,A
;A has the cmd word
clr P3.3
;RS=0 for cmd
clr P3.4
;RW=0 for write
setb P3.5
clr P3.5
ret
;H->L pulse on E
Example
8255 Usage: Simple Example

8255 memory mapped to 8051 at address C000H base


A = C000H, B = C001H, C = C002H, CR = C003H
Control word for all ports as outputs in mode0

CR : 1000 0000b = 80H
test: mov
A, #80H
; control word
mov
DPTR, #C003H ; address of CR
movx
@DPTR, A
; write control word
mov
A, #55h
; will try to write 55 and AA
;
alternatively
repeat:mov
DPTR,#C000H
; address of PA
movx
@DPTR, A
; write 55H to PA
inc
DPTR
; now DPTR points to PB
movx
@DPTR, A
; write 55H to PB
inc
DPTR
; now DPTR points to PC
movx
@DPTR, A
; write 55H to PC
cpl
A
; toggle A (55AA, AA55)
acall MY_DELAY
; small delay subroutine
sjmp
repeat ; for (1)
Next Week—Week10


Unit 10 Quiz
Interfacing with A/D and D/A Converters