Điều khiển LCD với 8051

9 326 1
Điều khiển LCD với 8051

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

Thông tin tài liệu

Ghép LCD với 8051 phần ta mô tả chế độ hoạt động LCD sau mô tả cách lập trình phối ghép LCD tới 8051 1.1 Hoạt động LCD Trong năm gần LCD ngày đ-ợc sử dụng rộng rãi thay dần cho đèn LED (các đèn LED đoạn hay nhiều đoạn) Đó nguyên nhân sau: Các LCD có giá thành hạ Khả hiển thị số, ký tự đồ hoạ tốt nhiều so với đèn LED (vì đèn LED hiển thị đ-ợc số số ký tự) Nhờ kết hợp điều khiển làm t-ơi vào LCD làm giải phóng cho CPU công việc làm t-ơi LCD Trong đèn LED phải đ-ợc làm t-ơi CPU (hoặc cách đó) để trì việc hiển thị liệu Dễ dàng lập trình cho ký tự đồ hoạ 1.2 Mô tả chân LCD LCD đ-ợc nói mục có 14 chân, chức chân đ-ợc cho bảng Chân Vcc, Vss Vee: Các chân Vcc, Vss Vee: Cấp d-ơng nguồn + 5v đất t-ơng ứng VEE đ-ợc dùng để điều khiển độ t-ơng phản LCD Chân chọn ghi RS (Register Select) Có hai ghi quan trọng bên LCD, chân RS đ-ợc dùng để chọn ghi nh- sau: Nếu RS = ghi mà lệnh đ-ợc chọn phép ng-ời dùng gửi lệnh chẳng hạn nh- xoá hình, đ-a trỏ đầu dòng v.v Nếu RS = ghi liệu đ-ợc chọn cho phép ng-ời dùng gửi liệu cần hiển thị LCD Chân đọc/ ghi (R/W) Đầu vào đọc/ ghi cho phép ng-ời dùng ghi thông tin lên LCD R/W = đọc thông tin từ R/W = Chân cho phép E (Enable) Chân cho phép E đ-ợc sử dụng LCD để chốt thông tin hữu chân liệu Khi liệu đ-ợc cấp đến chân liệu xung mức cao xuống thấp phải đ-ợc áp đến chân để LCD chốt liệu chân liêu Xung phải rộng tối thiểu 450ns Chân D0 - D7 Đây chân liệu bít, đ-ợc dùng để gửi thông tin lên LCD đọc nội dung ghi LCD Để hiển thị chữ số, gửi mã ASCII chữ từ A đến Z, a đến z số từ - đến chân bật RS = Cũng có mã lệnh mà đ-ợc gửi đến LCD để xoá hình đ-a trỏ đầu dòng nhấp nháy trỏ Chúng ta sử dụng RS = để kiểm tra bít cờ bận để xem LCD có sẵn sàng nhân thông tin Cờ bận D7 đ-ợcđọc R/W = RS = nh- sau: Nếu R/W = 1, RS = D7 = (cờ bận 1) LCD bận công việc bên không nhận thông tin Khi D7 = LCD sẵn sàng nhận thông tin L-u ý nên kiểm tra cờ bận tr-ớc ghi liệu lên LCD Mô tả chân LCD Chõn Ký hiu VSS VCC VEE RS I/O I 10 11 12 13 14 R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 I I/O I/O I/O I/O I/O I/O I/O I/O I/O Mụ t Đất D-ơng nguồn 5v Cp ngun iu khin tng phn RS = chọn ghi lệnh RS = chọn liệu R/W = đọc liệu R/W = ghi Cho phép Các bít liệu Các bít liệu Các bít liệu Các bít liệu Các bít liệu Các bít liệu Các bít liệu Các bít liệu Các mã lệnh LCD Lệnh đến ghi LCD Mó lnh (hex) Xoá hình hiển thị Trở đầu dòng Giảm trỏ (dịch trỏ sang trái) Tăng trỏ (dịch trỏ sang phải) Dịch hiển thị sang phải Dịch hiển thị sang trái Tắt trỏ, tắt hiển thị A Tắt hiển thị, bật trỏ C Bật hiển thị, tắt trỏ E Bật hiển thị, nhấp nháy trỏ F Tắt trỏ, nhấp nháy trỏ 10 Dịch vị trí trỏ sang trái 14 Dịch vị trí trỏ sang phải 18 Dịch toàn hiển thị sang trái 1C Dịch toàn hiển thị sang phải 80 ép trỏ v đầu dòng thứ C0 ép trỏ v đầu dòng thứ hai 94 ép trỏ v đầu dòng thứ ba 0D4 ép trỏ v đầu dòng thứ t 38 Khi to lcd dũng, ma trn 5x7 (vi LCD 20x4 ta to hai ln) Các vị trí chân LCD khác Optrex 1.3 Gửi lệnh liệu đến LCD với độ trễ Để gửi lệnh từ bảng 12.2 đến LCD ta phải đ-a chân RS Đối với liệu bật RS = sau gửi s-ờn xung cao xuống thấp đến chân E phép chốt liệu LCD Điều đ-ợc đoạn mã ch-ơng trình d-ới (xem hình ) ; gọi độ thời gian trễ tr-ớc gửi liệu/ lệnh ; chân P1.0 đến P1.7 đ-ợc nối tới chân dữ liệu D0 - D7 LCD ; Chân P2.0 đ-ợc nối tới chân RS LCD ; Chân P2.1 đ-ợc nối tới chân R/W LCD ; Chân P2.2 đ-ợc nối đến chân E LCD LCD equ P1 RS bit P2.0 RW bit P2.1 EN bit P2.2 ORG 0000h MOV ACALL ACALL MOV ACALL ACALL MOV ACALL ACALL MOV ACALL ACALL MOV ACALL ACALL MOV ACALL ACALL MOV ACALL A, # 38H COMNWRT DELAY A, # 0EH COMNWRT DELAY A,# 01 COMNWRT DELAY A, # 06H COMNWRT DELAY A,# 84H COMNWRT DELAY A, # N DATAWRT DELAY A,#0 DATAWRT ; Khởi tạo LCD hai dòng với ma trận 5x7 ; Gọi ch-ơng trình ghi lệnh ; Cho LCD độ trễ ; Hiển thị hình trỏ ; Gọi ch-ơng trình ghi lnh ; Cấp độ trễ cho LCD ; Xoá LCD ; Gọi ch-ơng trình ghi lệnh ; Tạo độ trễ cho LCD ; Dịch trỏ sang phải ; Gọi ch-ơng trình ghi lệnh ; Tạo độ trễ cho LCD ; Đ-a trỏ dòng cột ; Gọi ch-ơng trình ghi lệnh ; Tạo độ trễ cho LCD ; Hiển thị chữ N ; Gọi ch-ơng trình a d liu n LCD ; Tạo độ trễ cho LCD ; Hiển thị chữ ; Gọi ch-ơng trình a d liu n LCD AGAIN: SJMP AGAIN LCD, A RS RW EN ; chng trỡnh gi lnh n LCD ; Sao chép ghi A đến cổng P1 ; Đặt RS = để gửi lệnh ; Đặt R/W = để ghi liệu ; Đặt EN = cho xung cao EN ; Đặt EN = cho xung cao xuống thấp COMNWRT: MOV CLR CLR SETB NOP NOP CLR ; Chờ RET DATAWRT: MOV LCD, A SETB RS CLR RW SETB EN NOP NOP CLR EN ; Ghi liệu LCD ; Sao chép ghi A đến cổng P1 ; Đặt RS = để gửi liệu ; Đặt R/W = để ghi ; Đặt EN = cho xung cao ; Đặt EN = cho xung cao xuống thấp RET DELAY: DEL: MOV MOV DJNZ DJNZ 50H, # 10 51H, # 255 51H, $ 50H, DEL RET END 1.4 a ch tr LCD 1.5 Mt s chng trỡnh iu khin hin th text trờn LCD Vớ d 1: "HELLO SPKT" ;89C51 dieu khien 44780 LCD 16characters x lines LCD EN RW RS EQU BIT BIT BIT P0 P3.7 P3.6 P3.5 START: LCALL RESET_LCD LCALL INI_LCD LCALL CLEAR_LCD MAIN: SETB CLR MOV CLR LCALL EN RS LCD,#85H EN DELAY MOV LCALL MOV LCALL MOV LCALL A,#'H' WRITE_TEXT A,#'E' WRITE_TEXT A,#'L' WRITE_TEXT ; ;CURSOR => 05H MOV LCALL MOV LCALL LCALL A,#'L' WRITE_TEXT A,#'O' WRITE_TEXT DELAY1 SETB CLR MOV CLR LCALL EN RS LCD,#0C5H EN DELAY ; ;CURSOR => 45H ; MOV LCALL MOV LCALL MOV LCALL MOV LCALL LCALL LCALL LCALL LCALL LCALL LJMP INI_LCD: CLR SETB CLR MOV CLR LCALL SETB MOV CLR LCALL SETB CLR MOV CLR LCALL SETB CLR MOV CLR LCALL RET CLEAR_LCD: A,#'S' WRITE_TEXT A,#'P' WRITE_TEXT A,#'K' WRITE_TEXT A,#'T' WRITE_TEXT DELAY1 DELAY1 CLEAR_LCD DELAY1 DELAY1 MAIN ;CHUONG TRINH CON KHOI TAO LCD RW EN RS LCD,#38H ;Function Set:8 bit, lines, 5x7dot EN DELAY EN LCD,#0FH ;Display On, Cursor On, Cursor Blink On EN DELAY EN RS LCD,#06H ;Entry Mode Set:increment cursor position EN DELAY EN RS LCD,#1CH ;Cursor Display Shift EN DELAY ;CHUONG TRINH CON XOA MAN HINH LCD SETB EN CLR RS MOV LCD,#01H CLR EN LCALL DELAY RET RESET_LCD: CLR EN CLR RS LCALL DELAY RET WRITE_TEXT: SETB EN SETB RS CLR RW MOV LCD,A CLR EN LCALL DELAY RET DELAY: MOV 50H,#4 LOOP : MOV 51H,#249 DJNZ 51H,$ DJNZ 50H,LOOP RET ;CHUONG TRINH CON RESET LCD DELAY1: DEL2: DEL1: MOV MOV MOV DJNZ DJNZ DJNZ RET 50H,#30 51H,#200 52H,#249 52H,$ 51H,DEL1 50H,DEL2 END V D 2: ;LINE1: 80H ; LINE2:0C0H; LINE3: 094H; LINE4: 0D4H EN BIT P3.7 RW BIT P3.6 RS BIT P3.5 LCD EQU P0 ORG 0000H START: LCALL RESET_LCD LCALL INI_LCD LCALL CLEAR_LCD MAIN: MOV A,#80H ;CURSOR => 00H LCALL WRITE_CONTROL MOV 30H,#20 MOV DPTR,#500H ROW1: CLR A MOVC A,@A+DPTR LCALL WRITE_TEXT INC DPTR DJNZ 30H,ROW1 LCALL DELAY1 MOV A,#0C0H LCALL WRITE_CONTROL ;CURSOR => 40H MOV 30H,#20 ROW2: CLR A MOVC A,@A+DPTR LCALL WRITE_TEXT INC DPTR DJNZ 30H,ROW2 LCALL DELAY1 LCALL CLEAR_LCD LCALL DELAY1 LJMP MAIN ;CHUONG TRINH CON KHOI TAO LCD INI_LCD: MOV A,#38H LCALL WRITE_CONTROL MOV A,#38H LCALL WRITE_CONTROL ;Function Set:8 bit, lines, 5x7dot MOV A,#0FH LCALL WRITE_CONTROL ;Display On, Cursor On, Cursor Blink On MOV A,#06H LCALL WRITE_CONTROL ;Entry Mode Set:increment cursor position MOV A,#1CH LCALL WRITE_CONTROL ;Cursor Display Shift RET CLEAR_LCD: MOV A,#01H LCALL WRITE_CONTROL RET RESET_LCD: CLR CLR EN RS ;Function Set:8 bit, lines, 5x7dot LCALL DELAY RET ;CHUONG TRINH CON VIET DU LIEU DEN LCD WRITE_TEXT: SETB EN SETB RS CLR RW MOV LCD,A CLR EN LCALL DELAY RET ;CHUONG TRINH CON VIET LENH DIEU KHIEN DEN LCD WRITE_CONTROL: SETB EN CLR RS CLR RW MOV LCD,A CLR EN LCALL DELAY RET DELAY: MOV LOOP :MOV DJNZ DJNZ RET DELAY1: MOV DEL2: MOV DEL1: MOV DJNZ DJNZ DJNZ RET ORG 500H MACHU: END 20H,#4 21H,#249 21H,$ 20H,LOOP 20H,#10 21H,#200 22H,#249 22H,$ 21H,DEL1 20H,DEL2 DB DB ' NGUYEN VAN HIEP ' ' DIEN TU CONG NGHIEP'

Ngày đăng: 07/05/2016, 08:52

Từ khóa liên quan

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

Tài liệu liên quan