IndianEngineer

ProjectsectsBazaar.in

Microcontroller 7 Segment Interfacing

http://www.shree-electronics.com/images/DSC00209.JPG

Seven segment display is a basic type of display which can display numbers from 0 to 9. The circuit for interfacing single 7 segment display is shown below.

http://www.shree-electronics.com/images/7_segment_small.gif

Driving a 7 segment display is as simple as flashing LEDs, but here we are flashing 7+1 LEDs. The 7 segment display module has 8 LEDs (7 segments to display number and one segment for decimal point or dot) arranged in a particular manner as shown in image below.

http://www.shree-electronics.com/images/7_segment_display.svg.png

http://www.shree-electronics.com/images/commom_cathode1.gif http://www.shree-electronics.com/images/commom_anode1.gif

By driving (in the sense controlling ON and OFF conditions) these LEDs in various combinations, we can display the numbers 0 to 9. There are basically two types of 7 segment displays, they are common cathode and common anode. In common cathode, the cathodes of all the LED segments are connected together, we should apply a logic 1 or high input to a segment pin to light up that particular segment, and in common cathode the case is opposite. Table below shows the combinations of inputs to be applied to 7 segment display for digits 0 to 9.

For common cathode displays
Digit binary input value hexadecimal input value
0 11111100 FC
1 01100000 60
2 11011010 DA
3 11110010 F2
4 01100110 66
5 10110110 B6
6 10111110 BE
7 11100000 E0
8 11111110 FE
9 11110110 F6

For common anode displays
Digit binary input value hexadecimal input value
0 00000011 03
1 10011111 9F
2 00100101 25
3 00001101 0D
4 10011001 99
5 01001001 49
6 01000001 41
7 00011111 1F
8 00000001 01
9 00001001 09

The images shown below are the photographs of 7 segment add-on board for my microcontroller board, I have included one 7 segment in the current version of my development board, so if you are using that circuit then you don’t need an external 7 segment display board. Click on the image to enlarge.

http://www.shree-electronics.com/images/DSC00045_small.JPG http://www.shree-electronics.com/images/DSC00261_small.JPG

The assembly language source code for interfacing 7 segment display is given below.

;*************************************************
;
;Program: Driving seven segment display
;Author: Srikanth
;Website: http://shree-electronics.com/
;Description: Displays numbers 0 to 9 on
;the LED seven segment display continuously
;
;*************************************************

;Declarations
port equ P0

;*************************************************

;Main program
org 0000h
ljmp main
org 30h

main:mov r0,#08h
mov a,#00000001b ;test all segments of disp
up: rr a
mov port,a
acall delay
djnz r0,up

again:mov port,#11111100b ;’0′
acall delay
mov port,#01100000b ;’1′
acall delay
mov port,#11011010b ;’2′
acall delay
mov port,#11110010b ;’3′
acall delay
mov port,#01100110b ;’4′
acall delay
mov port,#10110110b ;’5′
acall delay
mov port,#10111110b ;’6′
acall delay
mov port,#11100000b ;’7′
acall delay
mov port,#11111110b ;’8′
acall delay
mov port,#11110110b ;’9′
acall delay
sjmp again

;*************************************************

delay:mov r2,#0ffh ;delay subroutine
up3: mov r4,#03fh
up2: mov r3,#0fh
up1: djnz r3,up1
djnz r4,up2
djnz r2,up3
ret

;*************************************************

end


April 11, 2010 Posted by | Microcontroller Interfacing | | 2 Comments

Microcontroller LEd InterFacing

http://www.shree-electronics.com/images/DSC00288.JPG

The first thing usually done while learning any microcontroller or embedded system is blinking an LED. The circuit below shows the circuit for Interfacing an LED.

http://www.shree-electronics.com/images/led_small.gif

note: Since the circuit diagram dimensions are big, your browser may fit the image to window size, if you are using Internet explorer, then an expander tool will be displayed on the bottom right corner, if you are using firefox , then when you move the mouse pointer over the image a magnifier tool will be displayed.

Here an LED is connected to the first pin of port0 (P0.0). The assembly program given below is simple and self explanatory.

;*************************************************
;
;Program: Blinking LED.
;Author: Srikanth
;Website: http://shree-electronics.com/
;Description: Blinks an LED connected to P0.0
;continuously
;
;*************************************************

led equ P0.0

org 00h
up: setb led ;Turn ON the LED
acall delay ;call delay subroutine
clr led ;Turn OFF the LED
acall delay ;call delay subroutine
sjmp up ;Loop

delay:mov r7,#0ffh ;delay subroutine
loop:mov r6,#0ffh
djnz r6,$
djnz r7,loop
ret

end

The program is purposely made lengthy in order to explain some programming techniques such as subroutine, loop etc.


April 11, 2010 Posted by | Microcontroller Interfacing | | 2 Comments

Interfacing Relays

http://www.shree-electronics.com/images/DSC00305.JPG  http://www.shree-electronics.com/images/DSC00305.JPG

Relays allow us to control the high power circuits or instruments using low power circuits and voltage levels such as output of microcontrollers. Interfacing relays to 8051 or any other microcontroller is just simple as controlling a LED.

A relay consists of a coil which is driven by low power circuits such as microcontrollers in order to control high power ac circuits through output switches. Normally there are two types of switches in a relay, they are Normally Open (NO) and Normally Closed (NC) contacts. ‘NO’ contacts are open when relay is not activated where as the ‘NC’ contacts are closed, when relay is activated by supplying power to the input coil, the ‘NO’ contacts are now closed and the ‘NC’ contacts are open.

The circuit diagram for interfacing relay to a 8051 microcontroller is shown below.

http://www.shree-electronics.com/images/uc_relay_small.gif  http://www.shree-electronics.com/images/uc_relay_small.gif

The assembly program for interfacing relay is given below.

;*************************************************
;
;Program: Interfacing relay
;Author: Srikanth
;Website: http://shree-electronics.com/
;Description: Relay turns ON when the switch
;connected to P1.0 and turns OFF when pressed
;again
;
;*************************************************

relay equ P0.0
sw equ P1.0

;*************************************************
org 0000h

Main:clr relay        ;Configure inp and outp
setb sw
up:  jnb sw,on        ;wait for switch to be pressed
clr relay
acall delay
sjmp up
on:  setb relay       ;Turn ON relay
acall delay
acall delay
here:jb sw,here       ;wait for switch to be released
clr relay        Turn OFF relay
acall delay
acall delay
sjmp up          ;Loop

;*************************************************
delay:mov r7,#0ffh    ;delay subroutine
again:mov r6,#0ffh
djnz r6,$
djnz r7,again
ret

;*************************************************
end

BACK


April 11, 2010 Posted by | Microcontroller Interfacing | | Leave a comment

Interfacing Keybord With Microcontroller

Keyboard is a basic and essential element of an embedded or microcontroller system. For small and hobby projects a 4×4 (hex) matrix keyboard is sufficient. The keys in the matrix keyboard are arranged in a matrix arrangement in order to utilize the port pins of the microcontrollers efficiently. Here we can interface 16 keys by using just 8 pins of microcontroller. This is shown in the circuit diagram.

As shown in the circuit diagram, the rows are connected to 4 pins of a port, the columns are connected to other four pins, we configure rows as input and columns as output. By grounding one column and setting high all other columns, now by observing the status of the rows, we can come to know which button is pressed. For example, if we ground the first column and if the first row is low, then the first button is pressed. We know that microcontrollers are really fast, therefore they can detect the key press in microseconds, if we hold the switch for long time (for a microcontroller long time is in milliseconds), the microcontroller is triggered more than once, also there is a problem of switch debounce because of the spring action of the switch. To eliminate these problems we should introduce some amount of delay after every key press. The assembly source code for the circuit is given in the table below.

Circuit diagram for interfacing 4×4 keyboard to 8051(89s52):

http://www.shree-electronics.com/images/4x4_keypad_small.gif  http://www.shree-electronics.com/images/4x4_keypad_small.gif

My prototype for connecting to the main development board:

http://www.shree-electronics.com/images/DSC00044_small.JPG  http://www.shree-electronics.com/images/DSC00044_small.JPG

The assembly program for interfacing 4×4 keyboard:

;*************************************************
;Program: Blinking LED.
;Author: Srikanth
;Website: http://shree-electronics.com/
;Description: Displays the button pressed on the
;keyboard on a 7 segment display.
;
;keyboard format: 0 1 2 3
;                 4 5 6 7
;                 8 9 A B
;                 C D E F
;*************************************************
;Declarations
rw0 equ P2.0;
rw1 equ P2.1;
rw2 equ P2.2;
rw3 equ P2.3;
cl0 equ P2.4;
cl1 equ P2.5;
cl2 equ P2.6;
cl3 equ P2.7;
;*************************************************
;Main program

org 00h
ljmp main

org 30h
main: mov P2,#0ffh       ;Configure input
acall scan_key     ;Scan for keypress
acall display      ;display the key pressed
sjmp main          ;Loop

;*************************************************
;Subroutine to scan keys
scan_key:mov P2,#0ffh
clr cl0
mov a, P2
anl a,#00001111b
cjne a,#00001111b,Row0
setb cl0
clr cl1
mov a, P2
anl a,#00001111b
cjne a,#00001111b,Row1
setb cl1
clr cl2
mov a, P2
anl a,#00001111b
cjne a,#00001111b,Row2
setb cl2
clr cl3
mov a, P2
anl a,#00001111b
cjne a,#00001111b,Row3
setb cl3
ret

row0: mov dptr,#led_data
mov r6,#04h
clr c
rww0: rrc a
jc next0
sjmp over
next0:inc dptr
djnz r6,rww0
sjmp scan_key

row1: mov dptr,#led_data+4h
mov r6,#04h
clr c
rww1: rrc a
jc next1
sjmp over
next1:inc dptr
djnz r6,rww1
sjmp scan_key

row2: mov dptr,#led_data+8h
mov r6,#04h
clr c
rww2: rrc a
jc next2
sjmp over
next2:inc dptr
djnz r6,rww2
sjmp scan_key

row3: mov dptr,#led_data+0ch
mov r6,#04h
clr c
rww3: rrc a
jc next3
sjmp over
next3:inc dptr
djnz r6,rww3
sjmp scan_key

over: ret
;*************************************************
;Display subroutine
display:clr a
movc a,@a+dptr
mov P0,a
ret

;*************************************************
;lookup table
led_data:db 0fch,066h,0feh,09dh; For row1:0 1 2 3
db 060h,0b6h,0f6h,0fdh; For row2:4 5 6 7
db 0dah,0beh,0efh,09fh; For row3:8 9 A B
db 0f2h,0e0h,0ffh,08fh; For row4:C D E F

;*************************************************
end;


April 11, 2010 Posted by | Microcontroller Interfacing | | 1 Comment