1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình điều khiển LCD

15 323 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 280,6 KB

Nội dung

Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin

Bài 9: Lập trình ñiều khiển LCD Trang IX- 1 BÀI 9: LẬP TRÌNH ðIỀU KHIỂN LCD 16x2    I. Mục ñích bài thí nghiệm - Hiểu ñược cấu trúc và nguyên lý hoạt ñộng của LCD 16x2 - Nắm ñược phần cứng giao tiếp với vi ñiều khiển MCS51 - Viết ñược các chương trình ñơn giản ứng dụng LCD 16x2 - Hiểu và nắm ñược các chương trình con ñiều khiển LCD 16x2 II. Cơ sở lý thuyết - CONST (contrast): chỉnh ñộ tương phản (ñộ sáng của hình ảnh trên LCD). - EN (Enable): cho phép ñọc/ghi dữ liệu. Trong chế ñộ ñọc, EN tác ñộng bằng xung dương (cạnh lên) và trong chế ñộ ghi, EN tác ñộng bằng xung âm (cạnh xuống). - RS (register selection): chọn thanh ghi lệnh (RS = 0) hoặc thanh ghi dữ liệu (RS = 1) - R/W: ñọc (R/W = 1) hay ghi (R/W = 0) - D7 – D4: bus dữ liệu (chế ñộ 8 bit: 4 bit cao, chế ñộ 4 bit: dùng cho truyền 4 bit cao và 4 bit thấp). Ngoài ra, bit D7 còn dùng làm ngõ ra cho cờ Busy. Hình 8-1 là sơ ñồ giao tiếp với MCU. Trong ñó, Error! Reference source not found.8-1 (a) là sơ ñồ giao tiếp 4 bit dữ liệu với MCU; Error! Reference source not found.8-1 (b) là sơ ñồ giao tiếp 8 bít. Trong sơ ñồ giao tiếp 4 bits thì người ta chỉ sử dụng 4 bits cao (DB4 ñến DB7). Khi ñó, dữ liệu hoặc ñịa chỉ 8 bits ñược ñọc (hoặc ghi) 2 lần liên tiếp: lần ñầu ñọc 4 bits cao, lần sau ñọc 4 bits thấp. - D3 – D0: 4 bit thấp trong chế ñộ 8 bit hay bỏ trống trong chế ñộ 4 bit. - A, K: anode và cathode ñèn nền của LCD. Bài 9: Lập trình ñiều khiển LCD Trang IX- 2 Hình 8-1 – (a) Giao tiếp 4 bit (b) Giao tiếp 8 bit a. Các thành phần chức năng của LCD1602A: - Cờ Busy (BF – Busy flag): Nếu BF = 1, LCD ñang trong quá trình thực thi một lệnh. Khi ñó, các lệnh gởi tiếp theo sẽ bị bỏ qua. BF ñược ñọc tại chân D7 khi RS = 0 và R/W = 1. Do ñó, trước khi thực hiện một lệnh, cần kiểm tra BF trước, nếu BF = 0 thì mới gởi lệnh. - DDRAM (Display Data RAM): chứa các ký tự sẽ hiển thị trên LCD, tối ña là 80x8 bit (80 ký tự). Khi hiển thị ở chế ñộ 1 dòng, ñịa chỉ của DDRAM có phạm vi từ 00h ÷ 4Fh còn khi ở chế ñộ 2 dòng, ñịa chỉ DDRAM từ 00h ÷ 27h cho dòng 1 và 40h ÷ 67h cho dòng 2. - Bộ ñếm ñịa chỉ (AC - Address Counter): dùng ñể lưu ñịa chỉ hiện hành của DDRAM và CGRAM, có thể thực hiện ñọc AC khi RS = 0 và R/W = 1. - CGROM (Character Genaration ROM): chứa các mô hình ký tự sẽ hiển thị trên LCD, bao gồm 192 ký tự 5x7 theo bảng mã ASCII (nghĩa là khi DDRAM chứa giá trị 41h tương ứng với mã ASCII của ký tự ‘A’ thì trên LCD sẽ hiện ‘A’), trong ñó chỉ có các mã từ 00h – 0Fh sẽ không lấy theo mã ASCII mà lấy theo các ký tự ñã ñịnh nghĩa trong CGRAM. - CGRAM (Character Genaration RAM): chứa các mô hình ký tự do người sử dụng ñịnh nghĩa ñể hiển thị các ký tự không có sẵn trong CGROM. - CGRAM cho phép tạo tối ña 8 ký tự 5x8 MCU RS R/W E DB4 – DB7 P1.1 P1.2 P1.3 P3 MCU RS R/W E DB0 – DB7 P1.1 P1.2 P1.3 P3 Bài 9: Lập trình ñiều khiển LCD Trang IX- 3 Bảng 8-1 Các ký tự ñịnh nghĩa trong CGRAM Bài 9: Lập trình ñiều khiển LCD Trang IX- 4 ðể ñịnh nghĩa một ký tự, thực hiện thay thế dấu ? bằng các giá trị 0 hay 1 tương ứng và gởi vào CGRAM. Ví dụ: ðể ñịnh nghĩa chữ ð tại vị trí 1 trong CGRAM, ñịa chỉ và dữ liệu tương ứng là: Bài 9: Lập trình ñiều khiển LCD Trang IX- 5 Nghĩa là tại ñịa chỉ 00h của CGRAM chứa giá trị là 1Eh và tương tự cho ñến ñịa chỉ 07h. b. Các chế ñộ truyền dữ liệu: LCD1602A có 2 chế ñộ truyền dữ liệu: chế ñộ 8 bit (dùng cả D0 – D7) và chế ñộ 4 bit (không dùng D3 – D0, chỉ dùng D7 – D4). Trong trường hợp dùng chế ñộ 4 bit, dữ liệu 8 bit sẽ ñược truyền 2 lần: truyền 4 bit cao rồi tiếp tục truyền 4 bit thấp. Sau khi thực hiện truyền xong 8 bit, BF mới chuyển lên 1. Hai chế ñộ truyền này mô tả như hình 8-2 và hình 8-3 Hình 8-2 ðịnh thời giao tiếp ở chế ñộ 8 bit Bài 9: Lập trình ñiều khiển LCD Trang IX- 6 Hình 8-3 ðịnh thời giao tiếp ở chế ñộ 4 bit c. Tập lệnh: Bảng 8-2 - Tập lệnh của LCD1602A Bài 9: Lập trình ñiều khiển LCD Trang IX- 7 Ví dụ: I/D =1 là Increment I/D = 0 là Decrement … Bài 9: Lập trình ñiều khiển LCD Trang IX- 8 Bảng 8-3 – Các lệnh thường dùng d. Sơ ñồ kết nối LCD 16x2 với MSC-51 trong hệ ET-LAB3A Bài 9: Lập trình ñiều khiển LCD Trang IX- 9 III. Phần thực hành Bài 1: Viết chương trình hiển thị chuỗi “DH CAN THO-KHOA CN” trên dòng 1 và “BO MON DIEN TU – VIEN THONG” trên dòng 2 của LCD a. Chương trình mẫu gợi ý ; ðịnh nghĩa PORT ra LCD và ñiều khiển LCD ; Viết chương trình ở MOD 4 bit tất cả dùng ở PORT1 DATA EQU P1 ;Port LCD EN bit P1.2 ;Enable LCD WR bit P1.1 ;WR LCD RS bit P1.0 ;RS Select LCD ORG 0000H MAIN: MOV SP,#256-32 ;Initial Stack 32 Byte CALL DELAY ;initial delay CALL INIT_LCD ;initial LCD MOV A,#8 0H ;ðịa chỉ của vị trí ñầu dòng 1 trên LCD CALL GOTOLCD ;Di chuyển con trỏ ñến 80H MOV DPTR,#LINE1 ;Ghi chuỗi Hello World ra LCD tại vị trí 40H LOOP: CLR A MOVC A,@A+DPTR CJNE A,#0FFH,PRINT ;Kết thúc việc hiển thị nếu gặp 0FFH JMP NEXT PRINT: CALL WRITE_DATA INC DPTR JMP LOOP NEXT: MOV A,#0C 0H ;ðịa chỉ của vị trí ñầu dòng 2 trên LCD CALL GOTOLCD ;Di chuyển con trỏ ñến 0C0H MOV DPTR,#LINE2 ;Ghi chuỗi Hello World ra LCD tại vị trí 40H LOOP1: CLR A MOVC A, @A+DPTR CJNE A, #0FFH, PRINT1 ;Kết thúc việc hiển thị nếu gặp 0FFH JMP EXIT PRINT1: CALL WRITE_DATA INC DPTR JMP LOOP1 Bài 9: Lập trình ñiều khiển LCD Trang IX- 10 EXIT: JMP $ ;******************************************************* ;* Write Instruction LCD * ;* Input : ACC (Command) * ;* Output : Data bus LCD * ;******************************************************* WR_INS: MOV B,A ANL A,#0F0H ;Giao tiếp 4 bits nên chỉ sử dụng 4 bits cao MOV P1,A ;Ghi 4 bits cao lần ñầu CALL EN_LCD ;Tạo xung E(nable) MOV A,B ;Ghi 4 bits thấp lần sau SWAP A ANL A,#0F0H MOV P1,A CALL EN_LCD RET WRITE_DATA: MOV B,A ANL A,#0F0H SETB ACC.0 MOV P1,A CALL EN_LCD MOV A,B SWAP A ANL A,#0F0H SETB ACC.0 MOV P1,A CALL EN_LCD RET ;ðoạn chương trình di chuyển ñến vị trí con trỏ GOTOLCD: SETB ACC.7 CALL WRITE_INS RET ;******************************************************* ;* ðoạn chương trình khởi tạo LCD * ;* Initial LCD * ;* 4-Bit Interface * [...]... th s ñ m a Chương trình g i ý m u: DATA EN WR EQU P1 bit P1.2 bit P1.1 ;Port LCD ;Enable LCD ;WR LCD Trang IX- 12 Bài 9: L p trình ñi u khi n LCD RS bit P1.0 ;RS Select LCD ORG 0000H MAIN: MOV SP,#256-32 ;Initial Stack 32 Byte CALL DELAY ;initial delay CALL INIT _LCD ;initial LCD ;ðây là ño n l nh ñ m và hi n th ra màn hình LCD MOV R1,#0FFH LOOP: INC R1 CLR A ; mov a, #00h CALL GOTOLCD ; D i con tr v... MOV P1,A CALL EN _LCD RET WRITE_DATA: MOV B,A ANL A,#0F0H SETB ACC.0 MOV P1,A CALL EN _LCD MOV A,B Trang IX- 13 Bài 9: L p trình ñi u khi n LCD SWAP A ANL A,#0F0H SETB ACC.0 MOV P1,A CALL EN _LCD RET ;ðo n chương trình di chuy n ñ n v trí con tr GOTOLCD: SETB ACC.7 CALL WRITE_INS RET ;******************************************************* ;* ðo n chương trình kh i t o LCD * ;* Initial LCD * ;* 4-Bit Interface... E LCD * ;* Active Chip select * ;******************************************************* EN _LCD: SETB E _LCD ;Enable LCD CALL BUSY ;Busy delay time CLR E _LCD ;Disable LCD CALL BUSY RET ;******************************************************* ;* Delay time for Busy * ;* Wait LCD Ready * ;******************************************************* BUSY: PUSH 07H Trang IX- 14 Bài 9: L p trình ñi u khi n LCD. .. ;******************************************************* ;* Enable Pin E LCD * ;* Active Chip select * ;******************************************************* EN _LCD: SETB E _LCD ;Enable LCD CALL BUSY ;Busy delay time CLR E _LCD ;Disable LCD CALL BUSY RET ;******************************************************* ;* Delay time for Busy * ;* Wait LCD Ready * ;*******************************************************... có th thay th giá tr 0FFh này Ch y chương trình ki m ch ng - L nh SETB ACC.7 trong ño n GOTOLCD có ý nghĩa gì? (xem b ng 8-2) - S a l i chương trình ñ hi n th chu i LINE1 và LINE2 - S a l i chương trình sao cho LINE1 và LINE2 d ch trái, d ch ph i - S a l i chương trình sao cho LINE1 d ch trái và LINE2 d ch ph i và ngư c l i - Có th s a chương trình l i ñ cho LCD 16x2 ho t ñ ng ch ñ truy n 8 bit ñư c... hãy th thay ñ i và ki m ch ng - Ph i s a l i ño n l nh INIT _LCD như th nào ñ LCD hi n th line và font ch ñ 5x10 dots (xem b ng 8-2) - S a chương trình sao cho hi n th ký t A trên 1 dòng duy nh t gi a LCD ? ch ñ 1 Bài 2: Chương trình sau ñây s ñ m và hi n th s ra LCD t 0 ñ n 9 r i d ng Chú ý con tr s t ñ ng d ch ph i sau khi in 1 s ñ m ra LCD Do ñó, ñ s ñ m sau s hi n th ñè lên s ñ m trư c thì ta ph... th trên LCD khi cho ch y chương trình? Chú ý: n u s ñ m hi u th quá nhanh, h c viên hãy tăng s l n g i DELAY sau khi hi n th s ñ m - T i sao ph i c ng s ñ m v i 30H trư c khi cho hi n th ? - S a l i chương trình trên ñ s ñ m hi n th ñ n 25? - S a l i chương trình cho hi n th ñ ng h gi phút giây tương ñ i hi n th trên LCD - S a chương trình sao cho khi n SW1 = Px.2 thì tăng giá tr hi n th trên LCD là... 06H Trang IX- 11 Bài 9: L p trình ñi u khi n LCD DEL1: DEL2: MOV R6,#0FFH MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DEL2 POP 06H POP 07H RET ; -LINE1: DB 'KHOA DIEN – DIEN TU', 0FFH LINE2: DB 'BO MON DIEN TU – VIEN THONG', 0FFH END b Yêu c u - Ch y chương trình trên ki m tra và cho nh n xét - Hãy cho bi t ý nghĩa c a các chương trình con: BUSY, EN _LCD, INTI _LCD, WR_DATA VÀ WR_INS - Tai...Bài 9: L p trình ñi u khi n LCD ;******************************************************* INIT _LCD: CLR RS _LCD MOV A,#33H ;Kh i t o LCD (xem b ng 8-2) CALL WR_INS MOV A,#32H ;Ch n mode giao ti p 4 bits CALL WR_INS MOV A,#28H ;Ch n giao ti p 4 bits và hi n th 2 lines (xem b... ra LCD CALL DELAY CALL DELAY CALL DELAY CJNE R1,#9H,LOOP ;D ng hi n th khi ñ m ñ n 9 JMP $ ;******************************************************* ;* Write Instruction LCD * ;* Input : ACC (Command) * ;* Output : Data bus LCD * ;******************************************************* WR_INS: MOV B,A ANL A,#0F0H ;Giao ti p 4 bits nên ch s d ng 4 bits cao MOV P1,A ;Ghi 4 bits cao l n ñ u CALL EN_LCD . Bài 9: Lập trình ñiều khiển LCD Trang IX- 1 BÀI 9: LẬP TRÌNH ðIỀU KHIỂN LCD 16x2    I. Mục ñích bài thí nghiệm - Hiểu ñược cấu trúc và nguyên lý hoạt ñộng của LCD 16x2 -. bit Bài 9: Lập trình ñiều khiển LCD Trang IX- 6 Hình 8-3 ðịnh thời giao tiếp ở chế ñộ 4 bit c. Tập lệnh: Bảng 8-2 - Tập lệnh của LCD1 602A Bài 9: Lập trình ñiều khiển LCD Trang. … Bài 9: Lập trình ñiều khiển LCD Trang IX- 8 Bảng 8-3 – Các lệnh thường dùng d. Sơ ñồ kết nối LCD 16x2 với MSC-51 trong hệ ET-LAB3A Bài 9: Lập trình ñiều khiển LCD Trang

Ngày đăng: 23/10/2014, 12:38

TỪ KHÓA LIÊN QUAN

w