Tải bản đầy đủ (.pdf) (41 trang)

Báo cáo đồ án môn học MATRIX LED

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 (547.26 KB, 41 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH
¸

BÁO CÁO ĐỒ ÁN MÔN HỌC

MATRIX LED
NHẬP TỪ BÀN PHÍM

Giáo viên hướng dẫn: Ths Nguyễn Tất Bảo Thiện
Lớp: KTMT01
Nhóm thực hiện:
Nguyễn Minh Hùng
06520189
Lê Nguyễn Khoa
06520225
Ngô Tự Đăng Khoa
06520228
Lê Quang Huy
06520202

2008 - 2009

2


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện



Mục lục
Mục lục................................................................................................... trang 3
Giới thiệu về đồ án ................................................................................. trang 4
Phần I: Các linh kiện được sử dụng ........................................................ trang 5
IC AT89C52 ...................................................................................... trang 6
IC 82C55A......................................................................................... trang 7
IC 74HC373....................................................................................... trang 8
IC 74HC138....................................................................................... trang 9
IC 6264 (Ram 8Kx8bit) ..................................................................... trang 10
Phần II: Thiết kế và thi công mạch ......................................................... trang 11
Mạch vi điều khiển AT89C52............................................................ trang 12
Mạch chốt 74HC373 và chọn chip 74HC138 ..................................... trang 13
Mạch Ram 6264 và 82C55A.............................................................. trang 14
Mạch khuếch đại (amplifier) và bàn phím 4x4................................... trang 15
Mạch nguồn và khối hiển thị.............................................................. trang 16
Phần III: Các lệnh tiêu biểu trong Keil C và chương trình mẫu .............. trang 17
Lưu đồ giải thuật................................................................................ trang 18
Các lệnh tiêu biểu trong Keil C.......................................................... trang 19
Lập trình sử dụng RAM trong Keil C................................................. trang 21
Các nguyên lý cơ bản về quét led và bàn phím .................................. trang 23
Chương trình mẫu .............................................................................. trang 25
Phần IV: Sản phNm thu được, ưu và khuyết điểm ................................... trang 37
Sơ đồ bàn phím .................................................................................. trang 38
Hướng dẫn sử dụng matrixled............................................................ trang 39
Ưu điểm và khuyết điểm sản phNm .................................................... trang 41
Sơ đồ mạch ........................................................................................ trang 42

3



ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

Giới thiệu về đồ án:
Hiện nay trong đời sống thì quảng cáo bằng hình thức quang báo không
còn mới mẽ gì. Nó có thể được sử dụng để quảng cáo tên nhãn hiệu sản phNm,
tên của một công ty hay tên của một cửa hàng nào đó.
Trong đó có quang báo dùng Led Ma Trận, dù quang báo dùng Led Ma
Trận chiếm không nhiều nhưng nó cũng đóng góp một phần vào việc tuyên
truyền, quảng cáo hay thông tin đến người tiêu dùng nói riêng và cả nước nói
chung. Đặc điểm lớn nhất của “Quang báo dùng Led Ma Trận” là có thể nhập
trực tiếp từ bàn phím những ký tự mà mình mong muốn, việc này ở các hình
thức quang báo khác không có, cái hay của nó là thông tin được cập nhật bất cứ
lúc nào, có thể hiện thị nhanh nhất các thông tin mới nhất để mọi người nắm bắt.
Trong đồ án này, dù quy mô không lớn nhưng tính chất đặc biệt của Led
Ma Trận không mất. Để hiểu sâu hơn về đề tài, xin xem tiếp phần sau:

4


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

PHẦN I:
CÁC LINH KIỆN
ĐƯỢC SỬ DỤNG


5


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

IC AT89C52
Sơ đồ chân

Đặc điểm
AT89C52 là một IC họ MSC-51, các IC họ này có đặc điểm chung như sau:

4KB EPROM bên trong, ở đây chúng ta sử dụng AT89C52 có 8KB
EPROM.

128 byte RAM nội.

4 Port I/O (input/output), mỗi port 8bit.

Giao tiếp nối tiếp.

64 KB vùng nhớ mã ngoài.

64 KB vùng nhớ dữ liệu ngoài.

Xử lý Boolen (hoạt động trên bit đơn).

210 vị trí nhớ có thể định vị bit.


4us cho hoạt động nhân hay chia.
AT89C52 có 32 port I/O rất thuận tiện việc quét led hiển thị, nhưng trong đồ án này,
chúng ta sử dụng thêm IC Ram 6264 để lưu trữ tạm thời dữ liệu được nhập từ bàn phím.
Công việc này lấy đi 14 chân I/O của vi xử lý vì thế không đủ port để quét led, ta phải sử
dụng với IC chọn chip kèm IC mở port để thực hiện việc quet led hiển thị này.

6


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

IC 82C55A
Sơ đồ chân

Đặc điểm
IC 82C55A là một IC để mở rộng port cho Microprocessor, nó giao tiếp với
Microprocessor thông qua 3 bus: Bus dữ liệu bit D7-D0, bus địa chỉ A1-A0 và bus điều khiển
RD\,WR\,CS\,Reset. Mã lệnh, thông tin trạng thái và dữ liệu đều được truyền trên 8 đường
dữ liệu D7-D0. Bảng trạng thái của 82C55A:

IC 82C55A có 3 Port I/O là Port A, Port B, Port C mỗi Port 8 bit. Các Port này được
điều khiển là nhập hay xuất thông qua thanh ghi điều (control register) khiển do
Microprocessor (AT89C52) gửi đến từ trước. Port hay thanh ghi điều khiển được chọn qua 2
bit A1-A0. Người lập trình phải điền khiển các bit này từ Microprocessor (AT89C52).

7



ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

IC 74HC373
Sơ đồ chân

Đặc điểm
74HC373 là một IC chốt địa chỉ tốc độ cao sử dụng công nghệ cổng CMOS, không
gây ồn, tiêu thụ công suất thấp.
Khi ngõ vào Latch Enable cho phép chốt (G) ở mức cao thì ngõ ra Q sẽ thay đổi theo
ngõ vào D, khi Latch Enable (G) xuống thấp thì các ngõ ra Q sẽ được giữ lại đến khi Latch
Enable trở lại mức cao. Bảng trạng thái 74HC373:

8


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

IC 74HC138
Sơ đồ chân

Đặc điểm
74HC138 là IC giải mã 3 - 8 gồm 3 ngõ vào địa chỉ (A1, A2, A3) có trọng số nhị phân
và 8 ngõ ra tích cực mức thấp Y0-Y7, 3 ngõ vào cho phép E1, E2 tích cực thấp và E3 tích
cực cao. Bảng trạng thái 74HC138:

9



ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

IC 6264 (RAM 8Kx8bit)
Sơ đồ chân

Đặc điểm
IC 6264 là một ram tĩnh CMOS hiệu suất cao được tổ chức bởi 8192*8bit (8Kx8bit)
với các chân A0-A12 là bus địa chỉ. Bộ nhớ Ram là bộ nhớ dễ thay đổi, bất kỳ ô nhớ nào
cũng có thể truy xuất dễ dàng thông qua bus địa chỉ, thời gian truy xuất các ô nhớ là như
nhau. Khác với bộ nhớ ROM, bộ nhớ RAM sẽ bị mất khi nguồn điện cung cấp bị ngắt.
Dễ dàng mở rộng bởi chân chọn chip tích cực thấp CE1, một chân chọn chip tích cực
cao CE2 và một chân OE tích cực thấp. Tín hiệu cho phép ghi tích cực mức thấp WE điều
khiển việc đọc/ghi của bộ nhớ.
IC có 8 ngõ vào/ra của bus dữ liệu được dùng chung là I/O0 – I/O7.
RAM thường được dùng trong các hệ thống điều khiển tự động để lưu trữ dữ liệu tạm
thời.Bộ nhớ Ram có 2 loại là SRAM và DRAM:

SRAM còn gọi là Static Ram hay Ram tĩnh. Đây là loại Ram lưu trữ dữ
liệu đến khi nào nguồn không còn. SRAM thực chất là những flip flop (FF), trong mỗi
FF là một phần tử nhớ đại diện cho 1 bit.

DRAM còn gọi là Dynamic Ram hay Ram động. Loại ram này phải luôn
được làm “tươi” tức là phải nạp dữ liệu cho Ram trong 1 khoảng thời gian nhất định,
nếu không Ram sẽ bị mất dữ liệu. Trong khi làm “tươi” Ram ô nhớ đó không được
phép truy xuất.


10


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

PHẦN II:
THIẾT KẾ
VÀ THI CÔNG MẠCH

11


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

MẠCH VI ĐIỀU KHIỂN AT89C52
Sơ đồ mạch

Mô tả
Mạch này gồm 2 mạch nhỏ là tạo xung và reset. Khi cấp nguồn điện áp trên R34 (chân
9 của AT89C52) lên mức cai 5V (=Vcc), sau đó sẽ xuống mức 0V do tụ C8 bắt đầu nạp. Nếu
ta ấn phím reset (JP2) thì áp trên R34 sẽ tăng gần = Vcc nhờ cầu phân áp R33 và R34 ghim
một mức áp cố định (+5V).
Vì sử dụng Ram ngoài nên P2 và P0 đóng vai trò là các bus địa chỉ, P3 thì sử dụng các
chân RD\, WR\ để điểu khiển chế độ hoạt động của RAM và 82C55A.
P1 để quét và nhận bàn phím ma trận 4*4 (16 phím).
Ở đây ra sử dụng Ram 6264 chỉ có 13 bit địa chỉ, P2 P0 có 16 bit, ta dùng 3 bit còn lại

để điều khiển IC giải mã chọn chip.

12


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

MẠCH CHỐT 74HC373
& CHỌN CHIP 74HC138
Sơ đồ mạch

Mô tả
74HC138 là IC dùng chọn chip Ram, hay 8255. Ở đây chúng ta sử dụng 1 IC Ram
6264 với 3 IC 82C55A tổng cộng là 4 chip. CE cho Ram, CS1-CS3 cho các IC 8255. A, B và
C là các ngõ điều khiển được nối với AT89C52.
74HC373 là IC chốt dùng chốt địa chỉ khi sử dụng ram, ta nối các đầu vào với P0 của
AT89C52 để chốt khi P0 là bus địa chỉ, và giữ các địa chỉ này cho Ram hoạt động khi P0
chuyển từ bus địa chỉ sang bus dữ liệu. Đồng thời chốt 2 bit A1, A0 để sử dụng và điều khiển
82C55A.
Các đầu ra A0-A7 được nối với các đầu vào dữ liệu của Ram 6264 và A1-A0 nối với
A1-A0 của 82C55A. Chân LE là chân xung để chọn chốt hay không chốt, chân này nối với
chân xung ALE của AT89C52 để nó tự điều khiển khi được cấp lệnh.

13


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”


GVHD: Ths Nguyễn Tất Bảo Thiện

MẠCH RAM 6264
VÀ 82C55A
Sơ đồ mạch

Mô tả
Như đã đề cập, Ram 6264 có 13 bit địa chỉ, 8 bit được nối với P0 thông qua mạch chốt
74HC373, D0-D7 là bus dữ liệu vào và ra nối với P0 của AT89C52 (P0 đóng 2 vai trò bus
địa chỉ và dữ liệu) các chân OE\ và WE\ được nối với RD\ và WR\ của AT89C52 để điều
khiển khi Read hay Write. CE là chân chọn chip tích cực thâp, chân này nối với IC giải mã
74HC138 để điều khiển khi cần.
82C55A được sử dụng và truy xuất như 1 RAM ngoại, nó có bus địa chỉ là A1-A0,
bus dữ liệu là D0-D7 và bus điều khiển là chân đọc RD\, ghi WR\, chọn chip CS\.

14


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

MẠCH KHUẾC ĐẠI (AMPLIFIER)

Theo K2: ta có –Vcc + IcRc + Vce + Vled = 0
Rc = (5 – 0.2 - 2) / 20 = 140 ohm (150 ohm)
Ở đây ta dùng Transistor C1815 có độ khuếch đại b = 70 – 700 và dòng tối Icmax =
150 mA nên:
Ta lại có: K2: -5 +IbRb + Vbe + Vled = 0
Rb = (5 – 0.7 – 2) / 0.28 = 8.2K


BÀN PHÍM 4x4
Mô tả
Bàn phím được xây dựng trên cơ sở quét hàng và
cột, được nối với port P1 của IC AT89C52.
Chức năng của các phím:
SPACE BAR: chèn 1 khoảng trắng.
DELETE: xóa ký tự gần nhất
RUN/STOP: cho phép chạy chương trình
vừa nhập hoặc dừng chương trình đang
chạy.
SPEED UP: tăng tốc chạy chương trình.
SPEED DOWN: giảm tốc chạy chương
trình.
10 phím còn lại nhập chữ, số và các dấu,
mỗi phím có thể nhập đc 5 ký tự
Còn 1 phím trống.

15


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

MẠCH NGUỒN
Chúng ta có thể dùng adapter 5V hay acquy 12V-24V rồi đưa qua IC 7805, IC này có
tác dụng chuyển đổi nguồn từ 9V-24V thành 5V.

KHỐI HIỂN THN

Gồm 12 khối led ma trận ML2008 (8x8) ghép với nhau. Mỗi khối led sẽ có 8 hàng dọc
tương ứng với 8 đầu anot, 8 hàng ngay tương ứng với 8 đầu catot. Khi muốn sáng Led nào
thì ta chỉ cần cấp mức 1(5V) ở đầu anot và cấp mức 0(0V) ở đầu Catot của led cần sáng.
Để có thể hiển thị ta ghép 6 khối Led với nhau trên cùng 1 hàng, như vậy ta có 6 khối
cột và 2 khối hàng.
Trên cùng 1 khối cột ta nối âm với âm, vậy ta có 6 khối cột âm, mỗi khối 8 bit. Trên
cùng 1 khối hàng ta nối dương với dương, vậy ta có 2 khối hàng dương, mỗi khối 8 bit.6 khối
cột âm nối với 6 port của 2 IC 8255, 2 khối hàng dương nối với 2 port của 8255 thứ 3.

Sơ đồ chân của khối matrix led MI08 (8x8):

16 l 0.0

1.4 l 1

15 l 0.1

1.6 l 2

14 l 1.1

0.6 l 3

13 l 0.7

0.5 l 4

12 l 1.3

1.7 l 5


11 l 0.2

0.3 l 6

10 l 0.4

1.5 l 7

9 l 1.0

1.2 l 8

16


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

PHẦN III:
CÁC LỆNH TIÊU BIỂU
TRONG KEIL C
& CHƯƠNG TRÌNH MẪU

17


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”


GVHD: Ths Nguyễn Tất Bảo Thiện

LƯU ĐỒ GIẢI THUẬT
BEGIN

NHẬP
PHÍM

PHÍM?

NO

YES

PHÍM
KÝ TỰ

NẠP
RAM
HIỂN
THN
END
18


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

CÁC LỆNH TIÊU BIỂU

TRONG KEIL C
Khai báo biến:
Bit x;
Char data;
Unsigned char x;
Int x;
Unsigned int x;

kiểu dữ liệu 1 bit
kiểu dữ liệu 8 bit có dấu, bit đầu là dấu -127 … 128
kiểu dữ liệu 8 bit không dấu 0 … 255
kiểu dữ liệu 16 bit có dấu
kiểu dữ liệu 16 bit không dấu

Vòng lặp
For(x;x < 100;x++)
{
…;
}
For(;;)
vòng lặp vô hạn (super loop)
{
…;
}
While(x != 100)
{
…;
x++;
}
While(1)

vòng lặp vô hạn (super loop)
{
…;
}

Các lệnh luận lý (boolean) – cho ra giá trị fail(0) or true(1)
xx>b;
x<=b;
x>=b;
x==b;
x!=b;

bé hơn
bé hơn hay bằng
bằng
không bằng

19


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

Lệnh điều kiện
If(x > 0)
{
…;
}

Else
{
…;
}

Switch(x)
{
case 0:
…;break;
case 10; …;break;
case 11; …;break
….;
default: ….;break;
}

Các lệnh toán tử (operator)
x++ :x=x+1;
x+=b: x=x+b;
x*=b: x=x*b;

x-- : x=x-1
x-=b: x=x-b;
x/=b: x=x/b;

Các lệnh dịch bit:
1<x>>1: dịch phải 1 bit;
x<<=1: x=1<x<<=1: x=x>>1;


Định nghĩa các biến
#define A 2000: A=2000 trong suốt chương trình.
#define ouput_port P3: khi sử dụng output_port xem như sử dụng P3.
Sbit P1^0 = P: khi ta sử dụng biến “P” thì xem như đang sử dụng P1^0.
#type unsigned char tByte:
Khi sử dụng tByte xem chương trình sẽ hiểu là unsigned char

20


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

LẬP TRÌNH SỬ DỤNG RAM/ROM
TRONG KEIL C
Cách 1 :Vào Target, chọn Memory Model là Large , khi đó mọi biến bạn khai báo đều
được lưu trữ trong RAM ngoài.Cách này đơn giản nhưng có nhược điểm là không quản lý
được biến, compiler sẽ tự định địa chỉ cho biến của bạn.
Cách 2 :Chọn Memory Model là small. Khi đó , biến nào khai báo ở dạng xdata thì sẽ
hiểu là RAM ngoài.
VD : unsigned char xdata Dulieu[10];
cách này thường được sử dụng rộng rãi, tuy nhiên RAM của bạn phải bắt đầu từ địa chỉ
0x0000.
Cách 3 : Nếu vùng địa chỉ của RAM không bắt đầu từ 0x0000 , chẳng hạn bạn sử
dụng mạch giải mã để đặt địa chỉ cho RAM bắt đầu từ 0x8000 , khi đó ta có thể sử dụng thư
viện "absacc.h" ,ví dụ khai báo như sau :
#include "absacc.h"
....
#define baseaddr 0x8000

void InitRAM()
{
unsigned char i;
for(i=0;i<10;i++)
XBYTE[baseaddr+i]=i; // Ghi vào RAM ngoài 10 giá trị , bắt đầu từ
// 0x8000
}
Lúc lấy giá trị ra, bạn có thể gọi : x=XBYTE[address];

21


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

Với các khai báo như trên, compiler sẽ hiểu là sử dụng RAM ngoài, và việc trao đổi
thông tin với RAM ngoài sẽ được VĐK thực hiện bằng lệnh movx, các xung ALE,RD,WR sẽ
họat động theo nhịp clock để trao đổi với RAM.

Đọc
1- CPU phát địa chỉ ra bus địa chỉ. Bộ nhớ nhận được địa chỉ này, sẵn sàng phát byte
dữ liệu ra bus dữ liệu, nhưng vì /OE chưa tích cực nên các chân Di (D1, D2, ..., Dm) của bộ
nhớ vẫn còn ở trạng thái Hi-Z (tổng trở cao).
2- CPU kích hoạt tín hiệu /RD (/RD nối tới chân /OE của bộ nhớ) -> /OE tích cực ->
bộ nhớ xuất dữ liệu ra bus dữ liệu.
3- CPU cất (copy) dữ liệu từ bus dữ liệu vào thanh ghi.
4- CPU bỏ kích hoạt /RD -> /OE trở lại mức ko tích cực -> ngõ ra bộ nhớ trở lại trạng
thái Hi-Z.


Ghi
1- CPU phát địa chỉ ra bus địa chỉ.
2- CPU phát dữ liệu từ thanh ghi ra bus dữ liệu.
3- CPU kích hoạt /WR (/WR nối tới /WE của bộ nhớ) -> /WE tích cực -> bộ nhớ ghi
dữ liệu ở bus dữ liệu vào ô nhớ có địa chỉ chỉ định bởi bus địa chỉ.
4- CPU bỏ kích hoạt /WR -> /WE trở lại mức ko tích cực.

Đối với 8051
Chân /PSEN thường được nối tới chân /OE của ROM ngoài chứa chương trình. Khi
8051 đọc chương trình, thì chân /PSEN sẽ được kích hoạt (giống như tín hiệu /RD nói trên).
Chân /RD và /WR thường nối tới /OE và /WE của RAM ngoài.
/CE là chân chọn chip (giống như /CS). Trong 1 hệ vi xử lý có nhiều thiết bị (bộ nhớ
hay I/O) sử dụng chung bus dữ liệu, tại 1 thời điểm chỉ có tối đa 1 thiết bị được giao tiếp với
bus dữ liệu thôi (nếu có nhiều hơn 1, thì sẽ xảy ra tranh chấp bus). Mạch giải mã địa chỉ sẽ
điều khiển các chân /CE (hay /CS) của các thiết bị này để chỉ định thiết bị nào được giao tiếp
với bus dữ liệu. /CE của thiết bị nào ở mức tích cực thì thiết bị ấy được phép giao tiếp với
bus dữ liệu, còn không thì các đường dữ liệu Di của thiết bị sẽ ở trạng thái Hi-Z.
Ram 6264 có 8192 ô nhớ 8 bit, ta dùng 700 ô nhớ đầu chứa bảng mã, còn 7492 ô nhớ,
mỗi chữ cái chiếm 14 ô nhớ. Vậy ta có thể ghi được 7492/14 = 535 ký tự.
**)Đối với 82C55A thì cách sử dụng cũng như RAM và ROM ngoài, chỉ khác là
82C55A chỉ có 4 địa chỉ của port A, B, C và Control registor.
22


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

CÁC NGUYÊN LÝ CƠ BẢN VỀ
QUÉT LED VÀ BÀN PHÍM

Đề tài của chúng ta là “Ma trận led nhập từ bàn phím”, như vậy 2 thiết bị không thể
thiếu là bàn phím và led ma trận.

Ma trận bàn phím 4x4
(Cấu tạo chung cho các thiết bị matrix)

Cách hoạt động của bàn phím là khi ta cấp Vcc 5V cho đầu “A” và bấm phím thứ 1 thì
đo được ở đầu 1 là 5V, tương tự cho các phím khác. Như vậy để nhận được 16 phím thì ta
phải cấp Vcc lần lượt cho 4 đầu “A, B, C, D” hay ngược lại lần lượt cho “1, 2, 3, 4”. Điều
chú ý ở đây là phải cấp lần lượt chứ không thể cấp 1 lúc 4 đầu đều là VCC, như thế sẽ không
thể phân biệt được các hàng hay các cột. Hay ngược lại chúng ta có thể cấp 0V cho đầu “A”
còn tất cả các đầu kia đều là “5V”, như vậy khi phím 1 được ấn thì cả 2 đầu “A” và “1” đều
đo được là 0V, các đầu còn lại vẫn 5V.
Nếu “A, B, C, D, 1, 2, 3, 4” lần lượt nối với P3.0 – P3.7 của AT89C52 thì ta có thể
làm như sau:
Ta đặt P3.0 = 1(A=1), các chân kia =0, khi ấn phím nào trên hàng A thì cột đó sẽ = 1,
ta chia thành 4 trường hợp. Sau đó P3.0 = 0 và P3.1 =1, ta lại có 4 trường hợp, sau 4 lần cho
A B C D ta có 16 trường hợp.
Còn 1 phương pháp khác được gọi là dịch bit. Đầu tiên ta set P1 = 00000001 (hay
11111110 cũng được) sau đó dịch 1 bit thành 00000010 > 00000100 > 00001000 với điều
kiện là P1 không được lớn hơn 00010000 = 16.
23


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

Ma trận led 8x8
(Cấu tạo tương tự như ma trận bàn phím được nói ở trên)


Muốn đèn nào sáng ta cấp Vcc 5V cho hàng anot chứa đèn đó (1-8) và 0V cho cột
catot chứa đèn đó (9-16). Nhưng để hiện chữ chúng ta không thể cấp từng cái như thế được.
Nguyên lý để hiện chữ trên ma trận led là chúng ta quét từng cột hay từng hàng, quét cột hay
hàng là tùy mỗi người. Ở đây ta sẽ xét quét cột:
Đầu tiên chúng ta phải bảng mã hóa các chữ, bảng này chúng ta có thể vẽ ra trên giấy
rồi tính. Ví dụ chữ A cột đầu tiên là 000111100 = 0x1C (tính từ 1 > 8). Ta phải cấp
P1=0x1C.
Sau đó P2.0 (cột số 9) bằng 0, tiếp theo cấp dữ liệu cột thứ 2 (P) rồi cho cột thứ 2 = 0,
cứ như thế ta sẽ có được chữ A. Theo hiện tượng lưu ảnh ở mắt người ta sẽ thấy được chữ A,
thời gian sáng của mỗi cột thường là 1ms – 5ms tùy mỗi người, nhanh quá sẽ không kịp sáng
và không thấy gì, chậm quá thì không đủ tần số, chúng ta sẽ thấy chớp chớp.
Chú ý là khi 1 cột = 0 thì các cột kia phải = 1 nếu không thì dữ liệu của cột này sẽ
được đưa vào cho tất cả các cột, khi đó không thấy được chữ mà chỉ thấy nó sáng 1 kiểu.

24


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

CHƯƠNG TRÌNH MẪU
#include <reg52.h>
#include "absacc.h"
//-----------------------------------------------------------------------------------------------#define begin 1096
#define pb1 0x2001
#define pc1 0x2002
//-----------------------------------------------------------------------------------------------void quetphim(void);
void napchuoi(void);

void xulyhienchu(void);
void hienchu(void);
void hienchucuoi(void);
void delay_434us(void);
void delete(void);
void space(void);
void X_init(void);
void xulychaychu(void);
void delay_1s(void);
void dinhphim(void);
void dinhphimcuoi(void);
void tradau(void);
void napdau(void);
//-----------------------unsigned char phim,phim_temp,dau1=0,dau2=0;
unsigned int ramadd,kytu,rac;
bit run=0,d=0;
//-----------------------------------------------------------------------------------------------unsigned char xdata bangmaduoi[408] =
{
0x38,0x06,0x05,0x04,0x05,0x06,0x38,0x00, //A
0x3f,0x24,0x24,0x24,0x24,0x24,0x1b,0x00,
//B
0x1f,0x20,0x20,0x20,0x20,0x20,0x11,0x00,
//C
0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00, //.
0x00,0x02,0x01,0x3f,0x00,0x00,0x00,0x00,
//1
0x3f,0x20,0x20,0x20,0x20,0x20,0x1f,0x00,
//D
0x3f,0x24,0x24,0x24,0x24,0x20,0x20,0x00,
//E

0x3f,0x04,0x04,0x04,0x04,0x00,0x00,0x00,
//F
0x00,0x50,0x30,0x00,0x00,0x00,0x00,0x00, //,
0x31,0x28,0x28,0x28,0x28,0x27,0x00,0x00, //2
0x1f,0x20,0x20,0x20,0x24,0x24,0x3c,0x00,
//G
0x3f,0x04,0x04,0x04,0x04,0x04,0x3f,0x00,
//H

25


ĐỀ TÀI: “MA TRẬN LED NHẬP TỪ BÀN PHÍM”

GVHD: Ths Nguyễn Tất Bảo Thiện

0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x00,
0x00,0x51,0x31,0x00,0x00,0x00,0x00,0x00,
0x11,0x20,0x24,0x24,0x24,0x1b,0x00,0x00,
0x10,0x20,0x20,0x1f,0x00,0x00,0x00,0x00,
0x3f,0x04,0x04,0x0a,0x11,0x20,0x00,0x00,
0x3f,0x20,0x20,0x20,0x20,0x20,0x00,0x00,
0x00,0x14,0x14,0x14,0x14,0x14,0x00,0x00,
0x18,0x14,0x12,0x11,0x3f,0x10,0x00,0x00,
0x3f,0x01,0x02,0x04,0x02,0x01,0x3f,0x00,
0x3f,0x01,0x02,0x04,0x08,0x10,0x3f,0x00,
0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x00,
0x00,0x00,0x00,0x00,0x1f,0x20,0x40,0x00,
0x27,0x24,0x24,0x24,0x24,0x18,0x00,0x00,
0x3f,0x04,0x04,0x04,0x04,0x04,0x03,0x00,

0x1f,0x20,0x20,0x20,0x28,0x10,0x2f,0x00,
0x3f,0x04,0x04,0x04,0x0c,0x14,0x23,0x00,
0x00,0x40,0x20,0x1f,0x00,0x00,0x00,0x00,
0x1f,0x24,0x24,0x24,0x24,0x19,0x00,0x00,
0x13,0x24,0x24,0x24,0x24,0x24,0x19,0x00,
0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,
0x1f,0x20,0x20,0x20,0x20,0x20,0x1F,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x38,0x04,0x02,0x01,0x00,0x00,
0x03,0x0c,0x10,0x20,0x10,0x0c,0x03,0x00,
0x1f,0x20,0x10,0x0c,0x10,0x20,0x1f,0x00,
0x20,0x11,0x0a,0x04,0x0a,0x11,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x1b,0x24,0x24,0x24,0x24,0x1b,0x00,0x00,
0x00,0x01,0x02,0x3c,0x02,0x01,0x00,0x00,
0x21,0x30,0x28,0x24,0x22,0x21,0x10,0x00,
0x00,0x37,0x37,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x24,0x02,0x01,0x00,0x00,0x00,
0x13,0x24,0x24,0x24,0x24,0x1f,0x00,0x00,
0x00,0x08,0x08,0x3e,0x08,0x08,0x00,0x00,
0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x00,
0x00,0x22,0x14,0x08,0x14,0x22,0x00,0x00,
0x00,0x31,0x31,0x00,0x00,0x00,0x00,0x00,
0x1f,0x30,0x28,0x24,0x22,0x21,0x1f,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

//I
//;
//3
//J

//K
//L
//=
//4
//M
//N
//0
//(
//5
//P
//Q
//R
//)
//6
//S
//T
//U
//"
//7
//V
//W
//X
//"
//8
//Y
//Z
//!
//?
//9
//+

////x
//:
//0
//

};
//-----------------------unsigned char xdata bangmatren[408] =
{
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,
0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,

//A
//B
//C

26


×