资源简介
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
相关资源
- 基于51单片机的交通信号灯程序
- GSM监控系统51单片机设计
- 51单片机定时器/计数器的结构和原理
- MCS-51单片机定时器和计数器区别的理
- 基于51单片机的多通道数据采集范围控
- ADC0832ADC0809DAC0832三种芯片程序,c程序
- 基于51单片机的直流电机转速控制及显
- 单片机控制步进电机PMW的驱动与放大
- 单片机驱动4相步进电机proteus仿真
- 高速公路快速放行提示系统
- 光敏电阻传感器模块4线制
- 51单片机_DS1302时钟芯片_共阴数码管
- 基于51单片机的教室智能照明控制系统
- 基于单片机的智能低电阻测量仪
- 电动车智能充电桩全套
- 五路循迹智能小车
- 基于51单片机的交通灯设计
- 51 教室智能灯 控制系统
- 51单片机125Khz ID卡读卡程序
- 51单片机课程设计内含50多个课程设计
- 51单片机实现蜂鸣器的简易歌曲播放器
- 基于51单片机的智能十字路口交通灯系
- LCD1602显示程序
- 51单片机编写的标准modbus协议通信模版
- SIM900A通过51单片机拨打电话程序
- at89c51单片机外文翻译
- 循迹小车51程序(超声波 颜色识别 舵
- Proteus仿真的单片机控制步进电机及液
- CW2015 51单片机程序
- 基于51单片机的超声波测距技术实现含
评论
共有 条评论