Hỏi cách viết code cho led ma trận

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • superpro
    Thành viên mới
    • Sep 2012
    • 9

    #1

    Hỏi cách viết code cho led ma trận

    em có đọc tài liệu và hiểu được nguyên lí rồi nhưng không biết cách viết code,code gồm cái j,trình tự viết thế nào..... em đều không biết,em còn thắc mắc ở chỗ là nếu dùng IC giải mã thì code sẽ thay đổi ntn so với ko dùng,có cách nào để chuyển từ code chạy chữ cho led 8x8 lên 16x16 với chữ to gấp rưỡi(hoặc gấp đôi) không? và còn rất nhiều vấn đề khác
    anh chị có tài liệu nào cụ thể về cái này thì cho em xin,em có đọc nhìu trên mạng nhưng toàn qua loa đại khái,hướng dẫn vài dòng rồi cho nguyên code dài thòng lòng chả hỉu mô tê j hết
  • viboyth.haui
    Thành viên tích cực
    • Feb 2012
    • 300

    #2
    Theo mình thì khi quét led matrix thì bạn nên dùng IC 74595,hoạt động của con 595 này cũng khá đơn giản,dễ nắm bắt
    Trình tự viết chương trình:-Theo mình bạn nên dùng 2 phần mềm phục vụ cho việc viết code và mô phỏng là:Proteus và KeilC
    -Dùng phần mềm tạo mã chữ cho từng chữ cái cần hiển thị bằng phần mềm này :Tao Ma Chu Cho Led Matrix.rar
    tùy theo cách mắc hàng,hoặc cột mà bạn chọn mức tích cực 0 hoặc 1 cũng như thứ tự từ bít 0- bít 7 hoặc ngược lại
    - Viết hàm chuyển đổi dữ liệu nối tiếp sang song song cho 595
    -Dùng hàm quet 595 để quét mã,cho tới khi đủ 8 bit dữ liệu thì xuất ra led matrix
    Tham khảo thêm tại đây: Quét led matrix

    Mình cũng chỉ nói sơ qua được vậy thôi,bạn tham khảo code này của mình,bạn chịu khó đọc,có gì khúc mắc thì lại hỏi tiếp
    Led 3 mau.rar
    Thân!
    vanduc0211@gmail.com

    Comment

    • superpro
      Thành viên mới
      • Sep 2012
      • 9

      #3
      Nguyên văn bởi viboyth.haui Xem bài viết
      Tham khảo thêm tại đây: Quét led matrix
      Thân!
      cho e hỏi ở ví dụ 1 có
      unsigned char mahang[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//mã hàng
      unsigned char macot[8]={0x00,0X7f,0Xff,0X88,0X88,0Xff,0X7f,0X00}; mã cột
      tại sao mã cột lại đối xứng như thế?
      ở ví dụ 2 lại có
      unsigned char hang[8]={0X80,0X40,0X20,0X10,0X08,0X04,0X02,0X01};
      tại sao lại giảm dần như thế?
      a có giải thích kĩ giúp e đc ko?

      Comment

      • viboyth.haui
        Thành viên tích cực
        • Feb 2012
        • 300

        #4
        Đấy là cách quét thôi bạn à:
        -Ví dụ 1: quét led theo hàng (hàng mức tích 0) theo mảng "mahang",dịch dần từ mức tích cực 0 từ bit 0 (0xfe=11111110) tới bit 7 (0x7f=01111111),khi đó mã cột sẽ là mức tích cực 1,bạn dùng phần mềm tạo mã chữ để tạo mã cho từng kí tự cần hiển thị như "macot"
        -Ví dụ 2: quét cột,tương tự như mảng "mahang" trên,mảng "hang" là để quét cho từng hàng,từ bit 7(0x80=10000000) tới bit 0(0x01=00000001),bạn dùng phần mềm tạo mã chữ với mức tích cực 0 để tạo mã chữ cần hiển thị
        vanduc0211@gmail.com

        Comment

        • superpro
          Thành viên mới
          • Sep 2012
          • 9

          #5
          hic,sao các ví dụ ko quét hoặc cột hoặc hàng cho người khác dễ đối chiếu nhỉ
          em hiểu mức tích cực 0 và 1 rồi,em dùng phần mềm tạo mã chữ của Lê Hoàng Việt (hui) thì nó chỉ ra mã cột thôi thì phải,vậy phần mềm đó chỉ dùng cho quét hàng thôi phải ko a?
          em nhờ anh 1 cái nữa,anh có thể biến ví dụ 2 từ "ko có 595" thành "có 595" đc ko a (dùng 595 điều khiển 32 chân) ? em chưa hỉu code sẽ thay đổi thế nào nếu có 595

          Comment

          • viboyth.haui
            Thành viên tích cực
            • Feb 2012
            • 300

            #6
            Nguyên văn bởi superpro Xem bài viết
            hic,sao các ví dụ ko quét hoặc cột hoặc hàng cho người khác dễ đối chiếu nhỉ
            em hiểu mức tích cực 0 và 1 rồi,em dùng phần mềm tạo mã chữ của Lê Hoàng Việt (hui) thì nó chỉ ra mã cột thôi thì phải,vậy phần mềm đó chỉ dùng cho quét hàng thôi phải ko a?
            em nhờ anh 1 cái nữa,anh có thể biến ví dụ 2 từ "ko có 595" thành "có 595" đc ko a (dùng 595 điều khiển 32 chân) ? em chưa hỉu code sẽ thay đổi thế nào nếu có 595
            mình dùng phần mềm của mấy anh HUI,quét cột hay quét hàng thì tùy vào sự quy định mức tích cực 0 hay 1 của bạn thôi,chứ làm gì phần mềm đó quy định là chỉ quét cột hay quét hàng. Còn về con 595 thì khi dùng phải có 1 đoạn code viết để biến dữ liệu vào nối tiếp ra song song,tích đủ 8 bit thì xuất dữ liệu ra thôi,thế này nhé: bây giờ nếu bạn muốn đưa thẳng dữ liệu là mã code "0x7f" chẳng hạn thì bạn viết P0=0xff(=11111111),còn nếu muồn quét dùng 595 thì phải đưa từng số 1 của cái mã kia cho tới khi đủ 8 số 1 rồi xuất đầy đủ ra cho led thôi mà
            void quet(unsigned char x)
            {
            unsigned int i,temp;
            for(i=0;i<8;i++)
            {
            temp=x;
            temp=temp&0x80;//lay ra bit dau tien (bit 7)
            if(temp==0x80)//so sanh bit
            DAT=1;//bang 1 thi xuat vao chip =1
            else
            DAT=0;//nguoc lai bang 0
            x=x*2;//dich bit lay bit trong so thap -(DICH SANG TRAI 1 BIT)
            SCK=0;//tao xung tren chan 11
            SCK=1;//1 xung dua vao 1 bit---DAY DU LIEU VAO IC 74595
            }
            STR=0;
            STR=1;
            }
            Last edited by viboyth.haui; 08-09-2012, 18:12.
            vanduc0211@gmail.com

            Comment

            • superpro
              Thành viên mới
              • Sep 2012
              • 9

              #7
              à vậy cái 0xff kia sẽ ko thay đổi j cả,nó vẫn ở trong code,nhưng trong code có thêm đoạn đưa từng bit ra led qua 595

              em cứ tưởng cái 0xff(111111111) kia nó biến thành cái j đó chỉ có 3 bit thôi (ví dụ 111) vì em thấy chỉ cần dùng 3 chân của vđk để ra 8 chân 595, 111111111 --> 111

              cảm ơn a nhiều nhé

              Comment

              • superpro
                Thành viên mới
                • Sep 2012
                • 9

                #8
                anh viboyth.haui ơi anh có thể nói rõ lại vấn đề quét hàng quét cột rồi vì sao chọn mức tích cực 0 là quét hàng và 1 là quét cột,rồi hàng và cột của led ma trận nữa
                hình như led ma trận có chân catod và anod chung đúng ko a? việc chân nào thành hàng hay thành cột là do mình chọn đúng ko a?

                Comment

                • CONGMINHfs
                  Banned
                  • Jan 2008
                  • 227

                  #9
                  Nguyên văn bởi chjpchjp1991
                  Mình thấy phần mềm Lê Việt Hoàng chỉ thấy xuất mã dành cho asm toàn có H đăng sau,không biết có phần mềm nào viết mã chữ như Lê Viêt Hoàng mà lại xuất mã dùng code c không nhỉ ví dụ từ 0ffh thành 0xff hic/
                  Trong trình dich keil asm mình sử dụng 0FFH hoặc 0xFF đều đươc mà bạn....

                  Comment

                  • dtpd
                    Thành viên mới
                    • Sep 2012
                    • 15

                    #10
                    Có nhiều cách để điều khiển, trong chữ kí bên dưới có đường dẫn đến các ứng dụng của mạch 89,

                    void scan_595(unsigned char dataout)
                    {
                    unsigned char i;
                    for(i=0;i<8;i++)
                    {
                    if(dataout&0x80)
                    {
                    DATA = 1;
                    }
                    else
                    {
                    DATA = 0;
                    }
                    _nop_();
                    SCK = 1;
                    _nop_();
                    SCK = 0;
                    dataout *= 2;
                    }
                    _nop_();
                    STROBE = 1;
                    _nop_();
                    STROBE = 0;
                    }

                    Chú ý cần có thư viện #include<INTRINS.H> để có hàm _nop();
                    Cung cấp linh kiện điện tử, mạch nạp 89,PIC,AVR - website: dientuphuongdung.com
                    .0973291368

                    Comment

                    • nhson113
                      Thành viên chính thức
                      • Oct 2012
                      • 39

                      #11
                      Nguyên văn bởi chjpchjp1991
                      Mình thấy phần mềm Lê Việt Hoàng chỉ thấy xuất mã dành cho asm toàn có H đăng sau,không biết có phần mềm nào viết mã chữ như Lê Viêt Hoàng mà lại xuất mã dùng code c không nhỉ ví dụ từ 0ffh thành 0xff hic/
                      hihi! trong complier keil c van dung dc ma anh!

                      Comment

                      • puccadangiu
                        Thành viên mới
                        • Mar 2013
                        • 10

                        #12
                        Cho mình hỏi dùng led matrix hiển thị thời gian đếm ngược viết = c ntn vậy??

                        Comment

                        • trunghieudcn
                          Thành viên mới
                          • Nov 2013
                          • 4

                          #13
                          bạn ơi link led 3 màu die rồi bạn

                          Comment

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

                            #14
                            Nguyên văn bởi dtpd Xem bài viết
                            Có nhiều cách để điều khiển, trong chữ kí bên dưới có đường dẫn đến các ứng dụng của mạch 89,

                            void scan_595(unsigned char dataout)
                            {
                            unsigned char i;
                            for(i=0;i<8;i++)
                            {
                            if(dataout&0x80)
                            {
                            DATA = 1;
                            }
                            else
                            {
                            DATA = 0;
                            }
                            _nop_();
                            SCK = 1;
                            _nop_();
                            SCK = 0;
                            dataout *= 2;
                            }
                            _nop_();
                            STROBE = 1;
                            _nop_();
                            STROBE = 0;
                            }

                            Chú ý cần có thư viện #include<INTRINS.H> để có hàm _nop();
                            595 cho điều khiển ở tốc độ khá cao mà nếu dùng 89xx thì thoải mái điều khiển mà không có trễ bạn có thể sửa hàm send595 như sau cho gọn gàng, dễ nhìn.
                            PHP Code:
                            void send595(unsigned char ch)
                            {
                                char i;
                                ;
                                for (i=0; i<8; i++)
                                {
                                    ch<<=1;
                                    DATA=CY;
                                    SCK=1;
                                    SCK=0;
                                }
                                STROBE=0;// Mà bạn chốt bị ngược rồi. =0 trước =1 sau
                                STROBE=1;
                            } 
                            

                            Comment

                            • spam12345
                              Thành viên tích cực
                              • Jun 2013
                              • 162

                              #15
                              Nguyên văn bởi myth-coder Xem bài viết
                              595 cho điều khiển ở tốc độ khá cao mà nếu dùng 89xx thì thoải mái điều khiển mà không có trễ bạn có thể sửa hàm send595 như sau cho gọn gàng, dễ nhìn.
                              PHP Code:
                              void send595(unsigned char ch)
                              {
                                  char i;
                                  ;
                                  for (i=0; i<8; i++)
                                  {
                                      ch<<=1;
                                      DATA=CY;
                                      SCK=1;
                                      SCK=0;
                                  }
                                  STROBE=0;// Mà bạn chốt bị ngược rồi. =0 trước =1 sau
                                  STROBE=1;
                              } 
                              
                              Cái chổ DATA=CY là như thế nào vậy ban? Mình chưa hiểu.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              There are no results that meet this criteria.

                              Đang tải...