báo cáo thực hành

29
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

Upload: minh-son

Post on 04-Jul-2015

752 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Báo cáo thực hành

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘIKHOA Đ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

Page 2: Báo cáo thực hành

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.

Page 3: Báo cáo thực hành

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 80512. Cơ sỏ lý thuyết:

- Sơ đồ ma trận led:o Các led được phân chia thành hàng và cộto 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.

Page 4: Báo cáo thực hành

Khố

i điề

u kh

iể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

MC

U 8

051

Mạch giải mã cộtTí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).

Page 5: Báo cáo thực hành

- 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 ledULN2803 đệ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ội4 Port xuất/nhập 8 bitTừ 2 đến 3 bộ định thời 16-bitCó khả năng giao tiếp truyền dữ liệu nối tiếpCó 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

Page 6: Báo cáo thực hành

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ếpP3.1(TxD): Ngõ xuất dữ liệu nối tiếpP3.2(INT0): Ngõ vào ngắt cứng thứ 0P3.3(INT1): Ngõ vào ngắt cứng thứ 1

Page 7: Báo cáo thực hành

P3.4(T0): Ngõ vào của Timer/Counter thứ 0P3.5(T1): Ngõ vào của Timer/Counter thứ 1P3.6(WR): Ngõ điều khiển ghi dữ liệu lên bộ nhớ ngoàiP3.7(RD): Ngõ điều khiển đọc dữ liệu từ bộ nhớ bên ngoàiP1.0(T2): Ngõ vào của Timer/Counter thứ 2P1.1(T2X): Ngõ Nạp lại/thu nhận của Timer/Counter thứ 2Châ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

Page 8: Báo cáo thực hành

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ại4.2.1.3 Kết nối phần cứng:

Kết nối trên hai chân XTAL1 và XTAL2Mạ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áyGọ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ểnNhư 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áyTck=12/(12.106)=10-6s =1µsChí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 9Việ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

Page 9: Báo cáo thực hành

độ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 ledCá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

Page 10: Báo cáo thực hành

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

Page 11: Báo cáo thực hành

- 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:

Page 12: Báo cáo thực hành

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).

Page 13: Báo cáo thực hành

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:

Page 14: Báo cáo thực hành

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)

Page 15: Báo cáo thực hành

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

Page 16: Báo cáo thực hành

- 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:

Page 17: Báo cáo thực hành
Page 18: Báo cáo thực hành

- 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

Page 19: Báo cáo thực hành

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

Page 20: Báo cáo thực hành

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;

Page 21: Báo cáo thực hành

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;

}

Page 22: Báo cáo thực hành

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:

Page 23: Báo cáo thực hành

Lớp mạch hàn:

Page 24: Báo cáo thực hành

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