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.. Nhiệm vụ của khối bàn phím l
Trang 1BỘ 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:
SVTH : Nguyễn Công Liêm MSSV: 109000701
Lớp : 09DV111
BIÊN HÒA, Ngày 08 tháng 02 năm 2012
Trang 2Vi đ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
KHỐI NGUỒN
KHỐI ĐIỀU KHIỂN CHÍNH
KHỐI BÀN PHÍM
KHỐI HIỂN THỊ
Trang 34 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ố
Trang 4dao độ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:
Trang 5Hì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:
Trang 6Nguyê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ế:
Trang 74 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
Trang 8IV./ SƠ ĐỒ NGUYÊN LÝ VÀ GIẢI THÍCH:
1 Sơ đồ nguyên lý:
V C C
S W 8
S W 7
S W 1
S W 1 1
1 0 0 R 1
C 2
S W 2
V C C
S W 6
R 2
8 K 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 4
S W 1 3
S W 4
S W 1 6
L C D _ T E X T
U 1
L C D
V R D D D D V
S W 9
V C C
R 1
1 0 K
U 2
A T 8 9 S 5 2
9
1 8
2 9
3 1
1 3 5 7
2 1
2 3
2 5
2 7
1 0
1 2
1 4
1 6
3 9
3 7
3 5
3 3
R S T
X T A L 2
P S E N
A L E / P R O G
E A / V P P
P 1 0 / T 2
P 1 1 / T 2 - E X
P 1 2
P 1 4
P 1 6
P 2 0 / A 8
P 2 2 / A 1 0
P 2 4 / A 1 2
P 2 6 / A 1 4
P 3 0 / R X D
P 3 1 / T X D
P 3 2 / I N T 0
P 3 4 / T 0
P 3 6 / W R
P 3 7 / R D
P 0 0 / A D 0
P 0 2 / A D 2
P 0 4 / A D 4
P 0 6 / A D 6
V C C
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;
Trang 9
// -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++)
{
}
}
}
// -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;
Trang 10// -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");
}
Trang 11
if(P2==0xbe)
{
ghi_lenh(0x01);
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)
Trang 12ghi_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");
Trang 13}
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();
}
}
Trang 14V./ 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