Vẽ trên ma trận LED 8x32 với 74HC154


8

Làm cách nào để gửi mẫu vào ma trận LED 8x32? Tôi đang sử dụng bộ vi điều khiển AT89S52 với bộ giải mã dòng 74HC154 4-16, lập trình bằng C với Keil IDE. Tôi đã thực hiện quét dọc, nhưng bị vấp ở bước tiếp theo. Tôi sẽ bao gồm các sơ đồ nếu cần thiết. Mạch giống với mạch tôi bao gồm bên dưới chỉ tôi không sử dụng 74HC138, ma trận anode chung và tôi sử dụng UN2804 làm trình điều khiển, tôi không sử dụng bộ nhớ

Cổng 1 là cột, cổng 2 là hàng ... mã:

 row = 0xFF;
     //for (j=0x01; j< 0x08; j<<=1)  {   /* scan left to right */
     for (j=0x00; j<=0x0F; j++)
     {
          E1=0;
          E2=0;
          P1 = j;
          P2 = row;
                                   /* Output to LED Port */
          for (i = 0; i < 100; i++) 
           {  /* Delay for 100 ms */
              delay ();                       /* call delay function */

           }

nhập mô tả hình ảnh ở đây

Câu trả lời:


3

Mẫu thông thường để điều khiển màn hình LED đa pha MxN là chỉ định một hướng là "hàng" và hướng còn lại là "cột", độc lập với bố cục vật lý trên màn hình, do đó hệ thống sẽ cấp năng lượng cho "hàng" dây một lúc và, trong khi mỗi hàng được sắp xếp theo thứ tự, hệ thống sẽ cung cấp năng lượng cho các dây "cột" cho tất cả các LEds trên hàng đó sẽ được thắp sáng.

Mỗi dây cột phải bao gồm một thiết bị để điều chỉnh dòng điện khi được kích hoạt (một điện trở có thể hoạt động ở đây) và mỗi dây hàng phải có một trình điều khiển có thể cung cấp đủ dòng điện để cung cấp cho tất cả các cột cùng một lúc. Phần cứng không phải cho phép nhiều hơn một hàng được điều khiển cùng một lúc, nhưng phải cho phép bất kỳ tổ hợp cột nào được điều khiển.

Các chip 74HC154 có thể hoạt động ổn trong logic chọn hàng, nhưng vì chỉ có một đầu ra có thể hoạt động tại một thời điểm, nên chúng không phù hợp để kiểm soát các cột. Nếu bạn muốn quét "ngang" của mình, để nó được truy cập một cách hợp lý dưới dạng 32 hàng và 8 cột, thì 74HC154 có thể phù hợp để chọn một hàng, nhưng sau đó bạn phải thêm phần cứng bổ sung để cho phép mỗi hàng cung cấp đủ dòng để điều khiển tám đèn LED và bạn cũng phải thêm một cái gì đó vào mỗi đầu ra của UN2804 để hạn chế dòng điện.

Nhiều khả năng những gì bạn muốn làm là thay thế 74HC154 bằng một loạt chip 74HC595 (thanh ghi thay đổi) và điện trở, hoặc một hoặc nhiều chip trình điều khiển LED có giới hạn hiện tại được tích hợp (ví dụ: bốn công cụ Texas TLC5916 , có sẵn từ Digi-Key). Kết nối các chip đó với cổng SPI từ bộ điều khiển của bạn và dịch chuyển từng hàng dữ liệu một cách an toàn. Nếu bạn sử dụng chip trình điều khiển phía thấp (như TLC5916 đã nói ở trên), bạn sẽ phải thay đổi trình điều khiển hàng của mình thành nguồn hiện tại thay vì nhấn chìm nó. Cách đơn giản nhất để làm điều đó chỉ đơn giản là sử dụng tám bóng bán dẫn NPN, mỗi bóng bán dẫn được gắn vào đường ray dương (bạn có thể sử dụng nguồn cung cấp không được kiểm soát nếu muốn), cơ sở được gắn với đầu ra của bộ điều khiển hoặc chip giải mã, và bộ phát được gắn vào một hàng LED.


vậy tôi phải đảo ngược logic? P2 = colum; P1 = Row? ".... thì 74HC154 có thể phù hợp để chọn một hàng ..." Tôi sẽ sớm thử logic này trong phần mềm ...
Rick Ant

Nếu bạn muốn có 32 "hàng" dọc, bạn có thể sử dụng 74HC154 để chọn chúng, nhưng 74HC154 không có khả năng cung cấp nhiều dòng điện (cũng không bị chìm nhiều cho vấn đề đó) và lái xe với chu kỳ nhiệm vụ 1/8 là gần như chắc chắn tốt hơn so với lái xe với chu kỳ nhiệm vụ 1/16. Bạn không cho biết đèn LED có dây theo hướng ngang là cực dương hay cực âm, nhưng tôi khuyên bạn nên sử dụng trình điều khiển mạnh (có thể là bóng bán dẫn rời rạc) cho các hàng và trình điều khiển giới hạn dòng cho các cột (bất kể hàng có cuối cùng là ngang hoặc dọc).
supercat

Nếu bạn muốn màn hình của mình sáng, có thể cần phải có dòng điện cho mỗi dây cột cao hơn dòng tối đa mà đèn LED có thể duy trì an toàn. Để tránh làm cho đèn LED bị hỏng nếu mã ngừng chạy, có lẽ bạn nên thiết kế trình điều khiển hàng của mình để nó không lái một hàng trong một khoảng thời gian quá dài ngay cả khi bộ xử lý gặp trục trặc. Có nhiều cách khác nhau để có thể được thực hiện. Nếu một người đang sử dụng các bóng bán dẫn rời rạc cho các trình điều khiển hàng, người ta có thể thêm một điện trở và nắp cho mỗi cái để hạn chế chu kỳ nhiệm vụ tối đa.
supercat

Ngoài ra, nếu người ta sử dụng bộ đếm để điều khiển các hàng, người ta có thể sử dụng mạch thời gian để phát hiện xem có quá thời gian trôi qua giữa các lần đếm và để trống màn hình hoặc tạo xung đếm "tự động".
supercat

Bạn có một ví dụ mã cho nó? Ví dụ tôi muốn hiển thị ký tự AAAA?
Rick Ant
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.