Thông báo

Collapse
No announcement yet.

các bạn xem lại giúp mình cái code đo tốc độ động cơ này với.

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

  • các bạn xem lại giúp mình cái code đo tốc độ động cơ này với.

    các bạn xem giúp mình code đo tốc độ động cơ hiển thị led 7 thanh này với! mình mô phỏng chạy rồi. nhưng hiển thị tốc độ không biết dúng không vì mình tính thế này. mình tạo 1 clock là 100Hz đưa vào đếm xung. encoder của mình là 100xung/vòng. Clock là 100Hz>>T=0.01s ( 0.01s mình có 1 xung encoder ) >> 60s(1 phút) mình có được là 600xung >> vận tốc=600/100=60vong/phút. mình ví dụ thực tế là như thế. nhưng kết quả hiển thị lên led 7 thanh là 27,28 vòng/phút . sao lại thế nhỉ các bạn xem giúp mình code sai ổ chỗ nào không nhé. thời gian lấy mẫu của mình là 1s.
    #include <REGX51.H>
    sbit A1 = P1^3;
    sbit A2 = P1^4;
    sbit A3 = P1^5;
    sbit A4 = P1^6;
    sbit TANG=P1^0;
    sbit GIAM=P1^1;
    sbit stop=P1^2;
    sbit pwm=P3^0;
    unsigned char so[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
    unsigned long xung,i;
    unsigned int k;
    unsigned char dem,tocdo=50;
    ///////////////////////////////////////
    void delay(int time) // ham delay phuc vu quet led
    {int n;
    for(n=0;n<time;n++)
    {
    ;
    }
    }
    //////////////////////////////////////
    void quetled7() // ham quet led 7
    { //////////////// hang nghin
    A1 = 1;
    P2 = so[i/1000];
    delay(50);
    A1 = 0;
    P2=0xff;
    ////////////////////////// hang tram
    A2=1;
    P2=so[(i/100)%10];
    delay(50);
    A2=0;
    P2=0xff;
    ///////////////////////////////// hang chuc
    A3=1;
    P2=so[(i/10)%10];
    delay(50);
    A3=0;
    P2=0xff;
    //////////////////////////////// hang don vi
    A4=1;
    P2=so[i%10];
    delay(50);
    A4=0;
    P2=0xff;
    }
    /////////////////////////////////////
    void khoitaotimer() //
    { TMOD = 0x21; // timer0 che do 1
    IE = 0x8A;
    TH0 = 0xC3; // tre 50us
    TL0 = 0x50;
    ET0 = 1;
    TR0 = 1;
    TH1 = -100;
    TL1 = -100;
    ET1 = 1;
    TR1 = 1;

    }
    ////////////////////////////
    void khoitaongatngoai()
    { EA=0;
    EX0=1;
    IT0=1;
    EA=1;
    }
    ///////////////////////////////////////////
    void isr_timer0() interrupt 1
    { TF0=0;
    TR0=0;
    quetled7();
    k++;
    TH0=0xC3; // gia tri nap lai
    TL0=0x50;
    if(k==20) // lay mau 1s
    {
    ixung*60)/100); // vong/phut encoder dung loai 32x
    k=0;
    xung=0;
    }
    TR0=1;
    }
    /////////////////////////////////////////
    void isr_timer1() interrupt 3
    { TF1=0;
    TR1=0;
    dem++;
    if(dem>100)
    dem=0;
    if(dem<tocdo)
    pwm=1;
    else
    pwm=0;
    TR1=1;
    }
    /////////////////////// phim nhan
    void phimnhan()
    {
    //////////////////////////
    if((stop==0)&&(TANG==1))
    {
    while(!stop);
    tocdo=0;
    }
    if((TANG==0)&&(GIAM==1))
    {
    while(!TANG);
    tocdo=tocdo+10;
    if(tocdo==110)tocdo=100;
    }
    ////////////////////////////////
    if((GIAM==0)&&(TANG==1))
    {while(!GIAM);
    tocdo=tocdo-10;
    if(tocdo==-10)tocdo=0;
    }
    }
    /////////////////////////////////// ham ngat ngoai
    void isr_ex0() interrupt 0
    {
    xung++;
    }
    ////////////////////////////////////// ham chinh
    void main()
    {P1_6=1;
    khoitaotimer();
    khoitaongatngoai();
    while(1)
    {phimnhan();
    }
    }

Về tác giả

Collapse

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

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

Collapse

Đang tải...
X