IndianEngineer

ProjectsectsBazaar.in

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.


Advertisements

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

8051 serial port

The only one communication hardware present in atmel 89S52 version of 8051 microcontroller is the serial port. The serial port or UART transfers data bit by bit. In mode 1, 8 bits can be sent with one start and stop bit in a frame.

Communicating with the PC:

We can communicate with PC by using the serial port available in 8051. In order to communicate with the PC, we need a level converter because the serial port of the pc uses RS232 voltage levels which is much higher voltage than the TTL logic used by the microcontroller (+12v for logic 0 and -12v for logic 1). A dedicated IC from MAXIM i.e. Max232 is readily available in the market. It converts the TTL signals from the microcontroller to RS232 level and the other way round. Max232 contains 2 channels, works with single 5V supply and uses the principle of charge pump to convert the voltage levels.

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

The schematic :

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

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

Configuring HyperTerminal:

HyperTerminal is the tool usually used to test and communicate with the PC’s serial port. To set up HyperTerminal follow the steps given below.

1. Open HyperTerminal.

Start > All programs > Accessories > Communications > Hyper Terminal

2.Specify a name for the connection

Click OK

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

3.Configure the connection parameters

Select the port of your PC i.e.COM1, COM2 etc., click OK

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

Set baud rate as required, and change Flow control to none

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

The connected in the bottom shows the status of the connection.

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

Now your HyperTerminal is ready to communicate. You can disconnect or connect the connection by clicking on the icons shown in the image.

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

HyperTerminal displays only the character or data received, not the one you typed to send.

Testing the Level converter:

You are ready with level converter hardware and HyperTerminal, now its time for testing your level converter hardware. For testing purpose, just interconnect the Tx and Rx pins of the level converter, and type something in the HyperTerminal, you will see the echo.

Programming the 8051:

8051 USART uses dedicated buffer register SBUF, the mode and other settings of the serial port such as number of stop bits etc. is determined by the contents of SCON register. Timer 1 should be initialized to 8-bit auto reload, and its content determines the Baud rate of the 8051 serial port. Read datasheet to know more about different modes of UART.

Connecting the Microcontroller:

Connect the Tx and Rx pins of the 8051 (pin no. 10 and 11 i.e. P3.0 and P3.1 in 89S52)microcontroller to the level converter. Provide power for the 8051 microcontroller target board.

;*************************************************
;
;Program: UART_test
;Author: Srikanth
;Website: http://shree-electronics.com/
;Description: Prints string on the hyperterminal window
;
;*************************************************

org 0000h
ljmp main

main:
mov tmod,#20h      ;Timer 1 configured to 8 bit
;auto reload
mov th1,#-6        ;Baud rate set to 9600
mov scon,#50h      ;UART configure as 8 data bits
setb tr1           ;with 1 start and stop bit
up:
mov sbuf,#’s’      ;Store the char to be
;transmitted in SBUF refister
acall transmit     ;call transmit subroutine
mov sbuf,#’h’
acall transmit
mov sbuf,#’r’
acall transmit
mov sbuf,#’e’
acall transmit
mov sbuf,#’e’
acall transmit
mov sbuf,#’-‘
acall transmit
mov sbuf,#’e’
acall transmit
mov sbuf,#’l’
acall transmit
mov sbuf,#’e’
acall transmit
mov sbuf,#’c’
acall transmit
mov sbuf,#’t’
acall transmit
mov sbuf,#’r’
acall transmit
mov sbuf,#’o’
acall transmit
mov sbuf,#’n’
acall transmit
mov sbuf,#’i’
acall transmit
mov sbuf,#’c’
acall transmit
mov sbuf,#’s’
acall transmit
mov sbuf,#’.’
acall transmit
mov sbuf,#’c’
acall transmit
mov sbuf,#’o’
acall transmit
mov sbuf,#’m’
acall transmit

up1:
ajmp up1           ;Loop here

transmit:            ;Transmit subroutine
jnb ti, transmit   ;Wait for completion of
;transmission
clr ti             ;Clear transmit flag
ret

end

;*************************************************
;
;Program: UART_test_1
;Author: Srikanth
;Website: http://shree-electronics.com/
;Description: Prints the next char of the typed
; character on the hyperterminal window
;
;*************************************************

org 0000h
ljmp main

main:
mov tmod,#20h      ;Timer 1 configured to 8 bit
;auto reload
mov th1,#-6       ;Baud rate set to 9600
mov scon,#50h     ;UART configure as 8 data bits
setb tr1          ;with 1 start and stop bit
up:
acall recieve     ;First recieve the char typed on
;hyperterminal
cjne a,#’z’,next  ;If typed char is not Z, then
mov a,#’a’-1      ;send next char of the typed one
next:
inc a
acall transmit
sjmp up           ;Loop

transmit:           ;Transmit subroutine
mov sbuf,a        ;Move the char to be transmitted
;into SBUF reg
jnb ti,$          ;Wait for transmission to be
;complete
clr ti            ;clear transmit flag
ret

recieve:            ;Recieve subroutine
jnb ri,$          ;wait for a char to be recieved
mov a,sbuf        ;save the recieved char
clr ri            ;clear recieve flag
ret

end

April 11, 2010 Posted by | Microcontroller's | | Leave a comment

ISP Flash Microcontroller Programmer Ver 3.0a

ISP Flash Microcontroller

Programmer

Ver 3.0a

Mohammad Asim Khan, asimkhan@sat.net.pk


Introduction

This ISP Programmer can be used either for in-system programming or as a stand-alone spi programmer for Atmel ISP programmable devices. The programming interface is compatible to STK200 ISP programmer hardware so the users of STK200 can also use the software which can program both the 8051 and AVR series devices.

Hardware

Figure 1 shows the circuit diagram of the in-system programmer interface, the power to the interface is provided by the target system. The 74HCT541 ic isolate and buffer the parallel port signals. It is necessary to use the HCT type ic in order to make sure the programmer should also work with 3V type parallel port.

http://www.kmitl.ac.th/~kswichit/IspPgm30a/isp1_sch.gif

Figure 1: Circuit Diagram of the ISP Programmer Interface

Figure 2 shows the circuit diagram of the stand-alone spi programmer, the power to the interface is provided by the PC USB port which can supply a max of 100mA current. Get a cheap USB cable, cut the
cable other end connector and attach a crimp shell connector to this end, red wire is 5V and black is 0V.

The printer port buffer interface is same as shown in figure 1. For the u-controller a 40 pin ZIF socket can
be used.
This programmer circuit can be use to program the 89S series devices and the AVR series devices which
are pin compatible to 8051, like 90S8515. For other AVR series devices the user can make an adapter
board for 20, 28 and 40 pin devices. The pin numbers shown in brackets correspond to PC parallel port
connector.

http://www.kmitl.ac.th/~kswichit/IspPgm30a/isp2_sch.gif

Figure 2: Circuit Diagram of the SPI Programmer

Software

The ISP-30a.zip file contains the main program and the i/o port driver. Place all files in the same folder.
The main screen view of the program is shown in figure 3.

Also make sure do not program the RSTDISBL fuse in ATmega8, ATtiny26 and ATtiny2313 otherwise further spi programming is disable and you will need a parallel programmer to enable the
spi programming. For the fuses setting consult the datasheet of the respective device.

For the auto hardware detection it is necessary to short pin 2 and 12 of DB25 connector, otherwise the
software uses the default parallel port i.e. LPT1.

Following are the main features of this software,

· Read and write the Intel Hex file

· Read signature, lock and fuse bits

· Clear and Fill memory buffer

· Verify with memory buffer

· Reload current Hex file

· Display buffer checksum

· Program selected lock bits & fuses

· Auto detection of hardware

Note:

The memory buffer contains both the code data and the eeprom data for the devices which have
eeprom memory. The eeprom memory address in buffer is started after the code memory, so it is
necessary the hex file should contains the eeprom start address after the end of code memory last address
i.e. for 90S2313 the start address for eeprom memory is 0x800.

The software does not provide the erase command because this function is performed
automatically during device programming. If you are required to erase the controller, first use the clear
buffer command then program the controller, this will erase the controller and also set the AVR device fuses
to default setting.

Download

ISP-Flash Programmer Software ISP-30a.zip

http://www.kmitl.ac.th/~kswichit/IspPgm30a/ISP-Pgm.gif

Figure 3: Main screen of the program ISP-Pgm Ver 3.0a

Contribution to Asim’s ISP Loader

ISP_programmer.zip Schematics and PCB Files including PDF layouts for all layers designed by Farshid Jafari Harandi from Iran using Eagle cadsoft. updated 8-Sep-2005

AT89ISP.rar Single side layout made by Amr Ahmed Abdel-Baset from Egypt.

prahlad.zip ppisppdf.zip Single Side PCB files in Post Script and PDF Format made by Prahlad J. Purohit from India.

ISP_PGM.zip Layout made by Mehrdad Mahboudy from Iran.

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

VHDL PROJECTS LIST

VHDL PROJECTS LIST

  1. DMA CONTROLLER (DIRECT MEMORY ACCESS ) USING VHDL/VLSI (latest)
  2. EDGE DETECTION USING VHDL A NEW PROJECT IN VHDL/VLSI (latest)
  3. PAY BEFORE YOU USE ELECTRICITY ( A ADVANCED PRE PAID ELECTRICITY SYSTEM)(latest)
  4. VENDING MACHINE
  5. 16-BIT BARREL SHIFTER
  6. DMA CONTROLLER
  7. UART RECIEVER
  8. BAUD RATE GENERATOR
  9. TRAFFIC LIGHT CONTROLLER SINGLE WAY
  10. TRAFFIC LIGHT CONTROLLER MULTIWAY
  11. 16-BIT MICROPROCESSOR
  12. BINARY TO BCD\BCD TO BINARY CONVERTER
  13. FIXED POINT UNIT (ALU)
  14. FIXED POINT UNIT (COMPARATOR)
  15. UNSIGNED SERIAL DIVIDER
  16. 8 BIT MICROPROCESSOR
  17. UART TRANSMITTER
  18. HCSA ADDER AND GENERIC ALU BASED ON HCSA
  19. 32-BIT MICROPROCESSOR

For More Projects log on to http://www.IndianEngineer.in

vlsi projects,project in vhdl,vhdl project,vhdl code,project on vhdl,project using vhdl,fpga project,vhdl based project,vlsi project,vhdl project report,verilog project

April 1, 2010 Posted by | Uncategorized | 10 Comments

Centre Jack Project

February 20, 2010 Posted by | Uncategorized | Leave a comment