Em đang tự tìm hiểu về lập trình cho LCD dùng VĐK AT89C51 viết bằng ngôn ngữ Assembly.
Sơ đồ chân của LCD về cơ bản em đã nắm được.
Em có tham khảo các đoạn code ở trên mạng, mang về chỉnh sửa và viết đoạn code hiển thị chữ "Tong Duc Cuong" lên LCD như sau:
Em không có điều kiện làm mạch thật mà chỉ mô phỏng bằng phần mềm Proteus v7.8 và có vấn đề nảy sinh là khi mô phỏng thì LCD chỉ hiện mỗi 1 vạch ngang ở cuối LCD. Em chưa biết phải sử lý như thế nào vì đây là lần đầu tiên em viết code và mô phỏng về LCD.
Nhờ các anh (chị) trong diễn đàn giúp đỡ em gỡ rối vụ này với.!
P/S: Em có đính kèm file mô phỏng ở dưới, nhờ các anh (chị) xem giúp.!
LCD.zip
Sơ đồ chân của LCD về cơ bản em đã nắm được.
Em có tham khảo các đoạn code ở trên mạng, mang về chỉnh sửa và viết đoạn code hiển thị chữ "Tong Duc Cuong" lên LCD như sau:
Code:
;======================================================== ; Ten chuong trinh : Hien thi chu: "Tong Duc Cuong" len LCD ; Nguoi thuc hien : Kyle Ray ; Thuc hien : 14/04/2012 - 7h25' ; Phien ban : 1.0 ; Mo ta phan cung : ; | Dung AT89C51 - thach anh 12MHz ; | LCD 2 line - 16*2 (LM016L) ; | Line1: 80 81 82 83 84 85 86 ... 8F ; | Line2: C0 C1 C2 C3 CC C5 C6 ... CF ; | Dieu khien LCD che do 8 bit ; | P1.0,..,.7 dung de xuat du lieu ; | P3.7,.6,.5 cho cac chan EN(0 enable,1 disable) ; | RS(0: lenh,1: du lieu),RW( 1 read, 0 write ) ;-------------------------------------------------------- ; Ngay hoan thanh : ... ; Ngay kiem tra : ... ; Nguoi kiem tra : Kyle Ray ;-------------------------------------------------------- ; Chu thich : ; | Duoi day la doan code don gian hien thi chu: ; | "Tong Duc Cuong" len LCD. Giup ta lam quen voi ; | cong viec lam trinh cho LCD. ;======================================================== DB7 bit p1.7 EN bit p3.7 RS bit p3.6 RW bit p3.5 ;------------------------------- org 0h main: ;1. Khoi dong LCD acall Init_LCD ;Goi chuong trinh khoi tao cac gia tri ban dau cho LCD ;2. Xoa LCD acall Clear_LCD ;Goi chuong trinh xoa LCD ;3. Ghi du lieu len LCD mov a, #"T" ;Chu T acall Write_Data ;Goi CTC hien xuat chu T ra LCD mov a, #"O" acall Write_Data mov a, #"N" acall Write_Data mov a, #"G" acall Write_Data mov a, #" " acall Write_Data mov a, #"D" acall Write_Data mov a, #"U" acall Write_Data mov a, #"C" acall Write_Data mov a, #" " acall Write_Data mov a, #"C" acall Write_Data mov a, #"U" acall Write_Data mov a, #"O" acall Write_Data mov a, #"N" acall Write_Data mov a, #"G" acall Write_Data sjmp $ ;Cho o day ;=========== CHUONG TRINH CON ========== ;--------------------------------------- Init_LCD: setb EN mov a, #38h ;Function Set (LCD 2 lines, dot 5*7) acall Write_Command mov a, #0eh ;Display Control (cho phep hien thi con tro) acall Write_Command mov a, #6h ;Entry mode set (ky tu sau hien thi sau ki tu truoc acall Write_Command ;va khong thay doi vi tri ki tu truoc) ret ;--------------------------------------- Clear_LCD: setb EN mov a, #01h acall Write_Command mov a, #80h ;Dua con tro ve dong 1 cot 1 acall Write_Command ;Xuat lenh ret ;--------------------------------------- Write_Command: acall Ready_LCD ;KT xem LCD da sang sang nhan lenh chua setb EN ;EN = 1 nhan xung hight - to - low clr RS ;Dat RS = 0 cho phep LCD xuat lenh clr RW ;Dat RW = 0 de ghi du lieu toi LCD mov P1, a ;Xuat ma lenh clr EN ;EN = 0 chot du lieu ret ;---------- Ready_LCD ---------- Ready_LCD: setb DB7 ;Lay DB7 lam cong vao, de ktra co lenh clr RS ;Dat RS = 0 de truy cap thanh ghi lenh setb RW ;Dat RW = 1 de doc thanh thanh ghi lenh ; Doc thanh ghi lenh va kiem tra co lenh xem LCD da san sang chua Back: setb EN ;EN = 1 de tao xung cao clr EN ;EN = 0 tao xung thap cho viec chot du lieu jb DB7, Back ;Cho den khi co ban bang 0 (LCD san sang) ret ;--------------------------------------- Write_Data: acall Ready_LCD ;LCD da san sang chua? setb EN ;EN = 1 Creat High pulse setb RS ;RS = 1 Select Data Register clr RW ;RW = 0 Write data to LCD mov P1, a ;Export data clr EN ;EN = 0 Creat Low pulse to latch data ret ;--------------------------------------- end
Nhờ các anh (chị) trong diễn đàn giúp đỡ em gỡ rối vụ này với.!
P/S: Em có đính kèm file mô phỏng ở dưới, nhờ các anh (chị) xem giúp.!
LCD.zip
Comment