欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年步进电机程 .pdf

    • 资源ID:39900934       资源大小:135.78KB        全文页数:21页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年步进电机程 .pdf

    内容:本程序用于测试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 unsigned 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_CD1 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=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 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_OFF 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;/*-显示函数,用于动态扫描数码管输入参数FirstBit 表示需要显示的第一位,如赋值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=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 times,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: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;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_();#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;/蜂鸣器/*/*/*延时 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;uint 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)名师资料总结-精品资料欢迎下载-名师精心整理-第 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步进电机转的圈数控制*/*电机使用端口: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*a;c+)for(b=0;b8;b+)P1=zhb;delay(1);void main()/主程序 motor(2);/转 2 圈(可以改动)delay(1000);while(1);PCB 打样找华强http:/ 样板 2 天出货名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 21 页 -东哥单片机学习网推荐:东哥单片机学习网商城 主营:单片机开发板,编程器,无线接收控制板加入收藏网站地图网站搜索繁體-网站首页资源下载技术文栏音响发烧友单片机东哥开发网版主原创电路图专栏传感器模块电子商城付款方式商城调用您的位置:首页 单片机 51 单片机内容搜索:阅读内容背景:步进电机可设定圈数,方向转换,速率调整,LCD 显示程序日期:2012-05-14 来源:本站原创作者:佚名 字体:大中 小(投递新闻)步进电机可设定圈数,方向转换,速率调整,LCD 显示程序#include /51 芯片管脚定义头文件#include /内部包含延时函数_nop_();#define uchar unsigned char#define uint unsigned int#define delayNOP();_nop_();_nop_();_nop_();_nop_();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;/设定圈数sbit K3=P16;/方向转换sbit K4=P17;/速率调整sbit BEEP=P37;/蜂鸣器sbit LCD_RS=P20;sbit LCD_RW=P21;sbit LCD_EN=P22;bit on_off=0;/运行与停止标志bit direction=1;/方向标志bit rate_dr=1;/速率标志bit snum_dr=1;/圈数标志uchar code cdis1 =STEPPING MOTOR;uchar code cdis2 =CONTROL PROCESS;uchar code cdis3 =STOP;uchar code cdis4 =NUM:RATE:;名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 21 页 -uchar code cdis5 =RUNNING;uchar m,v=0,q=0;uchar number=0,number1=0;uchar snum=5,snum1=5;/预设定圈数uchar rate=8;/预设定速率uchar data_temp,data_temp1,data_temp2;/*/*/*延时 t 毫秒/*11.0592MHz 时钟,延时约1ms/*/*/void delay(uint t)uchar 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 j;for(j=0;j100;j+)delayB(4);BEEP=!BEEP;/BEEP 取反名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 21 页 -BEEP=1;/关闭蜂鸣器delay(170);/*/*/*检查 LCD 忙状态/*lcd_busy 为 1 时,忙,等待。为0 时,闲,可写指令与数据。/*/*/bit lcd_busy()bit result;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(P0&0 x80);LCD_EN=0;return(result);/*/*/*写指令数据到LCD/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。/*/*/void lcd_wcmd(uchar cmd)while(lcd_busy();LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();P0=cmd;delayNOP();LCD_EN=1;delayNOP();名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 21 页 -LCD_EN=0;/*/*/*写显示数据到LCD/*RS=H,RW=L,E=高脉冲,D0-D7=数据。/*/*/void lcd_wdat(uchar dat)while(lcd_busy();LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;/*/*/*LCD 初始化设定/*/*/void lcd_init()delay(30);lcd_wcmd(0 x38);/16*2 显示,5*7 点阵,8 位数据delay(5);lcd_wcmd(0 x38);delay(5);lcd_wcmd(0 x38);delay(5);lcd_wcmd(0 x0c);/显示开,关光标delay(5);lcd_wcmd(0 x06);/移动光标delay(5);lcd_wcmd(0 x01);/清除 LCD 的显示内容名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 21 页 -delay(5);/*/*/*设定显示位置/*/*/void lcd_pos(uchar pos)lcd_wcmd(pos|0 x80);/数据指针=80+地址变量/*/*/*LCD1602 初始显示子程序/*/*/void LCD_init_DIS()delay(10);/延时lcd_init();/初始化 LCD lcd_pos(0);/设置显示位置为第一行的第1 个字符m=0;while(cdis1m!=0)/显示字符lcd_wdat(cdis1m);m+;lcd_pos(0 x40);/设置显示位置为第二行第1 个字符m=0;while(cdis2m!=0)lcd_wdat(cdis2m);/显示字符m+;delay(3000);/延时lcd_pos(0);/设置显示位置为第一行的第1 个字符m=0;名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 21 页 -while(cdis3m!=0)/显示字符lcd_wdat(cdis3m);m+;lcd_pos(0 x40);/设置显示位置为第二行第1 个字符m=0;while(cdis4m!=0)lcd_wdat(cdis4m);/显示字符m+;for(m=0;m2;m+)lcd_pos(0 x0c+m);/显示方向符号lcd_wdat(0 x3e);/*/*/*数据转换子程序/*/*/void data_conv()data_temp1=data_temp/10;/高位if(data_temp1=0)data_temp1=0 x20;/高位为 0 不显示else data_temp1=data_temp1+0 x30;data_temp2=data_temp%10;/低位data_temp2=data_temp2+0 x30;/*/*/*数据显示子程序/*/*/void data_dis()名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 21 页 -data_temp=snum;/显示圈数data_conv();lcd_pos(0 x44);lcd_wdat(data_temp1);lcd_pos(0 x45);lcd_wdat(data_temp2);data_temp=rate;/显示速率data_conv();lcd_pos(0 x4d);lcd_wdat(data_temp1);lcd_pos(0 x4e);lcd_wdat(data_temp2);/*/*/*显示运行方向符号/*/*/void motor_DR()if(direction=1)/正转方向标志 for(m=0;m2;m+)lcd_pos(0 x0c+m);/显示方向符号lcd_wdat(0 x3e);else for(m=0;m2;m+)/反转方向标志 lcd_pos(0 x0c+m);/显示方向符号lcd_wdat(0 x3c);/*/*/*显示运行状态/*/*/void motor_RUN()名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 21 页 -if(on_off=1)TR0=1;lcd_pos(0);/设置显示位置为第一行的第1 个字符m=0;while(cdis5m!=0)lcd_wdat(cdis5m);/RUNNING m+;motor_DR();/else TR0=0;P1=0 xf0;lcd_pos(0);/设置显示位置为第一行的第1 个字符m=0;while(cdis3m!=0)lcd_wdat(cdis3m);/STOPm+;motor_DR();/snum=snum1;/number1=0;/清圈数计数器 /*主程序*/main()LCD_init_DIS();TMOD=0 x01;/T0 定时方式 1 TL0=0 x33;TH0=0 xf5;EA=1;ET0=1;P1=0 xf0;while(1)if(K1=0)名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 21 页 -beep();while(K1=0);/等待键释放on_off=on_off;motor_RUN();/K1 end/*/if(K2=0)beep();if(snum_dr=1)snum+;snum1=snum;if(snum=0 x14)snum_dr=snum_dr;else snum-;snum1=snum;if(snum=0 x01)snum_dr=snum_dr;/K2 end/*/if(K3=0)beep();direction=direction;motor_DR();/K3 end/*/if(K4=0)beep();if(rate_dr=1)rate+;if(rate=0 x10)rate_dr=rate_dr;else rate-;if(rate=0 x01)名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 21 页 -rate_dr=rate_dr;/K4 end/*/if(number1=snum1)/与设定圈数是否相等 number1=0;on_off=0;TR0=0;snum=snum1;P1=0 xf0;motor_RUN();data_dis();/while(1)end /main end/*/*/*定时器0 中断/*/*/void motor_onoff()interrupt 1 TL0=0 x33;TH0=0 xf5;q+;if(q rate)return;else q=0;number+;/脉冲计数if(number=96)/96 个脉冲电机转一圈 snum-;number=0;number1+;/电机转动圈数if(direction=1)/方向标志 if(v8)P1=FFWv;v+;/取数据,正转if(v=8)名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 21 页 -v=0;else if(v8)P1=REVv;v+;/取数据,反转if(v=8)v=0;参考链接:http:/ 名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 21 页 -

    注意事项

    本文(2022年步进电机程 .pdf)为本站会员(H****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开