Thông báo

Collapse
No announcement yet.

giúp viết code led cube 5x5x5!

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

  • #16
    Nguyên văn bởi luc09dt1 Xem bài viết
    nếu mình muốn hiieenr thị chử A thì sao?
    0xff là thế nào
    e chưa hiểu, cứu giúp sớm nhất
    Để hiển thị một chữ bất kì thì trước hết bạn cần xác định xem ở mỗi lớp thì những led nào phải sáng và led nào tắt??? tiếp đó bạn đi hiển thị từng lớp led,từ lớp 1 cho tới lớp 5. Ở mỗi lớp (lớp nào hiển thị thì chân điều khiển lớp đó ở mức 1), led nào sáng bạn cho cột điều khiển led tương ứng ở mức 0,các cột khác thì cho ở mức 1.
    Mình lấy ví dụ thế này cho bạn dễ hình dung nhé: tất cả các led ở đường biên dọc của led cube đều sáng (4 đường dọc,mỗi đường 5 led)
    như vậy thì ở mỗi lớp thì có 4 led ở 4 góc sáng,chẳng hạn chân Katot của 4 led đó được điều khiển bởi các chân: cot1,cot5,cot21,cot25
    thì bạn viết như sau:
    void sangbien()
    {
    int i;
    for(i=0;i<300;i++)
    {
    cot1=0;cot5=0,cot21=0;cot25=0;
    cot2=1;cot3=1;cot4=1;cot6=1;cot7=1;cot8=1;cot9=1;c ot10=1;cot11=1;
    cot12=1;cot13=1;cot14=1;cot15=1;cot16=1;cot17=1;co t18=1;cot19=1;
    cot20=1;cot22=1;cot23=1;cot24=1;
    lop1=1;lop2=0;lop3=0;lop4=0;lop5=0;// quet lop 1 tich cuc
    delay(1); // tre 1ms
    lop1=0;lop2=1;lop3=0;lop4=0;lop5=0;// quet lop 2 tich cuc
    delay(1); // tre 1ms
    lop1=0;lop2=0;lop3=1;lop4=0;lop5=0;// quet lop 3 tich cuc
    delay(1); // tre 1ms
    lop1=0;lop2=0;lop3=0;lop4=1;lop5=0;// quet lop 4 tich cuc
    delay(1); // tre 1ms
    lop1=0;lop2=0;lop3=0;lop4=0;lop5=1;// quet lop 5 tich cuc
    delay(1); // tre 1ms
    }
    }

    0xff đây là mã dạng hexa,ff là giá trị: ff=11111111,ví dụ gán P1=0xff thì có thể viết P1=11111111 (nhưng ít dùng mã nhị phân vì dài)
    vanduc0211@gmail.com

    Comment


    • #17
      Nguyên văn bởi viboyth.haui Xem bài viết
      Để hiển thị một chữ bất kì thì trước hết bạn cần xác định xem ở mỗi lớp thì những led nào phải sáng và led nào tắt??? tiếp đó bạn đi hiển thị từng lớp led,từ lớp 1 cho tới lớp 5. Ở mỗi lớp (lớp nào hiển thị thì chân điều khiển lớp đó ở mức 1), led nào sáng bạn cho cột điều khiển led tương ứng ở mức 0,các cột khác thì cho ở mức 1.
      Mình lấy ví dụ thế này cho bạn dễ hình dung nhé: tất cả các led ở đường biên dọc của led cube đều sáng (4 đường dọc,mỗi đường 5 led)
      như vậy thì ở mỗi lớp thì có 4 led ở 4 góc sáng,chẳng hạn chân Katot của 4 led đó được điều khiển bởi các chân: cot1,cot5,cot21,cot25
      thì bạn viết như sau:

      0xff đây là mã dạng hexa,ff là giá trị: ff=11111111,ví dụ gán P1=0xff thì có thể viết P1=11111111 (nhưng ít dùng mã nhị phân vì dài)
      thay vì viết như bạn cho từng lớp sáng theo hàm delay=1 minh viết như sau có đc không
      void sangbien()
      {
      int i;
      for(i=0;i<300;i++)
      {
      cot1=cot5=cot21=cot25=0; // các led ở cot này sáng
      cot2=cot3=cot4=cot6=cot7=cot8=cot9=c ot10=cot11=
      cot12=cot13=cot14=cot15=cot16=cot17=co t18=cot19=
      cot20=cot22=cot23=cot24=1; //các led cột này tắt
      lop1=lop2=lop3=lop4=lop5=1;// quét tất cả 5 lớp mức tích cực
      delay(1000); // tao trễ 1 giây
      }
      }
      Last edited by vuthehiep; 09-01-2013, 09:23.
      Email:
      phương trâm sống "như thế vẫn là chưa đủ"

      Comment


      • #18
        Nguyên văn bởi vuthehiep Xem bài viết
        thay vì viết như bạn cho từng lớp sáng theo hàm delay=1 minh viết như sau có đc không
        void sangbien()
        {
        int i;
        for(i=0;i<300;i++)
        {
        cot1=cot5=cot21=cot25=0; // các led ở cot này sáng
        cot2=cot3=cot4=cot6=cot7=cot8=cot9=c ot10=cot11=
        cot12=cot13=cot14=cot15=cot16=cot17=co t18=cot19=
        cot20=cot22=cot23=cot24=1; //các led cột này tắt
        lop1=lop2=lop3=lop4=lop5=1;// quét tất cả 5 lớp mức tích cực
        delay(1000); // tao trễ 1 giây
        }
        }
        Không được bạn ak,vì phương pháp quét ở đây là quét từng lớp,thời gian trễ giưã các lớp là rất nhỏ để mắt thường không phân biệt được là sáng từng lớp,cảm giác như là các led đang sáng đồng thời,muốn hiện trong thời gian lâu thì ta chỉ tăng giá trị của i thôi
        vanduc0211@gmail.com

        Comment


        • #19
          void chu_I(unsigned char ms)
          {
          //chu I
          for(n=0;n<=ms;n++)
          {
          P0=0xbe;P1=0xff;P3=0x7f;P2=0x00;delay(1);
          P0=0xfd;P3=0xff;P2=0xbd;delay(1);
          P0=0xfb;P2=0xbd;delay(1);
          P0=0xf7;P2=0xbd;delay(1);
          P0=0xaf;P3=0x7f;P2=0x00;delay(1);
          }P0=P1=P2=P3=0xff;
          }

          có thể giải thích cho mình chi tiết cái này đc ko? cái này lập trình nó chạy rồi? cảm ơn nhiều

          Comment


          • #20
            void chu_I(unsigned char ms)
            {
            //chu I
            for(n=0;n<=ms;n++)
            {
            P0=0xbe;P1=0xff;P3=0x7f;P2=0x00;delay(1);
            P0=0xfd;P3=0xff;P2=0xbd;delay(1);
            P0=0xfb;P2=0xbd;delay(1);
            P0=0xf7;P2=0xbd;delay(1);
            P0=0xaf;P3=0x7f;P2=0x00;delay(1);
            }P0=P1=P2=P3=0xff;
            }

            có thể giải thích cho mình chi tiết cái này đc ko? cái này lập trình nó chạy rồi? cảm ơn nhiều

            Comment


            • #21
              Nguyên văn bởi viboyth.haui Xem bài viết
              Để hiển thị một chữ bất kì thì trước hết bạn cần xác định xem ở mỗi lớp thì những led nào phải sáng và led nào tắt??? tiếp đó bạn đi hiển thị từng lớp led,từ lớp 1 cho tới lớp 5. Ở mỗi lớp (lớp nào hiển thị thì chân điều khiển lớp đó ở mức 1), led nào sáng bạn cho cột điều khiển led tương ứng ở mức 0,các cột khác thì cho ở mức 1.
              Mình lấy ví dụ thế này cho bạn dễ hình dung nhé: tất cả các led ở đường biên dọc của led cube đều sáng (4 đường dọc,mỗi đường 5 led)
              như vậy thì ở mỗi lớp thì có 4 led ở 4 góc sáng,chẳng hạn chân Katot của 4 led đó được điều khiển bởi các chân: cot1,cot5,cot21,cot25
              thì bạn viết như sau:

              0xff đây là mã dạng hexa,ff là giá trị: ff=11111111,ví dụ gán P1=0xff thì có thể viết P1=11111111 (nhưng ít dùng mã nhị phân vì dài)

              void chu_I(unsigned char ms)
              {
              //chu I
              for(n=0;n<=ms;n++)
              {
              P0=0xbe;P1=0xff;P3=0x7f;P2=0x00;delay(1);
              P0=0xfd;P3=0xff;P2=0xbd;delay(1);
              P0=0xfb;P2=0xbd;delay(1);
              P0=0xf7;P2=0xbd;delay(1);
              P0=0xaf;P3=0x7f;P2=0x00;delay(1);
              }P0=P1=P2=P3=0xff;
              }

              có thể giải thích cho mình chi tiết cái này đc ko? cái này lập trình nó chạy rồi? cảm ơn nhiều

              Comment


              • #22
                Nguyên văn bởi luc09dt1 Xem bài viết
                void chu_I(unsigned char ms)
                {
                //chu I
                for(n=0;n<=ms;n++)
                {
                P0=0xbe;P1=0xff;P3=0x7f;P2=0x00;delay(1);
                P0=0xfd;P3=0xff;P2=0xbd;delay(1);
                P0=0xfb;P2=0xbd;delay(1);
                P0=0xf7;P2=0xbd;delay(1);
                P0=0xaf;P3=0x7f;P2=0x00;delay(1);
                }P0=P1=P2=P3=0xff;
                }

                có thể giải thích cho mình chi tiết cái này đc ko? cái này lập trình nó chạy rồi? cảm ơn nhiều
                Nếu bạn ko post sơ đồ nguyên lý hoặc đặt tên lại các chân theo 1 trật tự nào đó mà post code lên như thế này thì khó giải thích được. Nhưng theo mình thấy,ở code bạn đưa ra thì P0 dùng để điều khiển các tầng (5 chân cho 5 tầng) và 1 chân của P0 điều khiển cột,3 Port còn lại đều sử dụng để điều khiển các cột (3 Port 24 chân). Đi lần lượt từng lớp led bằng việc đưa ra 1 mã nào đó cho P0 (ở các đầu dòng của code trên),sau đó xuất các mã ở 3 Port 1,2,3 để hiển thị nội dung phù hợp. Sau khi quét đủ 5 lớp thì có lệnh gán tất cả 4 Port bằng 0xff để tắt led. Đây là 1 hàm có đối số ms,ms là số lần lặp,nếu bạn cho giá trị ms càng lớn khi gọi hàm này trong chương trình chính thì thời gian trễ càng lâu. Chỉ vậy thôi
                vanduc0211@gmail.com

                Comment


                • #23
                  Nguyên văn bởi viboyth.haui Xem bài viết
                  Nếu bạn ko post sơ đồ nguyên lý hoặc đặt tên lại các chân theo 1 trật tự nào đó mà post code lên như thế này thì khó giải thích được. Nhưng theo mình thấy,ở code bạn đưa ra thì P0 dùng để điều khiển các tầng (5 chân cho 5 tầng) và 1 chân của P0 điều khiển cột,3 Port còn lại đều sử dụng để điều khiển các cột (3 Port 24 chân). Đi lần lượt từng lớp led bằng việc đưa ra 1 mã nào đó cho P0 (ở các đầu dòng của code trên),sau đó xuất các mã ở 3 Port 1,2,3 để hiển thị nội dung phù hợp. Sau khi quét đủ 5 lớp thì có lệnh gán tất cả 4 Port bằng 0xff để tắt led. Đây là 1 hàm có đối số ms,ms là số lần lặp,nếu bạn cho giá trị ms càng lớn khi gọi hàm này trong chương trình chính thì thời gian trễ càng lâu. Chỉ vậy thôi
                  unsigned int i,j,k,n;

                  sbit d1 = P1^0;
                  sbit d2 = P1^1;
                  sbit d3 = P1^2;
                  sbit d4 = P1^3;
                  sbit d5 = P1^4;
                  sbit d6 = P3^1;
                  sbit d7 = P3^0;
                  sbit d8 = P1^7;
                  sbit d9 = P1^6;
                  sbit d10 = P1^5;
                  sbit d11 = P3^2;
                  sbit d12 = P3^3;
                  sbit d13 = P3^4;
                  sbit d14 = P3^5;
                  sbit d15 = P3^6;
                  sbit d16 = P2^3;
                  sbit d17 = P2^2;
                  sbit d18 = P2^1;
                  sbit d19 = P2^0;
                  sbit d20 = P3^7;
                  sbit d21 = P2^4;
                  sbit d22 = P2^5;
                  sbit d23 = P2^6;
                  sbit d24 = P2^7;
                  sbit d25= P0^6;
                  sbit c1 = P0^0;
                  sbit c2 = P0^1;
                  sbit c3 = P0^2;
                  sbit c4 = P0^3;
                  sbit c5 = P0^4;

                  //================================================== =========
                  void delay(unsigned int time)
                  {
                  while(time--){
                  unsigned char j = 125;
                  while(j--);
                  };}
                  //================================================== =========
                  void delay0 (unsigned int t)
                  {
                  for(i=0;i<=t;i++);
                  }
                  //================================================== =========

                  ////
                  //HIEU UNG CHAY VONG TRON
                  void vongtron(unsigned char ms,unsigned char n)
                  {P1=P2=P3=0xff;led=1;
                  for(i=0;i<n;i++)
                  {
                  c1=0;
                  d21=0;delay(ms);d20=0;delay(ms);d11=0;delay(ms);d1 0=0;delay(ms);d1=0;delay(ms);
                  d2=0;delay(ms);d3=0;delay(ms);d4=0;delay(ms);d5=0; delay(ms);d6=0;delay(ms);
                  d15=0;delay(ms);d16=0;delay(ms);led=0;delay(ms);d2 4=0;delay(ms);d23=0;delay(ms);
                  d22=0;delay(ms);d19=0;delay(ms);d12=0;delay(ms);d9 =0;delay(ms);d8=0;delay(ms);
                  d7=0;delay(ms);d14=0;delay(ms);d17=0;delay(ms);d18 =0;delay(ms);d13=0;delay(ms);
                  }

                  }
                  //================================================== =========

                  //HIEU UNG LOP NGANG CHAY LEN _ XUONG
                  void nuocdang(unsigned char ms,unsigned char n)
                  {
                  for(j=0;j<n;j++)
                  {
                  unsigned char M[9]={0xBE,0xBD,0xBB,0xB7,0xAF,0xB7,0xBB,0xBD,0xBE };
                  P1=0;P2=0;P3=0;
                  for(i=0;i<9;i++)
                  {P0=M[i];
                  delay(ms);}
                  }}

                  void chu_I(unsigned char ms)
                  {
                  //chu I
                  for(n=0;n<=ms;n++)
                  {
                  P0=0xbe;P1=0xff;P3=0x7f;P2=0x00;delay(1);
                  P0=0xfd;P3=0xff;P2=0xbd;delay(1);
                  P0=0xfb;P2=0xbd;delay(1);
                  P0=0xf7;P2=0xbd;delay(1);
                  P0=0xaf;P3=0x7f;P2=0x00;delay(1);
                  }P0=P1=P2=P3=0xff;
                  }
                  void chu_L(unsigned char ms)
                  {
                  //chu love
                  for(n=0;n<=ms;n++)
                  {
                  P0=0xfe;P1=0xff;P3=0xff;P2=0xbd;delay(1);
                  P0=0xfd;P2=0x18;delay(1);
                  P0=0xbb;P3=0x7f;P2=0x00;delay(1);
                  P0=0xf7;delay(1);
                  P0=0xef;P3=0xff;P2=0x5a;delay(1);
                  }
                  P0=P1=P2=P3=0xff;
                  }

                  mình chưa hiểu được bạn có thể trả lời sớm ko? rất cảm ơn.

                  Comment


                  • #24
                    Nguyên văn bởi luc09dt1 Xem bài viết
                    unsigned int i,j,k,n;

                    sbit d1 = P1^0;
                    sbit d2 = P1^1;
                    sbit d3 = P1^2;
                    sbit d4 = P1^3;
                    sbit d5 = P1^4;
                    sbit d6 = P3^1;
                    sbit d7 = P3^0;
                    sbit d8 = P1^7;
                    sbit d9 = P1^6;
                    sbit d10 = P1^5;
                    sbit d11 = P3^2;
                    sbit d12 = P3^3;
                    sbit d13 = P3^4;
                    sbit d14 = P3^5;
                    sbit d15 = P3^6;
                    sbit d16 = P2^3;
                    sbit d17 = P2^2;
                    sbit d18 = P2^1;
                    sbit d19 = P2^0;
                    sbit d20 = P3^7;
                    sbit d21 = P2^4;
                    sbit d22 = P2^5;
                    sbit d23 = P2^6;
                    sbit d24 = P2^7;
                    sbit d25= P0^6;
                    sbit c1 = P0^0;
                    sbit c2 = P0^1;
                    sbit c3 = P0^2;
                    sbit c4 = P0^3;
                    sbit c5 = P0^4;

                    //================================================== =========
                    void delay(unsigned int time)
                    {
                    while(time--){
                    unsigned char j = 125;
                    while(j--);
                    };}
                    //================================================== =========
                    void delay0 (unsigned int t)
                    {
                    for(i=0;i<=t;i++);
                    }
                    //================================================== =========

                    ////
                    //HIEU UNG CHAY VONG TRON
                    void vongtron(unsigned char ms,unsigned char n)
                    {P1=P2=P3=0xff;led=1;
                    for(i=0;i<n;i++)
                    {
                    c1=0;
                    d21=0;delay(ms);d20=0;delay(ms);d11=0;delay(ms);d1 0=0;delay(ms);d1=0;delay(ms);
                    d2=0;delay(ms);d3=0;delay(ms);d4=0;delay(ms);d5=0; delay(ms);d6=0;delay(ms);
                    d15=0;delay(ms);d16=0;delay(ms);led=0;delay(ms);d2 4=0;delay(ms);d23=0;delay(ms);
                    d22=0;delay(ms);d19=0;delay(ms);d12=0;delay(ms);d9 =0;delay(ms);d8=0;delay(ms);
                    d7=0;delay(ms);d14=0;delay(ms);d17=0;delay(ms);d18 =0;delay(ms);d13=0;delay(ms);
                    }

                    }
                    //================================================== =========

                    //HIEU UNG LOP NGANG CHAY LEN _ XUONG
                    void nuocdang(unsigned char ms,unsigned char n)
                    {
                    for(j=0;j<n;j++)
                    {
                    unsigned char M[9]={0xBE,0xBD,0xBB,0xB7,0xAF,0xB7,0xBB,0xBD,0xBE };
                    P1=0;P2=0;P3=0;
                    for(i=0;i<9;i++)
                    {P0=M[i];
                    delay(ms);}
                    }}

                    void chu_I(unsigned char ms)
                    {
                    //chu I
                    for(n=0;n<=ms;n++)
                    {
                    P0=0xbe;P1=0xff;P3=0x7f;P2=0x00;delay(1);
                    P0=0xfd;P3=0xff;P2=0xbd;delay(1);
                    P0=0xfb;P2=0xbd;delay(1);
                    P0=0xf7;P2=0xbd;delay(1);
                    P0=0xaf;P3=0x7f;P2=0x00;delay(1);
                    }P0=P1=P2=P3=0xff;
                    }
                    void chu_L(unsigned char ms)
                    {
                    //chu love
                    for(n=0;n<=ms;n++)
                    {
                    P0=0xfe;P1=0xff;P3=0xff;P2=0xbd;delay(1);
                    P0=0xfd;P2=0x18;delay(1);
                    P0=0xbb;P3=0x7f;P2=0x00;delay(1);
                    P0=0xf7;delay(1);
                    P0=0xef;P3=0xff;P2=0x5a;delay(1);
                    }
                    P0=P1=P2=P3=0xff;
                    }

                    mình chưa hiểu được bạn có thể trả lời sớm ko? rất cảm ơn.
                    mấy anh ơi vô coi lại đoạn này giúp em với,....hixhix

                    Comment


                    • #25
                      cái này code của led cube 555 mà

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...
                      X