LẬP TRÌNH NUVOTON N76E003
BÀI 6: Giao tiếp lcd hd44780 4 bit
- Giới thiệu lcd: Ngày nay, thiết bị hiển thị lcd (Liquid Crystal Display) được sử dụng trong rất nhiều các ứng dụng của VĐK. lcd có rất nhiều ưu điểm so với các dạng hiển thị khác: Nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẽ.
Có nhiều loại lcd dùng chung ic điều khiển hd44780 như: 16x2, 8x2, 20x2, 20x4, 16x1
lcd hd44780 - 16x2
Sơ đồ chân lcd hd44780
Chức năng chân lcd hd44780
- Tập lệnh LCD:
Trước khi tìm hiểu tập lệnh của LCD, sau đây là một vài chú ý khi giao tiếp với LCD :
+ Tuy trong sơ đồ khối của LCD có nhiều khối khác nhau, nhưng khi lập trình điều khiển LCD ta chỉ có thể tác động trực tiếp được vào 2 thanh ghi DR và IR thông qua các chân DBx, và ta phải thiết lập chân RS, R/W phù hợp để chuyển qua lại giữ 2 thanh ghi này. (xem bảng 2)
+ Với mỗi lệnh, LCD cần một khoảng thời gian để hoàn tất, thời gian này có thể khá lâu đối với tốc độ của MPU, nên ta cần kiểm tra cờ BF hoặc đợi (delay) cho LCD thực thi xong lệnh hiện hành mới có thể ra lệnh tiếp theo.
+ Địa chỉ của RAM (AC) sẽ tự động tăng (giảm) 1 đơn vị, mỗi khi có lệnh ghi vào RAM. (Điều này giúp chương trình gọn hơn).
+ Tuy trong sơ đồ khối của LCD có nhiều khối khác nhau, nhưng khi lập trình điều khiển LCD ta chỉ có thể tác động trực tiếp được vào 2 thanh ghi DR và IR thông qua các chân DBx, và ta phải thiết lập chân RS, R/W phù hợp để chuyển qua lại giữ 2 thanh ghi này. (xem bảng 2)
+ Với mỗi lệnh, LCD cần một khoảng thời gian để hoàn tất, thời gian này có thể khá lâu đối với tốc độ của MPU, nên ta cần kiểm tra cờ BF hoặc đợi (delay) cho LCD thực thi xong lệnh hiện hành mới có thể ra lệnh tiếp theo.
+ Địa chỉ của RAM (AC) sẽ tự động tăng (giảm) 1 đơn vị, mỗi khi có lệnh ghi vào RAM. (Điều này giúp chương trình gọn hơn).
- Thư viện Lcd giao tiếp 4 bit:
Một số hàm mình đã phát triển trong thư viện, các bạn tham khảo và phát triển thêm theo ý mình nhé, file mình sẽ để ở cuối bài.
FUNCTION DESCRIPTION
*
* Lcd_Cmd(); // GUI 1 LENH DEN LCD
* Lcd_Init(); // HAM KHOI TAO LCD
* Lcd_Chr_Cp(); // HAM XUAT 1 KY TU TAI VI TRI CON TRO
* Lcd_putc(); // XUAT 1 CHUOI KY TU TAI VI TRI CON TRO
* Lcd_Gotoxy(X, Y); // CHUYEN CON TRO DEN VI TRI DONG X COT Y
* Lcd_Cmd(CURSOR_ON); // HAM BAT CON TRO MAN HINH
* Lcd_Cmd(CURSOR_OFF); // HAM TAT CON TRO MAN HINH
* Lcd_Cmd(CLEAR_DISPLAY); // HAM XOA MAN HINH
* Lcd_Cmd(SHIFT_LEFT); // DICH TRAI NOI DUNG HIEN THI TREN MAN HINH
* Lcd_Cmd(SHIFT_RIGHT); // DICH PHAI NOI DUNG HIEN THI TREN MAN HINH
- Giao tiếp 4 bit:
+ Sơ đồ kết nối phần cứng:
+ Chương trình điều khiển:
#include "..\My_lib\Main.h"
#define LCD_DATA P0
#include "..\My_lib\HD7740_4BIT_LCD_PORT.h"
void main()
{
set_tris_0(0x00);
Lcd_Init();
Lcd_Gotoxy(1,1);
Lcd_putc("keil-c N76E003 ");
Lcd_Gotoxy(1,2);
Lcd_putc("giao tiep lcd 4bit");
Lcd_Gotoxy(1,3);
Lcd_putc("time: 0000");
while(1)
{
sec++;
delay_ms(500);
if(sec >= 59)
{
sec =0;
min++;
}
Lcd_Gotoxy(10,3);
Lcd_Chr_Cp(sec%10+0x30);
Lcd_Gotoxy(9,3);
Lcd_Chr_Cp(sec/10+0x30);
delay_ms(500);
if(sec >= 59)
{
sec =0;
min++;
}
Lcd_Gotoxy(10,3);
Lcd_Chr_Cp(sec%10+0x30);
Lcd_Gotoxy(9,3);
Lcd_Chr_Cp(sec/10+0x30);
}
}
+ Video mô phỏng: