8051 & LCD

Bài 4: 8051 & LCD 

LCD (Liquid crystal display) tạm dịch là màn hình tinh thể lỏng. Để làm việc với 1 LCD ta cần biết các lệnh của nó, và sau đây là các chân của LCD:

Chân 15, 16 là A, K . Nó được nối với 2 chân của 1 con led dùng để sáng LCD trong bóng tối nhưng ở đây kô dùng đến!
Tiếp đó là bảng lệnh:
Còn đây là hình ảnh trong proteus:


Đây là sơ đồ mình dùng luôn giao tiếp máy tính để truyền dữ liệu ra LCD mình sẽ nói chi tiết ở bài sau, các bạn chỉ cần quan tâm đến LCD hiện dòng chữ:
“ Bai4: 8051 VA LCD “
Dưới đây là đoạn code:
#include 

#define RS P3_5
#define RW P3_6 //RW=0 => ghi
#define EN P3_7 //RW=1 => doc
//RS=0 => code
//RS=1 => data
#define LCD_PORT P1

void delay_5ms(){
int i,j;
for(i=0;i<250;i++)
for(j=0;j<4;j++){}
}

void delay_15ms(){
int i,j;
for(i=0;i<250;i++)
for(j=0;j<100;j++){}
}
void LCDWriteCmd(unsigned char c) //CT con ghi du lieu len LCD
{
RS=0;
RW=0;
LCD_PORT=c;
EN=1;
EN=0;
delay_5ms();
}

void LCDWriteData(unsigned char c) //CT con doc du lieu tu LCD
{
RS=1;
RW=0;
LCD_PORT=c;
EN=1;
EN=0;
delay_5ms();
}

void LCD_init() // Khoi tao LCD
{
delay_15ms();

LCDWriteCmd(0x38);
LCDWriteCmd(0x0C);
// LCDWriteCmd(0x06);
LCDWriteCmd(0x01); // Xoa man hinh LCD
}

void LCD_clear()
{
LCDWriteCmd(0x01);
}

void LCD_home()
{
LCDWriteCmd(0x80);
}

void LCD_putstr(unsigned char *s)
{
while (*s)
{
LCDWriteData(*s);
s++;
}
}

void main()
{

LCD_init();
LCDWriteCmd(0x01); //Xoa man hinh
LCDWriteCmd(0x80); // Dua con tro ve dau dong 1
LCDWriteData('B');
LCDWriteData('A');
LCDWriteData('I');
LCDWriteData('4');
LCDWriteData(':');

LCDWriteCmd(0xC0);
LCD_putstr("8051 VA LCD");
while (1) {}
}

Và cuối cùng là link dow file mô phỏng + file hex:
http://www.mediafire.com/?sharekey=2857f12fe3e5d90be5c3dee5769931ece04e75f6e8ebb871
Chúc các bạn thành công ^^!

Post a Comment

Mới hơn Cũ hơn