mọi người xem gium em đoạn code này sai ở đâu mà khi lắp thực tế chân 22, 23 mức 1 còn 24 25 26 toàn ở mức 0 là sao.
/* 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
#define PWM P2_2
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,0x1 0};
void hienthi(unsigned char digit1, unsigned char digit2)
{
/*Hien thi so thu nhat*/
P3=LED[digit1];
P1_6=1;
delay(2);
P1_6=0;
/*Hien thi so 2*/
P3=LED[digit2];
P1_7=1;
delay(2);
P1_7=0;
}
/* Khoi tao Timer 100us*/
void khoitaohethong()
{ P2_5=0;
//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_5=0;
P2_3=1;
P2_4=1;
}
/* Ham quay thuan dong co*/
void quaythuan(void)
{
P2_1=0;
P2_0=1;
P2_3=0;
P2_5=1;
P2_4=1;
}
/* Ham quay nghich dong co*/
void quaynghich(void)
{
P2_0=0;
P2_1=1;
P2_4=0;
P2_3=1;
P2_5=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);
}
}
/* 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
#define PWM P2_2
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,0x1 0};
void hienthi(unsigned char digit1, unsigned char digit2)
{
/*Hien thi so thu nhat*/
P3=LED[digit1];
P1_6=1;
delay(2);
P1_6=0;
/*Hien thi so 2*/
P3=LED[digit2];
P1_7=1;
delay(2);
P1_7=0;
}
/* Khoi tao Timer 100us*/
void khoitaohethong()
{ P2_5=0;
//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_5=0;
P2_3=1;
P2_4=1;
}
/* Ham quay thuan dong co*/
void quaythuan(void)
{
P2_1=0;
P2_0=1;
P2_3=0;
P2_5=1;
P2_4=1;
}
/* Ham quay nghich dong co*/
void quaynghich(void)
{
P2_0=0;
P2_1=1;
P2_4=0;
P2_3=1;
P2_5=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);
}
}