$NOMOD51
$INCLUDE (89S52.MCU)
; (C) [url]www.free8051projects.blogspot.com[/url]
; welove8051.com
RS EQU P1.0
RW EQU P1.1
EN EQU P1.2
BUSY BIT P0.7
DAT EQU P0
ADCSTART EQU P3.7
ADCDATA EQU P2
ORG 0H
MAIN:
CALL INIT
CALL LINIT
MOV DPTR,#MES1
CALL MESSDISP
CALL SLINE
MOV DPTR,#MES2
CALL MESSDISP
CALL DELAY
CALL DELAY
AGAIN: CALL CLEARS
MOV DPTR,#MES3
CALL MESSDISP
MOV A,P2
MOV B,#100
DIV AB
CALL ASCII
MOV A,B
MOV B,#10
DIV AB
CALL ASCII
MOV A,B
CALL ASCII
CALL DELAY
JMP AGAIN
INIT:
CLR ADCSTART
CALL DEL
SETB ADCSTART
RET
ASCII:
ADD A,#30H
CALL DATAWRT
RET
LINIT:
CLR RW
MOV A,#38H ;LCD 2 LINES
CALL COMNWRT
CALL CLEARS
CALL SLINE
MOV A,#0CH ;DISPLAY ON CURSOR ON
CALL COMNWRT
MOV A,#6H ;SHIFT CURSOR RIGHT
CALL COMNWRT
FLINE:
MOV A,#80H ;SEND FIRST LINE ADDRESS
CALL COMNWRT
RET
SLINE:
MOV A,#0C0H ;SEND FIRST LINE ADDRESS
CALL COMNWRT
RET
CLEARS:
MOV A,#01H ;CLEAR DISPLAY
CALL COMNWRT
RET
COMNWRT:
CALL READY
MOV DAT,A
CLR RS
SETB EN
CLR EN
RET
DATAWRT:
CALL READY
MOV DAT,A
SETB RS
SETB EN
CLR EN
RET
READY:
SETB BUSY
SETB RW
CLR RS
C1:
CLR EN
NOP
NOP
SETB EN
JB BUSY,C1
CLR RW
RET
MESSDISP:
D1:CLR A
MOVC A,@A+DPTR
CJNE A,#0FFH,CONT
RET
CONT:
CALL DATAWRT
INC DPTR
SJMP D1
DELAY:
MOV R7,#10D
L2: MOV R6,#100D
L1:
CALL DEL
DJNZ R6,L1
DJNZ R7,L2
RET
DEL:
CLR CPRL2
CLR CT2
MOV TL2,#7CH
MOV TH2,#0FCH
SETB TR2
JNB TF2,$
CLR TR2
CLR TF2
RET;
MES1: DB " DIGITAL ",255
MES2: DB "THERMOMETER",255
MES3: DB "TEMPERATURE:",255
END