Mã (HEX) Lệnh đến thanh ghi của LCD
01 Xoá màn hình hiển thị
02 Trở về đầu dòng
04 Giảm con trỏ(dịch con trỏ sang trái )
06 Tăng con trỏ(dịch con trỏ sang phải)
05 Dịch hiển thị sang phải
07 Dịch hiển thị sang trái
08 Tắt con trỏ, tắt hiển thị
0a Tắt hiển thị, bật con trỏ
0c Bật hiển thi, tắt con trỏ
0e Bật hiển thị, nhấp nháy con trỏ
0f Tắt con trỏ, nhấp nháy con trỏ
10 Dịch vị trí con trỏ sang trái
14 Dịch vị trí con trỏ sang phải
18 Dịch toàn bộ hiển thị sang trái
1c Dịch toàn bộ hiển thị sang phải
80 Ép con trỏ về đầu dòng thứ nhất
0c0 Ép con trỏ về đầu dòng thứ 2
38 Hai dòng và ma tận 5x7.
3. Phần luyện tập:
Hãy viết chương trình hiển thị trên LCD:
Dòng 1 chữ “VIETNAM” bằng cách hiển thị tưng kí tự
Dòng 2 chữ "VI DIEU KHIEN" bằng cách hiển thị cả chữ. Với sơ đồ mạch cho dướí đây. mạch cho dướí đây.
Chương trình:
/*=========bo tien xu li===============*/ #include<AT89x51.h> #include<AT89x51.h>
#include<string.h>
/*===========khai bao bien toan cuc============*/ sfr LCDdata = 0xA0; // cong P2, 8 bit du lieu. sfr LCDdata = 0xA0; // cong P2, 8 bit du lieu.
sbit BF = 0xA7; // co ban, bit DB7. sbit RS = P3^0; // chon thanh ghi sbit RS = P3^0; // chon thanh ghi sbit RW = P3^1; // doc/ghi
sbit EN = P3^2; //cho phep chot du lieu
/*===========cac chuong trinh con cua LCD==========*/ /*---kiem tra su san sang cua LCD---*/ /*---kiem tra su san sang cua LCD---*/ void wait(void)
{
RS=0; //chon thanh ghi lenh RW=1; //đoc tu LCD RW=1; //đoc tu LCD
while(BF) //kiem tra co ban
{
EN=0; //dua xung cao xuong thap đe chot. EN=1; //dua chan cho phep len cao EN=1; //dua chan cho phep len cao
}
}
/*---thiet lap lenh cho LCD---*/ void LCDcontrol(unsigned char x) void LCDcontrol(unsigned char x)
{
RS=0;//chon thanh ghi lenh RW=0;//ghi len LCD. RW=0;//ghi len LCD. LCDdata=x ;// gia tri x
EN=1;//cho phep muc cao EN=0;//xung cao xuong thap EN=0;//xung cao xuong thap wait();//đoi LCD san sang. }
/*---Khoi tao LCD---*/ void LCDinit(void) void LCDinit(void)
{
LCDcontrol(0x38);//2 dong va ma tran 5x7 LCDcontrol(0x0e);//bat man hinh, bat con tro LCDcontrol(0x0e);//bat man hinh, bat con tro LCDcontrol(0x01);//xoa man hinh
}
/*---thiet lap du lieu cho LCD---*/ void LCDwrite(unsigned char c) void LCDwrite(unsigned char c)
{
RS=1;//ghi du lieu
RW=0;//ghi du lieu len LCD LCDdata=c;//gia tri C LCDdata=c;//gia tri C
EN=1;//cho phep muc cao EN=0;//xung cao xuong thap EN=0;//xung cao xuong thap wait();//cho
}
{
unsigned char data lens,count; lens=strlen(s); lens=strlen(s);
for(count=0;count<lens;count++){ LCDwrite(*(s+count)); LCDwrite(*(s+count)); }
}
/*=====================chuong trinh tre================*/ void delay(long time) void delay(long time)
{ while(time--); while(time--); } /*========================ham chinh==================*/ void main(void) {
LCDinit(); // khoi tao LCD
LCDcontrol(0x82);// dua con tro den vi tri thu 4 dong 1 LCDwrite(„V‟); LCDwrite(„V‟); LCDwrite(„I‟); LCDwrite(„E‟); LCDwrite(„T‟); LCDwrite(„ ‟); LCDwrite(„N‟); LCDwrite(„A‟); LCDwrite(„M‟); LCDcontrol(0xC0);
LCDwrites("VI DIEU KHIEN"); while(1); //vong lap vo han while(1); //vong lap vo han }