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

thiết kế mạch điều khiển led ma trận bằng vi điều khiển 8051

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 (1.08 MB, 24 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA ĐIỆN TỬ - VIỄN THÔNG
o0o
B I T P L NÀ Ậ Ớ
Môn : VI XỬ LÝ
Đề tài :
ĐIỀU KHIỂN
LED MA TRẬN LED BẰNG 8051
Thầy hướng dẫn : Nguyễn Huy Hoàng
Sinh viên : Nguyễn Hoàng Minh Sơn
Lời mở đầu
Ngày nay, những ứng dụng của Vi điều khiển đã đi sâu vào đời sống sinh hoạt và
sản xuất của con người. Thực tế hiện nay là hầu hết các thiết bị điện dân dụng hiện nay
đều có sự góp mặt của Vi Điều Khiển và vi xử lí . Ứng dụng vi điều khiển trong thiết kế
hệ thống làm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời nâng cao tính ổn
định của thiết bị và hệ thống. Việc phát triển ứng dụng các hệ vi xử lý đòi hỏi những
hiểu biết cả về phần cứng cũng như phần mềm, nhưng cũng chính vì vậy mà các hệ vi
xử lý được sử dụng để giải quyết những bài toán rất khác nhau.
Một trong những ứng dụng rõ ràng nhất của Vi điều khiển là trong các hệ thống
quang báo. Thật khó phủ nhận trong đời sống hiện đại ngày nay, quảng cáo là một phần
không thể thiếu trong nhịp sống bùng nổ công nghệ thông tin như hiện nay. Ở bất cứ nơi
đâu ta cũng bắt gặp những biển quảng cáo từ đơn giản, thủ công cho đến những biển
quảng cáo điện tử hiện đại, thẩm mỹ. Đó là những bảng quảng cáo điện tử mà chúng ta
gọi là những bảng đèn quang báo. Công nghệ điện tử này còn được sử dụng trong nhiều
lĩnh vực như những biển báo giao thông, những bảng điểm trên những sàn giao dịch
chứng khoán,hay tại các sân bay, siêu thị Những bảng quang báo này góp phần làm
cho thành phố chúng ta có được một bộ mặt của một thành phố hiện đại và văn minh.
Với mục đích tìm hiểu sâu những kiến thức đã học trên giảng đường cộng với
niềm đam mê riêng của bản thân, em đã nghiên cứu và học hỏi để thiết kế mạch điều
khiển led ma trận bằng vi điều khiển 8051.
1. Mục đích đề tài:


- Điều khiển ma trận led 8x24 (Hình 1)
- Sử dụng vi điều khiển trung tâm 8051
2. Cơ sỏ lý thuyết:
- Sơ đồ ma trận led:
o Các led được phân chia thành hàng và cột
o Các led trên 1 hàng nối cực (+) với nhau và lấy tìn hiệu điều khiển từ
cùng 1 chân ( từ H1 đén H8)
o Các led trên 1 cột được nối cực (-) với nhau và lấy tín hiệu điều khiển từ
cùng 1 chân (từ C1 đến C24)
- Điều khiển LED:
o Áp dụng phương pháp quét hàng với tốc độ cao: tại mỗi thời điểm nhất
định chỉ có tín hiệu tích cực ở một hàng để điều khiển led sáng. Tuy
nhiên do hiện tượng lưu ảnh của mắt (24hình/s) nên con người có cảm
giác toàn bộ các led sáng cùng lúc
o Do ta có một số lượng lớn các chân điều khiển (32 chân) nên ta phải
ghép nối vi điều khiển để mở rộng số lượng chân tín hiệu. Việc này
cũng thuận tiện cho việc nâng cấp mạch khi ta có một vi điều khiển
trung tâm và modul led ma trận, khi muốn mở rộng số lượng led ta chỉ
việc mở rộng số modul ma trận led.
- Như vậy để điều khiển led sáng ta cần tín hiệu điều khiển tức thời tại một
hàng và toàn bộ các cột.
Ví dụ:
Điều khiển led đầu tiên (bên trái) của hàng 2 sáng:
- led(H2,C24) sáng. Tín hiệu điều khiển như sau:
H1(-), H2(+), H3(-), H4(-),H5(-), H6(-), H7(-), H8(-)
C24(-), C23(+), C22(+), C21(+),C20(+), C19(+), C18(+), C17(+)
C16(+), C15(+), C14(+), C13(+),C12(+), C11(+), C10(+), C9(+)
C8(+), C7(+), C6(+), C5(+),C4(+), C3(+), C2(+), C1(+)
Điều khiển 3 led đầu tiên (bên trái) của cột đầu tiên (C24) sáng:
- led(H1,C24) sáng trong 1ms, tắt led(H1,C24)

- led(H2,C24) sáng trong 1ms, tắt led(H2,C24)
- led(H3,C24) sáng trong 1ms, tắt led(H3,C24)
- Do hiện tượng lưu ảnh của mắt ta sẽ thấy 3 led này sáng đồng thời.
Khối điều khiển
Khối đệm
Khối đệm
24 đường tín hiệu điều khiển
8 đường tín hiệu
Mạch led ma trận
MCU 8051
Mạch giải mã cột
Tín hiệu điều khiển
Tín hiệu điều khiển
Mạch quét hàng
24 đường tín hiệu
điều khiển
8 đường tín hiệu
điều khiển
3. Sơ đồ khối:
Sơ đồ 1:
Chú thích:
: Đường tín hiệu sau khi đệm có khả năng cung dòng lớn.
Nhiệm vụ từng khối:
- Khối điều khiển: cung cấp tín hiệu giải mã địa chỉ cho hàng và cột, xác định led
nào sáng (tắt).
- Khối đệm: đệm dòng led sáng hiệu quả, chống nhiễu cho mạch led ma trận.
Sơ đồ 2: cho khối điều khiển
Nhiệm vụ từng khối:
- MCU 8051: đây là nơi lưu trữ chương trình và dữ liệu cho các mạch giải mã
cột và mạch quét hàng.

- Mạch quét hàng: nhận tín hiệu điều khiển từ MCU 8051, tại 1 thời điểm xác
định, mạch chỉ cấp tín hiệu tích cực cho 1 hàng các hàng còn lại không có tín
hiệu tích cực.
- Mạch giải mã cột: nhận tín hiệu điều khiển từ MCU 8051, tại mỗi thời điêm
mạch quét hàng cung cấp tín hiệu tích cực cho 1 hàng, mạch giải mã cột sẽ
cung cấp tín hiệu địa chỉ của led để xác định led nào sáng (tắt).
- Như vậy đường tín hiệu ra của khối điều khiển bao gồm 32 đường tín hiệu
cung cấp cho mạch led ma trận.
4. Thiết kế chi tiết:
4.1 Phần cứng:
- MCU 8051: AT89C51
- Mạch giải mã cột: 74HC595 (mở rộng chân cho MCU 8051)
- Mạch quét hàng: 74HC138 (mở rộng chân cho MCU 8051)
- Khối đệm:
Transistor B562: cấp nguồn cho hàng ma trận led
ULN2803 đệm dòng và có khả năng ổn định dòng cho led sáng đều
74HC245 đệm dòng và có khả năng chống nhiễu
- Nguồn 5V
- Mạch led ma trận 8x24 được mắc như Hình 1
4.2 Đặc tính kỹ thuật của phần cứng:
4.2.1: AT89C51: Năm 1980 khi intel tung ra chip 8051, bộ Vi điều khiển đầu tiên của
họ MCS-51 và là chuẩn công nghệ cho nhiều họ Vi điều khiển được sản xuất sau này.
Sau đó rất nhiều họ Vi điều khiển của nhiều nhà chế tạo khác nhau lần lượt được đưa ra
thị trường với tính năng được cải tiến ngày càng mạnh. Trong mạch sử dụng AT89C51
của hãng Atmel là một trong số này.
4.2.1.1 Sơ lược phần cứng:
Các thành viên của họ MCS-51 (Atmel) có các đặc điểm chung như sau:
Có 4/8/12/20 Kbyte bộ nhớ FLASH ROM bên trong để lưu chương trình. Nhờ
vậy Vi điều khiển có khả năng nạp xoá chương trình bằng điện đến 10000 lần.
128 Byte RAM nội

4 Port xuất/nhập 8 bit
Từ 2 đến 3 bộ định thời 16-bit
Có khả năng giao tiếp truyền dữ liệu nối tiếp
Có thể mở rộng không gian nhớ chương trình ngoài 64KByte (bộ nhớ ROM
ngoại): khi chương trình do người lập trình viết ra có dung lượng lớn hơn dung lượng
bộ nhớ ROM nội, để lưu được chương trình này cần bộ nhớ ROM lớn hơn, cách giải
quyết là kết nối Vi điều khiển với bộ nhớ ROM từ bên ngoài (hay còn gọi là ROM
ngoại). Dung lượng bộ nhớ ROM ngoại lớn nhất mà Vi điều khiển có thể kết nối là
64Kbyte
Có thể mở rộng không gian nhớ dữ liệu ngoài 64KByte (bộ nhớ RAM ngoại)
Bộ xử lí bit (thao tác trên các bit riêng rẽ), 210 bit có thể truy xuất đến từng bit
4.2.1.2 Khảo sát sơ đồ chân:
Mặc dù các thành viên của họ MSC-51 có nhiều kiểu đóng vỏ khác nhau, chẳng
hạn như hai hàng chân DIP (Dual In-Line Pakage) dạng vỏ dẹt vuông QFP (Quad Flat
Pakage) và dạng chíp không có chân đỡ LLC (Leadless Chip Carrier) và đều có 40 chân
cho các chức năng khác nhau như vào ra I/0, đọc , ghi , địa chỉ, dữ liệu và ngắt. Tuy
nhiên, vì hầu hết các nhà phát triển chính dụng chíp đóng vỏ 40 chân với hai hàng chân
DIP, nên chúng ta cùng khảo sát Vi điều khiển với 40 chân dạng DIP.
Chân VCC:
Chân số 40 là VCC cấp điện áp nguồn cho Vi điều khiển
Nguồn điện cấp là +5V±0.5.
Chân GND:
Chân số 20 nối GND(hay nối Mass).
Khi thiết kế cần sử dụng một mạch ổn áp để bảo vệ cho Vi điều khiển, cách đơn giản là
sử dụng IC ổn áp 7805.
Port 0 (P0)
Port 0 gồm 8 chân (từ chân 32 đến 39) có hai chức năng:
Chức năng xuất/nhập :các chân này được dùng để nhận tín hiệu từ bên ngoài vào để xử
lí, hoặc dùng để xuất tín hiệu ra bên ngoài, chẳng hạn xuất tín hiệu để điều khiển led
đơn sáng tắt.

Chức năng là bus dữ liệu và bus địa chỉ (AD7-AD0) : 8 chân này (hoặc Port 0) còn làm
nhiệm vụ lấy dữ liệu từ ROM hoặc RAM ngoại (nếu có kết nối với bộ nhớ ngoài), đồng
thời Port 0 còn được dùng để định địa chỉ của bộ nhớ ngoài.
Port 1 (P1)
Port P1 gồm 8 chân (từ chân 1 đến chân 8), chỉ có chức năng làm các đường xuất/nhập,
không có chức năng khác.
Port 2 (P2)
Port 2 gồm 8 chân (từ chân 21 đến chân 28) có hai chức năng:
Chức năng xuất/nhập
Chức năng là bus địa chỉ cao (A8-A15): khi kết nối với bộ nhớ ngoài có dung lượng
lớn,cần 2 byte để định địa chỉ của bộ nhớ, byte thấp do P0 đảm nhận, byte cao do P2
này đảm nhận.
Port 3 (P3)
Port 3 gồm 8 chân (từ chân 10 đến 17):
Chức năng xuất/nhập
Với mỗi chân có một chức năng riêng thứ hai như sau:
P3.0(RxD): Ngõ vào nhận dữ liệu nối tiếp
P3.1(TxD): Ngõ xuất dữ liệu nối tiếp
P3.2(INT0): Ngõ vào ngắt cứng thứ 0
P3.3(INT1): Ngõ vào ngắt cứng thứ 1
P3.4(T0): Ngõ vào của Timer/Counter thứ 0
P3.5(T1): Ngõ vào của Timer/Counter thứ 1
P3.6(WR): Ngõ điều khiển ghi dữ liệu lên bộ nhớ ngoài
P3.7(RD): Ngõ điều khiển đọc dữ liệu từ bộ nhớ bên ngoài
P1.0(T2): Ngõ vào của Timer/Counter thứ 2
P1.1(T2X): Ngõ Nạp lại/thu nhận của Timer/Counter thứ 2
Chân RESET (RST)
Ngõ vào RST ở chân 9 là ngõ vào Reset dùng để thiết lập trạng thái ban đầu cho vi điều
khiển. Hệ thống sẽ được thiết lập lại các giá trị ban đầu nếu ngõ này ở mức 1 tối thiểu 2
chu kì máy.

Chân XTAL1 và XTAL2
Hai chân này có vị trí chân là 18 và 19 được sử dụng để nhận nguồn xung clock từ bên
ngoài để hoạt động, thường được ghép nối với thạch anh và các tụ để tạo nguồn xung
clock ổn định.
Chân cho phép bộ nhớ chương trình PSEN
PSEN ( program store enable) tín hiệu được xuất ra ở chân 29 dùng để truy xuất bộ nhớ
chương trình ngoài. Chân này thường được nối với chân OE (output enable) của ROM
ngoài.
Khi vi điều khiển làm việc với bộ nhớ chương trình ngoài, chân này phát ra tín hiệu kích
hoạt ở mức thấp và được kích hoạt 2 lần trong một chu kì máy
Khi thực thi một chương trình ở ROM nội, chân này được duy trì ở mức logic không
tích cực (logic 1)
(Không cần kết nối chân này khi không sử dụng đến)
Chân ALE (chân cho phép chốt địa chỉ-chân 30)
Khi Vi điều khiển truy xuất bộ nhớ từ bên ngoài, port 0 vừa có chức năng là bus địa chỉ,
vừa có chức năng là bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ở
chân ALE dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và các đường
dữ liệu khi kết nối chúng với IC chốt.
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động đưa vào Vi điều khiển,
như vậy có thể dùng tín hiệu ở ngõ ra ALE làm xung clock cung cấp cho các phần khác
của hệ thống.
Ghi chú: khi không sử dụng có thể bỏ trống chân này
Chân EA
Chân EA dùng để xác định chương trình thực hiện được lấy từ ROM nội hay ROM
ngoại.
Khi EA nối với logic 1(+5V) thì Vi điều khiển thực hiện chương trình lấy từ bộ nhớ nội
Khi EA nối với logic 0(0V) thì Vi điều khiển thực hiện chương trình lấy từ bộ nhớ
ngoại
4.2.1.3 Kết nối phần cứng:
Kết nối trên hai chân XTAL1 và XTAL2

Mạch dao động được đưa vào hai chân này thông thường được kết nối với dao động
thạch anh như sau:
Ghi chú: C1,C2= 30pF±10pF (thường được sử dụng với C1,C2 là tụ 33pF) dùng ổn
định dao động cho thạch anh.
Chu kì máy
Gọi fzat là tần số dao động của thạch anh. Đối với 89Sxx có thể sử dụng thạch anh có
tần số fzat từ 2MHz đến 33MHz.
Chu kì máy là khoảng thời gian cần thiết được qui định để Vi điều khiển thực hiện hoàn
thành một lệnh cơ bản. Một chu kì máy bằng 12 lần chu kì dao động của nguồn xung
dao động cấp cho nó.
Tck = 12.Toc
Với: Tck là chu kì máy
Toc là chu kì của nguồn xung dao động cấp cho Vi điều khiển
Như vậy:
Với: Tck là chu kì máy
foc là tần số dao động cấp cho Vi điều khiển.
Ví dụ: Ta kết nối Vi điều khiển với thạch anh có tần số fzat là 12MHz, thì chu kì máy
Tck=12/(12.106)=10-6s =1µs
Chính vì lí do thạch anh có tần số fzat là 12MHz tạo ra chu kì máy là 1µs, thuận lợi cho
việc tính toán thời gian khi lập trình do đó thạch anh có tần số fzat là 12MHz thường
được sử dụng trong thực tế.
Khi giao tiếp truyền nối tiếp với máy vi tính dùng thạch anh có tần số fzat là
11.0592MHz.
Kết nối chân RESET-chân 9
Việc kết nối chân RESET đảm bảo hệ thống bắt đầu làm việc khi Vi điều khiển được
cấp điện, hoặc đang hoạt động mà hệ thống bị lỗi cần tác động cho Vi điều khiển hoạt
động trở lại, hoặc do người sử dụng muốn quay về trạng thái hoạt động ban đầu. Vì vậy
chân RESET được kết nối như sau:

Kết nối các Port với led

Các Port khi xuất tín hiệu ở mức logic 1 thường không đạt đến 5V mà dao động trong
khoảng từ 3.5V đến 4.9V và dòng xuất ra rất nhỏ dưới 5mA(P0,P2 dòng xuất khoảng
1mA; P1,P3 dòng xuất ra khoảng 1mA đến 5mA) vì vậy dòng xuất này không đủ để có
thể làm led sáng
Tuy nhiên khi các Port xuất tín hiệu ở mức logic 0 dòng điện cho phép đi qua lớn hơn
rất nhiều:
Chân Vi điều khiển khi ở mức 0:
Dòng lớn nhất qua P0 : -25mA
Dòng lớn nhất qua P1,P2,P3 : -15mA
Do đó khi kết nối với led hoặc các thiết bị khác Vi điều khiển sẽ gặp trở ngại là nếu tác
động làm led sáng khi Vi điều khiển xuất ở mức 1, lúc này dòng và áp ra không đủ để
led có thể sáng rõ (led đỏ sáng ở điện áp 1.6V-2.2V và dòng trong khoảng 10mA). Khắc
phục bằng cách sau:
Cho led sáng khi Vi điều khiển ở mức 0:
Px.x thay cho các chân xuất của các Port. Ví dụ: Chân P1.1, P2.0, v.v
Khi Px.x ở mức 1 led không sáng
Khi Px.x ở mức 0 led sáng
Cho led sáng khi Vi điều khiển xuất ở mức 1:
Như đã trình bày vì ngõ ra Vi điều khiển khi xuất ở mức 1 không đủ để cho led sáng, để
led sáng được cần đặt thêm một điện trở kéo lên nguồn VCC(gọi là điện trở treo).
Tuỳ từng trường hợp mà chọn R2 để dòng và áp phù hợp với thiết bị nhận.
Khi Px.x ở mức 0, có sự chênh lệch áp giữa nguồn VCC và chân Px.x -dòng điện đi từ
VCC qua R2 và Px.x về Mass, do đó hiệu điện thế giữa hai chân led gần như bằng 0, led
không sáng.
Khi Px.x ở mức 1 (+5V),dòng điện không chạy qua chân Vi điều khiển để về mass
được, có sự lệch áp giữa hai chân led, dòng điện trong trường hợp này qua led về Mass
do đó led sáng.
R2 thường được sử dụng với giá trị từ 4.7KΩ đến 10KΩ. Nếu tất cả các chân trong 1
Port đều kết nối để tác động ở mức cao thì điện trở R2 có thể thay bằng điện trở thanh 9
chân vì nó có hình dáng và sử dụng dễ hơn khi làm mạch điện.

Ngoài cách sử dụng điện trở treo, việc sử dụng cổng đệm cũng có tác dụng thay đổi
cường độ dòng điện xuất ra khi ngõ ra ở mức 1, cổng đệm xuất ra tín hiệu ở mức 1 với
áp và dòng lớn khi có tín hiệu mức 1 đặt ở ngõ vào. Tùy theo yêu cầu của người thiết kế
về dòng và áp cần thiết mà chọn IC đệm cho phù hợp. Chẳng hạn từ một ngõ ra P0.0
làm nhiều led sáng cùng lúc thì việc sử dụng IC đệm được ưu tiên hơn.
Có thể sử dụng 74HC244 hoặc 74HC245, tuy nhiên 74HC245 được cải tiến từ
74HC244 nên việc sử dụng 74HC245 dễ dàng hơn trong thiết kế mạch.
Như vậy, ta sẽ chọn cách này trong thiết kế mạch.
4.2.2: 74HC595:
- IC 74LS595 là IC ghi dịch. vào nối tiếp - ra song song. Tức là dữ liệu vào từng bít
nhưng xuất ra cả byte.
- Một trong những ứng dụng chính là quét cột trong điều khiển LED ma trận mà ta sẽ sử
dụng trong đề tài này
- 74LS595 có 5 đầu vào để điều khiển
+ Đầu vào data (chân 14)
+ Chân clock (chân 11)
+ Chân chốt data (chân 12)
+ Chân xuất data (chân 13)
+ Chân xóa data (chân 10)
+ Chân xuất dữ liệu song song QA đến QH (chân 15,1,2,3,4,5,6,7)
+ Chân xuất dữ liệu nối tiếp SQH (chân 9)
- Nguyên lý hoạt động:
4.2.3: 74HC138:
- Một trong những IC phổ biến trong điện tử số. Có rất nhiều kí hiệu khác nhau
tùy thuộc vào hãng và khả năng đáp ứng như: 74HC138, 74HCT138,74LS138, nhưng
khi loại bỏ các kí tự ở giữa, vẫn chung là 74138
- Bài toán: Khi ta cần đóng hoặc mở chỉ một Rơle,LED 7 thanh (trong quét LED
động), contactor, còn các Rơle,LED 7 thanh (trong quét LED động),
contactor, phải ở trạng thái ngược lại thì dùng 74138 (Chọn một đầu điều khiển trong
8 đầu ra).

- Ưu điểm: Tiết kiệm được 5 PIN của VXL vì chỉ cần dùng 3 PIN nối với
A0,A1,A2 (Hoặc A,B,C).
Các thức hoạt động:
- Sơ đồ nguyên lý: Như sơ đồ trên, trong đó A0,A1,A2 (Hoặc A,B,C-Nối với Vi
xử lý), Y ( Nối với đầu điều khiển Rơ le, đèn LED ), Chân E3=Vcc, E2=E1=Gnd.
(Chú ý datasheet, vì có một số dòng là E1-Vcc, E2=E3=Gnd)
- Mô tả cách thức hoạt động như sau:
• A0,A1,A2 (Hoặc A, B,C) : Đầu vào cua IC 74138, dạng BCD Dữ liệu cần điều
khiển, dữ liệu mà cần out ra để điều khiển Rơ le, Đèn led từ vi xử lý.
• E1,E2,E3 : giống chư Chip enable =E3 and (not(E1)) and (not(E2)). (Chú ý
datasheet, có thể khác)
• Y : Có 8 đầu ra, nhưng chỉ có một đầu có mức logic khác với 7 đầu còn lại căn cứ
theo A,B,C. Khi A=B=C=0 tức đầu Y0=0 các đầu Y còn lại =1 (IC thường mức
tích cực thấp, trong IC số nhứ 74373m 74245 CE=0 là trạng thái hoạt động, nên
có thể nối thẳng PIN Y vào CE của các IC khác)
4.2.4: 74HC245:
Chức năng:
- Đây là một loại IC số khá phổ biến, tên gọi chung là 74245, tùy thuộc vào tần số đáp
ứng và công ty sản xuất sẽ có các tên họi khác nhau như 74HC245, 74HCT245 nhưng
khi loại bỏ các kí tự ở giữa, vẫn chung là 74245.
- Bài toán: Khi ta cần kiểm soát một số lượng trạng thái, cảm biến tiếp điểm mà số đầu
cần kiểm soát lên tới > 10 điểm, có khi tới 40 điểm, bạn không thể nối tất cả các cảm
biến này với vi xử lý vì không thể đủ Port. Vì vậy, chúng ta phải sử dụng đọc dữ liệu
theo kiểu BUS và dùng 74245 như là bộ nhớ đệm đầu vào cho vi xử lý.
Các thức hoạt động:
- Sơ đồ nguyên lý: Như sơ đồ trên, trong đó A ( đầu vào Vi xử lý), B ( đầu vào lấy tín
hiệu từ sensor), Chân AB/BA nối Gnd và quan trọng nhất là chân CE (Chip enable).
- Với sơ đồ trên, tôi giới thiệu các bạn sử dụng 2 IC 74HCT235 để đọc dữ liệu trạng thái
on/off từ 16 cảm biến sensor khác nhau
• PORT A : Đầu ra của 74245 và được đấu vào đầu vào của vi xử lý, tất cả các

PORT A của các IC 74245 được đấu chung để tạo thành đường dữ liệu BUS 8bit.
• PORT B : Đầu vào của 74245 , được đấu vào các trang thái on/off của sensror,
mối một PIN được đấu với một sensor khác nhau, và lưu ý, nếu sensor chưa có
điện trở Pullup thì phải thêm một dãy diện trở Pullup vào PORT B để luôn đảm
bảo trạng thái logic cho PORTB.
• CE : Chân chọn chíp, trạng thái tích cực thấp, khi muốn PORT A = PORT B thì
CE=0 (các IC 74245 khác bắt buộc CE=1 để ngăn không cho PORTA=PORTB,
nếu quên điều này, dữ liệu sẽ lung tung, không kiểm soát được như " Có một lối
ra, chỉ vừa một người đi mà ta mở đến 4 cửa, 4 người chen chúc nhau đi)
Như vậy, 74HC245 dùng để đệm dòng tín hiệu, chống nhiễu khi mạch hoạt động
ở tốc độ quét cao. Áp dụng cho mạch, ta đặt ngay sau đường 8 tín hiệu từ khối điều
khiển đi ra.
Ta chọn dòng 74HCxxx vì mạch ma trận trong đề tài tiêu thụ công suất không
nhỏ nên dòng 74HCxxx sẽ hoạt động ở dòng cao tốt hơn dòng 74LSxxx, mà vẫn đap
ứng tốt tần số hoạt động (dòng 74LSxx có tần số hoạt động cao hơn)
4.2.5: ULN2803:
Sơ đồ chân:
Nhiệm vụ và các thông số kỹ thuật:
- Đệm ngõ ra cực thu hở, giúp ổn định dòng.
- Các chân tín hiệu vào 1 đến 8 ra tương ứng các chân 18,17,16,15,14,13,12,11
- Nếu đầu vào là 0 thì đầu ra thả nổi
Nếu đầu vào là 1 thì đầu ra là 0
- Như vậy ULN2803 có khả năng hút dòng lớn và không có khả năng phun
dòng, nên ta áp dụng làm bộ đệm cho giải mã cột.
- Các chân 9 nối GND và 10 nối Vcc
4.2.6: Transistor B562:
- Là transistor thuận, dùng để khuếch đại dòng tín hiệu điều khiển thành tín hiệu
có dòng cao cấp nguồn 1 hàng led sáng.
- Mắc transistor theo sơ đồ sau:
- R1=1K; R2=10K

- Nguồn dòng cao +5V
4.3 Sơ đồ nguyên lý:
- Sơ đồ nguyên lý khối điều khiển:
Khối MCU 8051
Trong đó:
4 đường tín hiệu TH1, TH2, TH3, dem cho mạch quét hàng
3 đường tín hiệu data, shift, latch cho mạch giải mã cột
Mạch giải mã cột và mạch quét hàng:
- Sơ đồ nguyên lý khối đệm:
Có 8 mạch transistor đệm dòng tín hiệu cho CH1, CH2, CH3, CH4, CH5, CH6,
CH7, CH8 tương ứng với H1, H2, H3, H4. H5, H6, H7, H8
Có 3 mạch hút dòng sử dụng ULN2803: mỗi mạch có 8 đầu vào và 8 đầu ra, tổng
cộng 24 chân. Vào CC1 đến CC24 tương ứng ra với C1 đến C24
4.4 Thi công mạch in:
5. Code nạp cho AT89C51:
#include <AT89X51.H>
#define f 4
#define so_hang 8
#define so_cot 24
#define data P2_0 //chan xuat chuoi bit du lieu
#define shift P2_1 //xuat du lieu
#define latch P2_2 //ghi du lieu
#define dem P2_3 //chan dem dieu khien 74245
#define hang P0 //Port dk hang
unsigned char ram[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
unsigned char
cldt[]={0,129,130,130,130,130,249,0,0,200,40,40,40,37,194,0,0,190,160,188,160,32,62
,0};
char x,y,z;

void delay(unsigned int ms)
{
unsigned int i;
unsigned char j;
for (i=0;i<ms;i++) for (j=0;j<120;j++) {}
}
void xuat_data(unsigned char out_data1,out_data2,out_data3)
{
unsigned int i;
for (i=1;i<=8;i++)
{data=0x01&out_data1;shift=1;shift=0;out_data1=out_data1>>1;}
for (i=1;i<=8;i++)
{data=0x01&out_data2;shift=1;shift=0;out_data2=out_data2>>1;}
for (i=1;i<=8;i++)
{data=0x01&out_data3;shift=1;shift=0;out_data3=out_data3>>1;
}
latch=1;
latch=0;
}
void hien_thi(unsigned char t)
{
unsigned char i,j,n;
for(n=0;n<t;n++)
{
for(i=0,j=0;i<so_hang;i++,j++)
{
dem=0;xuat_data(ram[j+16],ram[j+8],ram[j]);hang=i; delay(f);
dem=1;delay(1);
}
}

}
void xoa_ram()
{
unsigned char i;
for(i=0;i<so_hang;i++)
{ram[i]=0;ram[i+8]=0;ram[i+16]=0;}
}
void nap_ram(unsigned char i,j)
{
ram[j]=cldt[i];
ram[j+8]=cldt[i+8];
ram[j+16]=cldt[i+16];
}
void dich_ram(unsigned char i,j)
{
ram[j]=ram[i];ram[j+8]=ram[i+8];ram[j+16]=ram[i+16];
ram[i]=0;ram[i+8]=0;ram[i+16]=0;
}
void main()
{
while(1)
{
xoa_ram();
for(z=(so_hang-1);z>=0;z )
{
nap_ram(z,0); hien_thi(5);
for(x=0,y=1;(x<z);x++,y++) {dich_ram(x,y); hien_thi(5);}
if(z==0) hien_thi(500);
}
}

}
6. Tài liệu tham khảo: google.com, www.alldatasheet.com, codientubkdn.com,
dientuvietnam.net
7. Thi công mạch in :
Mạch điều khiển led ma trận:
Lớp mạch hàn:
Bảng ma trận led8x24:
Lớp dưới (mặt hàn):
Lớp trên (gắn led)
Hình ảnh khi hoạt động:
8. Kết Luận

×