Tải bản đầy đủ (.pptx) (15 trang)

thuyết trình vi xử lí đề tài giao tiếp LCD vơi 89051

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (412.13 KB, 15 trang )


1. Sơ đồ chân LCD

2. Nguyên lí hoạt động LCD

3. Sơ đồ chân 89C51

4. Lưu đồ tuật toán

5. Code


1. Bảng mô tả sơ đồ chân của LCD 16x2:
Chân

Ký hiệu

I/O

Mô tả

1

Vss

-

Mass

2


Vcc

-

Dương nguồn 5v

3

VEE

-

Cấp nguồn điều khiển tương phản

4

RS

I

RS=0 chon thanh ghi lệnh
RS=1 chon thanh ghi dữ liệu

5

R/W

I

R/W=1 đọc dữ liệu, R/W=1 ghi


6

E

I/O

Cho phép

7

DB0

I/O

Bit dữ liệu

8

DB1

I/O

Nt

9

DB2

I/O


Nt

10

DB3

I/O

Nt

11

DB4

I/O

Nt

12

DB5

I/O

Nt

13

DB6


I/O

Nt

14

DB7

I/O

Nt


Chân 15 và 16 là A và 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 chúng ta không sử dụng.
- Sơ đồ ghép nối LCD với vi điều khiển:


2. Nguyên lí hoạt động của LCD :
- Chân VCC, Vss, và VEE: các chân VCC và VSS cáp dương nguồn
5v và mass tương ứng. Chân VEE được dùng để điều khiển độ tương
phản.
- Chân chọn thanh ghi RS(Register Select): có 2 thanh ghi trong
LCD chân RS được dùng để chọn thanh ghi. nếu RS=0 thì thanh ghi mã
lệnh được chọn để cho phép người dùng gửi 1 lệnh lên chẳng hạn như
xoá màn hình, đưa con trỏ về đầu dòng… Nếu RS=1 thì thanh ghi dữ
liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị lên LCD.
- Chân đọc/ghi (R/W): đầu vào đọc/ghi cho phép người dùng đọc
thông tin từ LCD khi R/W=1 hoặc ghi thông tin lên LCD.

- Chân cho phép E(Enable): chân cho phép được sử dụng bởi LCD
để chốt dữ liệu của nó. Khi dữ liệu được cấp đến chân dữ liệu thì 1 xung
mức cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu
trên các chân dữ liệu. Xung này có độ rộng tối thiểu 450ns.
- Chân DB0-DB7: đây là đường dữ liệu 8 bít, được dùng để gửi
thông tin lên LCD hoặc đọc nội dung các thanh ghi trong LCD. Để hiển
thị các chữ cái và các con số, chúng ta gửi mã ASCII của các chữ cái từ
A đến Z , a đến z và các chữ số từ 0 đến 9 đến các chân này khi bật


- Bảng mã lệnh của LCD:
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


SƠ ĐỒ, CHỨC NĂNG LIÊN KẾT CÁC CHÂN CỦA LCD
Chân

Kí hiệu

I/O


1

VSS

-

2

VCC

-

Mô tả
Đất
Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với VCC=5V
của mạch điều khiển

3

VEE

-

4

RS

I


Cấp nguồn điều khiển độ tương phản
Chân chọn thanh ghi (Register select). Nối chân RS với logic “0” (GND)
hoặc logic “1” (VCC) để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ
“ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh


ghi dữ liệu DR bên trong LCD
5

R/W

I

Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic “0” để LCD hoạt động ở chế độ
ghi, hoặc nối với logic “1” để LCD ở chế độ đọc

6

E

I/O

Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus DB0-DB7, các lệnh chỉ được chấp
nhận khi có 1 xung cho phép của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên
trong nó khi phát hiện một xung (high-to- low transition) của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (lowto- high
transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp


7÷14

DB0÷DB I/O
14

Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU. Có 2 chế độ sử
dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4
đường từ DB4 tới DB7, bit MSB là DB7


3. SƠ ĐỒ CHÂN CỦA AT89C51


4. LƯU ĐỒ GIẢI THUẬT
BẮT ĐẦU

CHƯƠNG TRÌNH DELAY

KHỞI TẠO CÁC PORT VÀO
RA CHO AT89C51

THIẾT LẬP CÁC LỆNH KẾT
NỐI CHO LCD

CHƯƠNG TRÌNH CHÍNH

CHƯƠNG TRÌNH CHO LCD


XỬ LÝ DỮ LIỆU

HIỂN THỊ LÊN LCD

KẾT THÚC

NHẤN PHÍM


5.Chương trình:
/*=========bo tien xu li===============*/
#include<AT89x51.h>
#include<string.h>
/*===========khai bao bien toan cuc============*/
sfr LCDdata = 0xA0; // cong P2, 8 bit du lieu.
sbit BF = 0xA7; // co ban, bit DB7.
sbit RS = P3^0; // chon thanh ghi
sbit RW = P3^1; // doc/ghi
sbit EN = P3^2; //cho phep chot du lieu
/*--------------kiem tra su san sang cua LCD------------------------*/
void wait(void)
{
RS=0; //chon thanh ghi lenh
RW=1; //đoc tu LCD
LCDdata=0xff; //gia tri 0xff
while(BF) //kiem tra co ban
{
EN=0; //dua xung cao xuong thap đe chot.
EN=1; //dua chan cho phep len cao

}
}


/*------------------------thiet lap lenh cho LCD--------------------------*/
void LCDcontrol(unsigned char x)
{
RS=0;//chon thanh ghi lenh
RW=0;//ghi len LCD.
LCDdata=x ;// gia tri x
EN=1;//cho phep muc cao
EN=0;//xung cao xuong thap
wait();//đoi LCD san sang.
}
/*------------------------------Khoi tao LCD-------------------------*/
void LCDinit(void)
{
LCDcontrol(0x38);//2 dong va ma tran 5x7
LCDcontrol(0x0e);//bat man hinh, bat con tro
LCDcontrol(0x01);//xoa man hinh
}


/*-------------------------thiet lap du lieu cho LCD-----------------*/
void LCDwrite(unsigned char c)
{
RS=1;//ghi du lieu
RW=0;//ghi du lieu len LCD
LCDdata=c;//gia tri C
EN=1;//cho phep muc cao

EN=0;//xung cao xuong thap
wait();//cho
}
void LCDwrites(unsigned char *s)
{
unsigned char data lens,count;
lens=strlen(s);
for(count=0;countLCDwrite(*(s+count));
}
}
/*=====================chuong trinh tre================*/
void delay(long 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(‘I’);
LCDwrite(‘E’);
LCDwrite(‘T’);
LCDwrite(‘ ’);
LCDwrite(‘N’);

LCDwrite(‘A’);
LCDwrite(‘M’);
LCDcontrol(0xC0);
LCDwrites("VI DIEU KHIEN");
while(1); //vong lap vo han
}




×