1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

help code c led 7 đoạn

Thảo luận trong 'Vi điều khiển - Mạch Số' bắt đầu bởi magic_boy_1989, 13 Tháng tư 2010.

  1. magic_boy_1989 New Member

    Số bài viết: 23
    Đã được thích: 0
    Điểm thành tích: 0
    #include <REGX51.H>

    #define LED1 P3_0
    #define LED2 P3_1
    #define LED3 P3_2
    #define LED4 P3_3

    #define do1 P2_0
    #define vang1 P2_1
    #define xanh1 P2_2
    #define do2 P2_3
    #define vang2 P2_4
    #define xanh2 P2_5

    unsigned char hangchuc1,hangdonvi1,hangchuc2,hangdonvi2,count1,count2,dem1,dem2,co;

    void display(unsigned char led)
    { // 0 1 2 3 4 5 6 7 8 9 A B C D E F
    unsigned char male7[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 ,0x88,0x83,0xC6,0xA1,0x86,0x8E};
    switch (led)
    {
    case 0 :
    P1=male7[0];
    break;
    case 1 :
    P1=male7[1];
    break;
    case 2 :
    P1=male7[2];
    break;
    case 3 :
    P1=male7[3];
    break;
    case 4 :
    P1=male7[4];
    break;
    case 5 :
    P1=male7[5];
    break;
    case 6 :
    P1=male7[6];
    break;
    case 7 :
    P1=male7[7];
    break;

    case 8 :
    P1=male7[8];
    break;

    case 9 :
    P1=male7[9];
    break;
    }
    }


    void setup_timer0(void)
    { TMOD=0x10;
    TH0=0x8F;
    TL0=0xAF;
    ET0=1;
    EA=1;
    TF0=0;
    TR0=1;
    }


    void setup_timer1(void)
    { TMOD=0x01;
    TH1=0xEC;
    TL1=0x77;
    ET1=1;
    EA=1;
    TF1=0;
    TR1=1;
    }

    //Ham ngat timer1 dung de quet
    void T1_ISR(void) interrupt 3
    {TR1=0;
    TH1=0xEC; //5000us
    TL1=0x77;
    count2++;
    LED1=0;
    LED2=0;
    LED3=0;
    LED4=0;
    hangchuc1=dem1/10;
    hangdonvi1=dem1%10;
    hangchuc2=dem2/10;
    hangdonvi2=dem2%10;
    if(count2==1)
    {
    display(hangchuc1);
    LED1=1;
    }
    if(count2==2)
    {
    display(hangdonvi1);
    LED2=1;
    }
    if(count2==3)
    {
    display(hangchuc2);
    LED3=1;
    }
    if(count2==4)
    {
    display(hangdonvi2);
    LED4=1;
    count2=0; //Khoi dong lai bien dem
    }
    TF1=0;
    TR1=1;
    }

    //Ham ngat timer0 dung de jam so dem1 dem2
    void T0_ISR(void) interrupt 1
    {TR0=0;
    TH0=0x8F;
    TL0=0xAF;
    count1++;
    if(count1==20)
    {
    if (co==0)
    {P2=0;
    do1=1;
    xanh2=1;
    }
    co=co+1;
    dem1=dem1-1;
    dem2=dem2-1;
    if (co==21)
    {P2=0;
    dem1=dem2=2;
    do1=1;
    vang2=1;
    }
    if (co==26)
    {
    {
    P2=0;
    dem1=20;dem2=25;
    xanh1=1;
    do2=1;

    }
    }

    if (co==68)
    {
    P2=0;
    dem1=dem2=3;
    vang1=1;
    do2=1;


    }
    if (co==72)
    {
    P2=0;
    co=0;
    dem1=35;
    dem2=31;
    do1=1;
    xanh2=1;

    }
    }
    TF0=0;
    TR0=1;
    }

    void main()
    {
    if (P0_0==1)

    co=0;
    TMOD=0x11;
    setup_timer1();
    setup_timer0();
    count1=count2=hangchuc1=hangdonvi1=hangchuc2=hangdonvi2=0;
    hangchuc1=dem1/10;
    hangdonvi1=dem1%10;
    hangchuc2=dem2/10;
    hangdonvi2=dem2%10;
    dem1=35;
    dem2=31;
    P2=0;

    while(1)
    {

    }
    }



    em co code C làm mach đèn giao thông,nhưng đọc mà không hiểu chỗ hàm ngắt time0 để quét va hàm ngắt time1 để dếm lùi ! Các bác giải thích giùm em đoạn code trên nha! hjc em gà .......

Chia sẻ trang này