Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
382,44 KB
Nội dung
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 : [...]... TCON.4 wtms2: ;TIME 0 DEM CHAY jnb TCON.5,wtms2 clr TCON.4 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) ;TIME 0 O MUC 1 ;TIME 0 DUNG DEM 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...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 movx @R0,A ;NAP TRANG THAI LCD VAO RO ;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... 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 . 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. 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. 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