Tutorial Microcontroller 8051
 
 
 
 
 
   

BACK NEXT

2.5.1. Displaying data ADC 0804 in LCD Character as a Decimal

In this lesson will be learn how to display data ADC on LCD Character, for a simple task that we assume ADC have input ranges 0 - 5 volt, and then will display data as desimal that must be 3 digit 0 - 255.

Microcontroller Application ADC Display to LCD Character

Figure 2.5.1. Display data ADC to LCD Character as decimal

Step 1st
Build the circuit as shown in figure 2.5.1. As you seen on figure 2.5.1. P0.0 trough P0.7 is connected to DB0 - DB7 ADC0804, and P2.0- P2.7. is connected to D0 - D7, and P3.0, P3.1. is connected to RS and EN each. Remember, that all we want to do with this lesson is write data ADC, in the first line of LCD Character

Step 2nd
In this step, you must tipe the assembly program to make your LCD Character shown the data, we assume that you have already known the editor, we used MIDE-51 to edit the program. ( Download File asm : exp251.zip, Download Complete Circuit File : ADC.pdf )

       org 0h
       call init_LCD
start: call ADC
call Bin2Dec
call Write2LCD sjmp start
; ;================================================= ;this subroutine is used to take data from ADC and
;keep to Accumulator ;=================================================
ADC: mov A,P0
nop
nop
ret ; ;========================================================
;this subroutine is used print out data decimal to LCD
;character 2 x16 on address DDRAM 0C9 0CA 0CB each for
;hundreds, tens, and ones
;======================================================== Write2LCD:
mov r1,#0c9h
call write_inst
mov a,hundreds
add a,#30h
mov r1,a
call write_data
;
mov r1,#0cah
call write_inst
mov a,tens
add a,#30h
mov r1,a
call write_data
;
mov r1,#0cbh
call write_inst
mov a,ones
add a,#30h
mov r1,a
call write_data
ret ; ;========================================================
;this subroutine is used to convert binary data from ADC
;become decimal 3 digit
;======================================================== Bin2Dec:
mov b,#100d
div ab
mov hundreds,a
mov a,b
mov b,#10d
div ab
mov tens,a
mov ones,b
ret ; write_char:
mov dptr,#word1 ;DPTR = [ address word1 ]
mov r3,#16 ;R3=16,number character to be display
mov r1,#80h ;R1=80h,address DDRAM start position
acall write_inst
; write1:clr a ; A = 0
movc a,@a+dptr ; A = [A+ DPTR]
mov r1,A ; R1 = A
inc dptr ; DPTR = DPTR +1
acall write_data; djnz r3,write1 ; R3 = R3-1,
ret
; Init_lcd: mov r1,#00000001b ;Display clear acall write_inst ; mov r1,#00111000b ;Function set, ;Data 8 bit,2 line font 5x7 acall write_inst ; mov r1,#00001100b ;Display on,
;cursor off,cursor blink off acall write_inst mov r1,#00000110b ;Entry mode, Set increment acall write_inst ret
;
Write_inst:
clr P2.0 ; RS = P2.0 = 0, write mode instruction
mov P0,R1 ; D7 s/d D0 = P0 = R1
setb P2.1 ; EN = 1 = P2.1
call delay; call delay time
clr P2.1 ; EN = 0 = P2.1
ret ; Write_data:
setb P2.0 ; RS = P2.0 = 1, write mode data
mov P0,R1 ; D7 s/d D0 = P0 = R1
setb P2.1 ; EN = 1 = P2.1
call delay; call delay time
clr p2.1 ; EN = 0 = P2.1
ret ; delay: mov R0,#0
delay1:mov R2,#0fh
djnz R2,$
djnz R0,delay1
ret ; word1: DB ' Data ADC0804 ' ; end

Step 3rd
Safe your assembly program above, and name it with adc1.asm (for example) Compile the program that you have been save by using MIDE-51, see the software instruction.

Step 4th
Download your hex file ( adc1.hex ) into the microcontroller by using Microcontroller ATMEL ISP software, see the instruction.After download this hex file you'll see the action of ADC ( of course if your cable connection and your program are corrected )

Best Link

 

 

BACK NEXT

 

Lesson 1:
T o o l
1.1. Programmer
1.2.
Edsim 51
1.3. MIDE-51
1.4. ATMEL ISP

Lesson 2:
Input Output
2.1.LED
2.2.Swicht
2.3.7 Segmen
2.4.LCD Character
2.5.ADC
2.6.DAC
2.7.Motor Stepper
2.8.Keypad

Lesson 3:

Timer Counter

3.1.Basic
3.2.Mode 0
3.3.Mode 1
3.4.Mode 2
3.5.Mode 3

Lesson 4:

Serial Comm.

4.1.Basic
4.2.LED
4.3.Rotate LED
4.2 ADC
4.3.LCD

Lesson 5:
Interuption

5.1.Basic
5.2.Timer
5.2.External