DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
No Result
View All Result
Home Vi Điều Khiển 8051

BÀI 10: LẬP TRÌNH HIỂN THỊ LCD 16X2 VỚI 8051.

26 Tháng Sáu, 2022
in 8051, MD LCD, Vi Điều Khiển
2.7k 144

1. Giới Thiệu về màn hình LCD16X2

LCD là một màn hình nhiều điểm ảnh, có thể coi là một Led ma trận dạng lớn, tuy nhiên chúng ta không cần đi vào điều khiển từng Pixel hay là từng chấm nhỏ như trong Phần 1 mà chúng ta sẽ điều khiển qua lệnh, con trỏ… để hiển thị thông tin một cách dễ dàng hơn. Có nhiều loại LCD, trong bài này chúng ta dùng loại đơn giản 16×2. Trước tiên chúng ta tìm hiểu về cầu tạo của nó.

Dưới đây là hình mô phỏng, các em tìm nó với từ khóa “lcd 16×2”.

Tiếp theo chúng ta học về cách kết nối, lập trình để sử dụng LCD. Trước tiên chúng ta phải gửi lệnh vào cho LCD biết nó phải làm gì. Cách gửi lệnh như sau:

Các em có thể xem một số lệnh sau đây. Những lệnh này gọi là lệnh khởi tạo LCD.

Sau khi gửi các lệnh vào LCD (qua các chân D0 – D7) để nó biết sẽ phải làm gì (bật màn hình, hiển thị hay tắt con trỏ, di chuyển con trỏ …), chúng ta sẽ phải gửi lệnh chứa các kí tự mà chúng ta muốn hiển thị. Cách gửi dữ liệu ra cũng tương tự như cách gửi lệnh, các em có thể xem trong hình sau:

Bước 1 thường là mặc định. Các bước sau tương tự như việc gửi lệnh vào LCD. Tại sao B1 lại là mặc định, vì chúng ta thường dùng LCD để hiển thị chứ không để nhận dữ liệu vào. Hình sau nối chân RW với Ground:

Các em tạo Project mô phỏng như hình vẽ dưới và sử dụng đoạn code sau để hiển thị kí tự ra màn hình.

2. Code mẫu 

#include<regx52.h> 
// Khai bao ket noi voi LCD. 2 chân này sẽ thông báo cho LCD, lúc nào là truyền 
//câu lệnh, lúc nào truyền dữ liệu hiển thị và khi nào được truyền, khi nào không 
sbit LCD_RS = P2^0; 
sbit LCD_EN = P2^1; 
#define LCD_DATA P3; 
// Đặt hằng số thay thế Port3- xuất dữ liệu từ VĐK 
//Hàm Delay_ms được tính toán với tần số thạch anh 12Mhz. 

void Delay_ms(unsigned int t) 
{ 
 unsigned int x,y; 
 for(x=0;x<t;x++) { 
    for(y=0;y<123;y++); 
    }
} 
//Hàm Lcd_cmd sẽ gửi lệnh vào trong LCD. Chú ý các bước trong phần gửi lệnh 

void Lcd_Cmd(unsigned char cmd) { 
    LCD_RS = 0; //Ghi command chu khong phai Data 
    LCD_DATA = cmd; //Dua command vao Port P3 
    LCD_EN = 0; //Cho phep truyen command vao LCD 
    LCD_EN = 1; //Khong cho phep truyen tiep 
    if(cmd<=0x02) { 
        Delay_ms(2); 
    } 
    else { 
        Delay_ms(1); 
         } 
    } 
void Lcd_Chr_Cp(char c); // Hiển thị một kí tự ở vị trí hiện tại của con trỏ 
    { 	LCD_RS = 1;//Ghi dữ liệu hiển thị chu khong phai lệnh 
        LCD_DATA = c; 
        LCD_EN = 0; 
        LCD_EN = 1; 
        Delay_ms(1); } 
void Lcd_Str_Cp(char *str); //Ghi một String thay vì chỉ ghi từng kí tự 
    { 
    unsigned char i = 0; 
    while(str[i]!=0); //Ghi lần lượt từng kí tự của String ra màn hình đến khi gặp //kí tự trắng 
    { 
        Lcd_Chr_Cp(str[i]); i++; } 
    } 
// Khai báo chương trình chính 
void main() 
    { 
    // Xoa toan bo noi dung tren 
    LCD Lcd_Cmd(0x01); 
// Bat hien thi va tat con tro. Dòng lệnh bên dưới sẽ bật con trỏ với mã 0x0E 
Lcd_Cmd(0x0C); //Lcd_Cmd(0x0E); 
// Hien thi chuoi "Hello World" 
Lcd_Str_Cp("Hello World"); 
// Di chuyen con tro ve dau dong thu 2 
Lcd_Cmd(0x38); 
Lcd_Cmd(0xC0); 
Lcd_Str_Cp("I am the best in the world Hê Hê"); 
Delay_ms(3000); 
while(1) 
    { 
     Lcd_Cmd(0x18);
     Delay_ms(1000); 
    } 
}

 

Trong việc hiển thị kí tự tại một vị trí có sẵn, chúng ta sử dụng 8 bit để chọn vị trí của kí tự. Bit đầu tiên luôn mặc định là 1. Các bit tiếp theo hiển thị vị trí của kí tự. Có tất cả 128 ô (00-7F).
Với các câu lệnh khác, chúng ta có thể hiển thị kí tự ở một vị trí bất kì trong  một dòng, thay vì chỉ đầu dòng. Chúng ta cũng có thể cho cả dòng chữ chạy trái, chạy phải chỉ với một dòng lệnh.

Sau khi hiển thị một kí tự tại một vị trí có sẵn, chúng ta có thể tiến đến bước xa hơn, dịch chuyển kí tự mà chúng ta muốn (dịch trái, dịch phải) với câu lệnh như hình dưới.

Cuối cùng, khi dòng chữ đang chạy, các em muốn dừng không cho chạy nữa, trở lại vị trí như ban đầu, có thể dùng lệnh sau:

 

 

Tags: 8051lcd 16x2
Share2142Tweet1339

Related Posts

lập trình led 7 thanh
8051

Lập trình LED 7 thanh với 8051

4 Tháng Bảy, 2022
Module nRF24L01 2.4G – Cách Thức Sử Dụng Với Tất Cả Các Dòng VĐK
Điện Tử Cơ Bản

Module nRF24L01 2.4G – Cách Thức Sử Dụng Với Tất Cả Các Dòng VĐK

19 Tháng Sáu, 2022
Kết Nối NODEMCU Kết nối với  LCD16X2 Sử dụng Module I2C
Arduino

Kết Nối NODEMCU Kết nối với LCD16X2 Sử dụng Module I2C

26 Tháng Sáu, 2022
Next Post
BÀI 11: ĐỌC CẢM BIẾN NHIỆT ĐỘ LM35 + ADC 0808 VỚI 8051

BÀI 11: ĐỌC CẢM BIẾN NHIỆT ĐỘ LM35 + ADC 0808 VỚI 8051

BÀI 12: Đọc bàn phím khóa số với 8051.

BÀI 12: Đọc bàn phím khóa số với 8051.

5 1 đánh giá
Đánh giá bài viết
Theo dõi
Đăng nhập
Thông báo của
guest
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận

No Result
View All Result
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
wpDiscuz