单片机步进电机控制液晶1602显示系统

一、系统方案

步进电机是一种进行精确步进运动的机电执行元件,它是机电一体化的关键产品之一,广泛应用于各种自动化控制系统中。而且,随着单片机技术的不断发展以及单片机在日用电子产品中的广泛使用,步进电机的应用也得到了很大的提高。人们可以用它驱动时钟和其他各种采用指针的仪器,如,打印机、绘图仪、磁盘光盘驱动器、自动控制阀、以及机器人等机械装置。
本文主要工作是应用51单片机控制步进电机的系统设计。通过AT89C52单片机、驱动芯片ULN2003、多个独立按键等外围电路以及相应的C语言程序实现控制电机正转、反转、加速、减速等功能,并用液晶显示屏LCD1602显示步进电机当前的工作状态。
在这里插入图片描述

二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化:
init_1602();
TMOD|=0X01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
2、液晶显示程序
/********************************************************************

  • 名称 : write_com(uchar com)
  • 功能 : 1602命令函数
  • 输入 : 输入的命令值
  • 输出 : 无
    ***********************************************************************/
    void write_com(uchar com)
    {
    e=0;
    rs=0;
    rw=0;
    P0=com;
    delay_uint(20);
    e=1;
    delay_uint(20);
    e=0;
    }

/********************************************************************

  • 名称 : write_data(uchar dat)
  • 功能 : 1602写数据函数
  • 输入 : 需要写入1602的数
  • 输出 : 无
    ***********************************************************************/
    void write_data(uchar dat)
    {
    e=0;
    rs=1;
    rw=0;
    P0=dat;
    delay_uint(20);
    e=1;
    delay_uint(20);
    e=0;
    }
    3、按键检测程序
    //按键检测
    if(!k1)//启动
    {
    start=1;
    }
    if(!k2)//停止
    {
    start=0;
    }
    if(!k3)//正转
    {
    fang=0;
    }
    if(!k4)//反转
    {
    fang=1;
    }
    if(!k5)//加速
    {
    if(speed<9)
    speed++;
    while(!k5);
    }
    if(!k6)//减速
    {
    if(speed>0)
    speed–;
    while(!k6);
    }
    4、核心算法程序
    if(start1)//启动
    {
    if(time<10-speed)//速度0-9
    {
    time++;
    }
    else
    {
    time=0;
    if(fang
    0) //正转
    {
    switch(flag)
    {
    case 0:BB=1;break;
    case 1:AA=0;break;
    case 2:CC=1;break;
    case 3:BB=0;break;
    case 4:DD=1;break;
    case 5:CC=0;break;
    case 6:AA=1;break;
    case 7:DD=0;
    }
    if(flag<7)//下一个状态
    flag++;
    else
    flag=0;
    }
    else //反转
    {
    switch(flag)
    {
    case 0:DD=1;break;
    case 1:AA=0;break;
    case 2:CC=1;break;
    case 3:DD=0;break;
    case 4:BB=1;break;
    case 5:CC=0;break;
    case 6:AA=1;break;
    case 7:BB=0;
    }
    if(flag<7)//下一个状态
    flag++;
    else
    flag=0;
    }
    }
    }
    四、proteus仿真设计
    Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bbxyliyang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值