历史上的今天
今天是:2024年11月08日(星期五)
2019年11月08日 | 单片机按键&串口控制步进电机正反转调速含程序和仿真
2019-11-08 来源:51hei
包含程序和仿真
功能:按键或串口发送字符指令,控制步进电机正转、反转、停止、加速、减速动作
仿真过程可直接通过按下电脑键盘控制
仿真原理图如下



单片机源程序如下:
#include #define uint unsigned int #define uchar unsigned char //------8拍----- uchar code zz[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //正转 uchar code fz[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //反转 sbit K1=P3^0; //停止 sbit K2=P3^1; //正转 sbit K3=P3^2; //反转 sbit K4=P3^3; //加速 sbit K5=P3^4; //减速 uchar state=0; //状态变量 uint Time=60; //延时时间,用于调速 unsigned char receiveData='0'; void UsartConfiguration(); //初始化串口 void delay(uint ms) //延时,用于调速 { uint t; while(ms--) for(t=0;t<120;t++); } void motor_zz() //正传函数 { uint j; for(j=0;j<8;j++) { if(P3==0xfb) break; P1=zz[j]; delay(Time); } } void motor_fz() //反转函数 { uint j; for(j=0;j<8;j++) { if(P3==0xfb) break; P1=fz[j]; delay(Time); } } void main() { UsartConfiguration(); while(1) { while(state==0) //状态0,停止 { if((K2==0)||(receiveData=='z')) //按下K2或串口接收到'z',电机正转 { state=1; receiveData='0'; break; } if((K3==0)||(receiveData=='f')) //按下K3或串口接收到'f',电机反转 { state=2; receiveData='0'; break; } P0=0xfb; P1=0x03; } while(state==1) //状态1,正转 { if((K1==0)||(receiveData=='t')) //按下K1或串口接收到'f',电机反转 { state=0; receiveData='0'; break; } if((K2==0)||(receiveData=='z')) //按下K2或串口接收到'z',电机正转 { state=1; receiveData='0'; break; } if((K3==0)||(receiveData=='f')) //按下K3或串口接收到'f',电机反转 { state=2; receiveData='0'; break; } if((K4==0)||(receiveData=='+')) //按下K4或串口接收到'+',电机加速 { Time=Time-5; if(Time<20) Time=20; while(K4==0); } if((K5==0)||(receiveData=='-')) //按下K5或串口接收到'-',电机减速 { Time=Time+5; if(Time>100) Time=100; while(K5==0); } motor_zz(); //状态1,正转 } while(state==2) //状态2,反转 { if((K1==0)||(receiveData=='t')) //按下K1或串口接收到'f',电机反转 { state=0; receiveData='0'; break; } if((K2==0)||(receiveData=='z')) //按下K2或串口接收到'z',电机正转 { state=1;
史海拾趣
|
Altera参考设计- 10-Gbps Ethernet IP User Guide This datasheet describes the Altera® 10-Gbps Ethernet IP core which implements the IEEE 802.3 2005 and 802.1Q Ethernet standards. You can use the Quartus® II software to parameterize and implement this IP core in your de ...… 查看全部问答> |
|
obj-m (tab)= module.o KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD (tab) := $(shell pwd) all: (tab) $(MAKE) –C $(KERNELDIR) M=$(PWD) clean: (tab)rm –rf *.o *~ core .depend .*.cmd *.ko *.mod.c .temp_version ...… 查看全部问答> |
|
wince初级问题:builder生成的nk.bin是做什么的?请大侠详细说明下! 我用vs2005 + platform 6.0创建了一个小项目(\'hello world application\').build run-time image 生成之后的nk.bin是做什么用的?还有我现在有一个wince的虚拟器,怎么样在上面跑起来这个程序?谢谢指教。… 查看全部问答> |
|
我想在开始菜单的程序菜单项中添加自己开发的应用程序,在网上查了下资料,说是给应用程序建立快捷方式,然后把快捷方式文件放在Program Files目录下,这样就可以实现添加功能,我给自己的应用程序建立了一个快捷方式文件,把这两个文 ...… 查看全部问答> |
|
寻求程控交换机缓存器供货商 我们公司是从事程控交换机计费软件的开发,现在需要计费缓存器来存储话单,缓存器主要是用来存话单。是串口连接,寻求能够长期给我们公司供货的厂家 联系方式:13601039521 msn:zmfhawk@hotmail.com … 查看全部问答> |
|
通过GPS坐标计算两点的距离,有什么比较精确和运算效率比较高的办法 通过GPS坐标计算两点的距离,有什么比较精确和运算效率比较高的办法。 根据两个点的坐标(经纬度)计算它们之间的距离的算法。… 查看全部问答> |




