Professional Documents
Culture Documents
giaithich
giaithich
MAIN:
mov r0,#0
acall init_lcd
mov dptr,#table(Con trỏ dữ liệu DPTR là thanh ghi 16 bit duy nhất của Vi điều khiển 8051 được tạo thành
từ hai thanh ghi DPL (byte thấp-địa chỉ byte 82H) và DPH (byte cao-địa chỉ byte 83H))(lúc này gán table
vào dptr)
movc a,@a+dptr(chuyển vào A một byte từ bộ nhớ chương trình tại vị trí cách con trỏ gốc DPTR một
khoảng là nội dung của A)
NHAY: acall lcd_write(viết từng kí tự của A :lúc này là table lên lcd)
CJNE r0,#16,LOOP(nếu r0 khác 16 thì nhảy lên loop)(vì lcd chỉ có 16 ô 1 hàng)
mov a,#0C0H(nếu r0 =16 thì gán A cho C0H để đưa con trỏ về vị trí đầu hàng 2 của LCD)
setb rs(Đặt RS = 0 nếu byte dữ liệu là lệnh và tạo RS = 1 nếu byte dữ liệu là dữ liệu sẽ được hiển thị.)
clr rw(Mức cao ở chân này cho phép chế độ đọc và mức thấp ở chân này cho phép chế độ ghi.)
mov DBUS,a
setb e(Chân E là để kích hoạt các mô-đun. Chuyển đổi từ cao xuống thấp ở chân này sẽ cho phép mô-
đun.
clr e
ret
clr rw(Mức cao ở chân này cho phép chế độ đọc và mức thấp ở chân này cho phép chế độ ghi.)
clr rs(Đặt RS = 0 nếu byte dữ liệu là lệnh và tạo RS = 1 nếu byte dữ liệu là dữ liệu sẽ được hiển thị.)
setb e(Chân E là để kích hoạt các mô-đun. Chuyển đổi từ cao xuống thấp ở chân này sẽ cho phép mô-
đun.
clr e
acall wait_lcd
ret
wait_lcd:(Hàm delay) (Lưu ý: trường hợp không dùng lệnh đọc cờ BF để chờ LCD thực
hiện xong lệnh,ta có thể gọi chương trình con DELAY tạo thời gian
trễ tối thiểu 50μs,tốt nhất là 100μs sau khi xuất lệnh ra LCD,và phải
tạo trễ 1520μs khi xuất lệnh chuyển con trỏ về đầu dòng hoặc xóa
mov r7,#100
djnz r7,$
ret
init_lcd:;khoi dong lcd
clr rs; (Đặt RS = 0 nếu byte dữ liệu là lệnh và tạo RS = 1 nếu byte dữ liệu là dữ liệu sẽ được hiển thị.)
setb E;(Chân E là để kích hoạt các mô-đun. Chuyển đổi từ cao xuống thấp ở chân này sẽ cho phép mô-
đun.
clr E
acall lcd_command(lúc này LCD nhận lệnh A=38H để lcd Đặt chức năng giao tiếp 8 bit,2 dòng,5X8)
clr rs
setb e
clr e
acall lcd_command(lúc này LCD nhận lệnh 0EH tức là Màn hình bật, con trỏ nhấp nháy tắt)
clr rs
setb e
clr e
acall lcd_command (lúc này LCD nhận lệnh 06H là tăng trỏ)
ret
delay:
mov R3,#2
delay1:
mov R4,#250
delay2:
mov R5,#250
djnz R5,$
djnz R4,delay2
djnz R3,delay1
ret
end