Thông báo

Collapse
No announcement yet.

Đếm từ 00->99 sử dụng PIC16F877A xuất 2 hai led 7 đoạn.Help me!!!!!

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

  • Đếm từ 00->99 sử dụng PIC16F877A xuất 2 hai led 7 đoạn.Help me!!!!!

    E mới tập làm wen với PIC16F877A...đang viết code(asm) cho ct đếm 00->99 ra 2 led 7 đoạn.Mong các cao thủ giúp đỡ,cảm ơn rất nhiều!!!!!!

  • #2
    Chương trình sau hiển thị từ 0 đến 999999, nếu chỉ hiển thị từ 0 đến 99, bạn chỉ cần thay lệnh if (t==1000000)
    bằng lệnh if(t==100). Chương trình đã kiểm tra và chạy tốt
    #include <16f877a.h>
    #include <def_877A.h>
    #fuses hs
    #use delay(clock=8000000)
    int j,l,temp,b[6],m,i;
    int32 k[7],a,t;
    Void hienthi(int l);
    void kichhoat(int m);

    void main()

    {
    trisD = 0x00;
    trisA=0x00;
    Porta=0Xff;
    Portd=0xff;
    t=0;

    while(true)
    {
    a=t;
    if (t!=0)
    {
    for(j=0;j<=5;j++)
    {
    k[j]=a%10;
    a=a/10;
    }
    //hienthi(k[0]);

    for(j=5;j>=0;j--)
    {
    if (k[j]!= 0)
    {
    temp=j;
    break;

    }


    }
    i=1;
    while(i)
    {
    i--;

    for(j=0;j<=temp;j++)
    {
    hienthi(k[temp-j]);
    kichhoat(j);
    delay_ms(5);
    }
    }
    //Ket thuc if

    }

    if (t==0)
    {
    i=1;
    while(i)
    {
    i--;
    Porta=0Xfe;
    hienthi(0);
    delay_ms(5);
    }
    }

    t++;
    if (t==10000000)
    t=1;
    //Ket thuc vong lap vo tan
    }
    }
    void hienthi(int l)
    {
    switch(l)
    {
    case 0:
    {
    PortD=0xC0;

    break;
    }
    case 1:

    {
    PortD=0xF9;

    break;
    }
    case 2:

    {
    PortD=0xA4;


    break;
    }
    case 3:
    {
    PortD=0xB0;

    break;
    }
    case 4:
    {
    PortD=0x99;


    break;
    }
    case 5:
    {
    PortD=0x92;


    break;
    }
    case 6:
    {
    PortD=0x82;


    break;
    }
    case 7:
    {
    PortD=0xF8;


    break;
    }
    case 8:
    {
    PortD=0x80;


    break;
    }
    case 9:
    {
    PortD=0x90;


    break;
    }
    }
    }
    void kichhoat(int m)
    {


    PortA=0xff;
    Bit_clear(PortA,m);
    }

    Comment


    • #3
      có mô phỏng mạch không bạn, mà cho mình hỏi dùng bộ giải mã với không dùng thì có khác gì nhau không, code có khác không

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X