资源简介
51单片机的步进电机控制,lcd1602显示电机转动方向及转速,用矩阵键盘调整方向及速度,包含c源码及proteus仿真

代码片段和文件信息
/***************************************************
程序使用1毫秒定时器中断实现转速精确控制
步进电机用8拍驱动(A-AB-B-BC-C-CD-D-DA)
****************************************************/
#include
#include “LCD1602.H“
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
/*****端口定义************/
#define P_key P3
sbit motor_a=P1^0;
sbit motor_b=P1^1;
sbit motor_c=P1^2;
sbit motor_d=P1^3;
bit run=0;
uint speed;
uint temp_t1temp_t2;
uchar KeyValue ;
uchar motor_step;
void Disply(void); //显示
uchar GetKey(void);//返回键盘值0--16
void ScanKey(void);//键盘扫描处理
void SetMotorSpeed(uint nSpeed);//设置电机转速 nSpeed:转速 step/s
void delayNms(uint z);//延时
/*****主函数************/
void main()
{
lcd1602_init();
motor_a=0;
motor_b=1;
motor_c=1;
motor_d=1;
motor_step=0;
TMOD = 0x01;
TH0 = 0x0FC;
TL0 = 0x18;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
Disply();
ScanKey();
}
}
/*****延时************/
void delayNms(uint z)
{
uint x;
for( ;z>0;z--)
for(x=124;x>0;x--)
;
}
/*****设置电机转速************/
void SetMotorSpeed(uint nSpeed)// nSpeed:转速 step/s
{
speed=nSpeed;
if(speed!=0)
{
run=1;
//计算每步需要多少毫秒
temp_t2=1000/nSpeed;
}
else
{
run=0;
}
}
/*****1毫秒定时器************/
void Timer0Interrupt(void) interrupt 1
{
if(run)
{
temp_t1++;
if(temp_t1>temp_t2)
{
temp_t1=0;
motor_step++;
if(motor_step>7) motor_step=0;
switch (motor_step)
{
case 0:
{
motor_a=0; motor_b=1;
motor_c=1; motor_d=1;
break;
}
case 1:
{
motor_a=0; motor_b=0;
motor_c=1; motor_d=1;
break;
}
case 2:
{
motor_a=1; motor_b=0;
motor_c=1; motor_d=1;
break;
}
case 3:
{
motor_a=1; motor_b=0;
motor_c=0; motor_d=1;
break;
}
case 4:
{
motor_a=1; motor_b=1;
motor_c=0; motor_d=1;
break;
}
case 5:
{
motor_a=1; motor_b=1;
motor_c=0; motor_d=0;
break;
}
case 6:
{
motor_a=1; motor_b=1;
motor_c=1; motor_d=0;
break;
}
case 7:
{
motor_a=0; motor_b=1;
motor_c=1; motor_d=0;
break;
}
default: break;
}
}
}
TH0 = 0x0FC;
TL0 = 0x18;
}
/***********显示************/
void Disply( )
{
uchar DisBuff[16];
DisBuff[0]=‘S‘;
DisBuff[1]=‘p‘;
DisBuff[2]=‘e‘;
DisBuff[3]=‘e‘;
DisBuff[4]=‘d‘;
DisBuff[5]=speed>9999 ? speed%100000/10000+0x30 : 0x20;
DisBuff[6]=speed>999 ? speed%10000/1000+0x30 : 0x20;
DisBuff[7]=speed>99 ? speed%1000/100+0x30 : 0x20;
DisBuff[8]=speed>9 ? speed%100/10+
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-01-22 11:26 lcd1602 motor\
文件 109105 2011-12-27 19:46 lcd1602 motor\Last Loaded sx.DBK
文件 1985 2006-06-11 08:38 lcd1602 motor\LCD1602.H
文件 5421 2011-12-28 00:30 lcd1602 motor\main.c
文件 12344 2011-12-28 00:30 lcd1602 motor\main.LST
文件 15267 2011-12-28 00:30 lcd1602 motor\main.OBJ
文件 34 2011-12-28 00:30 lcd1602 motor\main.__i
文件 14072 2011-12-28 00:30 lcd1602 motor\motor_1602
文件 4865 2011-12-28 00:30 lcd1602 motor\motor_1602.hex
文件 62 2011-12-28 00:30 lcd1602 motor\motor_1602.lnp
文件 21572 2011-12-28 00:30 lcd1602 motor\motor_1602.M51
文件 908 2011-12-28 11:38 lcd1602 motor\motor_1602.opt.bak
文件 184 1993-05-05 07:51 lcd1602 motor\motor_1602.plg
文件 2171 2011-12-27 23:21 lcd1602 motor\motor_1602.Uv2.bak
文件 55401 1993-05-05 07:51 lcd1602 motor\motor_1602.uvopt
文件 13422 1993-05-05 07:51 lcd1602 motor\motor_1602.uvproj
文件 1064 2011-12-28 00:35 lcd1602 motor\motor_1602_Opt.Bak
文件 2170 2011-12-27 20:05 lcd1602 motor\motor_1602_Uv2.Bak
文件 6376 2011-12-28 00:27 lcd1602 motor\STARTUP.A51
文件 10782 2011-12-28 00:27 lcd1602 motor\STARTUP.LST
文件 750 2011-12-28 00:27 lcd1602 motor\STARTUP.OBJ
文件 116440 2011-12-28 00:34 lcd1602 motor\sx.DSN
文件 840 2013-01-22 11:26 lcd1602 motor\sx.PWI
文件 109 2011-12-27 17:40 lcd1602 motor\新建文本文档.txt
相关资源
- 基于STM32RCT6的步进电机驱动程序
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 步进电机课程设计(个人设计)
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- [免费]msp430f149控制PS2键盘并用1602显示
- FPGA在步进电机驱动上的应用实例及代
- 步进电机protues仿真
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- vhdl与lcd1602实现的多控制电子钟
- ADC0809数字电压表 LCD1602显示 汇编程序
- 单片机控制的步进电机正反转和加速
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 6相12拍步进电机控制器
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
评论
共有 条评论