[help] quét led matrix dùng 89C51

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • Jin9x
    Thành viên mới
    • Sep 2013
    • 8

    #1

    [help] quét led matrix dùng 89C51

    Hi ae, mình dùng 8951 để quét 10 con led matrix 16x40 mà nó bị chớp dữ quá, mọi người giúp mình với
    vì xuất 1 lúc 16 bit nên mình dùng 2 con 74595 để chốt, 3 con 74159 để quét hàng
    code dùng keil C: [C] led matrix - Pastebin.com
    Last edited by Jin9x; 13-10-2013, 19:05.
  • diamond
    Banned
    • Jun 2013
    • 394

    #2
    nó chớp là do tần số quét chưa phù họp bạn cho nó nhanh hơn sẽ hết chớp

    Comment

    • Jin9x
      Thành viên mới
      • Sep 2013
      • 8

      #3
      Nguyên văn bởi diamond Xem bài viết
      nó chớp là do tần số quét chưa phù họp bạn cho nó nhanh hơn sẽ hết chớp
      mình thử rồi bạn, giảm xuống nữa thì nó ko kịp hiện led ra chứ đừng nói là chớp

      Comment

      • myth-coder
        Thành viên tích cực
        • Aug 2011
        • 303

        #4
        Theo mình đầu tiên là cái hàm delay chỉ nên dùng đến biến int thôi, long 4byte đó đại loại delay nên sửa lại như sau:
        Code:
        #include <intrins.h>
        
        void delay( unsigned int n)
        {
            while(n--)
                _nop_();
        }
        hàm dich cũng nên được sửa lại như sau:
        Code:
        void dich( unsigned char ch)
        {
        	char i;
        	;
        	for( i=0; i<8; i++)
        	{
        		ch<<=1;
        		DS=CY;
        		SCK=0;
        		SCK=1;
        	}
        }
        Mà bạn dùng 10 con 16x40 thật à? khủng thế chắc 89xx gánh không nổi đâu.

        Comment

        • Jin9x
          Thành viên mới
          • Sep 2013
          • 8

          #5
          Nguyên văn bởi myth-coder Xem bài viết
          Theo mình đầu tiên là cái hàm delay chỉ nên dùng đến biến int thôi, long 4byte đó đại loại delay nên sửa lại như sau:
          Code:
          #include <intrins.h>
          
          void delay( unsigned int n)
          {
              while(n--)
                  _nop_();
          }
          hàm dich cũng nên được sửa lại như sau:
          Code:
          void dich( unsigned char ch)
          {
          	char i;
          	;
          	for( i=0; i<8; i++)
          	{
          		ch<<=1;
          		DS=CY;
          		SCK=0;
          		SCK=1;
          	}
          }
          Mà bạn dùng 10 con 16x40 thật à? khủng thế chắc 89xx gánh không nổi đâu.
          thanks bạn
          mình lắp 10 con 8x8 thành 2 hàng, ban đầu nghĩ là do vdk yếu, nhưng cũng đang thử tìm coi có biện pháp khác ko

          Comment

          • myth-coder
            Thành viên tích cực
            • Aug 2011
            • 303

            #6
            Nguyên văn bởi Jin9x Xem bài viết
            thanks bạn
            mình lắp 10 con 8x8 thành 2 hàng, ban đầu nghĩ là do vdk yếu, nhưng cũng đang thử tìm coi có biện pháp khác ko
            Có vậy mà cậu làm tớ choáng, nếu chỉ thế này thôi thì xoàng, chạy chữ vô tư. Dùng chính ram của 89x52 làm đệm, dùng timer mà quét thì đảm bảo là vừa dễ lập trình mà mượt thì vô đối.

            Comment

            • Jin9x
              Thành viên mới
              • Sep 2013
              • 8

              #7
              Nguyên văn bởi myth-coder Xem bài viết
              Có vậy mà cậu làm tớ choáng, nếu chỉ thế này thôi thì xoàng, chạy chữ vô tư. Dùng chính ram của 89x52 làm đệm, dùng timer mà quét thì đảm bảo là vừa dễ lập trình mà mượt thì vô đối.
              ko hiểu sao mạch tớ vẫn bị chớp, hiện tại mình đang thử cách thủ công bằng cách xuất data trực tiếp thông qua 2 port của vdk (16 chân, quét 40 cột) chứ không qua IC dịch nữa, cách này thì ko bị giật

              Comment

              • Jin9x
                Thành viên mới
                • Sep 2013
                • 8

                #8
                Nguyên văn bởi myth-coder Xem bài viết
                Có vậy mà cậu làm tớ choáng, nếu chỉ thế này thôi thì xoàng, chạy chữ vô tư. Dùng chính ram của 89x52 làm đệm, dùng timer mà quét thì đảm bảo là vừa dễ lập trình mà mượt thì vô đối.
                ko hiểu sao mạch tớ vẫn bị chớp, hiện tại mình đang thử cách thủ công bằng cách xuất data trực tiếp thông qua 2 port của vdk (16 chân, quét 40 cột) chứ không qua IC dịch nữa, cách này thì ko bị giật

                Comment

                • condonhan
                  Thành viên tích cực
                  • Apr 2012
                  • 233

                  #9
                  Nguyên văn bởi Jin9x Xem bài viết
                  mình thử rồi bạn, giảm xuống nữa thì nó ko kịp hiện led ra chứ đừng nói là chớp
                  mình nghĩ là bác nên thay đổi tần số quét. sẽ có một dải tần số quét phủ hợp (không bị chớp chớp)

                  Comment

                  • myth-coder
                    Thành viên tích cực
                    • Aug 2011
                    • 303

                    #10
                    Mà sao không phải là 16x32 mà lại x40? thực tế thì mình đang dùng cái matrix của bác daohuytien 16x32 dùng 159 quét dòng 595 quét cột, mình dùng timer quét rất mượt tần số quét là 440Hz hoặc 480Hz vì mình quét 1/8 nên mượt như Nhung chẳng rung không giật.

                    Comment

                    • Jin9x
                      Thành viên mới
                      • Sep 2013
                      • 8

                      #11
                      Nguyên văn bởi condonhan Xem bài viết
                      mình nghĩ là bác nên thay đổi tần số quét. sẽ có một dải tần số quét phủ hợp (không bị chớp chớp)
                      mình nghĩ là do mạch mình có vấn đề, mình thử để delay 1ms vẫn bị giật, tăng lên cũng ko được
                      Nguyên văn bởi myth-coder Xem bài viết
                      Mà sao không phải là 16x32 mà lại x40? thực tế thì mình đang dùng cái matrix của bác daohuytien 16x32 dùng 159 quét dòng 595 quét cột, mình dùng timer quét rất mượt tần số quét là 440Hz hoặc 480Hz vì mình quét 1/8 nên mượt như Nhung chẳng rung không giật.
                      bạn share cho mình cái file mô phỏng được ko, nếu có code c càng tốt
                      mình dùng protues, nếu bạn mô phỏng bằng soft khác thì cho mình xin cái hình chụp bản mô phỏng

                      Comment

                      • chung1608
                        Thành viên tích cực
                        • Sep 2009
                        • 4160

                        #12
                        Nguyên văn bởi Jin9x Xem bài viết
                        mình nghĩ là do mạch mình có vấn đề, mình thử để delay 1ms vẫn bị giật, tăng lên cũng ko được


                        bạn share cho mình cái file mô phỏng được ko, nếu có code c càng tốt
                        mình dùng protues, nếu bạn mô phỏng bằng soft khác thì cho mình xin cái hình chụp bản mô phỏng
                        bạn pót cái mạch mô phỏng với code bạn lên xem. Mạch của myth-coder dùng module TQ bán sẵn.

                        Comment

                        • Jin9x
                          Thành viên mới
                          • Sep 2013
                          • 8

                          #13
                          Nguyên văn bởi chung1608 Xem bài viết
                          bạn pót cái mạch mô phỏng với code bạn lên xem. Mạch của myth-coder dùng module TQ bán sẵn.
                          upload.zip

                          bạn xem giúp mình thử
                          mình viết từ đầu, đang muốn chạy mượt xíu trước khi viết thêm function cho nó

                          Comment

                          • diamond
                            Banned
                            • Jun 2013
                            • 394

                            #14
                            Nguyên văn bởi Jin9x Xem bài viết
                            mình thử rồi bạn, giảm xuống nữa thì nó ko kịp hiện led ra chứ đừng nói là chớp
                            cho nó nhanh lên chứ chậm chậm đi thì chớp càng dữ nữa
                            cái còn lại có thể do giải thuất của bạn viết thời gian sử lí lệnh quá lâu thì nó củn chớp đó coi lại code đi

                            Comment

                            • chung1608
                              Thành viên tích cực
                              • Sep 2009
                              • 4160

                              #15
                              Nguyên văn bởi Jin9x Xem bài viết
                              [ATTACH]76053[/ATTACH]

                              bạn xem giúp mình thử
                              mình viết từ đầu, đang muốn chạy mượt xíu trước khi viết thêm function cho nó
                              sau khi kiểm tra mình thấy mạch này là quét cột vì thế sẽ ko thể hiển thị đồng thời cả mịn và rõ đc. Quét cột bạn có 40 cột, tần số quét để ko bị giật là trên 50Hz. 1 chu kì phải quét 40 cột, thì mỗi cột chỉ sáng 2.5% của chu kì từ đó cho thấy nếu tăng tần số quét thì led ko sáng đc. Bạn phải chuyển sang quét hàng thì mới có thể hiển thị ko bị giật còn độ sáng led khi quét 16 cột thì có thể hơi mờ, muốn ko mờ thì chia ra quét cùng lúc 2 hàng hoặc 4 hàng.

                              Comment

                              Về tác giả

                              Collapse

                              Jin9x Tìm hiểu thêm về Jin9x

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

                              Collapse

                              There are no results that meet this criteria.

                              Đang tải...