




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/*名称:步进电机 * 晶振:12MHZ* 修改:无* 内容 :主程序中用 3 个按键,加速、减速、启动和停止。定时器做数码 * 管动态扫描和步进电机驱动。 * 硬件事项:J19的7B,6B,5B,4B依次用杜邦线连接到P27,P26,P25,P24*/#include #define DataPort P1 定义数据端口程序中遇到 DataPort则用P1替换sbit LATC H仁P2八0;/定义锁存使能端口段锁存sbit LATCH2=P2A1;/位 锁存sbit S17=P3A3;/ 独立按键sbit S18=P3A2;sbit S19=P3A1;sbit S20=P3A0;unsig
2、nedcharcodeHEYAO_DuanMa10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x f8,0x80,0x90;/ 显示段码值 89unsigned char code HEYAO_WeiMa=0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80;/ 分别对应相应的数码管点亮 ,即位码un sig nedcharTempData8=0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X存储;/ 显示值的全局变量sbit A1=P2A7; /定义步进电机连接端口sbit B1=P2A6;sbit C1=P2A5;sb
3、it D1=P2A4;#define Coil_AB1 A仁 1;B1=1;C 仁 0;D 仁 O;/A0 目通电,其他相断电#define Coil_BC1 A 仁 0;B1=1;C1=1;D 仁0;/B相通电,其他相断电#define Coil_CD1 A仁 0;B1=0;C 仁1;D1=1;/C 相通电,其他相断电#define Coil_DA1 A仁 1;B1=0;C 仁0;D1=1;相通电,其他相断电#define Coil_A1 A 仁 1;B1=0;C 仁0;D 仁0;/A相通电,其他相断电#define Coil_B1 A 仁 0;B1=1;C 仁 0;D1=0;Bf 通电,其
4、他相断电#define Coil_C1 A仁0;B仁0;C1=1;D仁0;C目通电,其他相断电#define Coil_D1 A 仁 0;B1=0;C 仁 0;D1=1;Df 通电,其他相断电#define Coil_OFF A 仁 0;B1=0;C 仁0;D 仁 0;全部断电unsigned char Speed;bit StopFlag;bit Flag,sb;void Display(unsigned char FirstBit,unsigned char Num);void Init_Timer0(void);un sig ned char KeySca n(v oid);/键盘扫描/
5、*uS延时函数,含有输入参数 un sig ned char t,无返回值un sig ned char是定义无符号字符变量,其值的范围是0255这里使用晶振12M,大致xxxx 如下 T=tx2+5 uS*/void DelayUs2x(unsigned char t)while(-t);void DelayMs(unsigned chart)while(t-)/ 大致延时 1mSDelayUs2x(245);DelayUs2x(245);/*主函数*/main()unsigned int j,i;/ 旋转一周时间unsigned char num;Init_Timer0();while(1
6、)/ 正向Coil_OFFnum二KeySca n();循环调用按键扫描if(num=1)第一个按键,速度等级增加if(Speed1)switch(j)Speed+;else if(nu m=2)/第二个按键,速度等级减小Speed-;else if(nu m=3)第三个按键,电机停止和启动 case 0:Coil_OFFStopFlag=1;j+;break;case 1: StopFlag=0;j-;break;else if(num=4)sb=1;while(1)&(sb)Flag=1;i=50;while(i-)&(Flag)/ 正向 Coil_A1DelayMs(Speed);Coi
7、l_AB1遇到 Coil_AB1A仁1;B1=1;C仁0;D仁(代替DelayMs(Speed);/改变这个参数可以调整电机转速,/数字越小,转速越大 力矩越小 Coil_B1DelayMs(Speed);Coil_BC1DelayMs(Speed);Coil_C1DelayMs(Speed);Coil_CD1 用 DelayMs(Speed);Coil_D1DelayMs(Speed);Coil_DA1DelayMs(Speed);num=KeyScan();if(num=3)第三个按键,电机停止和启动Flag=O;sb=O;Coil_OFFi=50;while(i-)&(Flag)/ 反?
8、/ num=KeyScan();Coil_A1DelayMs(Speed);Coil_DA1遇到 Coil_AB1A仁1;B1=1;C仁0;D仁(代替DelayMs(Speed);/改变这个参数可以调整电机转速,/数字越小,转速越大 力矩越小 Coil_D1DelayMs(Speed);Coil_CD1DelayMs(Speed);Coil_C1DelayMs(Speed);Coil_BC1DelayMs(Speed);Coil_B1DelayMs(Speed);Coil_AB1DelayMs(Speed);num=KeyScan();if(num=3)/ 第三个按键,电机停止和启动用 Fla
9、g=0;sb=0;TempData0=HEYAO_DuanMaSpeed/10;TempData1=HEYAO_DuanMaSpeed%10;/ 分解显示信息,如要显示 68,则 =668%10=8TempData0=HEYAO_DuanMaSpeed/10;TempData1=HEYAO_DuanMaSpeed%10;/*显示函数,用于动态扫描数码管输入参数 FirstBit 表示需要显示的第一位,如赋值 2 表示从第三个数码管开始显示如输入 0 表示从第一个显示。Num 表示需要显示的位数,如需要显示 99 两位数值则该值输入 2 */void Display(unsigned char
10、FirstBit,unsigned char Num)static unsigned char i=0;DataPort=0xff;/ 清空数据,防止有交替重影LATCH1=1;/xxLATCH1=0;DataPort=HEYAO_WeiMai+FirstBit; /取位码LATCH2=1;/位锁存LATCH2=0;DataPort=TempDatai; /取显示数据,段码LATCH1=1;/xxLATCH1=0;i+;if(i=Num)i=0;/*定时器初始化子程序*/void Init_TimerO(void)TMOD |= 0x01;/ 使用模式 1, 16 位定时器,使用|符 号可以在
11、使用多个定时器时不受影响TH0=0x00;给定初值/TL0=0x00;EA=1;总xx打开ET0=1;/定时器xx打开TR0=1;/定时器开关打开PT0=1;/优先级打开/*定时器xx子程序*/void Timer0_isr(void) interrupt 1static unsigned char times,i;TH0=(65536-1000)/256; 重新赋值 1msTL0=(65536-1000)%256;TR0=0;TR0=1;Display(0,8);if(!StopFlag)if(times=(20-Speed)/最大值 18,所以最小间隔值 20- 18=2times=0;s
12、witch(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+;/*按键扫描函数,返回扫描键值*/un sig ned char KeySca n(void)if(!S20)/如果检测到低电平,说明按键按下 DelayMs(10); /延时去抖,一般 10-20msif(!S20)再次确认按键是否按下,没有按下则退出while(!S20);如果确认按下按键等待按键释放,没有释放则一直等待 return 1;if(!S19)如果检测到低电平,说明按键按下DelayMs(10); /延时去抖,一般 10-20msif(!S19)再次确认按键是否按下,没有按下则退出while(!S19);如果确认按下按键等待按键释放,没有释放则一直等待 return 2;if(!S18)如果检测到低电平,说明按键按下DelayMs(10); /延时去抖,一般 10-20msif(!S18)再次确认按键是否
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆共享模式创新-洞察及研究
- 元宇宙中的虚拟现实与增强现实协同应用场景探索-洞察及研究
- 虚拟参考咨询改进-洞察及研究
- 船舶减振降噪-洞察及研究
- 手拉叉车安全教育培训课件
- 手性判别课件
- 类星体吸积盘模型-洞察及研究
- 手工安全培训课件
- 水质污染溯源技术-洞察及研究
- 手势舞课前律动课件
- 实用美术基础中职全套教学课件
- 债权债务法律知识讲座
- 南京财经大学《812西方经济学(宏观经济学、微观经济学)》历年考研真题及详解
- 个人停车位租赁合同模板
- 基于教育培训行业的客户关系营销研究
- 肉制品工艺学-香肠类制品-课件
- 超全QC管理流程图
- 2广告实务课程标准
- 001 比较思想政治教育(第二版) 第一章
- GB/T 2992.1-2011耐火砖形状尺寸第1部分:通用砖
- 中医门诊消毒隔离制度
评论
0/150
提交评论