Tải bản đầy đủ (.doc) (14 trang)

mạch điều khiển ma trận phím hiển thị lên lcd

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 (548.76 KB, 14 trang )

BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC
LẠC HỒNG

KHOA ĐIỆN – ĐIỆN TỬ
BÁO CÁO 60%
MÔN
THÍ NGHIỆM VI ĐIỀU KHIỂN
ĐỀ TÀI:

GVHD : Thầy ĐỖ BÌNH NGUYÊN
SVTH : Nguyễn Công Liêm MSSV: 109000701
Nguyễn Văn Hoàng MSSV: 109000042
Lớp : 09DV111
BIÊN HÒA, Ngày 08 tháng 02 năm 2012
MA TRẬN PHÍM Trang 1
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN
Vi điều khiển ra đời là một bước ngoặc lớn trong ngành điện tử, nó đưa ngành điện tử lên
một tầm cao mới. Ứng dụng của vi điều khiển hết sức phong phú trong công nghiệp cũng như
trong dân dụng. Nó tạo ra những thiết bị tiện lợi trong việc sử dụng điện.
Vi điều khiển còn là một môn học thú vị, nó giúp cho sinh viên mở rộng được óc sáng tạo
của bản thân khi thi công các mô hình tự học. Chính vì những lý do trên nhóm chúng em tiến
hành thi công một mạch ứng dụng vi điều khiển:
MẠCH ĐIỀU KHIỂN MA TRẬN PHÍM HIỂN THỊ LÊN LCD
I./SƠ ĐỒ KHỐI
1. Khối nguồn
Nguồn điện được sử dụng ở đây là nguồn 5VDC sử dụng 7805 để ổn định nguồn ra là 5V.

2. Khối bàn phím:
Là một khối gồm 16 nút nhấn đơn được liên kết lại với nhau tạo thành một ma trận phím.


Nhiệm vụ của khối bàn phím là nhập dữ liệu vào khối điều khiển chính để xuất ra khối hiển thị
3. Khối hiển thị:
Khối hiển thị là một màn hình LCD 16x2 bao gồm 16 cột và 2 dòng. Nhiệm vụ của khối
hiển thị là đưa ra ở màn hình những thông số khối điều khiển chính đã nhận từ khối bàn phím
MA TRẬN PHÍM Trang 2
KHỐI NGUỒN
KHỐI ĐIỀU
KHIỂN CHÍNH
KHỐI BÀN PHÍM
KHỐI HIỂN THỊ
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN
4. Khối điều khiển chính:
Khối này sử dụng vi điều khiển AT89C51 có nhiệm vụ thu thập thông tin từ khối bàn phím
sau đó xuất tín hiệu và kích cho LCD hoạt động và hiển thị các thông số ra khối hiển thị.
II. Các linh kiện sử dụng trong mạch.
1. IC AT89S52
Chức năng: Nhận dữ liệu từ bàn phím và từ người lập trình rồi xuất ra khối hiển thị.
Sơ đồ chân:
IC CD4047 hoạt động ở mức điện áp 5V. Chức năng của các chân như sau:
- P0.0 đến P0.7 là các chân của cổng 0.
- P1.0 đến P1.7 là các chân của cổng 1.
- P2.0 đến P2.7 là các chân của cổng 2
- P3.0 đến P3.7 là các chân của cổng 3
- RST: Chân vào Reset, tích cực ở mức logic cao trong khoảng 2 chu kỳ máy.
- XTAL1: Chân vào mạch khuyếch đaị dao động
- XTAL2: Chân ra từ mạch khuyếch đaị dao động.
- EA: Truy cập bộ nhớ ngoài.
- /PSEN : Chân cho phép đọc bộ nhớ chương trình ngoài (ROM ngoài).
- ALE (/PROG): Chân tín hiệu cho phép chốt địa chỉ để truy cập bộ nhớ ngoài, khi On-chip xuất
ra byte thấp của địa chỉ. Tín hiệu chốt được kích hoạt ở mức cao, tần số xung chốt = 1/6 tần số

MA TRẬN PHÍM Trang 3
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN
dao động của bộ VĐK. Nó có thể được dùng cho các bộ Timer ngoài hoặc cho mục đích tạo xung
Clock. Đây cũng là chân nhận xung vào để nạp
chương trình cho Flash (hoặc EEPROM) bên trong On-chip khi nó ở mức thấp.
- /EA/Vpp: Cho phép On-chip truy cập bộ nhớ chương trình ngoài khi /EA=0, nếu
/EA=1 thì On-chip sẽ làm việc với bộ nhớ chương trình nội trú (trường hợp cần truy
cập vùng nhớ lớn hơn dung lượng bộ nhớ chương trình nội trú, thì bộ nhớ chương
trình ngoài cũng được sử dụng). Khi chân này được cấp nguồn điện áp 12V (Vpp) thì
On-chip đảm nhận chức năng nạp chương trình cho Flash bên trong nó.
- Vcc: Cung cấp dương nguồn cho On-chip (+ 5V).
- GND: nối Mass.
Hình dạng thực tế:
2. IC 7805:
Chức năng: Là Ic ổn định ngõ ra 5VDC cho mạch nguồn
Sơ đồ chân:
− Chân IN là chân ngõ vào
− Chân OUT là chân ngõ ra
− Chân COM là chân chung
MA TRẬN PHÍM Trang 4
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN
Hình dạng thực tế:
3.LCD 16x2:
Là một màn hình hiển thi gồm 16 cột và 2 hàng dùng để hiển thị các thông số do người
dùng nhập vào.
Sơ đồ chân:
MA TRẬN PHÍM Trang 5
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN
Nguyên lý hoạt động của LCD:
- Chân VCC, V và VSS: Các chân VEECC, V: Cấp dưong nguồn5v và đất

tưong ứng thì V0 được dùng để điều khiển độ tưong phản của LCD. - 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 thì thanh ghi mà lệnh được chọn để cho
phép người dùng gửi một lệnh chẳng hạn như xoá màn hình, đưa con tr ỏ về đầu dòng
v.v… 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ị trên LCD.
- 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 từ nó khi R/W = 1.
- Chân cho phép E (Enable): Chân cho phép E dược sử dụng bởi LCD để chốt dữ
liệu của nó. Khi dữ liệu được cấp dến chân dữ liệu thì một 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 phải
rộng tối thiểu là 450ns.
- Chân D0 - D7: Ðây là 8 chân dữ liệu 8 bít, được dùng dể 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 từ A đến Z, a đến f và các con số từ 0 - 9
đến các chân này khi bật RS = 1.
Cũng có các mã lệnh mà có thể được gửi đến LCD để xoá màn hình hoặc đưa con
trỏ về đầu dòng hoặc nhấp nháy con trỏ.
- Chú ý:Chúng ta cũng sử dụng RS = 0 để kiểm tra bít cờ bận để xem LCD có sẵn
sàng nhận thông tin. Cờ bận là bít D7 và có thể được đọc khi R/W = 1 và RS = 0 như
sau:
Nếu R/W = 1, RS = 0 khi D7 = 1 (cờ bận 1) thì LCD bận bởi các công việc bên
trong và
sẽ không nhận bất kỳ thông tin mới nào. Khi D7 = 0 thì LCD sẵn sàng nhận
thông tin mới. Lưu ý chúng ta nên kiểm tra cờ bận truớc khi ghi bất kỳ dữ liệu nào lên LCD
Hình dạng thực tế:
MA TRẬN PHÍM Trang 6
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN
4. Ma trận phím:
Là một tổ hợp gồm 16 nút nhấn được kết nối với nhau dùng để nhập dữ liệu vào vi điều

khiển.
Sơ đồ chân:
Nguyên lí quét phím:
- Vì sao mạch phím đấu theo ma trận. Nếu để đọc từ 16 nút bấm bình thường phải dùng 16 chân
vi điều khiển. Nếu đấu theo dạng ma trận thì chỉ mất 8 chân ta cũng có thể đọc được 16 phím
bấm.
- Có 2 cách quét phím theo cột và theo hàng, tôi chọn cách quét theo cột, quét theo
hàng các bạn có thể làm tưong tự.
- Bước 1 : Ta đưa chân P1.0 nối với cột 1 xuống 0V.Rồi ta kiểm tra giá trị logic của
các chân P1.4,P1.5,P1.6,P1.7.Nếu phím 1 được bấm thì hàng 1_ P1.4 sẽ có giá trị bằng
0.
Nếu phím 2 được bấm thì hàng 2_ P1.5 sẽ có giá trị bằng 0. Nếu phím 3 được bấm thì
hàng 3_ P1.6 sẽ có giá trị bằng 0. Nếu phím 4 được bấm thì hàng 4_ P1.7 sẽ có giá trị
bằng 0. Ta căn cứ vào đó để xác định xem phím nào được bấm.
- Bước 2 : Ta đưa chân P1.1 nối với cột 2 xuống 0V.Rồi ta kiểm tra giá trị logic của
các chân P1.4,P1.5,P1.6,P1.7.Nếu phím 5 được bấm thì hàng 1_ P1.4 sẽ có giá trị bằng
0.
Nếu phím 6 được bấm thì hàng 2_ P1.5 sẽ có giá trị bằng 0. Nếu phím 7 được bấm thì
hàng 3_ P1.6 sẽ có giá trị bằng 0. Nếu phím 8 được bấm thì hàng 4_ P1.7 sẽ có giá trị
bằng 0. Ta căn cứ vào đó để xác định xem phím nào được bấm. Tương tự ta thực hiện
cho các cột còn lại. Ta sẽ dùng câu lệnh if để kiểm tra.
MA TRẬN PHÍM Trang 7
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN
IV./ SƠ ĐỒ NGUYÊN LÝ VÀ GIẢI THÍCH:
1. Sơ đồ nguyên lý:
V C C
S W 8S W 7
S W 1
S W 1 1
1 0 0 R 1

C 2
S W 1 7
S W 2
V C C
S W 6
R 2
8 K 2
S W 1 0 S W 1 2
C 3
1 0 u F
S W 1 5
S W 5
C 1
3 3 p F
S W 3
S W 1 4S W 1 3
S W 4
S W 1 6
L C D _ T E X T
U 1
L C D
1
2
3
4
5
6
7
8
9

1 0
1 1
1 2
1 3
1 4
1 5
1 6
G N D
V C C
V O
R S
R W
E N
D 0
D 1
D 2
D 3
D 4
D 5
D 6
D 7
V +
V -
S W 9
V C C
R 1
1 0 K
U 2
A T 8 9 S 5 2
9

1 8
1 9
2 0
2 9
3 0
3 1
4 0
1
2
3
4
5
6
7
8
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
1 0
1 1
1 2
1 3
1 4
1 5
1 6

1 7
3 9
3 8
3 7
3 6
3 5
3 4
3 3
3 2
R S T
X T A L 2
X T A L 1
G N D
P S E N
A L E / P R O G
E A / V P P
V C C
P 1 . 0 / T 2
P 1 . 1 / T 2 - E X
P 1 . 2
P 1 . 3
P 1 . 4
P 1 . 5
P 1 . 6
P 1 . 7
P 2 . 0 / A 8
P 2 . 1 / A 9
P 2 . 2 / A 1 0
P 2 . 3 / A 1 1
P 2 . 4 / A 1 2

P 2 . 5 / A 1 3
P 2 . 6 / A 1 4
P 2 . 7 / A 1 5
P 3 . 0 / R X D
P 3 . 1 / T X D
P 3 . 2 / I N T 0
P 3 . 3 / I N T 1
P 3 . 4 / T 0
P 3 . 5 / T 1
P 3 . 6 / W R
P 3 . 7 / R D
P 0 . 0 / A D 0
P 0 . 1 / A D 1
P 0 . 2 / A D 2
P 0 . 3 / A D 3
P 0 . 4 / A D 4
P 0 . 5 / A D 5
P 0 . 6 / A D 6
P 0 . 7 / A D 7
V C C
R 3 2 2 0
2. Giải thích:
Sau khi cấp nguồn LCD sẽ hoạt động và hiển thị lên những dữ liệu mà người cài đặt
vào. Dữ liệu được nhập vào bằng bàn phím từ ma trận phím và được xử lý thông qua chíp
AT89S52. Ma trận phím được nối vào PORT 2 của chân vi điều khiển. Chân 18, 19 của chíp
AT89S52 được nối với thạch anh tạo nên mạch dao động trên chíp với 2 tụ 33pF dùng để ổn định
mạch dao động. Chân 9 được nối với 1 nút nhấn tạo nên bộ phận reset cho mạch, khi nút Reset
được nhấn thì sẽ trở về trạng thái ban đầu. Tín hiệu được đưa vào chíp từ ma trận phím và được vi
điều khiển xử lý thông qua đoạn chương trình mà ta nạp vào cho nó. Đoạn chương trình như sau:
#include <reg52.h>

#include <stdio.h>
sbit RS_LCD = P3^5;
sbit RW_LCD = P3^6;
sbit E_LCD = P3^7;
unsigned int i;
//

MA TRẬN PHÍM Trang 8
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN
void delay_short()
{
unsigned int i;
for(i=0;i<3;i++);
}
//
void delay(unsigned int ms)// delay 1ms
{
unsigned int x,y;
for(x=0;x<ms;x++)
{
for(y=0;y<125;y++)
{
}
}
}
//
void kt_ban()
{
unsigned char x;
P1 = 0xff;

RS_LCD = 0;
RW_LCD = 1;
do
{
E_LCD = 1;
delay_short();
E_LCD = 0;
x=P1;
x=x&0x80;
}
while(x!=0x80);
}
//
void ghi_lenh(unsigned char commant)
{
kt_ban();
delay(50);
P1 = commant;
RS_LCD = 0; // chon thanh ghi lenh
RW_LCD = 0; // write to LCD
E_LCD = 1;
delay_short();
E_LCD = 0;
}
MA TRẬN PHÍM Trang 9
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN
//
void ghi_kytu(unsigned char kytu)
{
kt_ban();

delay(30);
P1 = kytu;
RS_LCD = 1;
RW_LCD = 0;
E_LCD =1;
delay_short();
E_LCD = 0;
}

void ghi_chuoi(char *str)
{
while(*str)
{
ghi_kytu(*str);
str++;
}
}
// */
void setting()
{
ghi_lenh(0x38); // hai dong va ma tran 5x7
ghi_lenh(0x01); //Xoa man hinh
ghi_lenh(0x0f); //Co dich hien thi
ghi_lenh(0x0c); //Bat hien thi ,tat con tro
}
//
void hienthi()
{
if(P2==0xee)
{

ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 1");
}

if(P2==0xde)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 2");
}
MA TRẬN PHÍM Trang 10
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN

if(P2==0xbe)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 3");
}

if(P2==0x7e)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 4");
}

if(P2==0xed)
{

ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 5");
}

if(P2==0xdd)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 6");
}

if(P2==0xbd)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 7");
}

if(P2==0x7d)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 8");
}

if(P2==0xeb)
{
MA TRẬN PHÍM Trang 11
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN

ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 9");
}

if(P2==0xdb)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 10");
}

if(P2==0xbb)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 11");
}

if(P2==0x7b)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 12");
}

if(P2==0xe7)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);

ghi_chuoi("Phim so 13");
}

if(P2==0xd7)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 14");
}

if(P2==0xb7)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 15");
MA TRẬN PHÍM Trang 12
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN
}

if(P2==0x77)
{
ghi_lenh(0x01);
ghi_lenh(0x80+3);
ghi_chuoi("Phim so 16");
}
}
//
void quetphim(void)
{
int n[4] = {0xfe,0xfd,0xfb,0xf7};

for (i=0; i<=3;++i)
{
P2 = n[i];
hienthi();
}
}
//
void main()
{
setting();
ghi_lenh(0x01);
ghi_lenh(0x80);
ghi_chuoi(" Bao cao ");
ghi_lenh(0xc0);
ghi_chuoi(" Vi Dieu Khien ");
delay(300);
ghi_lenh(0x01);
ghi_lenh(0x80);
ghi_chuoi("Moi chon phim");
while(1)
{
quetphim();
}
}
MA TRẬN PHÍM Trang 13
BÁO CÁO THÍ NGHIỆM VI ĐIỀU KHIỀN
V./ SƠ ĐỒ MẠCH IN VÀ MẠCH THỰC TẾ:
 Sơ đồ mạch in:
 Mạch thực tế:
Kết luận: mạch hoạt động tốt và ổn định

 HẾT 
MA TRẬN PHÍM Trang 14

×