Cách mô phỏng led matrix

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • thanhl0nglee
    Nhập môn đệ tử
    • Apr 2009
    • 4

    #1

    Cách mô phỏng led matrix

    Em đang học về led metrix.Muốn thực hành xíu,mà cái mạch nạp JDM nó bị lỗi j j ko biết.Nên phải dùng Proteus để mô phỏng.Mà sao mô phỏng cái chữ A mà ko đc.Hjc hjc
    Nhờ các bác chị hộ.Bác nào có tài liệu về mô phỏng Proteus thì cho em với.
    Đây là đoạn code em viết
    Code:
    #include <16F877a.h>
    #fuses XT,NOWDT,NOPROTECT,NOLVP
    #device 16F877*=16 ADC=8
    #use delay(clock=4000000)
    #use fast_io(a)
    #byte porta=0x05
    #use fast_io(b)
    #byte portb=0x06
    #use fast_io(c)
    #byte portc=0x07
    #use fast_io(d)
    #byte portd=0x08
    #use fast_io(e)
    #byte porte=0x09
    int data[] = {0x00,0xf8,0x24,0x22,0x24,0xf8,0x00,0x00};
    int quet[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
    int i;
    void main(void)
    {
       set_tris_b(0x00);
       set_tris_d(0x00);
       while(1)
          {
             for(i=0;i<8;i++)
                {
                   portb = data[i];
                   portd = quet[i];
                   delay_ms(100);
                   portb = 0x00;
                }
          }
    }
    Attached Files
  • phandinh
    Đệ tử 6 túi
    • Nov 2008
    • 131

    #2
    Mình không tìm hiểu led Ma trận dùng PIC nên không giúp bạn dc.
    Có file hướng dẫn Proteus này hy vọng giúp ích cho bạn

    Comment

    • staythesame
      Nhập môn đệ tử
      • Feb 2009
      • 6

      #3
      Để giả lập Led matrix trong Proteus bạn cần chú ý về chân quy đinh của nó. Led matrix xanh và đỏ là khác nhau. Đối với Led matrix xanh : 8 chân phía trên là hàng , 8 chân phía dưới là cột. Led matrix đỏ thì ngược lại ; 8 chân trên là cột, 8 chân dưới là hàng. Để led sáng : chân hàng 0, chân cột 1.

      Bạn xem lại trong code để bố trí chân cho phù hợp: xuất data ở port B, quét theo port D

      Comment

      • thanhl0nglee
        Nhập môn đệ tử
        • Apr 2009
        • 4

        #4
        Nguyên văn bởi staythesame View Post
        Để giả lập Led matrix trong Proteus bạn cần chú ý về chân quy đinh của nó. Led matrix xanh và đỏ là khác nhau. Đối với Led matrix xanh : 8 chân phía trên là hàng , 8 chân phía dưới là cột. Led matrix đỏ thì ngược lại ; 8 chân trên là cột, 8 chân dưới là hàng. Để led sáng : chân hàng 0, chân cột 1.

        Bạn xem lại trong code để bố trí chân cho phù hợp: xuất data ở port B, quét theo port D
        Em cũng xuất data ở porb và quet ở port d mà
        Bác có thể chỉ cụ thể giùm em cái đc ko.

        Comment

        • staythesame
          Nhập môn đệ tử
          • Feb 2009
          • 6

          #5
          Mình đã thử làm lại bài này cho bạn. Về giả lập ko có vấn đề gi`. Vấn đề là do code của ban.
          Phần delay bạn để
          delay_ms(100);
          thì quá nhiều những 0,1s. Bạn chuyển sang delay_us(50) thì sẽ ok.
          Chúc bạn thành công !
          Last edited by staythesame; 16-05-2009, 10:44 PM.

          Comment

          • thanhl0nglee
            Nhập môn đệ tử
            • Apr 2009
            • 4

            #6
            Bạn có thể nói rõ hơn cách xác định chân,cách mắc đc ko.Mình đã sửa lại chỗ delay,nhưng mà khi mô phỏng nó vẫn ko ra hình thù j cả.Thực ra đây là bài tập thực hành hiển thị chữ A bằng led matrix nhưng do mình ko biết cách mô phỏng nên mới ra thế này.Bạn làm ơn chỉ rõ hơn giùm mình cái nhé.
            Bạn chỉ cách xác định chân,các mắc rồi cho mình cái hình của bạn nhé

            Comment

            • staythesame
              Nhập môn đệ tử
              • Feb 2009
              • 6

              #7
              OK! Minh mắc mạch theo sơ đồ của bạn. Ở đây bạn quét theo cột(do nối portD vào 8 chân cột phía dưới của Ledmatrix xanh), do chân cột của của Led matrix xanh là chân anot =>đối với mỗi cột được chọn sáng khi xuất dữ liệu cho cột thì bit 0 làm đèn led trên cột đó sáng, bít 1 thì tắt. Trong trường hợp bạn muốn xuất ra chữ A thì trong code phần data () bạn phải đảo ngược 1->0 , 0->1 . Vd: từ 0x00 ->0xff .
              Đây là code mình đã sửa lại cho bạn để xuất chữ A
              Code:
              #include <16F877a.h>
              #fuses XT,NOWDT,NOPROTECT,NOLVP
              #device 16F877*=16 ADC=8
              #use delay(clock=4000000)
              #use fast_io(a)
              #byte porta=0x05
              #use fast_io(b)
              #byte portb=0x06
              #use fast_io(c)
              #byte portc=0x07
              #use fast_io(d)
              #byte portd=0x08
              #use fast_io(e)
              #byte porte=0x09
              int data[] = {224,219,187,123,187,219,224,255}; //đa chinh lai cho nay doi bit 1->0, 0->1
              int quet[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; 
              int i;
              
              void main(void)
              {
                 set_tris_b(0x00);
                 set_tris_d(0x00);
                 while(1)
                    {
                       for(i=0;i<8;i++)
                          {
                             portb = data[i];               
                             portd = quet[i];
                             delay_us(50);
                             output_d(0);output_b(0);
                          }
                    }
              }
              Attached Files
              Last edited by staythesame; 20-05-2009, 01:08 AM.

              Comment

              • thaithien
                Đệ tử 7 túi
                • Aug 2007
                • 211

                #8
                Gửi cả file proteus lên luôn để dễ xử lý đi,và cũng để người khác tham khảo nữa.Đơ mất thời gian vẽ mạch trở lại.

                Comment

                • nguyenyeu11
                  Nhập môn đệ tử
                  • May 2009
                  • 1

                  #9
                  co bac nao co so do nguyen ly mach ko cho em voi

                  Comment

                  • nguyenductu2310
                    Đệ tử 1 túi
                    • Feb 2008
                    • 16

                    #10
                    Mô phỏng hiển thị chữ lưu ý chân linh kiện thui, nếu ko rõ thì test thử với mạch đơn giản ấy.
                    Mình viết tạm chương trình hiển thị chữ A. bạn coi thử nhé!
                    Code:

                    #include <16f877a.h>
                    #fuses NOWDT,HS,PUT,NOPROTECT
                    #device 16f877a*=16 adc=8
                    #use delay(clock=20000000)
                    int8 Cot[]= {0b00011000, 0b00111100, 0b01100110, 0b11000011, 0b11111111, 0b11111111, 0b11000011, 0b11000011};
                    int8 Hang[]={0b11111110, 0b11111101, 0b11111011, 0b11110111, 0b11101111, 0b11011111, 0b10111111, 0b01111111};
                    int8 i;

                    void main()
                    {
                    set_tris_b(0x00);
                    set_tris_d(0x00);
                    while(1)
                    {
                    for (i=0; i<8; i++)
                    {
                    output_b(Hang[i]);
                    output_d(Cot[i]);
                    delay_ms(5);
                    }
                    }
                    }
                    Attached Files

                    Comment

                    • nguyenductu2310
                      Đệ tử 1 túi
                      • Feb 2008
                      • 16

                      #11
                      Quên mất! chương trình mình viết dùng CCS thuần, không phải định nghĩa thêm Port, có thế rút gọn hơn đó. Với chương trình nhỏ dùng ntn minh thấy tiện hơn.

                      Comment

                      • loanmapdit
                        Đệ tử 1 túi
                        • Jun 2009
                        • 13

                        #12
                        đọc không hiểu gì hết. mình còn gà lắm.mong các bạn giúp đỡ
                        Linh kiện điện tử biên hòa.Ngã 4 Amta -500m - đối diện bệnh viện nhi Đồng Nai đi tiếp 100m
                        547/7 tổ 4 khu phố 1 Long Bình .099.50979.68 or 0917 277148

                        Comment

                        • Huynh Thanh San
                          Nhập môn đệ tử
                          • Oct 2008
                          • 8

                          #13
                          Khong có zỳ là hay het

                          Nguyên văn bởi thanhl0nglee View Post
                          Em đang học về led metrix.Muốn thực hành xíu,mà cái mạch nạp JDM nó bị lỗi j j ko biết.Nên phải dùng Proteus để mô phỏng.Mà sao mô phỏng cái chữ A mà ko đc.Hjc hjc
                          Nhờ các bác chị hộ.Bác nào có tài liệu về mô phỏng Proteus thì cho em với.
                          Đây là đoạn code em viết
                          Code:
                          #include <16F877a.h>
                          #fuses XT,NOWDT,NOPROTECT,NOLVP
                          #device 16F877*=16 ADC=8
                          #use delay(clock=4000000)
                          #use fast_io(a)
                          #byte porta=0x05
                          #use fast_io(b)
                          #byte portb=0x06
                          #use fast_io(c)
                          #byte portc=0x07
                          #use fast_io(d)
                          #byte portd=0x08
                          #use fast_io(e)
                          #byte porte=0x09
                          int data[] = {0x00,0xf8,0x24,0x22,0x24,0xf8,0x00,0x00};
                          int quet[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
                          int i;
                          void main(void)
                          {
                             set_tris_b(0x00);
                             set_tris_d(0x00);
                             while(1)
                                {
                                   for(i=0;i<8;i++)
                                      {
                                         portb = data[i];
                                         portd = quet[i];
                                         delay_ms(100);
                                         portb = 0x00;
                                      }
                                }
                          }
                          ================================================== =============
                          NGUOI READ : Bạn chỉ có thể mo phong duoc 1 led matrix thoi hả . Khong the mo phong với 16 led matrix ah cùi thế
                          THS

                          Comment

                          • Huynh Thanh San
                            Nhập môn đệ tử
                            • Oct 2008
                            • 8

                            #14
                            Có muon Hoc hoi kg hả.
                            THS

                            Comment

                            • 0903579509
                              Đệ tử 4 túi
                              • Mar 2007
                              • 69

                              #15
                              Nguyên văn bởi Huynh Thanh San View Post
                              Có muon Hoc hoi kg hả.
                              Show hàng cho anh em mở rộng tầm mắt đi! Dấu làm gì cho nặng bụng.

                              Comment

                              Working...