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 (55AA, AA55)
acall MY_DELAY
; small delay subroutine
sjmp
repeat ; for (1)
Next Week—Week10
Unit 10 Quiz
Interfacing with A/D and D/A Converters