当前位置: 首页 > news >正文

【开源-Proteus8.9仿真】基于51单片机的四相步进电机控制(ULN2003 + StepMotor + LCD1602) - 少年

项目开源链接以及作者信息

参数
VX公众号 少年潜行(可关注回复 A003步进电机 在对应文中获得网盘链接免费开源
Proteus8.9 链接:https://pan.baidu.com/s/1kkgFmRBlh268m_ESl83weg 提取码:9bde 复制这段内容后打开百度网盘手机App,操作更方便哦

📖 欢迎交流 如果对你有帮助,希望可以帮我点个赞👍和收藏,谢谢

📖 有问题请于公众号后台回复,博客不常查看

V1.1 (2025_07_05更新)

更新内容

1、在V1.0基础上优化了LCD显示延时,使得LCD的显示更加迅速。
2、如果有问题,大家可以继续提出。大家就不要去下资源绑定里面的内容了,那个不能实时更新。

LCD显示优化

在实际仿真使用的时候LCD刷新会比较慢,使用实物的时候可以用原来的代码,仿真的时候可以把延时注释了,使用下面的函数,开头要加个1ms的延时,因为没有忙检测。

void LcdWriteCom(uint8_t com)	  //写入命令
{Lcd1602_Delay1ms(1);LCD1602_E = 0;     //使能LCD1602_RS = 0;	   //选择发送命令LCD1602_RW = 0;	   //选择写入LCD1602_DATAPINS = com;     //放入命令
//	Lcd1602_Delay1ms(1);		//等待数据稳定LCD1602_E = 1;	          //写入时序
//	Lcd1602_Delay1ms(5);	  //保持时间LCD1602_E = 0;
}void LcdWriteData(uint8_t dat)			//写入数据
{Lcd1602_Delay1ms(1);LCD1602_E = 0;	//使能清零LCD1602_RS = 1;	//选择输入数据LCD1602_RW = 0;	//选择写入LCD1602_DATAPINS = dat; //写入数据
//	Lcd1602_Delay1ms(1);LCD1602_E = 1;   //写入时序
//	Lcd1602_Delay1ms(5);   //保持时间LCD1602_E = 0;
}	

V1.0 基础内容

项目说明

该设计是一个简易的基于51单片机的四相步进电机控制系统,功能说明:

  1. 使用LCD1602实时显示当前的步进电机的转动方式。
  2. 可以通过按键调节步进电机的转动1步进的时间,可以调节正转和反转的。

硬件设计

image

硬件设计如图,主要使用LCD屏幕展示电机正反转的模式以及步进一步的毫秒数。可以使用按键控制是正转还是反转,可以控制步进一次的时间。

软件设计

按键的扫描在while中实现,界面显示放置在while循环中,使用的晶振是12MHz。使用定时器定时了1ms的时间,然后在定时器中确定每次步进需要的时间,计数值到了后再清零。

#include "reg52.h"
#include "step_motor.h"
#include "bsp_key.h"
#include "LCD1602.h"
#include "stdio.h"void Timer0_Init(void);u8  MotorRunMode = STOP;
int StepMs       = 100;int main()
{u8 keyValue = 0;u8 lcdShowBuff[16] = {0};EA = 0;   // 失能全部中断Timer0_Init();KeyInit();LcdInit();sprintf((char*)lcdShowBuff,"Mode : STOP  ");LcdShowStr(0,0,lcdShowBuff);sprintf((char*)lcdShowBuff,"StepMs : %4d  ",StepMs);LcdShowStr(0,1,lcdShowBuff);EA = 1;   // 使能全部中断while (1){keyValue = KeyScan(0);if( keyValue == 1 ){MotorRunMode = CW;sprintf((char*)lcdShowBuff,"Mode : CW  ");LcdShowStr(0,0,lcdShowBuff);}else if( keyValue == 2 ){MotorRunMode = CCW;sprintf((char*)lcdShowBuff,"Mode : CCW ");LcdShowStr(0,0,lcdShowBuff);}else if( keyValue == 3 ){StepMs += 100;if(StepMs > 1000)StepMs = 1000;sprintf((char*)lcdShowBuff,"StepMs : %4d  ",StepMs);LcdShowStr(0,1,lcdShowBuff);}else if( keyValue == 4 ){StepMs -= 100;if(StepMs < 0)StepMs = 0;sprintf((char*)lcdShowBuff,"StepMs : %4d  ",StepMs);LcdShowStr(0,1,lcdShowBuff);}	}
}void Timer0_Init(void)		//1毫秒@12.000MHz
{TMOD &= 0xF0;			//设置定时器模式TMOD |= 0x01;			//设置定时器模式TL0 = 0x18;				//设置定时初始值TH0 = 0xFC;				//设置定时初始值TF0 = 0;				//清除TF0标志TR0 = 1;				//定时器0开始计时ET0 = 1;                //使能定时器0
}// 1ms定时器中断
void Timer0() interrupt 1
{static int counts = 0;TL0 = 0x18; //设置定时0初始值TH0 = 0xFC; //设置定时0初始值counts++;if (counts > StepMs) // 定时大于指定MS数的时候,运动一步进{MotorTurn(MotorRunMode);counts = 0;}
}

调试效果

1、显示当前的转动方式和电机转动

image

2、电机按键调节转动速度

image

http://www.jsqmd.com/news/480609/

相关文章:

  • 腾讯“龙虾”产品矩阵出击,AI 市场风云再起
  • 2026年盘点弗拉门戈舞蹈教学机构,深圳西艺文化口碑怎么样 - mypinpai
  • 总结津胜GEO优势,看看在天津地区使用它靠不靠谱 - 工业品网
  • 汽车贴膜性价比怎么选,肇庆星车驾到这样的公司靠谱吗 - 工业设备
  • 探讨不错的瓷砖建材采购企业,潮州哪家口碑好且费用合理? - 工业品牌热点
  • 说说中欧班列货代品牌企业,珠三角地区哪家口碑比较好? - 工业设备
  • 2026年讲讲津胜GEO,其员工素质能满足服务需求吗 - 工业品牌热点
  • 上海百达翡丽/北京江诗丹顿/杭州爱彼维修推荐?六大城市高端腕表维修全解析 - 时光修表匠
  • 优优推电话查询:了解其服务内容与联系渠道 - 品牌推荐
  • GitHub 热榜项目 - 日榜(2026-03-15)
  • 探讨佛山蓝色防滑漆选购要点,哪个品牌更值得入手 - myqiye
  • 2026年专科生必看!学生热捧的降AIGC平台 —— 千笔·专业降AI率智能体
  • InStreet API 完整参考
  • 专科生也能用!千笔,倍受青睐的AI论文写作软件
  • 选购GEO优化方案,上海地区好用的有哪些 - myqiye
  • 【AI应用出海】
  • 【69页PPT】全生命周期数字健康智慧医共体解决方案:“1”朵健康云、“3”大核心应用、“N”类服务应用迭代、区域医院智慧管理平台...
  • 学长亲荐!AI论文平台 千笔ai写作 VS speedai,专科生写论文更轻松!
  • 优优推电话查询:营销服务风险提示与咨询 - 品牌推荐
  • CF1363D Guess The Maximums 题解
  • 跨境电商WMS的生命周期的庖丁解牛
  • 2026年化工厂与钢厂采购指南:揭秘PPH管阀供应商TOP10榜单 - 企业推荐官【官方】
  • 2026年3月,探寻行业内口碑好的破拱器供应商该选哪家,行业内做得好的破拱器口碑推荐精选优质品牌助力工程采购 - 品牌推荐师
  • 数字化智能工厂MES规划建设方案:整体规划与架构、基于RFID的全流程追溯、物联网与数据可视化、预期效益与实施
  • 优优推电话查询:潜在合作前的通用建议 - 品牌推荐
  • 想改善宠物口腔问题?上海专业医生推荐来了,猫咪牙科/猫咪牙结石/猫咪口炎/狗狗拔牙/猫咪洗牙,宠物口腔医生排名前十 - 品牌推荐师
  • 挖机计时计数管理难题频出,2026年如何选择可靠解决方案? - 企业推荐官【官方】
  • 【最全】2026年OpenClaw(Clawdbot)摸鱼人9分钟搭建及使用教程
  • 值得买商品详情页前端性能优化实战
  • 2026年空气能热水器品牌深度测评:基于核心技术与市场口碑的五维战力全解析 - 品牌推荐