Thông báo

Collapse
No announcement yet.

Help mình đoạn code điều khiển led đơn dùng 74595 .

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

  • #16
    Nguyên văn bởi tdm Xem bài viết
    viết thử cho bạn 3 hiệu ứng:
    Code:
      #include"regx52.h"
    sbit DATA = P2^1;
    sbit SCK = P2^0;
    sbit SCL = P2^2;
             const unsigned char ma[4][8]={           
             0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//
             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
             0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xff,//sang dan lsb..msb
             0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//sang dan 1 led lsb...msb
    unsigned char y,j;
    
    void quet(unsigned char x)
    {
    unsigned char i,temp;
    SCK=0;
    SCL=0;
    for(i=0;i<=7;i++)
    {
    temp=x;
    temp=temp&0x80;
    if(temp==0x80)
    DATA=1;
    else
    DATA=0;
    x*=2;
    
    SCK=1;
    SCK=0;
    }
    SCL=1;
    SCL=0;
    }
    void delay(unsigned long int t)
    {
        unsigned long int l;
        for(l=0;l<t;l++);
    }
    void sang_dan()
     {
     for(y=0;y<=7;y++)
    {
    quet(ma[0][y]);
    quet(ma[2][y]);
    delay(5000);
    }
     for(y=0;y<=7;y++)
    {
    quet(ma[2][y]);
    quet(ma[1][y]);
    delay(5000);
    }
     }
    void nhap_nhay()
     {
     for(y=0;y<=7;y++)
    {
    quet(0xff);
    quet(0xff);
    delay(5000);
    quet(0x00);
    quet(0x00);
    delay(5000);
    }
     }
      void sang_dan_1led()
     {
     for(y=0;y<=7;y++)
    {
    quet(ma[0][y]);
    quet(ma[3][y]);
    delay(5000);
    }
     for(y=0;y<=7;y++)
    {
    quet(ma[3][y]);
    quet(ma[0][y]);
    delay(5000);
    }
     }
    void main()
    {
    
    while(1)
    {
    sang_dan();
    nhap_nhay();
    sang_dan_1led();
    }}
    Thanks bạn " tdm " nhiều nhé Phần code bạn sửa giúp mình chạy theo đúng ý mình muốn rồi nhưng bạn chú thích mỗi dòng lệnh cho mình hiểu với dc ko? Mình chứ hiểu và chỗ sau :
    1) trong hàm void quet(void) câu lệnh " x*=2; " có ý nghĩa là j ? nếu ko có nó thì ntn? , tại sao lại mang temp And vs 0x80 mà ko là giá trị khác bất kì ?
    2) --------------------------------- " temp=temp&0x80;" có nghĩa là ntn ?
    3) Giờ mình muốn sáng dần 80 con led tương đương với là xài 10 con 595 thì mình phải xuất data như thế nào ? cho mình ví dụ kèm chú thích cho mình hiểu vs nha
    trình độ còn gà hỏi có j ko phải bạn thông cảm nhé
    ................. Pleiku .................... GIA LAI ...................

    Comment


    • #17
      tốt nhất bạn nên học lại C cơ bản , mấy cái bạn hỏi chả có gì phức tạp lắm đâu .Chỉ mấy lệnh thao tác về bit thôi !!

      Comment


      • #18
        Bạn này học nhảy cóc quá.Lo học c đi.Học xong làm được liền.Cái kiểu chân nọ chân kia thế này thì đến bao giờ.80 con led thì không ai chơi 10 con 595 làm gì cần 1 con cũng được.Hoặc 2 con.Quét như matrix.
        , , ,

        Comment


        • #19
          Nguyên văn bởi rptdnmqs Xem bài viết
          Bạn này học nhảy cóc quá.Lo học c đi.Học xong làm được liền.Cái kiểu chân nọ chân kia thế này thì đến bao giờ.80 con led thì không ai chơi 10 con 595 làm gì cần 1 con cũng được.Hoặc 2 con.Quét như matrix.
          Uhm , có thể là mình nhảy cóc thật , nhưng mình điều khiển 80 con led đơn độc lập ko xài 10 con 595 mắc nối tiếp thì làm ntn? Pro múa thế nào mà 80 con chỉ cần 2 con 595 thế ? chỉ mình múa với
          ................. Pleiku .................... GIA LAI ...................

          Comment


          • #20
            Nguyên văn bởi thi tran Xem bài viết
            Uhm , có thể là mình nhảy cóc thật , nhưng mình điều khiển 80 con led đơn độc lập ko xài 10 con 595 mắc nối tiếp thì làm ntn? Pro múa thế nào mà 80 con chỉ cần 2 con 595 thế ? chỉ mình múa với
            Vậy như bạn 80 con led bạn dùng 10 con 595. Thế bây giờ cái bảng led nó cỡ 16.000 con led thì bạn định dùng 2000 con 595 sao .
            Bạn dùng 595 theo kiểu điều khiển 1 phát cả 80 con riêng. Để tiết kiệm, người ta chia số led ra thành 10 nhóm, người ta sẽ điều khiển 8 con một, như vậy chỉ cần 1 con 595 cho 80 led. Nhưng do khi chuyển các nhóm rất nhanh nên không phát hiện ra, chỉ có cảm giác cả 80 con cùng sáng.

            Comment


            • #21
              Em bổ xung chút xíu:cứ coi 8 con led là 1 hàng thì 80 con sẽ có 10 hàng.Như vậy thực ra 80 led đơn là 1 ma trận 10x8(10 hàng,8 cột).bạn dÙng phương pháp quét hàng là được.Nhưng bạn phải hiểu nó kô xếp thành cái hình chữ nhật mà các hàng xếp nối tiếp thành dây.Oke Em bổ xung chút xíu:cứ coi 8 con led là 1 hàng thì 80 con sẽ có 10 hàng.Như vậy thực ra 80 led đơn là 1 ma trận 10x8(10 hàng,8 cột).bạn dÙng phương pháp quét hàng là được.Nhưng bạn phải hiểu nó kô xếp thành cái hình chữ nhật mà các hàng xếp nối tiếp thành dây.Oke
              , , ,

              Comment


              • #22
                Ủa bạn ơi mình dùng phương pháp quét hàng còn cột sao?Phải dùng thêm 1 con nữa chứ hả(1con quét hàng 1 con quét cột)?Bạn nói rõ được hok?Dùng "1" con như anh duong_act nói mà quét được 80 con?vậy mình muốn 1led đơn nào đó(1con/80con thôi nhen) sáng thì tích cực chân nào?Ráng giúp mình nha! Mới học nên chẳng biết gì nhiều.
                Thanks.

                Comment


                • #23
                  Mình tìm đoạn code dùng ASM để điều khiển 32 led đơn dùng 89s52 và 595 . Mình muốn led sáng ,tắt liên tục từ 0 tới led 32 led trong module led 16x32 thì làm ntn?

                  Comment


                  • #24
                    Đòi hỏi wá đáng wá ."thì làm ntn?"
                    PCCC

                    Comment

                    Về tác giả

                    Collapse

                    thi tran Tìm hiểu thêm về thi tran

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

                    Collapse

                    Đang tải...
                    X