Tìm hiểu và điều khiển Module LED Matrix P10

Sau một thời gian nghiên cứu và code thành công điều khiển module led matrix P10, hôm nay mình xin mạo muội viết tut nhỏ hướng dẫn các bạn cách điều khiển P10.

Đây là thành quả của mình



Đầu tiên chúng ta hãy xem hình ảnh thực thế của P10



- Module 16x32 đơn sắc có 16 hàng và 32 cột,có 16 con 74hc595 là ic ghi dịch 8 bit mắc nối tiếp nhau.


- Tất cả các chân anot của mỗi hàng được nối chung vào nhau , được cấp điện qua Mofet và ic 74hc138

- 4 con 74hc595 trên cùng phụ trách bật tắt 4 hàng led trên cùng là 1,2,3,4. cụ thể con 1 bật tắt 8 led đầu tiên,con 2 bật tắt 8 led tiếp,con 3 bật tắt 8 led tiếp theo,con 3 bật tắt 8 led cuối cùng

- 4 con 74hc595 tếp theo phụ trách bật tắt 4 hàng led là 5,6,7,8. cụ thể con 5 bật tắt 8 led đầu tiên,con 6 bật tắt 8 led tiếp theo ,con 7 bật tắt 8 led tiếp theo,con 8 bật tắt 8 led cuối cùng

- 4 con 74hc595 tếp theo phụ trách bật tắt 4 hàng led là 9,10,11,12. cụ thể con 9 bật tắt 8 led đầu tiên,con 10 bật tắt 8 led tiếp theo ,con 11 bật tắt 8 led tiếp theo,con 12 bật tắt 8 led cuối cùng

- 4 con 74hc595 cuối cùng phụ trách bật tắt 4 hàng led là 13,14,15,16. cụ thể con 13 bật tắt 8 led đầu tiên,con 14 bật tắt 8 led tiếp theo ,con 15 bật tắt 8 led tiếp theo,con 16 bật tắt 8 led cuối cùng

- dữ liệu được truyền như sau:



Dữ liệu truyền theo kiểu từ trên xuống, từ phải sang trái, bắt đầu từ con 74hc595 thứ 4 -> thứ 8 -> thứ 12 -> thứ 16 -> thứ 3 -> thứ 7 ..... - cách quét led rất đơn giản, chỉ cần quét 4 phát là quét được toàn bộ môdun, đơn giản cụ thể như sau:

- cách quét led rất đơn giản, chỉ cần quét 4 phát là quét được toàn bộ môdun, đơn giản cụ thể như sau:



+ phát thứ nhất: tắt hết các hàng, Truyền dữ liệu cho 74hc595 bật hàng số 1,5,9,13 ( phát này quyét 4 hàng 1 lúc)

+ phát thứ hai: tắt hết các hàng, Truyền dữ liệu cho 74hc595 bật hàng số 2,6,10,14 ( phát này quyét 4 hàng 1 lúc)

+ phát thứ ba: tắt hết các hàng, Truyền dữ liệu cho 74hc595 bật hàng số 3,7,11,15 ( phát này quyét 4 hàng 1 lúc)

+ phát thứ tư: tắt hết các hàng, Truyền dữ liệu cho 74hc595 bật hàng số 4,8,12,16 ( phát này quyét 4 hàng 1 lúc)


( Code Full + Nguyên lý - Mạch in ) Link Mediafire
Khi nhấn nút "Tải Về Máy", bạn sẽ vào trang quảng cáo, vui lòng chờ 5 giây. Nút  hiện ra ở góc phải phía trên, nhấn vào để đến trang download

Giải thích chương trình

Khai báo chân điều khiển của 89s52 nối với module

sbit OE=P2^0;// cho phép 74hc138 xuất dữ liệu

sbit A138=P2^1;// chân dữ liệu

sbit B138=P2^2;// chân dữ liệu

sbit CLK=P2^3;// xung 74hc595



sbit SCLK=P2^4;// chốt 74hc595



sbit DATA=P2^5;// dữ liệu 74hc595



Module có 16 hàng, có 32 cột, do mỗi 74hc595 điều khiển 8 cột lên ta có 32/8=4



Ta sẽ khai báo như sau:



#define so_hang 16



#define so_led 4



Ta sẽ định nghĩa kiểu dữ liệu như sau



typedef unsigned char uchar;



Ta sẽ lưu dữ liệu màn hình vào một mảng lưu trong RAM tương ứng với số hàng và số led



idata uchar Dmem[so_hang][so_led];



Có rất nhiều cách điều khiển 74hc595, do thói quen nên mình viết như sau



void dk595(uchar x)



{



uchar temp,i;



for(i=0;i

{

temp=x;

temp=temp&0x80;

if(temp==0x80) DATA=1; else DATA=0;

CLK=1;CLK=0;

x=x*2;

}

}


Để 74hc595 xuất dữ liệu sau khi dịch dữ liệu xong thì ta phải chốt lại

void chot595()

{

SCLK=1;SCLK=0;

}

Do module quét theo phương pháp ¼ nên mỗi lần quét thì sẽ có 4 hàng sáng cùng lúc.

void dk138(uchar h,uchar enoe)

{


switch(h)

{

case 0: A138=0;B138=0;break;

case 1: A138=1;B138=0;break;

case 2: A138=0;B138=1;break;

case 3: A138=1;B138=1;break;

}

OE=enoe;


}

Biến h tức là hàng số mấy, biến enoe cho phép 74hc138 xuất dữ liệu hay không.
Hoc_master_p10_ (2).png
Do có nhiều 74hc595 nối tiếp nhau, nên cái gì đẩy vào đầu tiên, sau khi chốt thì nó sẽ ở con cuối cùng.

Căn cứ vào hướng dịch dữ liệu của module, ta có chương trình như sau

void dichdl()

{

uchar i,j,k;

for(k=0;k

{

for(j=0;j

{

for(i=0;i

{

dk595(Dmem[12+k*2-(k+i*4)][j]);

}

}


chot595();

dk138(k,1);

delay(50);

dk138(k,0);

delay(50);

}

}


Để kiểm tra xem ta dịch đúng hướng dữ liệu chưa, ta sẽ có code kiểm tra nếu hàng chẵn thì chỉ 1 led sáng, hàng lẻ thì cả hàng sáng

void test_led()

{

uchar i,j;

for(i=0;i

{

for(j=0;j

{

if(i%2==0) Dmem[j]=0x00; else Dmem[j]=~0x01;

}

}

}

Chương trình chính

void main()

{


test_led();


while(1)

{

dichdl();

}

}

Để tạo font cho led matrix, các bạn sử dụng phần mềm LCD Font Maker.

Các bạn chỉ cần nhập chữ muốn hiển thị vào ô char input, muốn thay đổi font chữ kích vào Choose Font và chọn tùy ý muốn



Sau khi đã chọn được font theo ý muốn, các bạn nhấ vào hình cài đặt, bên cạnh ngôi nhà vào chọn hướng dữ liệu như hình.



Sau đó nhấn vào hình ngôi nhà để tạo mã led. Nhấn vào copy all để sao chép mã led

Đến đây các bạn Paste vào file font_matrix.h và biên dịch, nạp code và chiêm ngưỡng thành quả.

Vậy là xong bản test module, bài sau mình sẽ hướng dẫn để code sao cho chữ chạy từ phải sang trái.

Mọi thắc mắc các bạn có thể liên hệ Facebook: http://facebook.com/maingochoc.mtt

Chúc thành công.

Theo Mai Ngoc Hoc
In bài này
Previous
Next Post »

Bạn đọc hãy giúp chúng tôi xây dựng cộng đồng bằng cách để lại bình luận, chúng tôi luôn đón nhận mọi ý kiến của các bạn:
» Bình luận nghiêm túc và không chứa các liên kết quảng cáo.
» Vui lòng không Spam nhận xét với mọi hình thức.
» Rất mong bạn đề tên cho nhận xét của chính mình - Bằng cách chọn vào Tên/URL và điền tên bạn vào (Phần URL có thể bỏ trống ).

- Bạn có thể chèn Link nhạc (NCT), video(Youtube),Hình ảnh vào comment bằng cú pháp:
+ [youtube] Link video Youtube [/youtube].
+ [img] Link ảnh( định dạng PNG, JPG,GIF) [/img]
+Chèn link liên kết: <a href="LINK" rel="nofollow">Name</a>
-Bạn copy mã bên cạnh biểu tượng chèn vào nhận xét để bày tỏ cảm xúc!! ConversionConversion EmoticonEmoticon

       Mạch Khóa Số Điện Tử Mạch Đếm Sản Phẩm Mạch Đèn giao thông Ngã Tư Mạch Trái Tim Final Mạch Trái Tim Final Mạch Trái Tim I Love U

THƯ MỤC KHO TÀI LIỆU MIỄN PHÍ ECHIPKOOL

Code 8051 - ASM Code 8051 - C Code AVR - C Code led sao băng Code PIC - C Điện tử cơ bản điện tử viễn thông Đo Nhiệt Độ DS18B20 + LCD Đo Nhiệt Độ LM35 + LCD Đo Nhiệt Độ LM35 + Led 7 thanh Đo tốc độ động cơ Động cơ robo Ebook Đại Học ebook điện tử Ebook đồ án Học Orcad Học Protues Hồng ngoại Lập Trình 8051 Lập Trình AVR lập trình c++ Lập Trình Led Quảng Cáo lập trình PIC Lập trình Robot Lập trình VHDL Lcd16x2 Led Clock Led Quay Led RGB Mạch 7seg Mạch Amply.Mạch Loa Mạch Cảm Biến Mạch cube Mạch Đếm Sản Phẩm Mạch điện cơ bản Mạch điện hay Mạch Điện Ứng Dụng Mạch đọc file nhạc MP3 dùng Atmega 8 Mạch Động Cơ Mạch đồng hồ Mạch đồng hồ LCD Mạch đồng hồ Matrix Mạch giao thông Mạch in Mạch khóa số điện tử Mạch Led đơn Mạch Led Quảng Cáo Mạch Led Vumeter Mạch Ma trận Phím Mạch Matrix Mạch nạp Mạch nguồn Mạch Nút Bấm Mạch RS232 Mạch RS485 Mạch thu phát Mạch tổ hợp MSI Mạch trái tim Mạch truyền điện không dây Mạch Vi điều khiển Module Bluetooth Module Sim Module Sim548 Motor Nhiệt độ - Độ ẩm oscilloscope Phần mềm điện tử Phần Mềm Diệt Viruts Phần Mềm Hay Phần Mềm Led Quảng Cáo Phần mềm vi tính robocon Rule robocon Sạc Acquy Sản Phẩm Thương Mại Sáng tạo Smart Home Tài liệu Điện Tử Tranzitor Tụ điện TUT - 8051 - ASM TUT - 8051 - KeilC UART Ứng Dụng Led Quảng Cáo Ứng dụng USB USB TO COM Vi điều khiển - Ứng dụng Vi mạch số VOM Wifi ESP8266