Thông báo

Collapse
No announcement yet.

code led 7 đoạn sai ?

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

  • 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

  • #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)                                                        
      {  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
    Đỏ: 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


    • #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


      • #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...
        X