Programa de ensamblaje de termómetro digital y diagrama de circuito basado en el microcontrolador AT89C51, el sensor de temperatura DS18B20 y la pantalla de cristal líquido LCD1602
Solo el código de LCD1602
; Placa de desarrollo de microcontrolador multifuncional 51
Programa de prueba LCD1602
RS EQU P2.0 p> p>
RW EQU P2.1
E EQU P2.2
LDATA EQU P1
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV R0, #00H; R0: el número de caracteres mostrados en cada línea
MOV R1, #80H; dirección
p>
MOV A, #38H; configurar pantalla (16×2)
ACALL WIR
MOV A, #0EH; muestra, muestra el cursor, el cursor no parpadea
ACALL WIR
MOV A, #06H Muestra toda la pantalla sin moverse
ACALL WIR
;MOV A, #01H; Mostrar pantalla clara
ACALL WIR
MOV DPTR, #LCD
LOOP0: MOV A, R1; /p>
ACALL WIR
INC R1; Agregar uno a la dirección
CJNE R1, #90H, TT Determinar si la primera línea ha sido escrita o no
p>MOV R1, #0C0H; si está escrito, R1 = Dirección de segunda línea
TT: MOV A, R0
MOVC A, @A DPTR
ACALL WDR
INC R0; Cuente R0 más 1
LCALL DELAY1
CJNE R0, #20H, LOOP0 si R1 no es igual a 32, continúa
RE: AJMP RE
WIR: ACALL BUSY; escribir subrutina de registro de instrucciones
CLR E; inicialización
CLR RS
CLR RW
SETB E
p>MOV LDATA, A
CLR E
RET
WDR: ACALL BUSY subrutina de registro de datos
CLR E
SETB RS
CLR RW
SETB E
MOV LDATA, A
CLR E
RET
BUSY: PUSH ACC; subrutina de detección de señal de ocupado
ISBUSY: CLR E
CLR RS
SETB RW
SETB E
MOV A, LDATA
JB ACC.7, ISBUSY ACC.7=1, indica ocupado
POP ACC
ACALL DELAY1
RET
DELAY1: MOV R6, #5; subrutina de retardo
D0: MOV R7, # 248
DJNZ R7, $
DJNZ R6, D0
RET
DELAY2: MOV R5, #2 p>
D1: MOV R3, #245
D2: MOV R4, #245
DJNZ R4, $
DJNZ R3, D2 p>
DJNZ R5, D1
RET
LCD: DB 'MCS-51 TEST'
DB ' Xu Rui Feng '
FIN