vi xử lý hệ thống điều khiển lcd

35 1.1K 3
vi xử lý hệ thống điều khiển lcd

Đ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

KHOA CÔNG NGHỆ ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP T T À À I I L L I I Ệ Ệ U U H H Ư Ư Ớ Ớ N N G G D D Ẫ Ẫ N N T T H H Í Í N N G G H H I I Ệ Ệ M M - - T T H H Ự Ự C C H H À À N N H H E. HỆ THỐNG ĐIỀU KHIỂN LCD. Giáo trình thực hành vi xử lý. 2 Biên soạn: Phạm Quang Trí A. MỤC ĐÍCH: • Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô hình thí nghiệm để kiểm chứng. • Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển. • Khảo sát nguyên hoạt động và nguyên điều khiển LCD. • Điều khiển để hiển thị các thông tin trên màn hình tinh thể lỏng LCD (chuẩn công nghiệp, loại 2 hàng x 16 ký tự). B. YÊU CẦU: • Nắm vững tập lệnh của vi điều khiển MCS-51. • Biết cách viết các chương trình điều khiển LCD. • Nắm được sơ đồ và nguyên hoạt động của khối LCD trên mô hình thí nghiệm. • Nắm được nguyên và kỹ thuật điều khiển để hiển thị các thông tin trên LCD. • Biết cách viết các chương trình ứng dụng để hiển thị các dạng thông tin khác nhau trên LCD tùy theo nhu cầu sử dụng. E. HỆ THỐNG ĐIỀU KHIỂN LCD. Bài 1: Chương trình điều khiển LCD hiển thị hai dòng chữ “MICRO-CONTROLLER” và “DESIGNED BY: PQT.” đứng yên trên hai dòng của màn hình LCD. Giáo trình thực hành vi xử lý. 3 Biên soạn: Phạm Quang Trí 1 Trình tự tiến hành thí nghiệm: 1.1 Kết nối thiết bị thí nghiệm. • Tắt nguồn cấp cho mô hình thí nghiệm. • Dùng dây bus 3 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J47 (CTRL LCD) ở khối LCD (chú ý là ta chỉ nối 3 bit thấp của J63 và J47 với nhau). • Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J46 (DATA / CODE LCD) ở khối LCD. • Dùng dây bus 3 nối J104 (POWER) ở khối LCD với nguồn +5V ở khối nguồn. 1.2 Sơ đồ nguyên của hệ thống: AD7 AD0 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 AD6 AD5 AD4 AD3 AD2 AD1 D0 D7 AD2 AD0 AD1 D0 D1 D2 D3 D4 D5 D6 D1 D2 D3 D4 D5 D6 D7 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C51 C1 33p C2 33p X1 12MHz C3 10uF R1 10k +5V 2 3 4 5 6 7 8 9 1 RP1 10K +5V MAÏCH ÑIEÀU KHIEÅN LCD MAÏCH ÑIEÀU KHIEÅN LCDMAÏCH ÑIEÀU KHIEÅN LCD MAÏCH ÑIEÀU KHIEÅN LCD D7 14 D6 13 D5 12 D4 11 D3 10 D2 9 D1 8 D0 7 E 6 RW 5 RS 4 VSS 1 VDD 2 VEE 3 LCD1 ALPHANUMERIC LCD 16 CHAR x 2 LINE RV1 10K +5V E. HỆ THỐNG ĐIỀU KHIỂN LCD. Bài 1: Chương trình điều khiển LCD hiển thị hai dòng chữ “MICRO-CONTROLLER” và “DESIGNED BY: PQT.” đứng yên trên hai dòng của màn hình LCD. Giáo trình thực hành vi xử lý. 4 Biên soạn: Phạm Quang Trí 1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển. GỌI CTC HIỂN THỊ DÒNG 1 DISP_FLINE BEGIN MAIN: E1 GỌI CTC KHỞI ĐỘNG LCD LCDINIT GỌI CTC HIỂN THỊ DÒNG 2 DISP_SLINE END SENDCOMMAND SENDCOMMAND: THIẾT LẬP GỬI MÃ LỆNH (RS) = 0 SENDDATA SENDDATA: THIẾT LẬP GỬI DỮ LIỆU (RS) = 1 NOP PULSE_EN: THIẾT LẬP GHI VÀO LCD (RW) = 0 TẠO XUNG TRUY XUẤT LCD (EN = 1 ) (EN) = 0 NOP ĐƯA LCD VỀ TRẠNG THÁI HOẠT ĐỘNG BÌNH THƯỜNG (EN) = 1 NOP CẤU HÌNH PORT NHẬP (DATABUS) = FFH THIẾT LẬP ĐỌC TỪ LCD (RW) = 1 THIẾT LẬP ĐỌC MÃ LỆNH (RS) = 0 TẠO XUNG TRUY XUẤT LCD (EN = 1 ) (EN) = 0 NOP NOP BUSY: ĐỌC MÃ LỆNH TỪ LCD (A) = (DATABUS) ĐƯA LCD VỀ TRẠNG THÁI HOẠT ĐỘNG BÌNH THƯỜNG (EN) = 1 BÁO BẬN (ACC.7) = 1 Đ S BUSY2: ĐỌC MÃ LỆNH TỪ LCD (A) = (DATABUS) BÁO BẬN (ACC.7) = 1 Đ S THIẾT LẬP GHI VÀO LCD (RW) = 0 RET DELAY KHỞI ĐỘNG TIMER (TIMER 0, MODE 1) (TMOD) = 01H CHƯA ĐỦ THỜI GIAN (TF0) = 0 Đ S RET CHO TIMER HOẠT ĐỘNG (TR0) = 1 DỪNG TIMER (TR0) = 0 XÓA CỜ TRÀN TIMER (TF0) = 0 DELAY: DISP_FLINE DISP_FLINE: GỬI MÃ LCD = 80H ĐẶT DDRAM ĐỊA CHỈ BẮT ĐẦU CỦA DÒNG 1: 00H (DATABUS) = 80H GỌI CTC GỬI LỆNH RA LCD SENDCOMMAND NẠP ĐỊA CHỈ VÙNG NHỚ CHỨA DỮ LIỆU CỦA DÒNG 1 (DPTR) = FLINE_DATA GỌI CTC GỬI VÙNG DỮ LIỆU SANG LCD WRITE RET VÙNG DỮ LIỆU FLINE_DATA ‘MICRO-CONTROLLER’,99H BEGIN WRITE: ĐẶT ĐỊA CHỈ OFFSET DẦU TIÊN (A) = 0 LẤY DỮ LIỆU (A) = (@A+DPTR) CHƯA HẾT DỮ LIỆU (A) 99H Đ S RET WRITE_CONT: XUẤT DỮ LIỆU RA PORT (DATABUS) = (A) GỌI CTC GỬI DỮ LIỆU RA LCD SENDDATA TĂNG ĐỊA CHỈ VÙNG DỮ LIỆU (DPTR) = (DPTR) + 1 LCDINIT LCDINIT: THIẾT LẬP GỬI MÃ LỆNH (RS) = 0 THIẾT LẬP GHI VÀO LCD (RW) = 0 THIẾT LẬP TRUY XUẤT LCD (EN) = 1 GỬI MÃ LCD = 38H 8 BIT, 2 DÒNG, ĐỊNH DẠNG 5x7 (DATABUS) = 38H GỌI CTC GỬI LỆNH RA LCD SENDCOMMAND NẠP GIÁ TRỊ TẠO TRỄ 4.1ms (TH0/TL0) = -4100 = EFFCH GỌI CTC TẠO TRỄ DELAY GỬI MÃ LCD = 38H 8 BIT, 2 DÒNG, ĐỊNH DẠNG 5x7 (DATABUS) = 38H GỌI CTC GỬI LỆNH RA LCD SENDCOMMAND NẠP GIÁ TRỊ TẠO TRỄ 100us (TH0/TL0) = -100 = FF9CH GỌI CTC TẠO TRỄ DELAY GỬI MÃ LCD = 38H 8 BIT, 2 DÒNG, ĐỊNH DẠNG 5x7 (DATABUS) = 38H GỌI CTC GỬI LỆNH RA LCD SENDCOMMAND GỬI MÃ LCD = 0CH BẬT HIỂN THỊ, TẮT CON TRỎ, TẮT NHẤP NHÁY CON TRỎ (DATABUS) = 0CH GỌI CTC GỬI LỆNH RA LCD SENDCOMMAND GỬI MÃ LCD = 01H XÓA HIỂN THỊ (DATABUS) = 01H GỌI CTC GỬI LỆNH RA LCD SENDCOMMAND RET GỬI MÃ LCD = 06H TỰ TĂNG ĐỊA CHỈ HIỂN THỊ, TẮT DỊCH CHUYỂN HIỂN THỊ (DATABUS) = 06H GỌI CTC GỬI LỆNH RA LCD SENDCOMMAND DISP_SLINE DISP_SLINE: GỬI MÃ LCD = C0H ĐẶT DDRAM ĐỊA CHỈ BẮT ĐẦU CỦA DÒNG 2: 40H (DATABUS) = C0H GỌI CTC GỬI LỆNH RA LCD SENDCOMMAND NẠP ĐỊA CHỈ VÙNG NHỚ CHỨA DỮ LIỆU CỦA DÒNG 2 (DPTR) = SLINE_DATA GỌI CTC GỬI VÙNG DỮ LIỆU SANG LCD WRITE RET VÙNG DỮ LIỆU SLINE_DATA ‘DESIGNED BY: PQT’,99H E. HỆ THỐNG ĐIỀU KHIỂN LCD. Bài 1: Chương trình điều khiển LCD hiển thị hai dòng chữ “MICRO-CONTROLLER” và “DESIGNED BY: PQT.” đứng yên trên hai dòng của màn hình LCD. Giáo trình thực hành vi xử lý. 5 Biên soạn: Phạm Quang Trí ;*************************************************** ;CHUONG TRINH DIEU KHIEN LCD HIEN THI 2 DONG CHU DUNG YEN ;*************************************************** ;RS -> P0.0, RW -> P0.1, E -> P0.2 ;DATA BUS -> PORT 1 ;*************************************************** EN BIT P0.2 RW BIT P0.1 RS BIT P0.0 DATABUS EQU P1 ;*************************************************** ORG 00H MAIN: ACALL LCDINIT ;KHOI TAO LCD MP1: ACALL DISP_FLINE ;HIEN THI DONG 1 ACALL DISP_SLINE ;HIEN THI DONG 2 SJMP $ ;*************************************************** LCDINIT: ;CTC KHOI TAO LCD CLR RS ;RS = 0 - GUI LENH CLR RW ;RW = 0 - WRITE LCD MODE SETB EN ;E = 1 - ENABLE MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7 ACALL SENDCOMMAND ;GUI LENH RA LCD MOV TH0,#HIGH(-4100) MOV TL0,#LOW(-4100) ACALL DELAY ;DELAY 4.1MS MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7 ACALL SENDCOMMAND ;GUI LENH RA LCD MOV TH0,#HIGH(-100) MOV TL0,#LOW(-100) ACALL DELAY ;DELAY 100US MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7 ACALL SENDCOMMAND ;GUI LENH RA LCD MOV DATABUS,#0CH ;CODE = 0CH - CHO PHEP LCD HIEN THI ACALL SENDCOMMAND ;GUI LENH RA LCD MOV DATABUS,#01H ;CODE = 01H - XOA LCD ACALL SENDCOMMAND ;GUI LENH RA LCD MOV DATABUS,#06H ;CODE = 06H - TU TANG DIA CHI HIEN THI, TAT DICH CHUYEN HIEN THI ACALL SENDCOMMAND ;GUI LENH RA LCD RET ;*************************************************** SENDCOMMAND: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU LIEU (SENDDATA) RA LCD CLR RS ;RS = 0 - GUI LENH SJMP PULSE_EN SENDDATA: SETB RS ;RS = 1 - GUI DU LIEU NOP PULSE_EN: ;TAO XUNG ENABLE DE CHUYEN THONG TIN (COMMAND/DATA) VAO LCD CLR RW ;RW = 0 - WRITE LCD MODE CLR EN ;EN = 0 NOP SETB EN ;EN = 1 - XUNG ENABLE NOP ;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC LCD GHI NHAN THONG TIN GUI DEN ;************************************************************* ;MOV TH0,#HIGH(-2000) ;LENH NAY DUOC THAY THE CHO DOAN MA KIEM TRA DUOI DAY KHI ;MOV TL0,#LOW(-2000) ;CHAY CHUONG TRINH NAY TRONG PHAN MEM MO PHONG TOPVIEW ;ACALL DELAY ;************************************************************* MOV DATABUS,#0FFH ;CAU HINH PORT 1 CHO CHE DO PORT NHAP SETB RW ;RW = 1 - READ LCD MODE CLR RS ;RS = 0 - GUI LENH CLR EN ;EN = 0 NOP SETB EN ;EN = 1 - XUNG ENABLE NOP BUSY: ;BUSY = 0 -> HOAN TAT, BUSY = 1 -> DANG THUC HIEN E. HỆ THỐNG ĐIỀU KHIỂN LCD. Bài 1: Chương trình điều khiển LCD hiển thị hai dòng chữ “MICRO-CONTROLLER” và “DESIGNED BY: PQT.” đứng yên trên hai dòng của màn hình LCD. Giáo trình thực hành vi xử lý. 6 Biên soạn: Phạm Quang Trí MOV A,DATABUS ;DOC DU LIEU TU LCD JB ACC.7,BUSY ;KIEM TRA CO BUSY BUSY2: ;KIEM TRA CO BAO BAN (BUSY FLAG) LAN THU HAI MOV A,DATABUS ;DOC DU LIEU TU LCD JB ACC.7,BUSY2 ;KIEM TRA CO BUSY LAN 2 CLR RW ;RW = 0 - WRITE LCD MODE (THOAT CHE DO READ, TRO VE CHE DO WRITE) ;************************************************************* RET ;*************************************************** DISP_FLINE: ;CTC DAT DIA CHI BAT DAU DONG 1 VA NAP DU LIEU DONG 1 VAO DDRAM MOV DATABUS,#80H ;CODE = 80H - DAT DDRAM DIA CHI BAT DAU CUA DONG 1 - 00H ACALL SENDCOMMAND ;GUI LENH RA LCD MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 1 CUA LCD ACALL WRITE ;GUI VUNG DU LIEU SANG LCD RET ;*************************************************** DISP_SLINE: ;CTC DAT DIA CHI BAT DAU DONG 2 VA NAP DU LIEU DONG 2 VAO DDRAM MOV DATABUS,#0C0H ;CODE = C0H - DAT DDRAM DIA CHI BAT DAU CUA DONG 2 - 40H ACALL SENDCOMMAND ;GUI LENH RA LCD MOV DPTR,#SLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 2 CUA LCD ACALL WRITE ;GUI VUNG DU LIEU SANG LCD RET ;*************************************************** WRITE: ;CTC GUI DU LIEU SANG LCD, KET THUC GUI DU LIEU KHI DU LIEU GUI DI LA 99H MOV A,#0 ;OFFSET DAU TIEN TRONG VUNG DU LIEU CUA DPTR MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU CJNE A,#99H,WRITE_CONT ;KIEM TRA LAY HET DU LIEU TRONG VUNG DU LIEU - KET THUC LA 99H RET WRITE_CONT: ;KHONG PHAI LA DU LIEU KET THUC - CHUA LAY HET DU LIEU MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA PORT DEN LCD ACALL SENDDATA ;GUI DU LIEU RA LCD INC DPTR ;CHUYEN SANG DU LIEU KE TIEP SJMP WRITE ;QUAY TRO VE DE GUI DU LIEU KE TIEP ;*************************************************** DELAY: MOV TMOD,#01H SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET ;*************************************************** FLINE_DATA: ;DU LIEU HIEN THI DONG 1 DB 'MICRO-CONTROLLER' DB 99H ;MA KET THUC DONG (TU CHON) SLINE_DATA: ;DU LIEU HIEN THI DONG 2 DB 'DESIGNED BY: PQT' DB 99H ;MA KET THUC DONG (TU CHON) END 1.4 Lưu chương trình và biên dịch chương trình. 1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có. 1.6 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip hoạt động. 1.7 Nạp chương trình vào vi điều khiển. 1.8 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển. 1.9 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ bước 3 đến bước 9. 2 Bài tập: (xem thêm trong phần hướng dẫn và phần bài tập của Bài 3) E. HỆ THỐNG ĐIỀU KHIỂN LCD. Bài 2: Chương trình điều khiển LCD hiển thị hai dòng chữ “WELLCOME TO MICROCONTROLLER SYSTEM – 51” và “DESIGNED BY: PQT.” trên hai dòng của màn hình LCD với yêu cầu: dòng chữ thứ nhất sẽ dịch chuyển liên tục từ phải sang trái, dòng chữ thứ hai đứng yên. Giáo trình thực hành vi xử lý. 7 Biên soạn: Phạm Quang Trí 1 Trình tự tiến hành thí nghiệm: 1.1 Kết nối thiết bị thí nghiệm. • Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1. 1.2 Sơ đồ nguyên của hệ thống: • Sơ đồ nguyên của hệ thống tương tự như Bài 1. 1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển. ;*************************************************** ;CHUONG TRINH DIEU KHIEN LCD HIEN THI DONG CHU 1 DICH CHUYEN, DONG CHU 2 DUNG YEN ;*************************************************** ;RS -> P0.0, RW -> P0.1, E -> P0.2 ;DATA BUS -> PORT 1 ;*************************************************** EN BIT P0.2 RW BIT P0.1 RS BIT P0.0 DATABUS EQU P1 ;*************************************************** ORG 00H MAIN: ACALL LCDINIT ;KHOI TAO LCD ACALL DISP_SLINE ;HIEN THI DONG 2 E. HỆ THỐNG ĐIỀU KHIỂN LCD. Bài 2: Chương trình điều khiển LCD hiển thị hai dòng chữ “WELLCOME TO MICROCONTROLLER SYSTEM – 51” và “DESIGNED BY: PQT.” trên hai dòng của màn hình LCD với yêu cầu: dòng chữ thứ nhất sẽ dịch chuyển liên tục từ phải sang trái, dòng chữ thứ hai đứng yên. Giáo trình thực hành vi xử lý. 8 Biên soạn: Phạm Quang Trí MP1: ;XU LY DICH CHUYEN DU LIEU HIEN THI CHO DONG 1 MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 1 CUA LCD SHIFT: ACALL DISP_FLINE ;HIEN THI DONG 1 MOV R1,#50 ;DELAY 500MS DEL500: MOV TH0,#HIGH(-10000) MOV TL0,#LOW(-10000) ACALL DELAY DJNZ R1,DEL500 ;THOI GIAN DUNG YEN CUA MOT TRANG THAI MAN HINH LCD INC DPTR ;TANG GIA TRI DPTR DE DICH CHUYEN DONG CHU MOV A,DPL ;KIEM TRA DA DICH XONG DONG CHU RA MAN HINH LCD CJNE A,#LOW(FLINE_DATA+55),SHIFT MOV A,DPH CJNE A,#HIGH(FLINE_DATA+55),SHIFT SJMP MP1 ;*************************************************** LCDINIT: ;CTC KHOI TAO LCD CLR RS ;RS = 0 - GUI LENH CLR RW ;RW = 0 - WRITE LCD MODE SETB EN ;E = 1 - ENABLE MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7 ACALL SENDCOMMAND ;GUI LENH RA LCD MOV TH0,#HIGH(-4100) MOV TL0,#LOW(-4100) ACALL DELAY ;DELAY 4.1MS MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7 ACALL SENDCOMMAND ;GUI LENH RA LCD MOV TH0,#HIGH(-100) MOV TL0,#LOW(-100) ACALL DELAY ;DELAY 100US MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7 ACALL SENDCOMMAND ;GUI LENH RA LCD MOV DATABUS,#0CH ;CODE = 0CH - CHO PHEP LCD HIEN THI ACALL SENDCOMMAND ;GUI LENH RA LCD MOV DATABUS,#01H ;CODE = 01H - XOA LCD ACALL SENDCOMMAND ;GUI LENH RA LCD MOV DATABUS,#06H ;CODE = 06H - TU TANG DIA CHI HIEN THI, TAT DICH CHUYEN HIEN THI ACALL SENDCOMMAND ;GUI LENH RA LCD RET ;*************************************************** SENDCOMMAND: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU LIEU (SENDDATA) RA LCD CLR RS ;RS = 0 - GUI LENH SJMP PULSE_EN SENDDATA: SETB RS ;RS = 1 - GUI DU LIEU NOP PULSE_EN: ;TAO XUNG ENABLE DE CHUYEN THONG TIN (COMMAND/DATA) VAO LCD CLR RW ;RW = 0 - WRITE LCD MODE CLR EN ;EN = 0 NOP SETB EN ;EN = 1 - XUNG ENABLE NOP ;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC LCD GHI NHAN THONG TIN GUI DEN ;************************************************************* ;MOV TH0,#HIGH(-1000) ;LENH NAY DUOC THAY THE CHO DOAN MA KIEM TRA DUOI DAY KHI ;MOV TL0,#LOW(-1000) ;CHAY CHUONG TRINH NAY TRONG PHAN MEM MO PHONG TOPVIEW ;ACALL DELAY ;************************************************************* MOV DATABUS,#0FFH ;CAU HINH PORT 1 CHO CHE DO PORT NHAP SETB RW ;RW = 1 - READ LCD MODE CLR RS ;RS = 0 - GUI LENH CLR EN ;EN = 0 NOP SETB EN ;EN = 1 - XUNG ENABLE NOP BUSY: ;BUSY = 0 -> HOAN TAT, BUSY = 1 -> DANG THUC HIEN E. HỆ THỐNG ĐIỀU KHIỂN LCD. Bài 2: Chương trình điều khiển LCD hiển thị hai dòng chữ “WELLCOME TO MICROCONTROLLER SYSTEM – 51” và “DESIGNED BY: PQT.” trên hai dòng của màn hình LCD với yêu cầu: dòng chữ thứ nhất sẽ dịch chuyển liên tục từ phải sang trái, dòng chữ thứ hai đứng yên. Giáo trình thực hành vi xử lý. 9 Biên soạn: Phạm Quang Trí MOV A,DATABUS ;DOC DU LIEU TU LCD JB ACC.7,BUSY ;KIEM TRA CO BUSY BUSY2: ;KIEM TRA CO BAO BAN (BUSY FLAG) LAN THU HAI MOV A,DATABUS ;DOC DU LIEU TU LCD JB ACC.7,BUSY2 ;KIEM TRA CO BUSY LAN 2 CLR RW ;RW = 0 - WRITE LCD MODE (THOAT CHE DO READ, TRO VE CHE DO WRITE) ;************************************************************* RET ;*************************************************** DISP_FLINE: ;CTC DAT DIA CHI BAT DAU DONG 1 VA NAP DU LIEU DONG 1 VAO DDRAM MOV DATABUS,#80H ;CODE = 80H - DAT DDRAM DIA CHI BAT DAU CUA DONG 1 - 00H ACALL SENDCOMMAND ;GUI LENH RA LCD ACALL WRITE ;GUI VUNG DU LIEU SANG LCD RET ;*************************************************** DISP_SLINE: ;CTC DAT DIA CHI BAT DAU DONG 2 VA NAP DU LIEU DONG 2 VAO DDRAM MOV DATABUS,#0C0H ;CODE = C0H - DAT DDRAM DIA CHI BAT DAU CUA DONG 2 - 40H ACALL SENDCOMMAND ;GUI LENH RA LCD MOV DPTR,#SLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 2 CUA LCD ACALL WRITE ;GUI VUNG DU LIEU SANG LCD RET ;*************************************************** WRITE: ;CTC GUI DU LIEU SANG LCD, KET THUC GUI DU LIEU KHI DU LIEU GUI DI LA 99H MOV R0,#0 ;OFFSET DAU TIEN TRONG VUNG DU LIEU CUA DPTR WR1: MOV A,R0 ;NAP OFFSET MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA PORT DEN LCD ACALL SENDDATA ;GUI DU LIEU RA LCD INC R0 ;CHUYEN SANG DU LIEU KE TIEP CJNE R0,#16,WR1 ;KIEM TRA NAP DAY DU DU LIEU CHO MOT DONG MAN HINH - 16 CHU RET ;*************************************************** DELAY: MOV TMOD,#01H SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET ;*************************************************** FLINE_DATA: ;DU LIEU HIEN THI DONG 1 DB ' ' DB 'WELLCOME TO MICROCONTROLLER SYSTEM - 51' DB ' ' SLINE_DATA: ;DU LIEU HIEN THI DONG 2 DB 'DESIGNED BY: PQT' END 1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên. 2 Bài tập: (xem thêm trong phần hướng dẫn và phần bài tập của Bài 3) E. HỆ THỐNG ĐIỀU KHIỂN LCD. Bài 3: Chương trình điều khiển LCD hiển thị hai dòng chữ “PULSE = ” và “DESIGNED BY PHAM QUANG TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai dòng của màn hình LCD với yêu cầu: số lượng xung đếm được (00 – 99) tại chân P3.0 sẽ được hiển thị trên dòng thứ nhất tiếp phía sau dòng chữ “PULSE =”, dòng chữ thứ hai sẽ dịch chuyển từ phải sang trái. Xung được tạo ra bằng cách nhấn nút nhấn KEY0. Giáo trình thực hành vi xử lý. 10 Biên soạn: Phạm Quang Trí 1 Trình tự tiến hành thí nghiệm: 1.1 Kết nối thiết bị thí nghiệm. • Tắt nguồn cấp cho mô hình thí nghiệm. • Dùng dây bus 3 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J47 (CTRL LCD) ở khối LCD (chú ý là ta chỉ nối 3 bit thấp của J63 và J47 với nhau). • Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J46 (DATA / CODE LCD) ở khối LCD. • Dùng dây bus 8 nối J66 (PORT3 / FUNCTION) ở khối vi điều khiển với J76 (MOMENTARY SW) ở khối nút nhấn. • Dùng dây hai bus 3 nối J104 (POWER) ở khối LCD và J114 (POWER) ở khối nút nhấn với nguồn +5V ở khối nguồn. MOMENTARY SW POWER PORT 0PORT 1PORT 3PORT 2 PORT 1PORT 3 40 PINS 20 PINS 3 1.2 Sơ đồ nguyên của hệ thống: AD7 AD0 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 AD6 AD5 AD4 AD3 AD2 AD1 D0 D7 AD2 AD0 AD1 D0 D1 D2 D3 D4 D5 D6 D1 D2 D3 D4 D5 D6 D7 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C51 C1 33p C2 33p X1 12MHz C3 10uF R1 10k +5V 2 3 4 5 6 7 8 9 1 RP1 10K +5V MAÏCH ÑIEÀU KHIEÅN LCD MAÏCH ÑIEÀU KHIEÅN LCDMAÏCH ÑIEÀU KHIEÅN LCD MAÏCH ÑIEÀU KHIEÅN LCD D7 14 D6 13 D5 12 D4 11 D3 10 D2 9 D1 8 D0 7 E 6 RW 5 RS 4 VSS 1 VDD 2 VEE 3 LCD1 ALPHANUMERIC LCD 16 CHAR x 2 LINE RV1 10K +5V PULSE BUTTON R2 10k +5V [...]... ACALL MOV LCD_ SEND_COMMAND A,#'D' LCD_ SEND_DATA A,#'e' LCD_ SEND_DATA A,#'s' LCD_ SEND_DATA A,#'i' LCD_ SEND_DATA A,#'g' LCD_ SEND_DATA A,#'n' LCD_ SEND_DATA A,#'e' LCD_ SEND_DATA A,#'d' LCD_ SEND_DATA A,#' ' LCD_ SEND_DATA A,#'b' LCD_ SEND_DATA A,#'y' LCD_ SEND_DATA A,#':' LCD_ SEND_DATA A,#' ' Giỏo trỡnh th c hnh vi x ;LENH CHO PHEP KY TU SE HIEN THI TAI VI TRI DAU TIEN CUA DONG THU ;HAI TREN MAN HINH LCD ;GOI... ;*************************************************** LCDINIT_STATUS_8: ;CTC KHOI DONG LCD (KIEU LCD 8 BIT) CAN CU VAO LCD_ DATABASE PUSH B MOVC A,@A+DPTR CLR LCD_ REG_SELECT CLR LCD_ RD_WR ;LAY GIA TRI CAU HINH KHOI DONG CHO LCD TU LCD_ DATABASE ;RS = 0 - CHON BUS LENH ;R/W = 0 - CHON GHI DU LIEU LEN LCD ACALL LCD_ PORT_OUT ;GOI CTC XUAT DU LIEU RA PORT VI DIEU KHIEN MOV B,#255 Giỏo trỡnh th c hnh vi x ;TAO THOI GIAN TRE TRONG... ;*************************************************** LCDINIT_STATUS: ;CTC KHOI DONG LCD (KIEU LCD 4 BIT) CAN CU VAO LCD_ DATABASE MOVC A,@A+DPTR ;LAY GIA TRI CAU HINH KHOI DONG CHO LCD TU LCD_ DATABASE ACALL LCD_ SEND_COMMAND ;GUI THONG SO CAU HINH DEN LCD DE KHOI DONG LCD RET ;*************************************************** LCD_ SEND_COMMAND: ;CTC CHUYEN LENH DIEU KHIEN LEN LCD PUSH B CLR LCD_ REG_SELECT CLR LCD_ RD_WR ;RS = 0 - CHON... HIEN THI TAI VI TRI DAU TIEN CUA DONG THU NHAT ;TREN MAN HINH LCD LCD_SEND_COMMAND ;GOI CTC DAT TRANG THAI HOAT DONG CHO LCD A,#'M' ;HIEN THI KY TU 'M' LCD_ SEND_DATA ;GOI CTC TRUYEN KY TU CHO LCD A,#'i' ;HIEN THI KY TU 'i' LCD_ SEND_DATA A,#'c' ;HIEN THI KY TU 'c' LCD_ SEND_DATA A,#'r' ;HIEN THI KY TU 'r' LCD_ SEND_DATA A,#'o' ;HIEN THI KY TU 'o' LCD_ SEND_DATA A,#'-' ;HIEN THI KY TU '-' LCD_ SEND_DATA... ;*************************************************** LCD_ ENABLE BIT P1.3 ;BIT DIEU KHIEN CHAN ENABLE CUA LCD LCD_RD_WR BIT P1.1 ;BIT DIEU KHIEN CHAN RW CUA LCD LCD_REG_SELECT BIT P1.2 ;BIT DIEU KHIEN CHAN RS CUA LCD LCD_PORT SET P1 ;PORT KET NOI VOI LCD BUSY BIT P1.7 ;CHAN PORT SE XUAT HIEN CO BAO BAN LCD_ START_ROW1 EQU 00H ;DIA CHI CUA KY TU DAU TIEN THUOC DONG THU NHAT TREN LCD LCD_START_ROW2 EQU 40H ;DIA CHI CUA... ACALL LCDINIT_STATUS_8 ;GOI CTC GUI CAU HINH KHOI DONG LCD (KIEU LCD 8 BIT) MOV A,#0 ;LCD_ DATABASE = 0 | 8 BIT, 2/1 DONG, DINH DANG 5x10/5x7 ACALL LCDINIT_STATUS_8 MOV A,#0 ;LCD_ DATABASE = 0 | 8 BIT, 2/1 DONG, DINH DANG 5x10/5x7 ACALL LCDINIT_STATUS_8 ;CHUYEN DOI TU CHE DO 8 BIT SANG CHE DO 4 BIT MOV A,#1 ;LCD_ DATABASE = 1 | 4 BIT, 2/1 DONG, DINH DANG 5x10/5x7 ACALL LCDINIT_STATUS_8 ;BAT DAU TU VI TRI... DO 4 BIT MOV A,#1 ;LCD_ DATABASE = 1 | 4 BIT, 2/1 DONG, DINH DANG 5x10/5x7 ACALL LCDINIT_STATUS ;GOI CTC GUI CAU HINH KHOI DONG LCD (KIEU LCD 4 BIT) MOV A,#3 ;LCD_ DATABASE = 3 | BAT HIEN THI, TAT CON TRO, TAT NHAP NHAY CON TRO ACALL LCDINIT_STATUS MOV A,#6 ;LCD_ DATABASE = 6 | XOA HIEN THI ACALL LCDINIT_STATUS MOV A,#4 ;LCD_ DATABASE = 4 | CHE DO TANG DIA CHI, TAT DICH HIEN THI ACALL LCDINIT_STATUS RET... n i LCD: Ph thu c vo s l LCD 8 bit Ch ho t m t chng trỡnh v truy n thụng qua cỏc ng ng dõy c s d ng k t n i v i vi i u khi n, cú hai ch l LCD 4 bit v ng thớch h p c a LCD c xỏc nh ngay t th i i m b t u c a quỏ trỡnh x trong c g i l quỏ trỡnh kh i ng Trong tr ng h p th nh t (LCD 8 bit), d li u c ng D0 D7 v v n ny ó c gi i thớch bờn trờn Trong tr ng h p ch LCD 4 Giỏo trỡnh th c hnh vi x lý. .. ;HIEN THI KY TU 'c' LCD_ SEND_DATA A,#'o' ;HIEN THI KY TU 'o' LCD_ SEND_DATA A,#'n' ;HIEN THI KY TU 'n' LCD_ SEND_DATA A,#'t' ;HIEN THI KY TU 't' LCD_ SEND_DATA A,#'r' ;HIEN THI KY TU 'r' LCD_ SEND_DATA A,#'o' ;HIEN THI KY TU 'o' LCD_ SEND_DATA A,#'l' ;HIEN THI KY TU 'l' LCD_ SEND_DATA A,#'l' ;HIEN THI KY TU 'l' LCD_ SEND_DATA A,#'e' ;HIEN THI KY TU 'e' LCD_ SEND_DATA A,#'r' ;HIEN THI KY TU 'r' LCD_ SEND_DATA MOV... n th lm vi c m t cỏch bỡnh th ng Thu t toỏn kh i ng LCD ph thu c vo vi c k t n i v i vi i u khi n thụng qua giao ti p 4 bit ho c 8 bit Giỏo trỡnh th c hnh vi x 24 Biờn so n: Ph m Quang Trớ E H TH NG I U KHI N LCD Bi 3: Chng trỡnh i u khi n LCD hi n th hai dũng ch PULSE = v DESIGNED BY PHAM QUANG TRI ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY trờn hai dũng c a mn hỡnh LCD v i . hình thí nghiệm để kiểm chứng. • Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển. • Khảo sát nguyên lý hoạt động và nguyên lý điều khiển LCD. • Điều khiển để hiển thị các thông tin. HỆ THỐNG ĐIỀU KHIỂN LCD. Giáo trình thực hành vi xử lý. 2 Biên soạn: Phạm Quang Trí A. MỤC ĐÍCH: • Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển. E. HỆ THỐNG ĐIỀU KHIỂN LCD. Bài 1: Chương trình điều khiển LCD hiển thị hai dòng chữ “MICRO-CONTROLLER” và “DESIGNED BY: PQT.” đứng yên trên hai dòng của màn hình LCD. Giáo trình thực hành vi

Ngày đăng: 09/05/2014, 21:14

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan