|
|
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.

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 )
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
|