PIC Vietnam

Go Back   PIC Vietnam > Thành Viên

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

dao05dtd dao05dtd is offline

Nhập môn đệ tử

Visitor Messages

Showing Visitor Messages 1 to 1 of 1
  1. dao05dtd
    22-09-2009 10:59 PM
    dao05dtd
    Tôi đang làm đề tài môn học: dung 16F877A điều chỉnh 5 cấp tốc độ động cơ bằng phương pháp PWM. Tôi đã mô phỏn trên Proteus nhưng ko chạy mặc dù dịch ra file .HEX ko báo lỗi. Tôi tìm mãi nhưng vẫn chưa tìm ra nguyên nhân. Do mới bắt đầu tìm hiểu nên còn rất khó khăn, mong các cao nhân giúp đỡ
    code:
    #include <16F877A.h>
    #fuses NOWDT,PUT,HS,NOPROTECT,NOLVP
    #use delay(clock=10000000)

    #use fast_io(b)
    #byte portb=0x06
    #byte tris_b=0x86

    #define tocdo0 0 //toc do bang 0
    #define td_macdinh 80 //toc do mac dinh
    #define tocdo1 124 //1/5 toc do cuc dai
    #define tocdo2 248 //2/5 toc do cuc dai
    #define tocdo3 372 //3/5 toc do cuc dai
    #define tocdo4 496 //4/5 toc do cuc dai
    #define tocdo5 620 //toc do cuc dai

    int16 duty1=0;
    int16 duty2=0;
    int8 bientocdo=0;
    int1 bienthuan=0;
    int1 biennghich=0;

    void main() //bo PMW1 dk dco quay thuan
    { //bo PMW2 dk dco quay nghich
    set_tris_b(0xff); //khoi tao port B la port nhap
    setup_ccp1(CCP_PWM); //khoi tao bo PWM1
    setup_ccp2(CCP_PWM); //khoi tao bo PWM2

    setup_timer_2(T2_div_by_16,154,1); //tao chu ky xung 1ms
    //(1/clock)*4*t2div*(period+1)
    //(1/10e6)*4*16*(154+1)=1e-3=1ms

    set_pwm1_duty(duty1); //gia tri duty cua PWM duoc tinh
    set_pwm2_duty(duty2); //theo cong thuc duty1*t2div/clock
    //khoi tao duty=0 ->tat dong co

    while(true)
    {
    if (!bit_test(portb,1)) //neu nhan phim FO : chay thuan
    {
    duty1=tocdo0;
    duty2=tocdo0;
    set_pwm1_duty(duty1); //cho duty cua 2 bo PMW=0 de
    set_pwm2_duty(duty2); //tat dong co
    delay_ms(1000); //delay 1s de giam quan tinh dc
    bienthuan=1;
    biennghich=0;
    goto next;
    }


    if (!bit_test(portb,2)) //neu nhan phim RE : chay nghich
    {
    duty1=tocdo0;
    duty2=tocdo0;
    set_pwm1_duty(duty1); //cho duty cua 2 bo PMW=0 de
    set_pwm2_duty(duty2); //tat dong co
    delay_ms(1000); //delay 1s de giam quan tinh dc
    bienthuan=0;
    biennghich=1;
    goto next;
    }


    if (!bit_test(portb,3)) //nhan phim toc do 1
    {
    bientocdo=1;
    goto next;
    }

    if (!bit_test(portb,4)) //nhan phim toc do 2
    {
    bientocdo=2;
    goto next;
    }

    if (!bit_test(portb,5)) //nhan phim toc do 3
    {
    bientocdo=3;
    goto next;
    }

    if (!bit_test(portb,6)) //nhan phim toc do 4
    {
    bientocdo=4;
    goto next;
    }

    if (!bit_test(portb,7)) //nhan phim toc do 5
    bientocdo=5;

    next:
    if (!bit_test(portb,0)) //neu nhan phim OFF
    {
    duty1=tocdo0;
    duty2=tocdo0;
    set_pwm1_duty(duty1); //cho duty cua 2 bo PMW=0 de
    set_pwm2_duty(duty2); //tat dong co
    bienthuan=0;
    biennghich=0;
    bientocdo=0; //xoa bien toc do
    }

    if (bienthuan)
    {
    duty2 = tocdo0;
    switch (bientocdo)
    {
    case 1: duty1= tocdo1;
    break;
    case 2: duty1= tocdo2;
    break;
    case 3: duty1= tocdo3;
    break;
    case 4: duty1= tocdo4;
    break;
    case 5: duty1= tocdo5;
    break;
    default : duty1 = td_macdinh;
    break;
    }
    set_pwm1_duty(duty1); //cho dco chay thuan
    set_pwm2_duty(duty2);
    }

    if (biennghich)
    {
    duty1 = tocdo0;
    switch (bientocdo)
    {
    case 1: duty2= tocdo1;
    break;
    case 2: duty2= tocdo2;
    break;
    case 3: duty2= tocdo3;
    break;
    case 4: duty2= tocdo4;
    break;
    case 5: duty2= tocdo5;
    break;
    default : duty2 = td_macdinh;
    break;
    }
    set_pwm1_duty(duty1); //cho dco chay nghich
    set_pwm2_duty(duty2);
    }
    }
    }

Statistics

Tổng số bai
Visitor Messages
General Information
  • Lần cuối: 06-01-2011 09:23 PM
  • Tham gia ngày: 06-09-2009
  • Ðã giới thiệu: 0

Múi giờ GMT. Hiện tại là 10:52 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam