Chat
Danh mục
Bài 5:Điều khiển động cơ dùng L298

Bài 5:Điều khiển động cơ dùng L298

Số lượng:
Thêm vào giỏ
Bài 5:Điều khiển động cơ dùng L298 đã được thêm vào giỏ hàng


CODE C
Code này là của 1 bạn trên mạng,Chip có viết lại code nhưng chạy không ổn lắm..nên post các bạn dùng code của bạn ấy. Code Chip sẽ post sau:

/* Dieu khien toc do dong co DC : Quay thuan, quay nghich, tang toc, giam toc

*/
// 2 Chan dieu khien dong co la : P2_0 va P2_1
// 5 chan de dieu khien : Quay thuan, quay nghich, Dung, Tang toc, giam toc
// 3 chan bao hieu dong co dang o che do nao.


#include <REGX51.H>

/* Dinh nghia cac nut nhan*/
#define stop P1_0
#define thuan P1_1
#define nghich P1_2
#define tang P1_3
#define giam P1_4

bit PWM;
unsigned char dem=0;
unsigned int phantram_PWM=10;

/* Ham tao thoi gian tre*/

void delay(unsigned int t)
{
unsigned int i,j;
for(i=0;i<100;i++)
for(j=0;j<t;j++);
}

/* Hien thi gia tri tang giam toc*/
unsigned char LED[10]={0x40,0xf9,0x24,0x30,0x19,0x12,0x02,0xf8,0x80,0x10};
void hienthi(unsigned char digit1, unsigned char digit2)
{
/*Hien thi so thu nhat*/
P3=LED[digit1];
P0_0=1;
delay(2);
P0_0=0;
/*Hien thi so 2*/
P3=LED[digit2];
P0_1=1;
delay(2);
P0_1=0;
}
/* Khoi tao Timer 100us*/

void khoitaohethong()
{
//ES=1;
EA=0;
TMOD=0x02; // che do 8 bit tu nap
TH0=0x9b; // nap gia tri 155 ma hex
TL0=0x9b;
EA=1;
TR0=1;
ET0=1;
}
/* Ngat tao ra PWM*/

void ngat_timer0(void) interrupt 1
{
TR0=0;
TF0=0;
dem++;
if(dem>=phantram_PWM)
{
PWM=1;
}
else
{
PWM=0;
}
if(dem==20) dem=0;
TR0=1;

}
/* Ham dung dong co*/
void stopdc(void)
{
P2_0=0;
P2_1=0;
P2_2=0;
P2_3=1;
P2_4=1;
}

/* Ham quay thuan dong co*/
void quaythuan(void)
{
P2_1=0;
P2_0=PWM;
P2_3=0; //hien thi trang thai led xanh
P2_2=1;
P2_4=1;

}

/* Ham quay nghich dong co*/

void quaynghich(void)
{
P2_0=0;
P2_1=PWM;
P2_4=0;
P2_3=1;
P2_2=1;

}
/* Ham dieu khien tang toc*/
unsigned char tangtoc(void)
{
if(tang==0)
{
while(tang==0)
{;}
phantram_PWM--;
delay(100);
if(phantram_PWM<1)
{
phantram_PWM=1;

} }
return (phantram_PWM);
}
/* Ham dieu khien giam toc*/
unsigned char giamtoc(void)
{
if(giam==0)
{
while(giam==0)
{;}
phantram_PWM++;
delay(100);
if(phantram_PWM>20)
phantram_PWM=20;
}
return (phantram_PWM);
}
/* Lua chon che do cua dong co*/

unsigned char n;
unsigned char chonchedo(void)
{
if(stop==0) n=1;
if(thuan==0) n=2;
if(nghich==0) n=3;
switch(n)
{
case 0: {break;}
case 1: {stopdc();break;}
case 2: {quaythuan();break;}
case 3: {quaynghich();break;}
}
return (n);
}
/* Chuong trinh chinh*/
void main()
{
khoitaohethong();
while(1)
{
tangtoc();
giamtoc();
chonchedo();
hienthi((20-phantram_PWM)/10,(20-phantram_PWM)%10);
}
}


(Empty)

Blog Điện Tử | Tin Học - Chia sẻ kiến thức - Kết nối đam mê điện tử