资源简介
本文介绍了单片机控制步进电机的系统。在电气时代的今天,电动机一直在现代化的生产和生活中起着十分重要的作用。步进电机是机电控制中一种常用的执行机构, 其原理是通过对它每相线圈中的电流和顺序切换来使电机作步进式旋转。本系统的硬件组成主要有:51系列单片机、L298N驱动电路、直流电压源等。同时对系统设计中所用到的一些软件都进行了介绍。本系统用51系列单片机和L298N电机驱动芯片并加入了键盘来控制步进电机实现转向、转速等。系统中使用的是永磁式二相步进电机,相应的驱动和控制电路对于其整体性能起着非常重要的作用。
经系统调试,能够很好的控制步进电机的正反转、加减速、急停,从而达到预期目的。整个系统具有结构简单、可靠性高、成本低和实用性强等特点,具有较高的通用性和应用推广价值。

代码片段和文件信息
#include“reg51.h“
#include“intrins.h“
#include“math.h“
#include“absacc.h“
#define PORTA XBYTE[0x8500]
#define PORTB XBYTE[0x8502]
#define PORTC XBYTE[0x8504]
#define PORTC0 XBYTE[0x8506]
#define nop _nop_()
#define Right_RUN 1
#define Left_RUN 0
unsigned long RunSpeed=76;
unsigned char RUNState=1;
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit P17=P1^7;
bit flag=0;
unsigned char xx[]=“speed(n/min):“;
unsigned char SD[]=“76“;
char state[2][14]={“direction:cw““direction:ccw“};
unsigned char FLGINMA=0;
unsigned char ts=0x01;
unsigned int a;
main()
{
void OPJIAN();
unsigned char JIAN();
unsigned char JIANZHI();
void speed();
void SHOW_LCD();
void show_state();
void write1();
void writ2(unsigned char i);
void delay();
void time();
void busy();
unsigned char i;
i=0x90;
PORTC0=i;
i=0x01;
TMOD=i;
t=0x10;
a=0x0f;
TH0=0x10;
TL0=0x0f;
FLG=INMA;
SHOW_LCD();
show_state();
EA=1;
ET0=1;
TR0=1;
while(1)
{
i=JIAN();
if(i!=0)
{
time();
time();
}
i=JIAN();
if(i!=0)
{
INMA=JIANZHI();
OPJIAN();
time();
}
if(FLG!=INMA||flag==1)
{ FLG=INMA;
SHOW_LCD();
show_state();
flag=0;
}
}
}
void SHOW_LCD()/*lcd设置程序*/
{
P1=0x38;
write1();
delay();
P1=0x38;
write1();
delay();
P1=0x38;
write1();
delay();
P1=0x01;
write1();
delay();
P1=0x0f;
write1();
delay();
P1=0x06;
write1();
delay();
P1=0x0c;
write1();
}
void show_state()/*状态显示程序*/
{
unsigned char i=0;
P1=0x80;
write1();
while(xx[i]!=‘\0‘)
{
writ2(xx[i]);
i++;
delay();
}
i=0;
while(SD[i]!=‘\0‘)
{
writ2(SD[i]);
delay();
i++;
}
P1=0xc0;
write1();
i=0;
if(RUNState==Right_RUN)
while(state[0][i]!=‘\0‘)
{
writ2(state[0][i]);
i++;
}
else
if(RUNState==Left_RUN)
while(state[1][i]!=‘\0‘)
{
writ2(state[1][i]);
i++;
}
}
void write1()/*lcd写控制字*/
{
RS=0;
RW=0;
E=0;
busy();
E=1;
}
void writ2( unsigned char i)/*lcd写数据*/
{ P1=i;
RS=1;
RW=0;
E=0;
busy();
E=1;
}
void delay()/*延时程序*/
{
unsigned char i;
for(i=0;i<100;i++)
{
i=i;
}
}
void time()
{ unsigned char ij;
for(i=0;i<100;i++)
{
for(j=0;j<30;j++)
{
j=j;
}
}
}
void busy() //判断LCD是否忙
{
do
{
P1=0xff;
RS=0;
RW=1;
E=0;
nop;
E=1;
}while(P17==1);
}
unsigned char JIAN()/*判断是否有键按下*/
{
unsigned char ij;
i=0xff;
PORTA=i;
time();
i=0x00;
PORTB=i;
j=PORTA;
j=~j;
j=j&(0x0f);
return j;
}
unsigned char JIANZHI()/*读键值程序*/
{
unsigned ijdkm=1;
i=0xfe;
k=0x01;
do
{
PORTB=i;
j=PORTA;
m=j&(0x01);
if(m==0)
d=k/2;
else
{
m=j&(0x02);
if(m
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 181508 2007-08-18 20:16 C语言驱动程序\步进电机.DSN
文件 181508 2007-08-18 20:16 C语言驱动程序\Last Loaded 步进电机.DBK
文件 814 2007-09-19 21:54 C语言驱动程序\步进电机.PWI
文件 807 2007-09-16 22:50 C语言驱动程序\d.Opt
....... 1658 2007-08-17 16:47 C语言驱动程序\d_Uv2.Bak
文件 4103 2007-08-18 20:13 C语言驱动程序\d.c
文件 0 2007-09-16 22:02 C语言驱动程序\d.plg
文件 10370 2007-08-18 20:13 C语言驱动程序\d.LST
文件 15057 2007-08-18 20:13 C语言驱动程序\d.OBJ
文件 19 2007-08-18 20:13 C语言驱动程序\d.lnp
文件 16616 2007-08-18 20:13 C语言驱动程序\d.M51
文件 13292 2007-08-18 20:13 C语言驱动程序\d
文件 3696 2007-08-18 20:13 C语言驱动程序\d.hex
....... 807 2007-08-18 20:14 C语言驱动程序\d_Opt.Bak
文件 1662 2007-08-18 20:05 C语言驱动程序\d.Uv2
目录 0 2007-08-16 15:02 C语言驱动程序
----------- --------- ---------- ----- ----
432135 17
相关资源
- Apolipoprotein E4 Impairs in vivo Hippocampal
- Zprotect专业版(无限制) 一机一码E
- 51单片机PWM程序,占空比、周期可调整
- PIC单片机完成的电子密码锁
- proteus仿真 AT89C51输出各种波形
- 00
- 步进电机课程设计(个人设计)
- 机器人单机械臂滑模控制程序
- FPGA在步进电机驱动上的应用实例及代
- 步进电机protues仿真
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- proteus_24C08—有注释(proteus里面使用的
- DS18B20分布式多点测温的Proteus仿真
- 基于proteus的单片机仿真--交通灯控制
- 带时间温度显示的室内灯光控制系统
- 单片机控制的步进电机正反转和加速
- 51多机通信(内附Proteus及.hex文件)
- 6相12拍步进电机控制器
- IIC proteus仿真实验
- 8086交通灯 Proteus原理图及程序
- LabVIEW步进电机控制.vi
- 西门子s7-200smart换热站控制程序.smar
- 单片机仿真软件proteus6.7免安装绿色版
- 关于proteus仿真arm7出现错误的问题
- 基于PROTEUS的ARM7显示系统设计与仿真实
- Novel fluorescent proteins generated by de nov
- PCB设计软件Protel使用中常见问题汇总
- STM32+1602液晶proteus仿真.zip
- AT89C51+ADC0808 PROTEUS仿真
评论
共有 条评论