Lập trình giao tiếp giữa vi tinh chỉnh Pic với Lcd

Màn hình tinh thể lỏnghayLCD(Liquid crystal display)

Đây là các loại thiết bị hiển thị cấu trúc bởi các tế bào (các điểm ảnh) chứatinh thể lỏng bao gồm khả năng chuyển đổi tính phân rất của tia nắng và vị đó đổi khác cường độ tia nắng truyền qua lúc kết hợp với các kính thanh lọc phân cực. Bọn chúng có ưu thế là phẳng, đến hình ảnh sáng, sống động và tiết kiệm năng lượng.

Bạn đang xem: Giao tiếp lcd với pic16f877a

Ở đây chúng ta chỉ đề cập cho module Text LCD trong lập trình sẵn vi điều khiển. Những module này có size lớn bé dại khác nhau với thường có các tên gọiLCDSố cam kết tự x số dòng. Ví dụ:LCD 16×2– có nghĩa là màn hình lcd này có 16 cam kết tựvà 2 dòng.

Xem thêm: Ăn Đậu Tương Có Béo Không - Ăn Hạt Đậu Nành Sấy Có Béo Không

*

Hình hình ảnh thực tế của LCD 16×2

*

Hình hình ảnh của LCD 16×2, trên ứng dụng Proteus

Bạn thấy trên lcd có 8 bit tài liệu từ D0 cho D7, bạn có hai sự sàng lọc cho việc liên kết LCD với vi tinh chỉnh (config), một là liên kết truyền tài liệu 4 bit (config 4bit), hai là truyền dữ liệu 8 bit (config 8bit). Trong bài xích hướng dẫn này mình share sơ đồ liên kết truyền tài liệu 4 bit, chúng ta xem hình bên dưới sẽ rõ hơn:

*

Kết nối LCD 16×2 với vi tinh chỉnh pic 16f877A theo phong cách 4bit

Trong sơ trang bị trên ta chỉ sử dụng 4 bit từ bỏ D4-D7 (data lines) để truyền tài liệu từ vi điều khiển pic 16f877A mang đến LCD 16×2. Nhì chân RS, E (control lines) dùng để điều khiển LCD, VEE liên kết với một phát triển thành trở để kiểm soát và điều chỉnh độ sáng của LCD.

Như vậy, bọn họ đã biết khái niệm về LCD và cách liên kết chúng với vi điều khiển, sau đây chúng ta sẽ học bí quyết lập trình trên vi điều khiển để xuất tài liệu lên LCD bằng chương trình mikaroC compiler . Bên trên trình biên dịch mikroC đã cung cấp thư viện LCD, bạn chỉ việc định nghĩa port và hotline vài hàm là bao gồm thể xong xuôi việc xuất dữ liệu. Sau đấy là các hàm trong tủ sách LCD bên trên mikroC compiler:

Lcd_Int(): đó là hàm khởi sinh sản LCD, trước khi ta viết các hàm không giống thì ta cần gọi hàm này khác.Lcd_Out(char row, char column, char *text): xuất dữ liệu ra LCD, cách viết hàm như sau:Lcd LibraryLcd_Out(char row, char column, char *text);
_LCD_FIRST_ROW: di chuyển con trỏ nhấp nháy mang đến vị trí thứ nhất của chiếc 1._LCD_SECOND_ROW: dịch chuyển con trỏ nhấp nháy đến vị trí đầu tiên của loại 2._LCD_THIRD_ROW: dịch chuyển con trỏ nhấp nháy mang đến vị trí đầu tiên của dòng 3._LCD_FOURTH_ROW: dịch chuyển con trỏ nhấp nháy mang đến vị trí trước tiên của cái 4._LCD_CLEAR: xóa dữ liệu màn hình ._LCD_CURSOR_OFF: tắt bé trỏ nhấp nháy._LCD_UNDERLINE_ON: bé trỏ nhấp nháy hình trạng gạch dưới._LCD_BLINK_CURSOR_ON: bé trỏ nhấp nháy._LCD_MOVE_CURSOR_LEFT: dịch chuyển con trỏ trái cơ mà không làm đổi khác hiển thị tài liệu RAM_LCD_MOVE_CURSOR_RIGHT: dịch chuyển con trỏ phảimà không làm thay đổi hiển thị tài liệu RAM_LCD_TURN_ON: mở LCD_LCD_TURN_OFF: tắt hiển thị LCD_LCD_SHIFT_LEFT: dịch chuyển dữ liệu hiển thị thanh lịch trái._LCD_SHIFT_RIGHT: dịch rời dữ liệu hiển thị thanh lịch phảiLcd_Out_Cp(*char text):In văn bản trên màn hình LCD tại vị trí nhỏ trỏ hiện hành. Cả hai biến chuyển chuỗi với chữ rất có thể được thông qua như là 1 trong những văn bản.Lcd_Chr(char row, char column, char out_char): In ký tự trên LCD tại địa chỉ quy định. Cả hai đổi thay số và chữ có thể được thông qua như là một trong những ký tự.

Trước tiên họ cần thiết lập cácdata linescontrol linesnhư sau:

// LCD module connectionssbit LCD_RS at RD4_bit;sbit LCD_EN at RD5_bit;sbit LCD_D4 at RD0_bit;sbit LCD_D5 at RD1_bit;sbit LCD_D6 at RD2_bit;sbit LCD_D7 at RD3_bit;sbit LCD_RS_Direction at TRISD4_bit;sbit LCD_EN_Direction at TRISD5_bit;sbit LCD_D4_Direction at TRISD0_bit;sbit LCD_D5_Direction at TRISD1_bit;sbit LCD_D6_Direction at TRISD2_bit;sbit LCD_D7_Direction at TRISD3_bit;// kết thúc LCD module connectionsSau đấy là một Project hoàn hảo về bài toán xuất dữ liệu ra LCD:

/*Project: Hoc lap trinh giao tiep LCD 4bit, ket noi RD0..RD3 den D4...D7 cua LCD RD4 ket noi RS, RD5 ket noi E. MCU: pic 16f877A Author: Huynh Minh Trungweb: http://helonhadat.com.vn */ // LCD module connectionssbit LCD_RS at RD4_bit;sbit LCD_EN at RD5_bit;sbit LCD_D4 at RD0_bit;sbit LCD_D5 at RD1_bit;sbit LCD_D6 at RD2_bit;sbit LCD_D7 at RD3_bit;sbit LCD_RS_Direction at TRISD4_bit;sbit LCD_EN_Direction at TRISD5_bit;sbit LCD_D4_Direction at TRISD0_bit;sbit LCD_D5_Direction at TRISD1_bit;sbit LCD_D6_Direction at TRISD2_bit;sbit LCD_D7_Direction at TRISD3_bit;// kết thúc LCD module connectionsunsigned char *text;void main() TRISD = 0x00; //Trisd as outputPORTD = 0x00; //Clear port dtext="CHAO BAN DEN";Lcd_Init(); //Khoi tao LCDLcd_Cmd(_LCD_BLINK_CURSOR_ON); //Con tro nhap nhayDelay_ms(2000);Lcd_Out(1,2,text); //Xuat du lieu tu bien text ra vi tri dong 1, cot 1Lcd_Cmd(_LCD_SECOND_ROW); //Di chuyen con tro den dong 2Delay_ms(2000);Lcd_out(2,1,"dientudieukhien"); //Xuat chuoi du lieu ra dong 2, cot 2Video mô phỏng bằng chương trình Proteus về xuất tài liệu LCD:Bạn rất có thể tải project theo link bên dưới về tham khảo, tất cả code c, tệp tin mô phỏng bởi proteus: