2022年步进电机程 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年步进电机程 .pdf》由会员分享,可在线阅读,更多相关《2022年步进电机程 .pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、内容:本程序用于测试4相步进电机常规驱动4个按键分别控制加速、减速、开启、停止数码管显示01-18 速度等级,数字越大,速度越大-*/#include#define KeyPort P3#define DataPort P0/定义数据端口程序中遇到DataPort 则用 P0 替换sbit LATCH1=P22;/定义锁存使能端口段锁存sbit LATCH2=P23;/位锁存unsigned char code dofly_DuanMa10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/显 示 段 码 值09 unsi
2、gned char code dofly_WeiMa=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;/分别对应相应的数码管点亮,即位码unsigned char T empData8;/存储显示值的全局变量sbit A1=P10;/定义步进电机连接端口sbit B1=P11;sbit C1=P12;sbit D1=P13;#define Coil_AB1 A1=1;B1=1;C1=0;D1=0;/AB相通电,其他相断电#define Coil_BC1 A1=0;B1=1;C1=1;D1=0;/BC相通电,其他相断电#define Coil_CD
3、1 A1=0;B1=0;C1=1;D1=1;/CD相通电,其他相断电#define Coil_DA1 A1=1;B1=0;C1=0;D1=1;/D相通电,其他相断电#define Coil_A1 A1=1;B1=0;C1=0;D1=0;/A相通电,其他相断电#define Coil_B1 A1=0;B1=1;C1=0;D1=0;/B相通电,其他相断电#define Coil_C1 A1=0;B1=0;C1=1;D1=0;/C相通电,其他相断电#define Coil_D1 A1=0;B1=0;C1=0;D1=1;/D相通电,其他相断电#define Coil_OFF A1=0;B1=0;C1=
4、0;D1=0;/全部断电unsigned char Speed=1;bit StopFlag;void Display(unsigned char FirstBit,unsigned char Num);名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 21 页 -void Init_Timer0(void);unsigned char KeyScan(void);/*-uS 延时函数,含有输入参数unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0255 这里使用晶振 12M,精确延时请使用汇编,大致延时长度如下T=tx2+5
5、uS-*/void DelayUs2x(unsigned char t)while(-t);/*-mS 延时函数,含有输入参数unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0255 这里使用晶振 12M,精确延时请使用汇编-*/void DelayMs(unsigned char t)while(t-)/大致延时 1mS DelayUs2x(245);DelayUs2x(245);/*-主函数-*/main()unsigned int i=512;/旋转一周时间unsigned char num;Init_Timer0();Coil_OF
6、F while(1)/正向 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 21 页 -num=KeyScan();/循环调用按键扫描if(num=1)/第一个按键,速度等级增加 if(Speed1)Speed-;else if(num=3)Coil_OFF StopFlag=1;else if(num=4)StopFlag=0;TempData0=dofly_DuanMaSpeed/10;/分 解 显 示 信 息,如 要 显 示 68,则 68/10=6 68%10=8 TempData1=dofly_DuanMaSpeed%10;/*-显示函数,用于动态扫描数码管输入参数Fi
7、rstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示如输入 0表示从第一个显示。Num 表示需要显示的位数,如需要显示99两位数值则该值输入2-*/void Display(unsigned char FirstBit,unsigned char Num)static unsigned char i=0;DataPort=0;/清空数据,防止有交替重影名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 21 页 -LATCH1=1;/段锁存LATCH1=0;DataPort=dofly_WeiMai+FirstBit;/取位码LATCH2=1;/位锁存LATCH2=
8、0;DataPort=TempDatai;/取显示数据,段码LATCH1=1;/段锁存LATCH1=0;i+;if(i=Num)i=0;/*-定时器初始化子程序-*/void Init_Timer0(void)TMOD|=0 x01;/使用模式 1,16 位定时器,使用|符号可以在使用多个定时器时不受影响/TH0=0 x00;/给定初值/TL0=0 x00;EA=1;/总中断打开ET0=1;/定时器中断打开TR0=1;/定时器开关打开PT0=1;/优先级打开/*-定时器中断子程序-*/void Timer0_isr(void)interrupt 1 static unsigned char t
9、imes,i;TH0=(65536-1000)/256;/重新赋值1ms 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 21 页 -TL0=(65536-1000)%256;Display(0,8);if(!StopFlag)if(times=(20-Speed)/最大值 18,所以最小间隔值20-18=2 times=0;switch(i)case 0:Coil_A1;i+;break;case 1:Coil_B1;i+;break;case 2:Coil_C1;i+;break;case 3:Coil_D1;i+;break;case 4:i=0;break;default
10、:break;times+;/*-按键扫描函数,返回扫描键值-*/unsigned char KeyScan(void)unsigned char keyvalue;if(KeyPort!=0 xff)DelayMs(10);if(KeyPort!=0 xff)keyvalue=KeyPort;while(KeyPort!=0 xff);switch(keyvalue)case 0 xfe:return 1;break;名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 21 页 -case 0 xfd:return 2;break;case 0 xfb:return 3;break
11、;case 0 xf7:return 4;break;case 0 xef:return 5;break;case 0 xdf:return 6;break;case 0 xbf:return 7;break;case 0 x7f:return 8;break;default:return 0;break;return 0;/*/*/*ME300系 列 单 片 机 开 发 系 统 演 示 程 序步 进 电 机 键 控 正 反 转 实 验/*/* ALL RIGHTS RESERVED/*/*/*/#include /51 芯片管脚定义头文件#include /内部包含延时函数_nop_();#
12、define uchar unsigned char#define uint unsigned int uchar code FFW8=0 xf1,0 xf3,0 xf2,0 xf6,0 xf4,0 xfc,0 xf8,0 xf9;uchar code REV8=0 xf9,0 xf8,0 xfc,0 xf4,0 xf6,0 xf2,0 xf3,0 xf1;sbit K1=P14;/正转sbit K2=P15;/反转名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 21 页 -sbit K3=P16;/停止sbit K4=P17;Sbit BEEP=P37;/蜂鸣器/*/*/*延时
13、 t 毫秒/*11.0592MHz1ms/*/*/void delay(uint t)uint k;while(t-)For(k=0;k125;k+)/*/void delayB(uchar x)/x*0.14MS uchar i;while(x-)for(i=0;i13;i+)/*/void beep()uchar i;for(i=0;i100;i+)delayB(4);BEEP=!BEEP;/BEEP 取反 BEEP=1;/关闭蜂鸣器/*/*/*步进电机正转/*/*/名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 21 页 -void motor_ffw()uchar i;u
14、int j;for(j=0;j12;j+)/转 1*n 圈 if(K4=0)break;/退出此循环程序for(i=0;i8;i+)/一个周期转30 度 P1=FFW i ;/取数据delay(15);/调节转速 /*/*/*步进电机反转/*/*/void motor_rev()uchar i;uint j;for(j=0;j12;j+)/转 1n 圈 if(K4=0)break;/退出此循环程序for(i=0;i8;i+)/一个周期转30 度 P1=REV i ;/取数据delay(15);/调节转速 /*/*主程序*/main()uchar r,N=5;/N 步进电机运转圈数while(1
15、)名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 21 页 -if(K1=0)beep();for(r=0;rN;r+)motor_ffw();/电机正转if(K4=0)beep();break;/退出此循环程序 else if(K2=0)beep();for(r=0;rN;r+)motor_rev();/电机反转if(K4=0)beep();break;/退出此循环程序 else P1=0 xf0;/*/名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 21 页 -步进电机,自己控制转的圈数(程序中改动)/*/*描述:28BYJ-48步进电机转的圈数控制*/*电机使
16、用端口:P1.0、P1.1、P1.2、P1.3*/*单双八拍工作方式:A-AB-B-BC-C-CD-D-DA*/*#include/头文件/*单双八拍工作方式:A-AB-B-BC-C-CD-D-DA*char code zh8=0 x08,0 x0c,0 x04,0 x06,0 x02,0 x03,0 x01,0 x09;void delay(char x)/延时程序 char i;while(x-)for(i=0;i120;i+);void motor(unsigned int a)/a 即想要转的圈数 unsigned char b;unsigned int c;for(c=0;c8*64
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年步进电机程 2022 步进 电机
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内