资源简介
很好的步进电机仿真, 做了好久才做出来的。给力!

代码片段和文件信息
#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
相关资源
- 51单片机PWM程序,占空比、周期可调整
- proteus仿真 AT89C51输出各种波形
- 00
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- proteus_24C08—有注释(proteus里面使用的
- DS18B20分布式多点测温的Proteus仿真
- 基于proteus的单片机仿真--交通灯控制
- 带时间温度显示的室内灯光控制系统
- 51多机通信(内附Proteus及.hex文件)
- IIC proteus仿真实验
- 8086交通灯 Proteus原理图及程序
- 单片机仿真软件proteus6.7免安装绿色版
- 关于proteus仿真arm7出现错误的问题
- 基于PROTEUS的ARM7显示系统设计与仿真实
- Electric Motors and Drives (Austin)
- electric motors and drives
- STM32+1602液晶proteus仿真.zip
- AT89C51+ADC0808 PROTEUS仿真
- 单片机驱动4相步进电机proteus仿真
- GP88软件/GP300对讲机Win版中文写频软件
- proteus元件库对照表 (整理清晰)
- 微机原理 十字路口交通灯控制 prot
- 中央空调室内智能温控器设计论文、
- 基于51单片机的交通灯设计
- 基于AT89C51的十字路口交通灯设计pro
- Proteus单片机仿真大全几百个part4
- Proteus升压电路仿真
- keil调试仿真技巧-从入门到精通
- 十字路口交通灯.pdsprj
评论
共有 条评论