資源簡介
很好的步進電機仿真, 做了好久才做出來的。給力!

代碼片段和文件信息
#include?
#include?“lcd1602.h“
#include?“step_motor.h“
unsigned?char?code?SpeedChar[]=“SPEED(n/min):“;
unsigned?char?code?StateChar[]=“RUN?STATE:“;
unsigned?char?code?STATE_CW[]=“CW“;
unsigned?char?code?STATE_CCW[]=“CCW“;
unsigned?char?SPEED[3]=“050“;
unsigned?char?JSB=1;//減速比為1,本例不考慮減速比
//28BYJ-48?四相單極性步進電機步距角5.625/64(1-2相勵磁)減速比1:64額定電壓5V
//這里對PROTEUS中的STEPMOTOR的STEP?ANGLE設置為11.25為1相勵磁的步進角是1-2相勵磁步進角的兩倍
void?DoSpeed()
{
????unsigned?int?rpm;
????//轉速(RPM)=(60×1000)(ms)/轉一圈的時間(ms)
//轉一圈的時間(ms)=轉一圈有多少個8拍×每個8拍所用時間
//轉一圈有多少個8拍=360度/轉一個8拍所轉角度
//每個8拍所用時間=Step_Speed*8;
//轉一個8拍所轉角度=8*步進角
//步進角=5.625/減速比
????//RPM=(60*1000)/((360/(8*(5.625/1)))*?(Step_Speed*8));
????rpm=1000/Step_Speed;
SPEED[0]=rpm/100+48;
????SPEED[1]=rpm%100/10+48;
????SPEED[2]=rpm%10+48;
}
void?display()
{
????LCD_cls();
LCD_set_position(0x00);
LCD_prints(SpeedChar);
LCD_prints(SPEED);
LCD_set_position(0x40);
LCD_prints(StateChar);
if?(Run_State)
{
LCD_prints(STATE_CW);
}
else
{
????LCD_prints(STATE_CCW);
}
}
void?init()
{
EX0=1;//開外部中斷0
IT0=1;//外部中斷0下降沿觸發方式
EX1=1;//開外部中斷1
IT1=1;//外部中斷0下降沿觸發方式
TMOD=0x66;//01100110?定時器0和1都采用方式2計數工作方式,擴展外部中斷個數
TH0=0xff;
TL0=0xff;?//定時器0初值,計數一次則溢出中斷
TH1=0xff;
TL1=0xff;?//定時器1初值,計數一次則溢出中斷
ET0=1; ??//開定時器0中斷
ET1=1; ??//開定時器1中斷
EA=1;?????//開總中斷
TR0=1;????//定時器0開始計數啟動
TR1=1; ??//定時器1開始計數啟動
}
void?Key_Right(void)?interrupt?0?//正轉
{
Run_State=RIGHT_RUN;
display();?
}
void?Key_Left(void)?interrupt?2
{
Run_State=LEFT_RUN;
display();?
}
void?Key_Add(void)?interrupt?1
{
????if(Step_Speed>10)
????{
Step_Speed-=2;
????DoSpeed();
}
display();?
}
void?Key_Sub(void)?interrupt?3
{
if(Step_Speed<100)
{
Step_Speed+=2;
DoSpeed();
}
display();?
}
void?main()
{
STEP_MOTOR=STEP_MOTOR?&?0x0F;//四相清零
????Run_State=RIGHT_RUN;?????//正轉
????Step_Speed=50;???????????//相驅動PPS時間間隔50ms
DoSpeed();
????init();//初始化外部和定時器中斷
LCD_init();
display();
while(1)
{ ???
DriveStep();
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????????19??2011-05-29?13:55??Step_Motor\ExtDll.iex
?????文件????????497??2011-05-29?10:51??Step_Motor\hardware.h
?????文件??????86147??2011-05-29?13:23??Step_Motor\Last?Loaded?step_motor.DBK
?????文件???????8423??2011-05-29?13:11??Step_Motor\LCD1602.C
?????文件???????1592??2011-05-29?12:05??Step_Motor\LCD1602.h
?????文件??????12708??2011-05-29?14:53??Step_Motor\LCD1602.LST
?????文件???????9976??2011-05-29?14:53??Step_Motor\LCD1602.OBJ
?????文件???????2343??2011-05-29?14:53??Step_Motor\main.c
?????文件???????5282??2011-05-29?14:53??Step_Motor\main.LST
?????文件???????8971??2011-05-29?14:53??Step_Motor\main.OBJ
?????文件??????20260??2011-05-29?14:53??Step_Motor\step_motor
?????文件???????1245??2011-05-29?14:25??Step_Motor\step_motor.c
?????文件??????83301??2011-05-29?13:30??Step_Motor\step_motor.DSN
?????文件????????357??2011-05-29?14:33??Step_Motor\step_motor.h
?????文件???????3593??2011-05-29?14:53??Step_Motor\step_motor.hex
?????文件?????????81??2011-05-29?14:53??Step_Motor\step_motor.lnp
?????文件???????3484??2011-05-29?14:53??Step_Motor\step_motor.LST
?????文件??????23348??2011-05-29?14:53??Step_Motor\step_motor.M51
?????文件???????3896??2011-05-29?14:53??Step_Motor\step_motor.OBJ
?????文件???????1847??2011-05-29?14:58??Step_Motor\step_motor.Opt
?????文件??????19569??2011-05-29?14:58??Step_Motor\step_motor.plg
?????文件????????768??2011-05-29?14:56??Step_Motor\step_motor.PWI
?????文件???????2244??2011-05-29?12:13??Step_Motor\step_motor.Uv2
?????文件???????1845??2011-05-29?14:53??Step_Motor\step_motor_Opt.Bak
?????文件???????2228??2011-05-29?12:04??Step_Motor\step_motor_Uv2.Bak
?????目錄??????????0??2011-05-29?14:58??Step_Motor
-----------?---------??----------?-----??----
???????????????304024????????????????????26
- 上一篇:jli
nk 轉接板原理圖 - 下一篇:6N137光耦直插和貼片封裝AD.PcbLib
評論
共有 條評論