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

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • iron_man99
    Thành viên mới
    • Dec 2010
    • 1

    #1

    Đế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!!!!!!
  • thanh_nam
    Thành viên chính thức
    • May 2007
    • 46

    #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

    • vodich01
      Thành viên mới
      • Jan 2011
      • 15

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