code led 7 đoạn sai ?

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • newbie_avr
    Thành viên chính thức
    • Nov 2009
    • 71

    #1

    code led 7 đoạn sai ?

    Mình dùng ic dịch 74hc595 để cấp data cho led 7 đoạn. Mình chưa sài khả năng SPI của atmega8 ở đây để đẩy data ra đoạn code này mình chỉ đơn thuần đưa từng byte ra led 7 đoạn rồi quét led mà không hiểu sai chỗ nào mà tất cả các led đều sáng số 8 mặc dù mình đã thay đổi chỉ số mảng .

    Code đưa dữ liệu và xuất ra led :
    Code:
    flash unsigned char maled_7doan_[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
      napic595(unsigned char number ) // dua du lieu ra 74hc 595
    { unsigned char nap = 0, temp;
       temp = number;               
    while(nap < 8)                                                        
      {  temp = temp&&0x80;
         if(temp == 0x80)           
        {
         data = 1;
         clock = 1;
         clock = 0;
         }
        else 
        {
         data = 0;
         clock = 1;
         clock = 0;
         }
        number  = (number >> 1);
         temp = number; 
         nap++;
      }
      latch = 1;
      latch = 0;    
      nap = 0;
      }
    // code ở void main (void) :
    Code:
      napic595(maled_7doan_[5]);       // truy xuat mang lay du lieu va goi ham dua du lieu ra ic74hc595
                for( dem = 6500;dem >0; dem--)
                {
               l1 = 0;                // quet led 1      dua cuc B cua transistor pnp xuong muc 0
               delay_ms(3);
               l1 = 1;
               l2 = 0;               // quet led 1
               delay_ms(3);
               l2 = 1;
               l3 =  0;              // quet led 3
               delay_ms(3);
               l3 = 1;
               l4 = 0;            // quet led 4
               delay_ms(3);
               l4 = 1;
               l5 = 0;              // quet led 5
               delay_ms(3);
               l5 = 1;
               }
    Mình nghĩ chắc sai đâu đó ở hàm đẩy dữ liệu ra 74hc595 vì khi thay các chỉ số mang khác cũng hiện toàn số 8. Các bạn chỉ giúp mình
  • VNarmy
    Moderator
    • Feb 2007
    • 1413

    #2
    Nguyên văn bởi newbie_avr Xem bài viết
    Mình dùng ic dịch 74hc595 để cấp data cho led 7 đoạn. Mình chưa sài khả năng SPI của atmega8 ở đây để đẩy data ra đoạn code này mình chỉ đơn thuần đưa từng byte ra led 7 đoạn rồi quét led mà không hiểu sai chỗ nào mà tất cả các led đều sáng số 8 mặc dù mình đã thay đổi chỉ số mảng .

    Code đưa dữ liệu và xuất ra led :
    Code:
    flash unsigned char maled_7doan_[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
      napic595(unsigned char number ) // dua du lieu ra 74hc 595
    { unsigned char nap = 0, temp;
       temp = number;               
    while(nap < 8)                                                        
      { [COLOR="Red"] temp = temp&&0x80;[/COLOR]
         if(temp == 0x80)           
        {
         data = 1;
         clock = 1;
         clock = 0;
         }
        else 
        {
         data = 0;
         clock = 1;
         clock = 0;
         }
        number  = (number >> 1);
         temp = number; 
         nap++;
      }
      latch = 1;
      latch = 0;    
      nap = 0;
      }
    // code ở void main (void) :
    Code:
      napic595(maled_7doan_[5]);       // truy xuat mang lay du lieu va goi ham dua du lieu ra ic74hc595
                for( dem = 6500;dem >0; dem--)
                {
               l1 = 0;                // quet led 1      dua cuc B cua transistor pnp xuong muc 0
               delay_ms(3);
               l1 = 1;
               l2 = 0;               // quet led 1
               delay_ms(3);
               l2 = 1;
               l3 =  0;              // quet led 3
               delay_ms(3);
               l3 = 1;
               l4 = 0;            // quet led 4
               delay_ms(3);
               l4 = 1;
               l5 = 0;              // quet led 5
               delay_ms(3);
               l5 = 1;
               }
    Mình nghĩ chắc sai đâu đó ở hàm đẩy dữ liệu ra 74hc595 vì khi thay các chỉ số mang khác cũng hiện toàn số 8. Các bạn chỉ giúp mình
    Đỏ: Sai lần 1
    AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
    Xem thêm tại Online Store ---> Click here
    Mob: 0982.083.106

    Comment

    • newbie_avr
      Thành viên chính thức
      • Nov 2009
      • 71

      #3
      Code:
      Đỏ: Sai lần 1
      Anh giải thích sao em kô hiểu ? cái đó mục đích để em biết bít phải cấp tiếp cho pin_14 data của 74hc595 mừ

      Comment

      • xl09
        Thành viên chính thức
        • Nov 2009
        • 37

        #4
        đó là phép toán logic chứ không phải là phép toán AND theo bít.
        bạn dùng
        temp &= 0x80;
        if(temp == 0x80)
        ...........................
        hãy quý những j hiện tại mình đang có

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...