Thông báo

Collapse
No announcement yet.

[HELP] Hiển thị 4 led 7 đoạn bằng 4 ic 74HC595 dùng PIC 887

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

  • [HELP] Hiển thị 4 led 7 đoạn bằng 4 ic 74HC595 dùng PIC 887

    Em làm mạch quét 4 led 7 đoạn dùng IC 74HC595
    Mấy anh chị xem giúp em code hoặc mạch có gì sai ko mà khi em cho hiển thị thì chỉ led 1,2 hiển thị đúng còn led 3,4 thì nó đổi vị trí các đoạn của led 7 ví dụ như cho nó sáng đoạn A thì nó sáng đoạn B, B thì thành C….
    Code với sơ đồ nguyên lý https://www.dropbox.com/s/y3gwgyslk2...sch%2Bcode.rar
    Code:
    #include <16f877A.h>
    #device *=16, ADC = 10
    #use delay(clock=20000000)
    #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP,NOCPD, NOWRT
    //==============================DEFINE============== ===================
    #define DAT PIN_B5
    #define SCK PIN_B6
    #define SCL PIN_B7
    //========================VARIABLE================== ===================
    unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
    //unsigned char N[10]={0x60,0xFC,0x52,0x58,0xcc,0x49,0x41,0x7c,0x40,0x4 8};
    //======================FUNCTION==================== ===================
    void display(int x,int y,int z,int t)
    {
    int i,temp;
    for (i=0;i<8;i++){temp=x;temp=temp&0x80;if(temp==0x80) output_high(DAT);else output_low(DAT);x*=2;output_low(SCK);output_high(S CK);}
    for (i=0;i<8;i++){temp=y;temp=temp&0x80;if(temp==0x80) output_high(DAT);else output_low(DAT);y*=2;output_low(SCK);output_high(S CK);}
    for (i=0;i<8;i++){temp=z;temp=temp&0x80;if(temp==0x80) output_high(DAT);else output_low(DAT);z*=2;output_low(SCK);output_high(S CK);}
    for (i=0;i<8;i++){temp=t;temp=temp&0x80;if(temp==0x80) output_high(DAT);else output_low(DAT);t*=2;output_low(SCK);output_high(S CK);}
    output_low(SCL);delay_ms(10);
    output_high(SCL);
    }
    
    void main()
    {
    while(true)
    {
    display(M[1],M[2],M[3],M[4]);
    delay_ms(200);
    }
    }

  • #2
    Mình chưa hiểu hoàn toàn chương trình của bạn nhưng mình thấy một chỗ không hợp lí thế này:
    Các biến x,y,z,t,i,temp bạn cần chuyển sang kiểu unsigned char (1 byte), nếu để kiểu int thì là 2 byte thì phải. Thuật toán của bạn chỉ làm với 1 byte thôi.
    Bạn thử lại xem nhé.

    Comment


    • #3
      Thanks bạn postmanbk đã quan tâm tp của mình! mấy hnay đau đầu với nó, tưỡng mình hàn board bị chập chạm j nên rửa board khác. Đến khi tháo linh kiện thì thấy dưới cái connector 8 có 2 chân điện trở núp trong đó! hic! giờ đc rồi!

      Comment


      • #4
        cho mình hỏi là cái lệnh display ở cuối, mình compile thì nó báo lỗi. unexpected . ai giúp mình với

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...
        X