51单片机+按键控制步进电机驱动+LCD1602显示

✅ 文末提供代码和仿真文件!

在这里插入图片描述

在Proteus当中,步进电机选取的不同,接线的顺序不同,为了避免在接线出错,将里面的两种步进电机都选择了,注意区分接线顺序,接错限流,电机是不会转或者抖动的。


本文将介绍一个基于 51 单片机的综合应用系统,该系统结合了实时时钟显示与步进电机控制功能,通过 LCD1602 显示屏提供直观的交互界面,通过按键实现对步进电机的灵活控制。

系统主要组成:
1.实时时钟模块:采用 DS1302 芯片提供精确的时间基准
2.显示模块:使用 LCD1602 液晶显示屏展示时间信息和电机状态
3.步进电机驱动模块:控制步进电机的正反转及速度调节
4.按键交互模块:通过外部中断实现对电机的操作控制

系统的整体工作流程:
初始化硬件设备后,DS1302 实时时钟提供时间数据,经处理后通过 LCD1602 显示;同时通过按键中断检测用户操作,实时控制步进电机的运行状态,并在显示屏上更新相应信息。

主函数:
主循环不断读取时间并更新显示,同时根据按键设置的控制变量控制步进电机的运行状态,并在 LCD 上显示当前模式(正转、反转、停止等)。

void main(void) {                         
    // 初始化操作
    step2 = 0;
    step1 = 0;
    P1 = 0xff;
    s1 = 0; s2 = 0; s3 = 0; s4 = 0;
    EX1 = 1;  // 允许外部中断1
    EA = 1;   // 允许总中断	                       
    speed = 2000;  // 初始速度
    LCD_init();
    
    while(1) {  
        // 读取并显示时间
        get_1302(time_1302);
        DS1302_change();
        LCD_display_char(0, 2, times);
        LCD_display_char(0, 1, date);
        
        // 电机控制逻辑
        if((scan_key1 == 1) && (scan_key2 == 0)) {  // 正转
            ground(step_index);
            delay_speed(speed);
            step_index++;
            if(step_index > 7) step_index = 0; 
            LCD_display_char(11, 1, "zhen");
        }
        // 反转、停止、速度调节等逻辑...
    }
}

完整代码下载地址:
在小程序内复制网盘链接下载后,直接解压即可。
https://www.kdocs.cn/l/cdKOEx0g5dWQ
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值