Tôi thực hiện giao tiếp 8051 thông qua IC đệm 74 LS373 (kết nối 8 bit):
P0.0 ->P0.7 (của 8051) nối với DB0 -> DB7 (của LCD)
P3.6 và P3.7 nối với cổng NAND ,ngõ ra cổng NAND được nối chân E (chân số6 của LCD)
Chân số 2 IC 74LS373 nối với RS (chân số của LCD)
Chân số 5 IC 74 LS373 nối với RW (chân số 4 của LCD)
14 trang |
Chia sẻ: maiphuongtt | Lượt xem: 2358 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Mạch hiển thị chữ chạy LCD, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
PHẦN I
GIAO TIẾP VĐK 8051 VỚI LCD.
Hinh 1
NỘI DUNG:
PHẦN I :
1.TỔNG QUAN VỀ LCC & CÁCH GIAO TIẾP VỚI 8051.
2.CÁC CHƯƠNG TRÌNH KHI GIAO TIẾP 8051
PHẦN II :
3.CODE CHƯƠNG TRÌNH THỰC HIỆN THEO MẠCH.
4.MẠCH MÔ PHỎNG TRÊN PROTUS.
5.KẾT LUẬN ƯU & NHƯỢC ĐIỂM.
6.NHIỆM VỤ CÁC THÀNH VIÊN VÀ ĐÁNH GIÁ.
7.NHAN XÉT CỦA GIÁ VIÊN.
I.TỔNG QUAN VỀ LCD & CÁCH GIAO TIẾP LCD VỚI 80C51:
1.1. TỔNG QUAN VỀ LCD
hinh 2
Trong những năm gần đây LCD (Liquid Crystal Display) đã được sử dụng rộng rãi thay thế cho LED 7 đoạn hay
các loại LED nhiều đoạn khác . Ngày nay LCD với những tính năng nổi trội của nó đã được sử dụng rất nhiều
trong vi điều khiển. Khả năng hiện thị của LCD là rất đa dạng, trực quan (chữ, số và nhiều loại kí tự đồ họa khác ),
dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức khác nhau mà giá thành rẻ…
LCD sử dụng trong mạch: lLCD LM 032L
Hình dạng, kích thước:
Sơ đồ chaân:
- Hình (3)
1.2. CÁCH GIAO TIẾP GIAO TIẾP LCD VỚI VĐK 8051 :
Tôi thực hiện giao tiếp 8051 thông qua IC đệm 74LS373 (kết nối 8 bit):
P0.0 Æ P0.7 (của 8051) nối với DB0 Æ DB7 (của LCD)
P3.6 và P3.7 nối với cổng NAND ,ngõ ra cổng NAND được nối chân E (chân số 6 của LCD)
Chân số 2 IC 74LS373 nối với RS (chân số của LCD)
Chân số 5 IC 74 LS373 nối với RW (chân số 4 của LCD)
2.CÁC CHƯƠNG TRÌNH CON KHI GIAO TIẾP LCD VỚI 8051:
2.1.XỬ LÝ ĐƯỜNG ĐIỀU KHIỂN E:
Để thiết lập câu lệnh hay gởi dữ liệu kí tự cho LCD, ta phải tạo ra một xung cạnh xuống trên chân
, do đó ta đưa chân E nhận mức cao, tạo một độ trễ khoảng 200ms (để tạo độ rộng xung) và
sau đó đưa E xuống thấp, ta có thể coi như là một chương trình con để ra lệnh cho LCD đọc
dữ liệu.
LENH:
SETB E
LCALL DELAY2
CLR E
RET
Đọc dữ liệu hay trạng thái từ LCD: tạo một xung cạnh lên , chương trình như sau:
LENH2: CLR E
LCALL DELAY2
SETB E
RET
Chương trình delay: 200ms, timer1, chế độ 1
DELAY2: MOV TMOD,#10H
MOV R7,#4
LL: MOV TH1,#HIGH(-50000)
MOV TL1,#LOW(-50000)
SETB TR1
JNB TF1,$
CLR TR1
CLR TF1
DJNZ R7,LL
MOV R7,#00H
RET
2.2. KIỂM TRA TRANG THÁI BÂN CỦA LCD:
Trong khi viết chương trình ta phải kiểm tra xem LCD Có còn bận hay đang bận thực hiện lệnh đã nhận
trước đó hay không.
Khi thực hiện các hoạt động bên trong chíp, mạch nội bên trong cần một khoảng thời gian để hoàn tất .
Khi đang thực thi các hoạt động bên trong chip như thế, LCD sẽ bỏ qua mọi giao tiếp với bên ngoài và bật cờ BF
(thông báo qua chân DB7 khi có thiết lập RS=0, R/W=1) lên để cho 80C51 biết nó đang “bận”. Dĩ nhiên , khi xong
việc nó sẽ đặt cờ BF lại mức 0. Dựa trên nguyên tắc đó ta viết đoạn chương trình con kiểm tra trạng thaùi bận của
LCD như sau:
WAIT_LCD:
CLR E
CLR RS
SETB RW
MOV DATA_LCD,#0FFH
SETB E
MOV A,DATA_LCD
JB ACC.7,WAIT_LCD
CLR RW
CLR RS
RET
2.3. KHỞI TAO LCD:
KHOITAO: CLR RS ;Chọn chế độ gởi lệnh
MOV DATA_LCD,#38H ;Chọn bus 8bit, font ký tự 5x8, 2 hàng
LCALL LENH ;Gọi lệnh thực thi xuất ra LCD
LCALL WAIT_LCD ;Kiểm tra trạng thái bận của LCD
CLR RS ;Chọn chế độ gởi lệnh
MOV DATA_LCD,#0FH ;LCD on, bật cursor
LCALL LENH
LCALL WAIT_LCD
RET
2.4.XÓA MÀN HÌNH :
CLR_LCD:
MOV DATA_LCD,#01H
LCALL LENH
LCALL WAIT_LCD
RET
2.5. GHI RA MÀN HÌNH DÒNG TIN THEO YÊU CẦU:
string1a:db ' !! W E L L C O M E !! '
db 0
string1b:db '!! D H MO HA NOI !! '
db 0
string2:db ' NHOM 2... '
db 0
string3:db ' K10 F '
db 0
string4:db ' HIEN THI CHU LCD!'
;****************************
WRITE_TEXT:
SETB E ;E=1 bắt đầulệnh LCD
SETB RS ;RS=1 để chọn thanh chế độ xuất
;các dữ liệu ký tự để hiển thị lên LCD
MOV DATA_LCD,#’T’ ;goi dữ liệu ký tự chữ T lên LCD
CLR E ;E=0 tạo cạnh xuống
LCALL WAIT_LCD ; Kiểm tra xem LCD còn bận hay không
RET
3. CODE CHƯƠNG TRÌNH THỰC HIÊN VÀ SƠ ĐỒTHỰC HIỆN:
3.1. CODE CHƯƠNG TRÌNH THỰC HIỆN:
$MOD51
; chuong trinh giao tiep 8051 $ LCD
; 1.2MHz Clock
;khoi tao LCD
LCD_CMD_WR equ 0
LCD_DATA_WR equ 1
LCD_BUSY_RD equ 2
LCD_DATA_RD equ 3
;LCD DINH NGHIA
LCD_CLS equ 1
LCD_HOME equ 2
LCD_SETMODE equ 4
LCD_SETVISIBLE equ 8
LCD_SHIFT equ 16
LCD_SETFUNCTION equ 32
LCD_SETCGADDR equ 64
LCD_SETDDADDR equ 128
;CAI DAT TRANG THAI BAN DAU
org 0000h
ajmp start
;DIA CHI LUU TRONG CHUONGTRINH.
org 0100h
string1a:db ' !! W E L L C O M E !! ' ;CHUO KI TU CAN HIEN THI .
db 0
string1b:db '!! D H MO HA NOI !! ';CHUO KI TU CAN HIEN THI .
db 0
string2:db ' NHOM 2 ... ' ;CHUO KI TU CAN HIEN THI .
db 0
string3:db ' K10 F ' ;CHUO KI TU CAN HIEN THI .
db 0
string4:db ' HIEN THI CHU LCD!' ;CHUO KI TU CAN HIEN THI .
db 0
start: mov A,#038h ;NAP A BANG 38 .
call DATACMD
loop: mov A,#LCD_SETVISIBLE+6 ;NAP TRANG THAI MAN HINH .
call DATACMD
mov R7,#2 ;NAP GIA TRI HANG QUET TREN LCD .
loop2:
mov DPTR,#string1a ;NAP CON TRO VUNG DU LIEU HIEN THI .
call wrstr
mov DPTR,#200 ;NAP CON TRO VUNG DU LIEU DPTR =200 .
call wtms
mov A,#LCD_CLS ;xoa man hinh lcd
call DATACMD
mov DPTR,#string1b ;NAP CON TRO VUNG DU LIEU HIEN THI.
call wrstr
mov DPTR,#200 ;NAP CON TRO VUNG DU LIEU DPTR =200 .
call wtms
mov A,#LCD_CLS ;xoa man hinh lcd
call DATACMD
djnz R7,loop2 ;NAP LAI CHO TOI KHI BO DEM = 0 .
mov DPTR,#string1a ;NAP CON TRO VUNG DU LIEU HIEN THI.
call wrstr
mov DPTR,#400 ;NAP CON TRO VUNG DU LIEU DPTR =400 .
call wtms
mov A,#LCD_SETDDADDR+64 ;NAP TRANG THAI MAN HINH .
call DATACMD
mov DPTR,#string2 ;NAP CON TRO VUNG DU LIEU HIEN THI.
call wrslow
mov DPTR,#200 ;NAP CON TRO VUNG DU LIEU DPRT=200 .
call wtms
mov A,#LCD_CLS ;xoa man hinh lcd
call DATACMD
mov DPTR,#string3 ;NAP CON TRO VUNG DU LIEU HIEN THI.
call wrslow
mov A,#LCD_SETDDADDR+64 ;NAP TRANG THAI MAN HINH .
call DATACMD
mov DPTR,#string4 ;NAP CON TRO VUNG DU LIEU HIEN THI.
call wrslow
mov A,#LCD_SETVISIBLE+7 ;XUAT RA MAN HINH
call DATACMD
mov DPTR,#2000 ;NAP DIA CHI VUNG DU LIEU DPTR = 2000.
call wtms
mov A,#LCD_CLS ;xoa man hinh lcd
call DATACMD
jmp loop ;NAP LAI CHO TOI KHI BO DEM = 0 .
;CHUONG TRINH QUET CHUOI KI TU TRONG RAM.
wrstr: mov R0,#LCD_DATA_WR ;NAP TRANG THAI MAN HINH.
wrstr1: clr A
movc A,@A+DPTR ;LAY LAI DU LIEU O NHO ROM (A + DPTR) DUA VAO A
.
jz wrstr2
mov @R0,A ;SAO CHEP NOI DUNG A VAO RO .
call wtbusy ;GOI CHUONG TRINH BAN CUA LCD.
inc DPTR ;TANG DIA CHI VUNG DU LIEU DPTR LEN .
push DPL ;CAT VAO NGAN XEP .
push DPH ;CAT VAO NGAN XEP .
pop DPH ;LAY TU NGAN XEP .
pop DPL ;LAY TU NGAN XEP .
jmp wrstr1
wrstr2: ret
;CHUONG TRINH XUAT CHUOI KI TU TRONG RAM
wrslow: mov R0,#LCD_DATA_WR
wrslw1: clr A ;XOA NOI DUNG TRONG A .
movc A,@A+DPTR ;LAY LAI DU LIEU O NHO ROM (A + DPTR) DUA VAO A
.
jz wrslw2 ;THOA RA CT CON .
movx @R0,A ;SAO CHEP NOI DUNG A VAO RO .
call wtbusy ;GOI CHUONG TRINH BAN CUA LCD.
inc DPTR ;TANG DIA CHI VUNG DU LIEU DPTR LEN .
push DPL ;CAT VAO NGAN XEP .
push DPH ;CAT VAO NGAN XEP .
mov DPTR,#100 ;NAP DIA CHI VUNG DU LIEU DPTR = 100.
call wtms ;GOI CHUONG TRINH CON.
pop DPH ;LAY TU NGAN XEP .
pop DPL ;LAY TU NGAN XEP .
jmp wrslw1 ;NHAY DEN CT CON .
wrslw2: ret
;CHUONG TRINH XUAT RA LCD :
DATACMD: mov R0,#LCD_CMD_WR
movx @R0,A ;SAO CHEP NOI DUNG A VAO RO .
jmp wtbusy ;NHAY DEN CT CON TRANG THAI BAN LCD .
;CHUONG TRINH CON:
wrchar: mov R0,#LCD_DATA_WR ;NAP TRANG THAI LCD VAO RO .
movx @R0,A ;SAO CHEP NOI DUNG A VAO RO .
;CHUONG TRINH DOI TRANG THAI BAN CUA LCD
wtbusy: mov R1,#LCD_BUSY_RD ;NAP TRANG THAI BAN LCD VAO R1.
movx A,@r1 ;SAO CHEP NOI DUNG R1 VAO THANH A .
jb ACC.7,wtbusy ;NHAY NEU ACC =1.
ret
;TRE SO TRONG THANH A
wtsec: push ACC ;CAT ACC VAO NGAN XEP.
call wtms ;GOI CHUONG TRINH CON.
pop ACC ;LAY ACC TU NGAN XEP.
dec A
jnz wtsec ;NHAY DEN NOI .
ret
;TRE MOT SO THOI GIAN CHO VDK
wtms: xrl DPL,#0FFh ;THUC HIEN PHEP TOAN XOR GIUA HAI TOAN HANG.
xrl DPH,#0FFh ;THUC HIEN PHEP TOAN XOR GIUA HAI TOAN HANG.
inc DPTR ;TANG DPTR NEU CO CY = 1.
wtms1: mov TL0,#01Ch ;100 TICH TAC DONG HO = 1ms CUA XUNG 1.2Mhz
mov TH0,#0FFh
mov TMOD,#1 ;TIME 0 O MUC 1
setb TCON.4 ;TIME 0 DEM CHAY
wtms2: jnb TCON.5,wtms2
clr TCON.4 ;TIME 0 DUNG DEM
clr TCON.5
inc DPTR
mov A,DPL
orl A,DPH
jnz wtms1
ret
END
3 .2.SƠ ĐỐ MẠCH :
Hình 4
4 . MẠCH MÔ PHỎNG TRÊN (PM) PROTUS:
Hình (1)
Kết quả chạy mô phỏng: Mạch chạy tốt và đúng .
Mạch chạy và hiện thị dòng tin theo yêu cầu trong code.
5. KẾT LUẬN:
5.1.Nhược điểm:
- Phần mềm tương đối phức tạp, nhất là đối với những người mới học và chưa có nhiều kinh nghiệm như tui, cần viết
nhiều, tham khảo nhiều chương trình thì mới có kinh nghiệm tốt để viết.
- Chương trình còn dài dòng , phức tạp, chưa có thời gian nhiều cho việc tối ưu.
- Chưa đưa ra được sơ đồ giải thuật
5.2. Ưu điểm:
- Có thể kết luận mạch chạy và làm việc hiệu quả, hiển thị đúng dòng tin theo yêu cầu.
- Tuy mạch còn đơn giản chưa đáp ứng đc cho thực tế đẻ so sánh với các chương trình lớn , nói chung mạch đạt được
yêu cầu là giao tiếp 80C51 với LCD.
6.Nhiệm vụ các thành viên
-Do đây là lần đầu thiết kế nên nhiều phàn còn sơ sài do còn thiếu kinh nghiệm.
-Nhóm chưởng cũng như các thành viên cùng tìm tai liệu tham khảo ,thiết kế mach qua proteus,tìm và lập trình theo
vi sử lý
-các thành viên trong nhóm hoạt động tích cực,năng nổ và nhiệt tình làm đề tài.
7.nhận xét của giáo viên.
.............................................................................................................................................................................................
...............................................................................................................................................................................................................
...............................................................................................................................................................................................................
...............................................................................................................................................................................................................