UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing....

41
UNIT-IV 8255 PPI Various Modes Of Operation Interfacing To 8086. Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing.

Transcript of UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing....

Page 1: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

UNIT-IV

8255 PPI Various Modes Of Operation

Interfacing To 8086.

Interfacing Keyboard, Displays

Stepper Motor

D/A And A/D Converter Interfacing.

Page 2: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

8255Programmable Peripheral Interface(PPI)

For most of the applications 8086 needs parallel input ,output data to/from the peripherals.

8255 is a device used to interface different real time peripherals to the microprocessors which can be initialized for different modes operations like simple I/O, Strobed I/O and handshaking I/O.

It has three 8-bit parallel ports :port A, port B, port C

Page 3: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Fig 4.2 8255 pin diagram

Page 4: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

❑ 8255 has three operation modes: mode 0, mode 1, and mode 2

Fig 4.3 Control Word Register Bit Format of 8255 for I/O mode and BSR mode

Page 5: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Programming 8255❑ Mode 0:

— Ports A, B, and C can be individually programmed as input or output ports— Port C is divided into two 4-bit ports which are independent from each other

❑ Mode 1:

— Ports A and B are programmed as input or output ports— Port C is used for handshaking

PA[7:0]

STBAIBFAINTRAPC3

PC5PC4

PB[7:0]

STBBIBFBINTRBPC0

PC1PC2

PC6, 7

8255

PA[7:0]

OBFAACKAINTRAPC3

PC6PC7

PB[7:0]

OBFBACKBINTRBPC0

PC1PC2

PC4, 5

8255

Fig 4.4 Input and Output control signals of 8255 in mode1

Page 6: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel
Page 7: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Fig 4.5 Input and Output control signals of 8255 in mode1

Page 8: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Programming 8255❑ Mode 2:

— Port A is programmed to be bi-directional— Port C is for handshaking— Port B can be either input or output in mode 0 or mode 1

PA[7:0]

OBFAACKA

INTRA

PC4

PC6PC7

STBA

IBFA

PC0

PC3PC58255

PC0

PC0

PB[7:0]

In Out In OutIn Out

Mode 0

STBB OBFB

IBFB ACKB

INTRB INTRB

Mode 1

Fig 4.6 Input and Output control signals of 8255 in mode2

Page 9: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Fig 4.7 Input and Output control signals of

8255 in mode2

Page 10: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Example: Mode 1 Input

BIT5 EQU 20H

PORTC EQU 22H

PORTA EQU 20H

READ PROC NEAR

Read: IN AL, PORTC ; read portc

TEST AL, BIT5 ;test IBF

JZ Read ;if IBF=0

IN AL, PORTA ;Read Data

READ ENDP

keyboard

PA0

PA7

STBPC4 DAV

8255

Fig 4.8 Interfacing of 8255 to Keyboard for input in mode1

Page 11: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Example: Mode 1 output

Printer

PB0

PB7

ACKPC2 ACK

8255

PC4 DS

Fig 4.9 Interfacing of 8255 to Printer for output in mode1

Page 12: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

BIT1 EQU 2

PORTC EQU 62H

PORTB EQU 61H

CMD EQU 63H

PRINTPROC NEAR; check printer ready?

IN AL, PORTC ;get OBF

TEST AL, BIT1 ;test OBF

JZ PRINT ;if OBF=0 buffer is full

;send character to printer

MOV AL, AH ;get data

OUT PORTB, AL ;print data

; send data strobe to printer

MOV AL, 8 ;clear DS

OUT CMD, AL

MOV AL, 9 ;clear DS

OUT CMD, AL

;rising the data at the positive edge of DS

RET

PRINT ENDP

Example: Mode 1 output

Page 13: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Data bus

8086

D[7:0]

A0A1

RDWR

RESET

CS

Control port

PA[7:0]

PB[7:0]

PC[7:0]

A7A6A5A4A3A2

IO/M

A1 A0 Port

0 00 11 01 1

PAPBPCControl

Fig 4.1 Interfacing of 8255 PPI to 8086

Page 14: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Keyboard example

Fig 4.10 Interfacing of 8255 to 4x4 matrix Keyboard in mode1

Page 15: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Keyboard example

Fig 4.11 Flow chart of a keyboard scanning procedure

Page 16: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Bouncing Problem

Fig 4.12 Key bouncing problem

Page 17: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Fig 4.13 Key bouncing problem

Page 18: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Software Solution

Fig 4.14 Software Key debouncing solution

Page 19: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

The time taken by the ADC from the active edge of SOC pulse till the active edge of EOC signal is called as the conversion delay of the ADC.

General algorithm for ADC interfacing contains the following steps

1. Ensure the stability of analog input, applied to the ADC

2. Issue start of conversion SOC pulse to ADC

3. Read end of conversion EOC signal to mark the end of conversion process

4. Read digital data output of the ADC as equivalent digital output.

ADC Interfacing

Page 20: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

ADC 0808/0809

The analog to digital converter chips 0808 and 0809 are 8-bit CMOS, successive approximation converters. It is fastest technique.

The conversion delay is 100 µs at a clock frequency of 640 kHz, which is quite low as compared to other converters.

Block Diagram of ADC 0808/0809

This converter internally has a 3:8 analog multiplexer, so that at a time 8 different analog inputs can be connected to the chips.

Out of these 8 inputs only one can be selected for conversion by using 3 address lines A,B,C.

The CPU may drive these lines using output port lines in case of multichannel applications.

Page 21: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Fig 4.15 Pin diagram of ADC 0808/0809

Page 22: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

•These are unipolar Analog to Digital (A to D) converters, they are able to convert only positive analog input voltages to their digital equivalents.This chips do not contain any internal sample & hold circuit.

Table 4.1 analog input selection

Page 23: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Interfacing between ADC to Microprocessor

Problem:-

Interface ADC 0808 with 8086 using 8255 ports. Use Port A of 8255 for transferring digital data output of ADC to the CPU & Port C for control signals. Assume that an analog input is present at I/P2 of the ADC and a clock input of suitable frequency is available for ADC. Draw the schematic & timing diagram of different signals of ADC0808.

Page 24: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Solution:-

•The analog input I/P2 is used & therefore address pins A,B,C should be 0,1,0 respectively to select I/P2.•The OE (Out put latch Enable) & ALE pins are already kept at +5v to select the ADC and enable the outputs. •Port C upper acts as the input port to receive the EOC signal while Port C lower acts as the output port to send SOC to ADC.•Port A acts as a 8-bit input data port to receive the digital data output from the ADC.

Page 25: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

8255 Control Word:

D7 D6 D5 D4 D3 D2 D1 D0

1 0 0 1 1 0 0 0 = 98H

Program:

MOV AL,98H ; Initialize 8255, send AL to control word (CWR)

OUT CWR, AL

MOV AL, 02H ;Select I/P2 as analog I/P

OUT Port B, AL ;Port B as output

MOV AL, 00H ; Give start of conversion pulse to the ADC

OUT Port C, AL

MOV AL, 01H

OUT Port C, AL

MOV AL, 00H

OUT Port C, AL

WAIT: IN AL, Port C ; check for EOC by reading Port C upper & rotating

RCL ; through carry.

JNC WAIT

IN AL, Port A ; if EOC, read digital equivalent in AC

HLT ; stop.

Page 26: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Fig 4.16 Interfacing of ADC 0808 to 8086 through 8255

Page 27: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Interfacing D/A Converters

The Digital to Analog Converters (DAC) convert binary numbers into their analog equivalent voltages.

The DAC find applications in areas like

Digitally controlled gains

Motor speed controls

Programmable gain amplifiers etc.

AD 7523 8-Bit Multiplying DAC:--

• Intersil’s AD 7523 is a 16 pin DIP, multiplying digital to analog converter, containing R-2R ladder (R=10K) for digital to analog conversion.

Page 28: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

✓ Power supply +5v to +15v

✓ Vref -> -10v to +10v

✓ The maximum analog output voltage will be +10v

✓ A Zener is connected between OUT1 & OUT2 to save the DAC from negative transients.

✓An operational amplifier is used as a current – to – voltage converter at the output of AD 7523.

✓An external feedback resister acts to control the gain.

Page 29: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Interfacing of AD 7523 with 8086Problem:--Interface DAC AD7523 with the 8086 running at 8MHz & write ALP to generate a saw tooth waveform of period 1ms with Vmax 5v.Solution:--Code segmentAssume cs:codeStart: MOV AL, 80H

OUT CWR, ALAGAIN: MOV AL, 00HBACK: OUT Port A, AL

INC ALCMP AL, 0F2HJB BACKJMP AGAIN

Code endsEnd Start

Page 30: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Fig 4.17 Pin diagram of AD7523

Page 31: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Fig 4.18 Interfacing of AD7523 to 8086 through 8255

Page 32: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Display interface

Interface an 8255 with 8086 at 80h as an I/O address of port-A. interface five 7 segment displays with the 8255. write a sequence of instructions to display 1,2,3,4 and 5 over the five displays continuously as per their positions starting with 1 at the least significant position. CWR address is 86h.

Number to be

displayed

PA7

dp

PA6

a

PA5

b

PA4

c

PA3

d

PA2

e

PA1

f

PA0

g

Code

1 1 1 0 0 1 1 1 1 CF

2 1 0 0 1 0 0 1 0 92

3 1 0 0 0 0 1 1 0 86

4 1 1 0 0 1 1 0 0 CC

5 1 0 1 0 0 1 0 0 A4

All these codes are stored in a look up table starting at 2000:0001.

Page 33: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Fig 4.19 Interfacing multiplexed 7-segment display to 8086 through 8255

Page 34: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

ALP for display interface

again: mov cl,05h ;count for displays

mov bx,2000h ;initialize the data segment for

mov ds,bx ; look-up table

mov ch,01h ;1st no. to be displayed

mov al,80h

out 86h,al ;load control word in the CWR

mov dl,01h ;enable code for least significant 7-seg display

nxtdgt: mov bx,0000h ;set pointer to look-up table

mov al,ch ;store number to be display

xlat ;find code from table

Page 35: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

out 80h,almov al,dlout 82h,al ;enable the displayrol dl ;go for next digit displayinc chdec cl ;decrement counterjnz nxtdgt ;go for next digit displayjmp again

Page 36: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Stepper Motor Interfacing

A stepper motor is a device used to obtain an accurate position control of rotating shafts.

It employs rotation of its shaft in terms of steps, rather than continuous rotation as in case of AC or DC motors.

In dot-matrix printer one small stepper motor which is used to advance the paper to the next line position & another small stepper motor which is used to move the print head to the next character position.

In floppy disk stepper motor is used to position the read/write head over the desired track.

To rotate the shaft of the stepper motor, a sequence of pulses is needed to be applied to the windings of the stepper motor, in a proper sequence.

The no. of pulses required for one complete rotation of the shaft of the stepper motor are equal to its number of internal teeth on its rotor.

Page 37: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

The stator teeth the rotor teeth lock with each other to fix a position of the shaft .

With a pulse applied to the winding input, the rotor rotates by one teeth position or an angle x. The angle x may be calculated as:

x = 3600 / no. of rotor teeth

The stepper motors have been designed to work with digital circuits. Binary level pulses of 0-5v are required at its winding inputs to obtain the rotation of shafts.

The sequence of pulses can be decided, depending upon the required motion of the shaft.

The count for rotating the shaft of the stepper motor through a specified angle may be calculated from the no. of rotor teeth

C = no. of rotor teeth / 3600 * θ0

Page 38: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Motion Step A B C D

Clockwise 1 1 0 0 0

2 0 1 0 0

3 0 0 1 0

4 0 0 0 1

5 1 0 0 0

Anticlockwise 1 1 0 0 0

2 0 0 0 1

3 0 0 1 0

4 0 1 0 0

5 1 0 0 0

Table 4.2 Excitation sequence for clockwise and anticlockwise rotation of a stepper motor

Page 39: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Problem

Design a stepper motor controller and write an ALP to rotate shaft of a 4-phase stepper motor:

i. In clockwise 5 rotations

ii. In anticlockwise 5 rotations.

The 8255 port A address is 0740h. The stepper motor has 200 rotor teeth.

The port A bit PA0 drives winding Wa, PA1 drives winding Wb and so on.

The stepper motor has an internal delay of 10msec. Assume that the routine for this delay is already available.

Page 40: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Solution:

ALP:Assume cs:CodeCode segmentStart: MOV AL, 80H

OUT CWR, ALMOV AL, 88H; Bit pattern 10001000MOV CX, 1000

Again1: OUT Port A, ALCALL DELAYROL AL, 01DEC CXJNZ Again1MOV AL, 88HMOV CX, 1000

Page 41: UNIT-IV · Interfacing Keyboard, Displays Stepper Motor D/A And A/D Converter Interfacing. 8255Programmable Peripheral Interface(PPI) For most of the applications 8086 needs parallel

Again2: OUT Port A, AL

CALL DELAY

ROR AL, 01

DEC CX

JNZ Again2

MOV AH, 4CH

INT 21H

Code ends

End start