资源简介
很好的步进电机仿真, 做了好久才做出来的。给力!
代码片段和文件信息
#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
相关资源
- 8086交通灯_基于Proteus仿真.rar
- Proteus中单片机89C51在LCD12864显示
- 两片单片机之间的串行通信(proteus仿
- proteus仿真车速
- Proteus仿真AT89C52——计数
- 汽车尾灯控制电路.zip
- proteus arduino仿真库
- 基于8086的proteus电子时钟系统
- 汇编流水灯 8253+8255+8259.rar
- 51流水灯仿真加代码
- 数字时钟课程设计报告
- 51单片机实现密码锁(带proteus仿真)
- model_of_Two_phase_Hybrid_stepping_motor.slx
- 基于Proteus的温度传感器串口通信仿真
- proteus实验\\数字时钟电路设计proteus仿
- 微机原理PROTUES仿真实现秒表
- 51单片机测量方波频率proteus仿真
- Proteus_H型电机驱动
- 数字逻辑课程设计四路抢答器Proteus设
- Motorola Symbol MC3190 驱动 扫描激光头驱
- 基于8086的交通灯.zip
- C51智能时钟以及Proteus电路图
- proteus8253实验
- emeu8086+proteus音乐发声器
- 基于单片机的洗衣机控制系统设计
- 室内有害气体监测系统的设计proteus仿
- Proteus仿真8086数码管显示
- 51单片机读取DS18b20数据加1602显示+pr
- 矩阵键盘程序基于proteus的设计与仿真
- SPI总线协议官方手册 Motorola 摩托罗拉
评论
共有 条评论