


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、51单片机控制的步进电机 C语言程序用的是L298驱动的 和ULN2003 样,你把它换成 2003就行拉#i nclude un sig ned char codetable=0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9,0x00,0xf1,0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0x f3,0x00。un sig ned char temp,temp_old。un sig ned char key 。un sig ned char i,j,k,m,s 。void delay(i nt ifor(m=i 。 m0。 m-for(j=250
2、。j0 o j-for(k=10 o k0 o k-。void saomiao(P3=0xff oP3_4=0 otemp=P3 otemp=temp&0 x0f 。if(temp!=0x0ffor(i=50 o i0。i-for(j=200 o j0 o j- otemp=P3 otemp=temp&0 x0f 。if(temp!=0x0ftemp=P3 otemp=temp&0x0f。switch(tempcase 0x0e:key=1 obreak 。case 0x0d:key=2 。break 。case 0x0 b:key=3 。break 。case 0x07:key=4 。bre
3、ak 。temp=P3 。temp=temp&0 x0f 。 while(temp!=0x0f temp=P3 。temp=temp&0x0f。P3=0xff。P3_5=0 。 temp=P3 。temp=temp&0 x0f 。if(temp!=0x0ffor(i=50 。 i0。 i- for(j=200 o j0。 j-。 temp=P3 o temp=temp&0 x0f 。 if(temp!=0x0ftemp=P3 otemp=temp&0x0f。switch(tempcase 0x0d:key=5 。break 。case 0x0 b:key=6 。break 。case 0x07
4、:key=7 。break 。temp=P3 o temp=temp&0 x0f 。 while(temp!=0x0ftemp=P3。 temp=temp&OxOf 。 void mai n(voidwhile(1saomiao( 。if(key=1 P1=0。P2=0。saomiao( 。if(key=2 temp_old=key 。 for(s=0 。 s P2=tables。P1_4=0 。 delay(13 。 saomiao( 。 if(key!=temp_oldP1_4=1 。 break 。if(key=3 temp_old=key 。 for(s=0 。 s P2=tables
5、。P1_5=0 。 delay(5 。 saomiao( 。 if(key!=temp_oldP1_5=1 。break。if(key=4temp_old=key 。for(s=0 。 s P2=tables。P1_6=0 。delay(20 。 saomiao( 。 if(key!=temp_oldP1_6=1 。break 。if(key=5temp_old=key 。for(s=9 。 s P2=tables。P1_7=0 。delay(13 。 saomiao( 。 if(key!=temp_oldP1_7=1 。break 。if(key=6temp_old=key 。for(s=9
6、 。 s P2=tables。P1_5=0 。delay(5 。saomiao( 。if(key!=temp_oldP1_5=1 。break 。if(key=7temp_old=key 。for(s=9 。 s P2=tables。P1_6=0 。delay(20 。saomiao( 。if(key!=temp_oldP1_6=1 。break 。C语言程序源代码#i nclude / 51 寄存器定义#i nclude in tri ns.h#define control P1 P1_0:A 相,P1_1:B 相,P1_2:C 相,P1_3:D 相#defi ne discode P0 /
7、 显示代码控制端口#defi ne uchar un sig ned char / 定义无符号型变量#defi ne uint un sig ned intsbit en_dm=P3A0 。/显示代码锁存控制sbit en_wk=P3A1 。/位控锁存控制uchar code corotation4= 0x03,0x06,0x0c,0x09。 / 电机正转uchar code rollback4=0x0c,0x06,0x03,0x09。/ 电机反转。显示字段uchar code tab10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ui
8、nt code Levspeed5=500,400,300,200,100。/ 电机速度等级uchar Hscan,speedcount。 /Hscan 行扫描,speedcount 速度等级计数uint uu。/频率计数uint step,setstep 。 /step :电机步伐计数,setstep :手动设置电机步伐uint speed=500 。 /电机初始速度uchar count。uchar flag5。uchar butcount 。/按键次数*flag0正转标志flag1反转标志flag2加速标志flag3减速标志flag4设置标志*Delay1mS(u nsig ned in
9、t tt / 延时1msDelaylmS延时子程序,用循环语句延时。unsigned char i 。while(tt-for(i=113。i0。i-。keyscan( /键盘扫描“keyscan键盘扫描子程序,用于寻找是否有按键按下。P2=0xf0。/把oxfe赋值给P2 口 /将按键控制口置于未按键的状态.单片机输出/ 口假设不是按键按下状态if(P2!=0xf0 /如果P2 口的值不等于Oxfe /检查是否有按键按下如果有,处理内的事/有按键按下Delay1mS(150 。调用延时函数/有按键按下,避开无效读码值的时间.,或者是脉冲长度Hscan=0xfe 。/将Hscan赋值,初始遥控
10、值是要置高电平的P2=Hscan 。/while(Hscan&0x10!=0 / 检查X10 口是否有键按下。未按下是1,/在这显示出你的按键口是P2_4.即检查P2_4是高电平,无/键按下,低电平有键按下。P2=Hscan 。if(P2 &0xf0!=0xf0 /检查按键脉冲是否是变化,return P2 。else Hscan=(Hsca*|0x01。 /这里在存码值,应该是遥控输入。将码值存入Hscan/这里是读取码值的关键,如果来的脉冲不管是高电平还是低电平,靠左 移一位保存脉冲的状态值else return 0 。key_val( /按键处理函数/这里是读取将存好的码值进行处理看是什
11、么代码值uchar key。key= keyscan( 。 /这里是读取码值并存放在key里switch(key /这里是对比读取的码值case Oxee: /按键7读取的码值=OxEE,则是按键 “的代码while(P2=0xee。setstep=setstep*10+7 。 步伐数/这里是输入” setstep+7步伐数对比读取的码值, /setstep原来可能是有数字的。step=setstep 。butcount+ 。/计数,看输入拉几个数字if(butcount=5/输入的数字超过 5个就置0,无效butco un t=0。setstep=0 。break 。case 0xde: /
12、按键8读取的码值=0xdE,则是按键 “的代码/其他同” 7”while(P2=0xde。setstep=setstep*10+8 。butco un t+ 。step=setstep 。if(butco un t=5butco un t=0。setstep=0 。break 。case 0xbe: / 按键9同上 ” 7”/while(P2=0xbe 。setstep=setstep*10+9 。butco un t+ 。step=setstep 。if(butco un t=5butco un t=0。setstep=0 。break 。case 0x7e: /按键 正转/正转按键识别while(P2=0x7e 。/等待按键松开一值按住电机是不转的,放开后才转有检查/P2 口的状态值flag0=0xff 。/开启正转标志,关闭反转置正转标志flag1=OxOO。/清除反转标志butcount=0。speedcount=0 。speed=500 。/置电机的转速if(!flag4 step=0 。TR0=1。break 。case 0xed: / 按键 4同上 ” 7” while(P2=0xed 。setstep=setstep*10+4 。 butco un t+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 如何确定被迫签了协议合同
- 小儿推拿十三五课件
- 碳钢法兰模板采购合同范本
- 宁夏恒力钢丝绳股份有限公司校园招聘模拟试题附带答案详解完整
- 期货从业资格之《期货法律法规》模拟题库含答案详解(满分必刷)
- 期货从业资格之期货投资分析强化训练高能带答案详解(培优a卷)
- 难点详解广东省恩平市中考数学真题分类(实数)汇编达标测试试卷(含答案详解)
- 难点解析-冀教版七年级下册期末试题及答案详解【典优】
- 期货从业资格之期货投资分析能力提升B卷题库及参考答案详解(达标题)
- 期货从业资格之《期货法律法规》试卷及参考答案详解【满分必刷】
- 《国家基本药物临床应用指南》《国家基本药物处方集》培训
- 顶管机安全技术操作规程范文
- 旋风分离器效率计算
- 保教知识与能力幼儿园课件
- 财务部半年度述职汇报PPT模板
- 药品种类清单
- 公共基础知识(社区工作者基础知识)试题(附答案)
- GB/T 37915-2019社区商业设施设置与功能要求
- 《电业安全工作规程》
- 卡西欧gw5600说明书
- 中兴NGN培训教材 MSG9000结构原理介绍课件
评论
0/150
提交评论