//---------------LCD VÀ CÁCH DÙNG---------------------------------//
Các bạn có thể đã biết về cách dùng của LCD nhưng do tính chất giúp những bạn chưa rõ, hoặc còn "lơ mơ" về Linh kiện này mình sẽ viết bài này
Hướng dẫn cụ thể chi tiết mong anh em ủng hộ.
-//----------------------LCD là gì ----------------------?
LCD là một thiết bị điện tử dùng để hiển thị , cũng như led 7 đoạn nó dùng để hiển thị dữ liệu . nhưng có thể hiển thị cả chữ và số . Các hiệu ứng rất đa dạng và phong phú làm cho bạn cảm thấy thích thú:
Đây là hình ảnh của LCD như sau :
Có 2 loại LCD mà sinh viên hay dùng là :
LCD 16x2
và LCD 16x4;
Loại 16x2 là có thể hiển thi 2 dòng và 16 kí tự
Tương tự loại 16x4 có thể hiển thị 4 dòng và 16 kí tự
-
Lưu ý : Do trên thị trường chủ yếu là loại 16x2 nên mình sẽ giới thiệu loại 16x2 còn loại 16x4 mình sẽ hướng dẫn các bạn cách lập trình thôi
ok.
//---------------------Chức năng các chân và cách nối-------
đây là hình ảnh thực của LCD
LCD này có 16 chân chức năng của các chân như sau:
chúng ta có thể thấy chức năng cơ bản của LCD qua bảng mô tả chức năng ở trên , mình có thể tóm tắt như sau:
Các chân 1,2,3 là các chân VSS , VDD, VEE trong đó VSS chân nối đất , VEE chân chọn độ tương phản chân này dc chọn qua 1 biến trở 5K một đầu nối VCC , một đầu nối mát . Chân VDD nối dương nguồn .
- Chân chọn thanh ghi RS (Register Select): Có hai thanh ghi trong LCD, chân RS(Register Select) được dùng để chọn thanh ghi, như sau:
Nếu RS = 0 ở chế độ ghi lệnh như xóa màn hình , bật tắt con trỏ...
Nếu RS =1 ở chế độ ghi dữ liệu như hiển thị ký tự , chữ số lên màn hình .
-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 khi R/W = 0 hoặc đọc thông tin LCD khi
R/W = 1.
-Chân cho phép E (Enable): Chân cho phép E được sử dụng bởi LCD để chốt dữ liệu của nó. Khi dữ liệu được đến chân dữ liệu thì cần có 1 xung từ mức cao xuống mức thấp ở chân này để LCD chốt dữ liệu , xung này phải có độ rộng tối thiểu 450ns.
Chân D0 - D7: Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặc đọc nội dung của các thanh ghi trong
LCD. Để hiển thị các chữ cái và các con số chúng ta gửi các mã ASCII của các chữ cái và các con số tương ứng đến các chân này khi bật RS =1;
//-----À quên còn một bảng này nữa khá quan trọng trong LCD bạn sẽ dùng nó để tạo các hiệu ứng trongLCD.
Đó là tất cả những gì về cấu tạo cũng như những gì cần thiết mình giới thiệu để bạn hiểu về LCD.
/*----------------LẬP TRÌNH ĐIỀU KHIỂN LCD-------------*/
Chắc các bạn mong chờ phần này phải ko?
Lưu ý với các bạn muốn lập trình đc cái gì phải hiểu cơ chế hoạt động của nó đã. Các bạn nên đọc kỹ các chức năng ở trên.
Nhưng ko sao mình sẽ hướng dẫn như sau:
Lập trình LCD cũng ko phải là khó lắm , Đơn giản hơn Matrix rất nhiều.
ok bắt đầu nào:
Lưu ý LCD là chốt dữ liệu qua chân Enabel.
===============================================
Nguyên lý của LCD là:
Đầu tiên phải kiểm tra cờ bận (Đó là bít D7 của LCD nếu D7=1 ,LCD đang bận ko ghi dữ lệu vào LCD.
Chờ tời khí D7=0 thi mới ghi vào LCD.
Cho nên với mỗi khi thực hiện ,ghi dữ liệu nên LCD ta phải kiểm tra cờ bận trước.
Nguyên lý lập trình hiển thị LCD như sau:
Xóa màn hình -> Đặt chế độ hiển thị->Đặt con trỏ nơi bắt đầu->Hiển thị dữ liệu.
Để các bạn tiện theo dõi đây là hình ảnh
Cụ thể mình sẽ hướng dẫn các bạn về hàm kiểm tra cờ bận như sau:
Hiển thị chữ " Anh yêu em " Trên màn hình LCD nhé :
Các bạn làm theo code dưới đây .
Mình sẽ chú thích ngay bên cạnh để các bạn theo dõi
Còn hiển thị số thì sao nhỉ dễ thôi!
mình sẽ hướng dẫn các bạn,
Để hiển thị số ta sẽ cho hiển thị các mã ASCII của các chữ số có nhiều cách hiển thị lắm .Nhưng mà hiển thị để có thể tính toán thì nên hiển thị kiểu mã ASCII
như sau.
Các bạn có thể đã biết về cách dùng của LCD nhưng do tính chất giúp những bạn chưa rõ, hoặc còn "lơ mơ" về Linh kiện này mình sẽ viết bài này
Hướng dẫn cụ thể chi tiết mong anh em ủng hộ.
-//----------------------LCD là gì ----------------------?
LCD là một thiết bị điện tử dùng để hiển thị , cũng như led 7 đoạn nó dùng để hiển thị dữ liệu . nhưng có thể hiển thị cả chữ và số . Các hiệu ứng rất đa dạng và phong phú làm cho bạn cảm thấy thích thú:
Đây là hình ảnh của LCD như sau :
Có 2 loại LCD mà sinh viên hay dùng là :
LCD 16x2
và LCD 16x4;
Loại 16x2 là có thể hiển thi 2 dòng và 16 kí tự
Tương tự loại 16x4 có thể hiển thị 4 dòng và 16 kí tự
-
Lưu ý : Do trên thị trường chủ yếu là loại 16x2 nên mình sẽ giới thiệu loại 16x2 còn loại 16x4 mình sẽ hướng dẫn các bạn cách lập trình thôi
ok.
//---------------------Chức năng các chân và cách nối-------
đây là hình ảnh thực của LCD
LCD này có 16 chân chức năng của các chân như sau:
chúng ta có thể thấy chức năng cơ bản của LCD qua bảng mô tả chức năng ở trên , mình có thể tóm tắt như sau:
Các chân 1,2,3 là các chân VSS , VDD, VEE trong đó VSS chân nối đất , VEE chân chọn độ tương phản chân này dc chọn qua 1 biến trở 5K một đầu nối VCC , một đầu nối mát . Chân VDD nối dương nguồn .
- Chân chọn thanh ghi RS (Register Select): Có hai thanh ghi trong LCD, chân RS(Register Select) được dùng để chọn thanh ghi, như sau:
Nếu RS = 0 ở chế độ ghi lệnh như xóa màn hình , bật tắt con trỏ...
Nếu RS =1 ở chế độ ghi dữ liệu như hiển thị ký tự , chữ số lên màn hình .
-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 khi R/W = 0 hoặc đọc thông tin LCD khi
R/W = 1.
-Chân cho phép E (Enable): Chân cho phép E được sử dụng bởi LCD để chốt dữ liệu của nó. Khi dữ liệu được đến chân dữ liệu thì cần có 1 xung từ mức cao xuống mức thấp ở chân này để LCD chốt dữ liệu , xung này phải có độ rộng tối thiểu 450ns.
Chân D0 - D7: Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặc đọc nội dung của các thanh ghi trong
LCD. Để hiển thị các chữ cái và các con số chúng ta gửi các mã ASCII của các chữ cái và các con số tương ứng đến các chân này khi bật RS =1;
//-----À quên còn một bảng này nữa khá quan trọng trong LCD bạn sẽ dùng nó để tạo các hiệu ứng trongLCD.
Đó là tất cả những gì về cấu tạo cũng như những gì cần thiết mình giới thiệu để bạn hiểu về LCD.
/*----------------LẬP TRÌNH ĐIỀU KHIỂN LCD-------------*/
Chắc các bạn mong chờ phần này phải ko?
Lưu ý với các bạn muốn lập trình đc cái gì phải hiểu cơ chế hoạt động của nó đã. Các bạn nên đọc kỹ các chức năng ở trên.
Nhưng ko sao mình sẽ hướng dẫn như sau:
Lập trình LCD cũng ko phải là khó lắm , Đơn giản hơn Matrix rất nhiều.
ok bắt đầu nào:
Lưu ý LCD là chốt dữ liệu qua chân Enabel.
===============================================
Nguyên lý của LCD là:
Đầu tiên phải kiểm tra cờ bận (Đó là bít D7 của LCD nếu D7=1 ,LCD đang bận ko ghi dữ lệu vào LCD.
Chờ tời khí D7=0 thi mới ghi vào LCD.
Cho nên với mỗi khi thực hiện ,ghi dữ liệu nên LCD ta phải kiểm tra cờ bận trước.
Nguyên lý lập trình hiển thị LCD như sau:
Xóa màn hình -> Đặt chế độ hiển thị->Đặt con trỏ nơi bắt đầu->Hiển thị dữ liệu.
Để các bạn tiện theo dõi đây là hình ảnh
Cụ thể mình sẽ hướng dẫn các bạn về hàm kiểm tra cờ bận như sau:
- Code:
void kiểm tra cờ bận()
{
D7=1;// dat LCD la du lieu cong ra
rs=0;//chon thanh ghi lenh
rw=1;//chon ghi du lieu
while(D7!=0) cho den khi D7=0
{
en=1;
en=0; // cho phep ghi du dieu vơi tin hieu cho phep tu 1->0
}
}
- Code:
/*ham kiem tro co ban*/
void kiemtraco(void) //kiem tra co ban
{
P2=0xff; // P2 o muc cao
RS=0; // chon thanh ghi lenh
RW=1; // doc du lieu lenh tu LCD
do // thuc hien cong viec
{
EN=1; // dua chan cho phep len cao
delay30ms();
EN=0; // ha chan cho phep xuong thap
x=P2;
x=x&0x80;
}
while(x!=0x80); // cho den khi D7 = 1 LCD ban
}
Hiển thị chữ " Anh yêu em " Trên màn hình LCD nhé :
Các bạn làm theo code dưới đây .
Mình sẽ chú thích ngay bên cạnh để các bạn theo dõi
- Code:
// HAND IN HAND GROUP
// DTVTK7A
// DH CNTT - TT
#include
#include
unsigned char x,massage[32];
sbit RS = P1^0; //luc chon thanh ghi
sbit RW= P1^1; //doc/ghi vao lcd
sbit EN= P1^2; // tin hieu cho phep chot du lieu
unsigned int num ;
void delay30ms(void) // ham tre trong LCD
{
TMOD=0x10; //chon che do 1 timer1 dung sau khoang thoi gian
TH1=55535/256;
TL1=55535%256;
TR1=1;
while(!TF1);
TR1=TF1=0;
}
void delay(unsigned int m) // tre hien thi
{
unsigned long int i;
for(i=0;i
}
/*ham kiem tro co ban*/
void kiemtraco(void) //kiem tra co ban
{
P2=0xff; // P2 o muc cao
RS=0; // chon thanh ghi lenh
RW=1; // doc du lieu lenh tu LCD
do // thuc hien cong viec
{
EN=1; // dua chan cho phep len cao
delay30ms();
EN=0; // ha chan cho phep xuong thap
x=P2;
x=x&0x80;
}
while(x!=0x80); // cho den khi D7 = 1 LCD ban
}
void ghi_lenh(unsigned char lenh) // thanh ghi lenh
{
kiemtraco(); // kiem tra co ban
P2=lenh; // gan P2 = lcd conman
RS=0; // Chon thanh ghi lenh
RW=0; // dua du lieu vao LCD
EN=1; // dua chan cho phep len cao
delay30ms();
EN=0;
delay30ms();
}
void ghi_dulieu(unsigned char dulieu) // thanh ghi du lieu
{
kiemtraco();
if(dulieu!='\n') //xuong dong
{
P2=dulieu;
}
else
{
ghi_lenh(0xC0); //bat hien thi saudo tat con tro
P2=dulieu;
}
RS=1; //chon ghi du lieu
RW=0; // ghi du lieu vao lcd
EN=1;
delay30ms();
EN=0;
delay30ms();
}
void ghi_kitu(unsigned char *s)
{
while(*s)
{
ghi_dulieu(*s);
s++;
}
}
//* hien thi so san pham ra lcd */
//void hienthi(void)
//{
// sprintf(&massage[0],"\nssp= %u sp",num);
// ghi_kitu(&massage[0]);
// delay(10);
//}
void khoitao(void) //khoi tao LCD
{
ghi_lenh(0x01); //
ghi_lenh(0x38); //hien thi 2 dong 5*7
ghi_lenh(0x06); //tang contro dich phai
ghi_lenh(0x0e); //bat nhap nhay hien thi nhap nhay con tro
}
void main(void)
{
//IE=0x84; //cho phep ngat ngoai va timer1
//IT1=1;//ngat bang suon am bat co ngat timer1
//num=0;
khoitao();
ghi_lenh(0x01);
ghi_lenh(0x80);
ghi_kitu("Anh Yeu Em");
while(1);
}
Còn hiển thị số thì sao nhỉ dễ thôi!
mình sẽ hướng dẫn các bạn,
Để hiển thị số ta sẽ cho hiển thị các mã ASCII của các chữ số có nhiều cách hiển thị lắm .Nhưng mà hiển thị để có thể tính toán thì nên hiển thị kiểu mã ASCII
như sau.