so do ket noi
sơ đồ này hi vọng rõ hơn
e không biết sơ sơ đồnguyên lý hay code sai nữa mà không thể nào hiển thị nhiệt độ được
code
{
;RS -> P0.0
;RW -> P0.1
;E -> P0.2
;DATA BUS -> PORT 2
;************************************************* **
$MOD51
EN BIT P0.2
RW BIT P0.1
RS BIT P0.0
DATABUS EQU P2
;************************************************* **
ORG 00H
MAIN:
ACALL LCDINIT ;KHOI TAO LCD
MP1:
ACALL DISP_FLINE ;HIEN THI DONG 1
DOC_ADC:
CLR P3.0
CLR P3.1
CLR P3.2
CLR P3.3
SETB P3.3
CLR P3.3
JNB P3.4,$
MOV A,P1
MOV B,#3
DIV AB
MOV B,#100
DIV AB
MOV 20H,A
MOV A,B
MOV B,#10
DIV AB
MOV 21H,A
MOV A,B
MOV 22H,A
ACALL MALCD
MALCD:
MOV A,20H
ADD A,#30
MOV 48H,A
MOV A,21H
ADD A,#30
MOV 49H,A
MOV A,22H
ADD A,#30
MOV 50H,A
ACALL DISP_SLINE ;HIEN THI DONG 2
SJMP $
;************************************************* **
LCDINIT: ;CTC KHOI TAO LCD
CLR RS ;RS = 0 - GUI LENH
CLR RW ;RW = 0 - WRITE LCD MODE
SETB EN ;E = 1 - ENABLE
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-4100)
MOV TL0,#LOW(-4100)
ACALL DELAY ;DELAY 4.1MS
MOV DATABUS,#30H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-100)
MOV TL0,#LOW(-100)
ACALL DELAY ;DELAY 100US
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#0CH ;CODE = C0H - CHO PHEP LCD HIEN THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#01H ;CODE = 01H - XOA LCD
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#50H
ACALL SENDCOMMAND ;GUI GIA TRI RA LCD
RET
;************************************************* **
SENDCOMMAND: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU LIEU (SENDDATA) RA LCD
CLR RS ;RS = 0 - GUI LENH
SJMP PULSE_EN
SENDDATA:
SETB RS ;RS = 1 - GUI DU LIEU
NOP
PULSE_EN: ;TAO XUNG ENABLE DE CHUYEN THONG TIN (COMMAND/DATA) VAO LCD
CLR RW ;RW = 0 - WRITE LCD MODE
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC LCD GHI NHAN THONG TIN GUI DEN
;************************************************* ************
;MOV TH0,#HIGH(-1000) ;LENH NAY DUOC THAY THE CHO DOAN MA KIEM TRA DUOI DAY KHI
;MOV TL0,#LOW(-1000) ;CHAY CHUONG TRINH NAY TRONG PHAN MEM MO PHONG TOPVIEW
;ACALL DELAY
;************************************************* ************
MOV DATABUS,#0FFH ;CAU HINH PORT 2 CHO CHE DO PORT NHAP
SETB RW ;RW = 1 - READ LCD MODE
CLR RS ;RS = 0 - GUI LENH
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
BUSY: ;BUSY = 0 -> HOAN TAT, BUSY = 1 -> DANG THUC HIEN
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY ;KIEM TRA CO BUSY
BUSY2: ;KIEM TRA CO BAO BAN (BUSY FLAG) LAN THU HAI
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY2 ;KIEM TRA CO BUSY LAN 2
CLR RW ;RW = 0 - WRITE LCD MODE (THOAT KHOI CHE DO READ, TRO VE CHE DO WRITE)
;************************************************* ************
RET
;************************************************* **
DISP_FLINE: ;CTC DAT DIA CHI BAT DAU DONG 1 VA NAP DU LIEU DONG 1 VAO DDRAM
MOV DATABUS,#80H ;CODE = 80H - DAT DDRAM DIA CHI BAT DAU CUA DONG 1 - 00H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 1 CUA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG LCD
RET
;************************************************* **
DISP_SLINE: ;CTC DAT DIA CHI BAT DAU DONG 2 VA NAP DU LIEU DONG 2 VAO DDRAM
MOV DATABUS,#0C0H ;CODE = C0H - DAT DDRAM DIA CHI BAT DAU CUA DONG 2 - 40H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#SLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 2 CUA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG LCD
RET
;************************************************* **
WRITE: ;CTC GUI DU LIEU SANG LCD, KET THUC GUI DU LIEU KHI DU LIEU GUI DI LA 99H
MOV A,#0 ;OFFSET DAU TIEN TRONG VUNG DU LIEU CUA DPTR
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU
CJNE A,#99H,WRITE_CONT ;KIEM TRA LAY HET DU LIEU TRONG VUNG DU LIEU - DU LIEU KET THUC LA 99H
RET
WRITE_CONT: ;KHONG PHAI LA DU LIEU KET THUC - CHUA LAY HET DU LIEU
MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA PORT DEN LCD
ACALL SENDDATA ;GUI DU LIEU RA LCD
INC DPTR ;CHUYEN SANG DU LIEU KE TIEP
SJMP WRITE ;QUAY TRO VE DE GUI DU LIEU KE TIEP
RET
;************************************************* **
DELAY:
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;************************************************* **
FLINE_DATA: ;DU LIEU HIEN THI DONG 1
DB 'NHIET DO'
DB 99H ;MA KET THUC DONG (TU CHON)
SLINE_DATA: ;DU LIEU HIEN THI DONG 2
DB 50H
DB 99H ;MA KET THUC DONG (TU CHON)
END
sơ đồ này hi vọng rõ hơn
e không biết sơ sơ đồnguyên lý hay code sai nữa mà không thể nào hiển thị nhiệt độ được
code
{
;RS -> P0.0
;RW -> P0.1
;E -> P0.2
;DATA BUS -> PORT 2
;************************************************* **
$MOD51
EN BIT P0.2
RW BIT P0.1
RS BIT P0.0
DATABUS EQU P2
;************************************************* **
ORG 00H
MAIN:
ACALL LCDINIT ;KHOI TAO LCD
MP1:
ACALL DISP_FLINE ;HIEN THI DONG 1
DOC_ADC:
CLR P3.0
CLR P3.1
CLR P3.2
CLR P3.3
SETB P3.3
CLR P3.3
JNB P3.4,$
MOV A,P1
MOV B,#3
DIV AB
MOV B,#100
DIV AB
MOV 20H,A
MOV A,B
MOV B,#10
DIV AB
MOV 21H,A
MOV A,B
MOV 22H,A
ACALL MALCD
MALCD:
MOV A,20H
ADD A,#30
MOV 48H,A
MOV A,21H
ADD A,#30
MOV 49H,A
MOV A,22H
ADD A,#30
MOV 50H,A
ACALL DISP_SLINE ;HIEN THI DONG 2
SJMP $
;************************************************* **
LCDINIT: ;CTC KHOI TAO LCD
CLR RS ;RS = 0 - GUI LENH
CLR RW ;RW = 0 - WRITE LCD MODE
SETB EN ;E = 1 - ENABLE
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-4100)
MOV TL0,#LOW(-4100)
ACALL DELAY ;DELAY 4.1MS
MOV DATABUS,#30H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-100)
MOV TL0,#LOW(-100)
ACALL DELAY ;DELAY 100US
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#0CH ;CODE = C0H - CHO PHEP LCD HIEN THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#01H ;CODE = 01H - XOA LCD
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#50H
ACALL SENDCOMMAND ;GUI GIA TRI RA LCD
RET
;************************************************* **
SENDCOMMAND: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU LIEU (SENDDATA) RA LCD
CLR RS ;RS = 0 - GUI LENH
SJMP PULSE_EN
SENDDATA:
SETB RS ;RS = 1 - GUI DU LIEU
NOP
PULSE_EN: ;TAO XUNG ENABLE DE CHUYEN THONG TIN (COMMAND/DATA) VAO LCD
CLR RW ;RW = 0 - WRITE LCD MODE
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC LCD GHI NHAN THONG TIN GUI DEN
;************************************************* ************
;MOV TH0,#HIGH(-1000) ;LENH NAY DUOC THAY THE CHO DOAN MA KIEM TRA DUOI DAY KHI
;MOV TL0,#LOW(-1000) ;CHAY CHUONG TRINH NAY TRONG PHAN MEM MO PHONG TOPVIEW
;ACALL DELAY
;************************************************* ************
MOV DATABUS,#0FFH ;CAU HINH PORT 2 CHO CHE DO PORT NHAP
SETB RW ;RW = 1 - READ LCD MODE
CLR RS ;RS = 0 - GUI LENH
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
BUSY: ;BUSY = 0 -> HOAN TAT, BUSY = 1 -> DANG THUC HIEN
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY ;KIEM TRA CO BUSY
BUSY2: ;KIEM TRA CO BAO BAN (BUSY FLAG) LAN THU HAI
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY2 ;KIEM TRA CO BUSY LAN 2
CLR RW ;RW = 0 - WRITE LCD MODE (THOAT KHOI CHE DO READ, TRO VE CHE DO WRITE)
;************************************************* ************
RET
;************************************************* **
DISP_FLINE: ;CTC DAT DIA CHI BAT DAU DONG 1 VA NAP DU LIEU DONG 1 VAO DDRAM
MOV DATABUS,#80H ;CODE = 80H - DAT DDRAM DIA CHI BAT DAU CUA DONG 1 - 00H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 1 CUA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG LCD
RET
;************************************************* **
DISP_SLINE: ;CTC DAT DIA CHI BAT DAU DONG 2 VA NAP DU LIEU DONG 2 VAO DDRAM
MOV DATABUS,#0C0H ;CODE = C0H - DAT DDRAM DIA CHI BAT DAU CUA DONG 2 - 40H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#SLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 2 CUA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG LCD
RET
;************************************************* **
WRITE: ;CTC GUI DU LIEU SANG LCD, KET THUC GUI DU LIEU KHI DU LIEU GUI DI LA 99H
MOV A,#0 ;OFFSET DAU TIEN TRONG VUNG DU LIEU CUA DPTR
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU
CJNE A,#99H,WRITE_CONT ;KIEM TRA LAY HET DU LIEU TRONG VUNG DU LIEU - DU LIEU KET THUC LA 99H
RET
WRITE_CONT: ;KHONG PHAI LA DU LIEU KET THUC - CHUA LAY HET DU LIEU
MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA PORT DEN LCD
ACALL SENDDATA ;GUI DU LIEU RA LCD
INC DPTR ;CHUYEN SANG DU LIEU KE TIEP
SJMP WRITE ;QUAY TRO VE DE GUI DU LIEU KE TIEP
RET
;************************************************* **
DELAY:
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;************************************************* **
FLINE_DATA: ;DU LIEU HIEN THI DONG 1
DB 'NHIET DO'
DB 99H ;MA KET THUC DONG (TU CHON)
SLINE_DATA: ;DU LIEU HIEN THI DONG 2
DB 50H
DB 99H ;MA KET THUC DONG (TU CHON)
END
Comment