Professional Documents
Culture Documents
tim hieu ve điều khiển LCD 16X 2 nha
tim hieu ve điều khiển LCD 16X 2 nha
Trng c v phc tp
nhng qut LCD c khi dn hn matrix rt nhiu . Chng ta mi tm hiu LCD 8 bit , xut 4 bit
sau.
LCD 16x2
Chn 15 v chn 16: ghi l A v K. N l anot v katot ca mt con led dng sng LCD trong
bng ti, chng ta c th k ni , nu s dng ni chn 15 vi tr 220 or 330 m ln VCC , chn 16
ni t.
mch hot ng chng ta mc theo s sau y:
Code :
#include "REGX52.H"
#include "stdio.H"
//------------Khoi tao bien va cac gia tri gan-------------//
sbit RS_LCD = P2^5;
sbit RW_LCD = P2^6;
sbit E_LCD = P2^7;
//---------------Sau day la cac chuong trinh con------------//
//--------------Ham tre khoang thoi gian rat ngan phuc vu viec kiem tr co
ban---------------//
void delay_short()
{
unsigned int i;
for(i=0;i<3;i++);
}//--------------****------------------//
//------------Ham tre 2---------------//
void delay(unsigned int time) // Thoi gian time ms
{
TMOD = 0x01; // Timer 0 che do 1
while (time--)
{
TH0 = -1000/256;
TL0 = -1000%256;
TR0 = 1;
while (!TF0);
TR0 = 0;
TF0 = 0;
}
}
//-----------------******----------------//
//--------------Ham kiem tra co ban (busy_flag)--------------??
void kt_ban()
{
unsigned char x;
P0 = 0xff;
RS_LCD = 0;
RW_LCD = 1;
do
{
E_LCD = 1;
delay(50);
E_LCD = 0;
x=P0;
x=x&0x80;
}
while(x!=0x80);
}//-----------*******--------------------//
//---------------Ham ghi lenh giao tiep voi LCD---------------//
void ghi_lenh(unsigned char lenh)
{
kt_ban();
delay(50);
P0 = lenh;
RS_LCD = 0; // Chon thanh ghi lenh
RW_LCD = 0; // Chon che do ghi du lieu tu 8051 vao LCD
E_LCD = 1;
delay_short();
E_LCD = 0;
}//------------*******-----------------//
//-----------Ham ghi ky tu ra LCD------------//
void ghi_kytu(unsigned char kytu)
{
kt_ban();
delay(50);
P0 = kytu;
RS_LCD = 1; // Chon che do doc du lieu tu 8051
RW_LCD = 0;
E_LCD =1;
delay_short();
E_LCD = 0;
}//------------*******-----------------//
//-----------Ham ghi nhanh ky tu ra LCD------------//
void ghi_nhanh ( unsigned char kytu)
{
delay_short();
P0 = kytu;
RS_LCD = 1;
RW_LCD = 0;
E_LCD = 1;
delay_short();
E_LCD = 0;
}//--------------***********-------------//
//-----------Ham ghi chuoi ky tu ra LCD------------//
void ghi_chuoi(char *str)
{
while(*str)
{
delay(50);
ghi_kytu(*str);
str++;
}
}//-----------********------------//
//-----------Ham ghi nhanh chuoi ky tu ra LCD------------//
void ghi_nhanh_chuoi(char *str)
{
while(*str){
ghi_nhanh(*str);
str++;
}
}
//-----------************------------//
//-----------Ham ghi so nguyen ra LCD------------//
void ghi_so_nguyen(unsigned char so)
{
unsigned char a,b,c;
a=so/100; // Lay phan tram
b=(so-100*a)/10; // Lay phan chuc
c=(so-100*a-10*b); // Lay phan don vi
ghi_nhanh(a+48); // Doi ra hang tram, ma ascii
ghi_nhanh(b+48); // Doi ra hang chuc, ma ascii
ghi_nhanh(c+48); // Doi ra hang don vi, ma ascii
}
//-----------***********------------//
//-----------Ham khoi tao LCD------------//
void setting_LCD()
{
ghi_lenh(0x38);
ghi_lenh(0x01); // Xoa man hinh
ghi_lenh(0x0f); // Co dich hien thi
}
//-----------**********------------//
/*********************************/
/* CON DAY LA CHUONG TRINH CHINH */
/* ----------??????--------------*/
/*********************************/
void main()
{
setting_LCD();
ghi_lenh(0x01);
ghi_lenh(0x0c);
ghi_chuoi("http://");
ghi_lenh(0xc0);
ghi_lenh(0x0c);
ghi_chuoi("machdientu.net");
delay(300);
while(1);