Thứ Hai, 14 tháng 11, 2016

Các Bước Lập Trình Module Led Ma Trận Chuẩn

Trong thời kỳ cuộc sống khó khăn, cạnh tranh hiện tại, đối với sinh viên hay nhưng cửa hàng nhỏ thì việc đi thuê làm 1 mạch điều khiển, module led ma trận lãng phí, tốn kém. Để bớt phải đóng vóp tiền cho nhà mạng VNPT mình chia sẻ một tutorial tạm gọi là chi tiết. Hi vọng tutorial này sẽ giúp đỡ các bác đang nghiên cứu về module led ma trận hoặc mạch điều khiển đèn led, led đúc f5 tiết kiệm được thời gian và công sức hơn.

Dạo này có rất nhiều bạn có hỏi mình về các thiết kế mạch module led ma trận, led đúc f5? đại khái như sơ đồ mạch led điều khiển đèn led thiết kế như thế nào, dùng những IC nào, quét theo hàng hay theo cột, làm sao hiển thị được chữ A, bộ font chữ tạo ra như thế nào…

Bây giờ thì bắt tay vào việc nhé. Trước tiên hướng tới thành quả cuối cùng để lấy hứng thú làm việc.



Em cũng đưa vào một hiệu ứng đơn giản là chữ “CHAO” sẽ cuộn tròn. Các bác có thể xem hiệu ứng này ở file avi download ở link sau:

http://rapidshare.com/files/133093020/Picture_028.rar

Chúng ta sẽ cần 02 miếng breadboard màu trắng để cắm 3 led ma trận 2 màu 8x8 vào (module led ma trận). Các bác cắm sát vào phía bên trái của breadboard nhé. Khi cắm vào sẽ trông như sau:




Phù vậy là xong được 30% công việc lập trình mạch module led ma trận rồi anh em nha. 30% nữa là cắm dây để kết nối mạch và 30% là để viết chương trình. 10% để gọi ai đó đến xem thành quả của chúng ta.

Ta sẽ đánh dấu các chân của moduel led ma trận nhỉ? Các bác quay cái phía có chữ của led ma trận lên trên nhé. Lưu ý led ma trận của chúng ta là 2 màu có anot chung, một đầu cathot là của led màu xanh và đầu kia màu đỏ. 24 chân của module led ma trận p10 2 màu 8x8 này em đánh dấu như sau (áp dụng cho led đúc f5):


Từ trái sang phải, trên xuống dưới thứ tự chân các led ma trận là:
- H1 Đ1 X1 H2 Đ2 X2 H3 Đ3 X3 H4 Đ4 X4
- H5 Đ5 X5 H6 Đ6 X6 H7 Đ7 X7 H8 Đ8 X8
Để các led đơn trên module led ma trận sáng lên ta sẽ cấp dương nguồn vào các chân H1 – H8 và âm nguồn vào các chân Đ1 - Đ8, X1 - X8 tương ứng. Ví dụ ta muốn sáng led đỏ ở hàng thứ 5 và cột thứ 3 thì ta làm sao đó để cấp dương nguồn vào chân H5 và âm nguồn vào chân Đ3.
Chúng ta sẽ dùng nguyên lý quét theo hàng, tức là đầu tiên sẽ cấp nguồn vào chân H1, cùng lúc đó dữ liệu ta sẽ đưa ra các chân Đ1 – Đ8 và X1 – X8. Sau đó không cấp nguồn cho chân H1 nữa mà cấp nguồn cho chân H2 và dữ liệu tương ứng tiếp theo sẽ đưa ra các chân Đ1 – Đ8, X1 – X8. Cứ tiếp tục như thế cho đến chân H8 rồi quay trở lại chân H1.

Ta sẽ nối các chân H1 của tất cả các led ma trận lại với nhau nhé. Nối như thế này, rất đơn giản:

Sau đó các bác kiên nhẫn nối các chân H2, H3…H8 lại với nhau. Bây giờ ta nói đến chuyện làm cách nào để cấp nguồn tuần tự từng hàng nhé.

Ta sẽ sử dụng 8 transitor B564, nối các chân C của 8 transitor này với các chân H1-H8, chân E nối lên dương nguồn 5V, chân B là chân điều khiển. Khi chân B ở mức 1, transitor B562 không dẫn, H1 không có dương nguồn. Khi B được kéo xuống mức 0, transitor B562 sẽ dẫn, lúc đó H1 sẽ được nối với nguồn 5V (tương tự led đúc f5">led đúc f5).


Ta có 8 chân cần cấp nguồn lần lượt H1 – H8 tức là có 8 chân nối với các chân B (qua điện trở 1k) của transitor B562 CH1-CH8. Ta có thể nối thẳng các chân điều khiển này vào vi xử lý (ở đây em sẽ dùng con có sẵn là ATMEGA8518). Nhưng như vậy thì phí chân MCU quá, để chân MCU còn làm việc khác khi mở rộng mạch sau này. Do đó em em sẽ nối các chân CH1 - CH8 với con 74HC138. Qua con IC giải mã 3 ra 8 này em chỉ tốn 4 chân, 3 chân điều khiển tín hiệu A, B, C và một chân điều khiển tín hiệu cho phép cho nó. Nguyên lý làm việc của con này bác nào chưa hiểu thì xem thêm datasheet nhé.
Rồi cắm 8 chú B562 này vào breadboard, mỗi chú có thêm 2 em điện trở đi kèm. Em bám vào chân B 1k, còn em lên dương nguồn thì 10k. Cắm cũng chẳng lâu đâu, xíu xiu thôi mà:

Cả chú 74HC138 luôn, nhưng hết chỗ cho chú rồi, cho chú sang board khác vậy



Và dưới đây là schematic của tutorial này nhé:
(em đang không vào được mạng qua đường chính thống, phải đi qua proxy nên không xài chức năng upload file của diễn đàn được, các bác chịu khó down rapidshare

http://rapidshare.com/files/133103844/Orcad.rar

Vậy ta đã giải quyết xong vấn đề cấp nguồn, giờ còn việc đưa data ra các chân Đ1 - Đ8, X1 – X8 của 3 con led ma trận. Ta sẽ cần 6 con IC dịch 74HC595. Nguyên lý làm việc của con này mong các bác tham khảo ở datasheet. Em chỉ tóm tắt thế này. Chân DATA_IN là đường dữ liệu vào (bit dữ liệu nối tiếp). Một xung SCK sẽ làm bit này đi vào thanh ghi dịch trong bụng con 74HC595. Sau 8 bit liên tục thì thanh ghi dịch này sẽ đầy. Tiếp tục đưa bit thứ 9 vào thì bit đầu tiên sẽ bị lòi ra chân số 9 và bit này lại là bit đầu tiên của IC 74HC595 tiếp theo (chân 9 của IC trước nối chân 14 của IC sau). Ta sẽ phải đưa liên tục 8 x 6 = 48 bit để xuất đủ dữ liệu cho 2 màu xanh và đỏ.

Tuy nhiên cần lưu ý là thanh ghi dịch mới chỉ thay đổi trong bụng con 74HC595 thôi chứ chưa đưa ra các chân. Muốn đưa dữ liệu từ các thanh ghi dịch này ra các chân 74HC595 thì cần đưa một xung vào chân RCK (chân số 12).



Các bác để ý là 6 chân SCK của 6 IC 74HC595 nối nhau và đưa về MCU, 6 chân RCK cũng tương tự. Chân G (enable) được nối mass và chân MR (chân reset) nối lên nguồn.

Trong tutorial này, để tiết kiệm thời gian cho em và cho các bác, em chỉ cắm 3 con 74HC595 phục vụ cho việc sáng các led đỏ. Các bác có thể làm với cả 6 IC dịch để sáng được cả các led xanh nếu muốn.
Các bác xem hình ảnh khi cắm xong 3 con 74HC595 này, hơi rối một chút nhưng bác sỹ bảo không sao:



Rồi, đưa cả con MCU vào luôn nhé, ở đây em dùng ATMEGA8515. Schematic các bác xem ở bài trước. Bác nào xài PIC thông cảm nhé, bữa nào em rảnh em làm lại cái này với PIC vậy



Oái, sao tự nhiên nó sáng mấy cái led vậy, chắc con ATMEGA8515 của em đang chạy chương trình cũ của nó. Các bác đừng quan tâm nhé.

Vậy là phần cứng đã xong, em để 1,2 ngày để các bác viết thử phần mềm. Các bác cần lưu ý là em không sử dụng điện trở hạn dòng nhé. Thông thường người ta sẽ hạn dòng bằng điện trở 220-330 ohm ở các chân Đ1 - Đ8 trước khi nối vào IC 74HC595. Vì em sử dụng phương pháp quét hàng, mỗi hàng chỉ sáng trong thời gian rất ngắn nên sẽ không ảnh hưởng gì đến tuổi thọ của led. Tuy nhiên khi lần đầu tiên làm với led ma trận các bác sẽ không tránh khỏi việc ngâm điện 5V giữa 2 đầu của led. Em mách các bác một chiêu nho nhỏ, thay vì nối thẳng chân E của các transistor B562 lên nguồn, các bác hãy nối qua một điện trở khoảng 330 ohm. Sau khi chương trình của ta tốt rồi, ta sẽ bỏ các điện trở này đi.

Các bài viết tiếp theo của em sẽ viết về cách hiển thị dữ liệu lên module led ma trận, cách tạo phông chữ bằng phần mềm Microsoft Excel, cách tạo các hiệu ứng dịch chữ, tăng giảm độ sáng, cách làm chữ hiện lên, biến mất... Các bác từ từ đón xem.

Hôm nay ta bắt đầu viết những chương trình đầu tiên, từ cái dễ đến cái khó. Không thể nào có thể viết một phát mà có ngay một dòng chữ chuyển động ngay được. Giống như ta tập đi, từng bước một.
Ban đầu ta sẽ làm sao để bảng led ma trận của ta hiển thị được cứ một điểm sáng lại có một điểm tắt như sau:


Chương trình em sẽ viết rất đơn giản như sau (áp dụng với module led full):

#include <mega8515.h>
#include <delay.h>
#define SCK PORTB.7 //Chân cấp xung để đưa data vào trong thanh ghi dịch
#define DATA PORTB.5 //Chân đưa data vào thanh ghi dịch
#define SCL PORTB.3 //Khi data đã vào trong thanh ghi dịch, đưa một xung ra chân này để đưa data từ thanh ghi dịch ra các chân của IC74HC595

//Bốn chân sau đây điều khiển việc cấp nguồn ra các hàng của led ma trận
#define A PORTC.0;
#define B PORTC.1;
#define C PORTC.2;
#define OE1 PORTC.3;

unsigned char i,j;
void Data_in(unsigned char k){ // k là bit dữ liệu vào có giá trị là 0 hoặc 1;
DATA=k; // DATA đưa dữ liệu vào thanh ghi dịch
SCK=0; // Tạo ra một xung ở chân SCK
SCK=1;
}
void LatchData(){
SCL=0; // Sau khi đưa đủ dữ liệu vào các thanh ghi dịch
SCL=1; // ta tạo một xung để đưa dữ liệu từ thanh ghi dịch ra các chân của 74HC595
}
void main(void){
DDRB=0xFF; // Cho PORTB, PORTC là output hết
DDRC=0xFF;
SCK=1; // Ban đầu đưa các chân này lên 1
SCL=1; // Để tạo xung ta sẽ cho nó băng 0 rồi lại bằng 1
while (1){
for (i=0;i<=7;i++){ // 8 hàng, từ hàng 0 đến hàng 7 (H1 - H8)
// Ta có tất cả 8 hàng và 24 cột. Do đó phải đưa 24 bit dữ liệu ra các thanh ghi dịch (vòng lặp for gọi 12 lần, mỗi lần đưa ra 1 bit 1, 1 bit 0)
for (j=1;j<=12;j++){
Data_in(0);
Data_in(1);
}
// Đưa ra thanh ghi dịch xong rồi, đưa data ra các chân của 74HC595
LatchData();
// PortC sẽ đưa ra các số từ 0 đến 7 ở các chân PORTC.0, PORTC.1,.PORTC.2,... Ta cộng thêm 8 để muốn chân PORTC.3 sẽ luôn bằng 1. Con 74HC138 sẽ ở trạng thái tích cực để giải mã từ 3 ra 8.
PORTC=i+8;
// Delay một chút để tạo hiện tượng lưu ảnh của mắt. Các bác hãy thay đổi giá trị này để thấy rõ hiệu ứng quét hàng. Thay số 3 bằng 50 chẳng hạn.
delay_ms(3);
}
};
}

Vậy là xong bài lập trình đầu tiên. Dễ như ăn cháo các bác nhỉ?

(Nguồn: dientuvietnam.net)

1 nhận xét:

  1. Trong số những loại bảng hiệu quảng cáo hiện nay, có lẽ bảng hiệu đèn Led là loại bảng hiệu được nhiều người ưa chuộng hơn cả bởi hiệu ứng nổi bật mà led mang lại.
    Xuất phát từ những đặc tính của mình mà bảng hiệu đèn led không hề rẻ chút nào, so với các loại bảng hiệu từ chất liệu khác thì chúng có lẽ là loại bảng hiệu có giá thành cao nhất. Tuy nhiên những gì mà chúng mang lại là hoàn toàn xứng đáng với giá thành như trên, cụ thể:
    + Hiệu suất phát sáng cao
    + Phong phú về màu sắc
    + Có tuổi thọ cao, khoảng 5000 giờ.
    + Độ bền cao, an toàn, thân thiện với môi trường.
    Một số loại bảng hiệu đèn Led hiện đang được sử dụng khá phổ biến, đó là:
    + Bảng hiệu đèn Led siêu mỏng
    + Bảng điện tử Led
    + Bảng hiệu Led ma trận
    + Mica Led
    + Bảng hiệu Led âm
    + Bảng hiệu chữ nổi đèn Led
    Công ty Quảng cáo Đại Phát là đơn vị chuyên cung cấp, thiết kế, thi công các loại bảng hiệu đèn Led nói riêng cũng như các loại bảng hiệu chất liệu khác. Nếu bạn có nhu cầu muốn lắp đặt bảng hiệu quảng cáo nói chung, hãy liên hệ chúng tôi qua hotline: 0935 79 00 28 để được nhân viên chúng tôi tư vấn kịp thời và chính xác nhất.
    Quảng cáo Đại Phát chuyên nhận:
    làm biển hiệu quảng cáo
    làm bảng hiệu quảng cáo
    làm biển quảng cáo led
    làm bảng hiệu inox
    làm hộp đèn mica
    làm bảng hiệu hcm
    làm bảng hiệu tphcm
    làm bảng hiệu quảng cáo hcm
    làm bảng hiệu quảng cáo tphcm
    làm bảng hiệu giá rẻ tphcm
    làm bảng hiệu giá rẻ
    bảng hiệu quảng cáo hcm
    bảng hiệu quảng cáo tphcm
    làm bảng hiệu hộp đèn
    làm bảng hiệu led
    thi công bảng hiệu
    thi công biển quảng cáo
    thiết kế bảng hiệu đẹp
    Địa chỉ: 55 Linh Đông, P. Linh Đông, Q. Thủ Đức, TP. Hồ Chí Minh
    Điện Thoại: 0935 79 00 28
    Email: daiphatgroup2010@gmail.com
    Website: thietkethicongdaiphat.com

    Trả lờiXóa