Tôi thấy đoạn gửi lệnh của bạn dùng cờ Flag. Như vậy là sẽ không áp dụng được khi khởi tạo. Bạn sửa lại theo tôi xem nhé:
Đoạn LCD Init bạn viết cũng chưa đúng. Tôi thấy mọi người góp ý nhưng không hiểu sao bạn không sửa theo.
Tôi sửa cho bạn như sau:
Đoạn Main bạn cũng nên sửa như sau:
Code:
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
[COLOR="Red"];****************************
;Đoạn này của tôi
;****************************
Delay 38 micro giây ;Bạn tự viết lấy
CLR EN
;****************************
;Hết đoạn này của tôi
;****************************[/COLOR]
RET
Tôi sửa cho bạn như sau:
Code:
LCDINIT: ;CTC KHOI TAO LCD
CLR RS ;RS = 0 - GUI LENH
CLR RW ;RW = 0 - WRITE LCD MODE
[COLOR="red"]CLR EN ;E = 0 - ENABLE[/COLOR]
[COLOR="red"] ;Thêm đoạn Delay 41ms nhé
;Bạn tự viết nhé[/COLOR]
MOV DATABUS,#38H [COLOR="red"];Cái này chỉ là khởi tạo thôi[/COLOR]
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-4100)
MOV TL0,#LOW(-4100)
ACALL DELAY ;DELAY 4.1MS
MOV DATABUS,#30H [COLOR="red"];Cái này chỉ là khởi tạo thôi[/COLOR]
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-100)
MOV TL0,#LOW(-100)
ACALL DELAY ;DELAY 100US
MOV DATABUS,#30H [COLOR="red"];Thêm 1 cái khởi tạo nữa mới đủ[/COLOR]
ACALL SENDCOMMAND ;GUI LENH RA LCD
[COLOR="red"];Thêm mấy cái này nữa nè
MOV DATABUS,#08H ;CODE = 08H - Display off
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#01H ;CODE = 01H - Clear Display
ACALL SENDCOMMAND ;GUI LENH RA LCD[/COLOR]
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
;Đến đây mới hết phần khởi tạo
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
[COLOR="red"] MOV DATABUS,#02H ;CODE = 02H - Home
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#41H ;CODE = 41H - Chữ 'A'
ACALL SENDDATA ;GUI DATA RA LCD
SJMP $ ;Có thấy hiện chữ A ko? :D[/COLOR]
RET
Code:
ORG 00H LJMP MAIN ORG 30H MAIN:
À mà chú có sẵn con 320 x 200 không? Anh mượn về thử tí...


Comment