Thông báo

Collapse
No announcement yet.

Xin giải đáp giùm thắc mắc cho LED ma trận

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Xin giải đáp giùm thắc mắc cho LED ma trận

    Theo mình biết thì muốn hiện chữ trên ledmatrix thì cần phải cấp nguồn cho Led và đưa dữ liệu vào , 2 việc này chắc là song song với nhau, làm sao có thể làm 2 công việc khác nhau trên 1 con chip . Ví dụ Port 1 và Port 2 làm
    2 công việc khác nhau được.Rồi con IC 74HC595 khi muốn đưa dữ liệu ra led ma trận ,trước tiên ta phải đưa dữ liệu vào (Data) rồi cấp xung để nó đưa vào bụng con Ic ghi dịch , và cần 1 xung để nó đẩy ra các chân của IC 595. Mình hỏi là khi dữ liệu vào chân DATA thì đưa từng bit 1 hay là nguyên 8 bit.
    Anh em nao biết xin chỉ giúp mình nha.Thanks nhiều
    Học hỏi là trên hết .

  • #2
    Nguyên văn bởi wish_blue07 Xem bài viết
    Theo mình biết thì muốn hiện chữ trên ledmatrix thì cần phải cấp nguồn cho Led và đưa dữ liệu vào , 2 việc này chắc là song song với nhau, làm sao có thể làm 2 công việc khác nhau trên 1 con chip . Ví dụ Port 1 và Port 2 làm
    2 công việc khác nhau được.Rồi con IC 74HC595 khi muốn đưa dữ liệu ra led ma trận ,trước tiên ta phải đưa dữ liệu vào (Data) rồi cấp xung để nó đưa vào bụng con Ic ghi dịch , và cần 1 xung để nó đẩy ra các chân của IC 595. Mình hỏi là khi dữ liệu vào chân DATA thì đưa từng bit 1 hay là nguyên 8 bit.
    Anh em nao biết xin chỉ giúp mình nha.Thanks nhiều
    Giao tiếp 2 dây thì chắc chắn là sẽ đưa từng bit rùi, có điều bạn phải viết ct để khi ta đưa 8 bit vào thanh ghi A, sau đó gọi ct con, ct con này có tác dụng chuyển lần lượt 8 bit trong thanh ghi A thành từng bit để ghi vào 74595.

    Comment


    • #3
      Theo mình biết thì muốn hiện chữ trên ledmatrix thì cần phải cấp nguồn cho Led và đưa dữ liệu vào , 2 việc này chắc là song song với nhau, làm sao có thể làm 2 công việc khác nhau trên 1 con chip .
      Thực ra không phải là 2 việc làm cùng một lúc đâu, vì nguyên tắc của vi xử lý là tại một thời điểm, CPU chỉ xử lý được một công việc. Đối với điều khiển LED ma trận thì thường là đưa dữ liệu ra trước rồi mới cấp nguồn. Tuy nhiên bạn đừng lo về điều này vì tốc độ xử lý của CPU rất nhanh (rùa như 8051 mà mỗi chu kỳ máy cũng chỉ có 1us), do đó việc quét LED ma trận vẫn thực hiện dễ dàng.

      Rồi con IC 74HC595 khi muốn đưa dữ liệu ra led ma trận ,trước tiên ta phải đưa dữ liệu vào (Data) rồi cấp xung để nó đưa vào bụng con Ic ghi dịch , và cần 1 xung để nó đẩy ra các chân của IC 595. Mình hỏi là khi dữ liệu vào chân DATA thì đưa từng bit 1 hay là nguyên 8 bit.
      74HC595 là thanh ghi dịch vào nối tiếp ra song song, ngoài chức năng dịch, nó còn tích hợp thêm chức năng cho phép chốt dữ liệu. Vì nó là thanh ghi dịch vào nối tiếp nên bạn không thể đưa 8bit dữ liệu đến đầu vào của nó cùng một lúc được mà bạn phải đưa từng bít một. Cứ mỗi bít đưa vào cần có một xung clock cho phép dịch bít đó. Khi dịch đủ 8 bít, cần có 1 xung clock cho phép chốt và 8 bít dữ liệu sẽ cùng out ra một lượt (nếu đầu ra output enable được cho phép).
      For a better world

      Comment


      • #4
        Bạn nên nhớ là ko có khái niệm làm việc đồng thời ở đây nhé
        Tất cả sự việc đều có trước sau cả.
        Do thời gian cách nhau vô cùng nhỏ.(Tính bằng us) nên ta làm sau nhận ra được.
        Chúc vui

        Comment


        • #5
          Mình đang viết bằng chương trình Keil.C , nên xem mấy tài liệu trước thấy người ta khi đưa dữ liệu vào thanh ghi dịch, người ta cho vào mãng dữ liệu , chứ mình đâu thấy từng bit đâu, bởi thế mới khó hiểu . Có phải sử dụng timer 1 để thay cho hàm delay thì nó làm cho màn hình led matrix không bị giật đúng không vậy, ai biết sử dụng timer thế nào cho hợp lý không, tại vì chưa quen với dùng ngắt , anh em nào có tài liệu hay ví dụ liên quan đến ngắt thì pót cho em với nha. Thanks mấy anh trước.
          Học hỏi là trên hết .

          Comment


          • #6
            Mình đang viết bằng chương trình Keil.C , nên xem mấy tài liệu trước thấy người ta khi đưa dữ liệu vào thanh ghi dịch, người ta cho vào mãng dữ liệu , chứ mình đâu thấy từng bit đâu, bởi thế mới khó hiểu .
            - Đây là đoạn chương trình con cho phép dịch 1 byte theo từng bít một ra 74HC595, bạn tham khảo xem nhé:
            ...
            #define COL_DATA P0_0//Chân serial input của 595
            #define SHIFT P0_1//Tín hiệu cho phép dịch của 595
            ...
            void SendByte (unsigned char byte)
            {
            unsigned char i, temp;
            for (i=0;i<8;i++)
            {
            temp = (byte & (1<<i));
            if (temp)
            {
            COL_DATA = 1;
            }
            else
            {
            COL_DATA = 0;
            }
            SHIFT = 1;//Clock cho phép dịch
            SHIFT = 0;
            }
            }
            anh em nào có tài liệu hay ví dụ liên quan đến ngắt thì pót cho em với nha
            - Còn đây là một ví dụ về ngắt timer để cập nhật lại dữ liệu cho LED ma trận
            ...
            void InitSystem ()
            {
            TMOD = 0x01;//Chọn timer 0 chế độ 1
            ET0 = 1;//Cho phép ngắt timer0
            EA = 1;//Cho phép ngắt toàn cục
            TR0 = 1;//Cho Timer0 bắt đầu đếm
            }
            ...
            void Timer0Interrup (void) interrupt TF0_VECTOR//Trình phục vụ ngắt
            {
            TR0 = 0;//Dừng Timer0
            TH0 = 0;//Nạp lại giá trị cho timer
            TL0 = 0;
            TR0 = 1;//Tiếp tục cho đếm

            Rolling();//Cập nhật lại dữ liệu

            }
            ...
            void main ()
            {
            InitSystem();
            while(1)
            {
            Scanmatrix();
            }
            }
            For a better world

            Comment


            • #7
              Thế còn người ta nạp mãng dữ liệu vào chân data , thi có gi khác so với nạp từng bit một vậy bạn.
              Học hỏi là trên hết .

              Comment


              • #8
                Thế còn người ta nạp mãng dữ liệu vào chân data , thi có gi khác so với nạp từng bit một vậy bạn.
                Không phải là nạp mảng dữ liệu vào chân data mà là người ta lưu dữ liệu trong bộ nhớ vào một mảng. Sau đó người ta lấy dữ liệu trong mảng đó, để out ra ngoài. Cho dù là dữ liệu được lưu vào mảng hay không thì khi out dữ liệu ra 595, vẫn phải out từng bít ra như thường.
                For a better world

                Comment


                • #9
                  bạn có thể cho minhg 1 đoạn chương trình mẫu , để mình xem thử không, vì hơi khó , mình chỉ viết 1 màu thôi , chứ không 2 màu
                  Học hỏi là trên hết .

                  Comment


                  • #10
                    bạn có thể cho minhg 1 đoạn chương trình mẫu , để mình xem thử không, vì hơi khó , mình chỉ viết 1 màu thôi , chứ không 2 màu
                    1/ Chương trình mẫu để gửi 1 byte ra 74595 tôi post ở bài trên rồi.
                    2/Muốn có nhiều hơn 1 mầu thì bạn phải tìm mua con ma trận LED nó cho phép sáng 2 mầu. Con này nó có 24 chân. 8 chân dành cho A chung (hoặc K chung), các chân còn lại gồm 8 chân cho màu này, và 8 chân cho màu kia.
                    - Bạn nối 8 chân của 1 màu với 74595, nối 8 chân của màu còn lại với một con 74595 khác. Hai con này được cho phép hoạt động hay không bởi tín hiệu G (cho phép đầu ra) của nó. Muốn sáng màu này thì cho phép con 595 tương ứng rồi out dữ liệu ra. Tương tự cho màu còn lại.
                    For a better world

                    Comment


                    • #11
                      Nguyên văn bởi Toan.Lv Xem bài viết
                      1/ Chương trình mẫu để gửi 1 byte ra 74595 tôi post ở bài trên rồi.
                      2/Muốn có nhiều hơn 1 mầu thì bạn phải tìm mua con ma trận LED nó cho phép sáng 2 mầu. Con này nó có 24 chân. 8 chân dành cho A chung (hoặc K chung), các chân còn lại gồm 8 chân cho màu này, và 8 chân cho màu kia.
                      - Bạn nối 8 chân của 1 màu với 74595, nối 8 chân của màu còn lại với một con 74595 khác. Hai con này được cho phép hoạt động hay không bởi tín hiệu G (cho phép đầu ra) của nó. Muốn sáng màu này thì cho phép con 595 tương ứng rồi out dữ liệu ra. Tương tự cho màu còn lại.
                      Hình như cái byte bạn gửi là bạn định nghĩa trực tiếp luôn?
                      Mình muốn gửi 1 byte được lấy từ 1 mảng ra thì làm như thế nào? nbanj có thể viết lại bằng asm được không
                      Say thanks with any post you think it's helpful...

                      Comment


                      • #12
                        Bạn cho mình hỏi , khi đã lưu liệu vào mảng thì khi muốn xuất dữ liệu ra và ta cấp nguồn cho led cho led hiển thị . Bạn có thể giúp mình đoạn code này không , mình dùng con 74Hc138 quét hàng , 74HC595 quét cột , bạn Toan.Lv giúp mình cái nha. thanks bạn trước
                        Học hỏi là trên hết .

                        Comment


                        • #13
                          Bạn cho mình hỏi , khi đã lưu liệu vào mảng thì khi muốn xuất dữ liệu ra và ta cấp nguồn cho led cho led hiển thị . Bạn có thể giúp mình đoạn code này không , mình dùng con 74Hc138 quét hàng , 74HC595 quét cột , bạn Toan.Lv giúp mình cái nha. thanks bạn trước
                          1/Về phần cứng:Bạn dùng 74LS138 để đưa dữ liệu cho hàng---> với mỗi con 74138 bạn quét được 8 hàng (tại một thời điểm chỉ có 1 hàng sáng, các hàng khác tắt). Mã cho hàng xem trong datasheet của 74LS138.
                          2/Về phần mềm: Bạn thực hiện quét theo trình tự 4 bước sau:
                          - Đưa dữ liệu ra cột
                          - Bật nguồn cho hàng tương ứng
                          - Trễ sáng
                          - Tắt nguồn cho hàng tương ứng
                          Tiếp tục vòng quét như thế cho các hàng tiếp theo. (hoàn toàn giống như quét LED 7 thanh)
                          Khi thực hiện đúng theo 4 bước này, và cho tất cả các hàng bạn sẽ nhận được nội dung tĩnh trên ma trận. Hãy làm từng bước đã, ta sẽ nói đến việc làm cho chữ chạy sau.
                          Code tham khảo gửi trong file đính kèm. Chúc bạn thành công.
                          Attached Files
                          For a better world

                          Comment


                          • #14
                            Cám ơn Toan.LV nha , nhờ bạn mà mình hiểu được hoạt động của timer . Nhưng hiểu về nó thì còn quá sơ xài có nhiều câu hỏi không biết mong được bạn chỉ giáo thêm :
                            Tần số làm việc bộ định thời Timer 1 ( timer 0) có phải = tần số thạch anh/12 đúng kô vậy. Khi muốn thời gian trễ ( theo ý muốn của mình) thì có phải tính theo công thức này không vậy , rồi tự đó chọn được các giá trị để nạp vào THx và TLx
                            T=(FFFF-YYXX+1)xT( chu kỳ của bộ định thời)= T ( trể theo ý muốn 1s ,hoặc 2s ...)
                            YY= THx; XX=TLx
                            Bạn giúp mình nha. Khi quét led ma trận thì nên chọn tốc độ quét bằng nhiêu , để không bị rung.
                            Học hỏi là trên hết .

                            Comment


                            • #15
                              Nguyên văn bởi wish_blue07 Xem bài viết
                              Theo mình biết thì muốn hiện chữ trên ledmatrix thì cần phải cấp nguồn cho Led và đưa dữ liệu vào , 2 việc này chắc là song song với nhau, làm sao có thể làm 2 công việc khác nhau trên 1 con chip . Ví dụ Port 1 và Port 2 làm
                              2 công việc khác nhau được.Rồi con IC 74HC595 khi muốn đưa dữ liệu ra led ma trận ,trước tiên ta phải đưa dữ liệu vào (Data) rồi cấp xung để nó đưa vào bụng con Ic ghi dịch , và cần 1 xung để nó đẩy ra các chân của IC 595. Mình hỏi là khi dữ liệu vào chân DATA thì đưa từng bit 1 hay là nguyên 8 bit.
                              Anh em nao biết xin chỉ giúp mình nha.Thanks nhiều
                              Tất nhiên là 1bit rồi. Kể cả người ta đưa vào mảng dữ liệu thì vẫn là truyền đi từng bit trong 8 bit

                              Comment

                              Về tác giả

                              Collapse

                              wish_blue07 10_9 Tìm hiểu thêm về wish_blue07

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X