




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/* 名称:步进电机 * 晶振:12MHZ * 修改:无 * 内容:主程序中用 3个按键,加速、减速、启动和停止。定时器做数码* 管动态扫描和步进电机驱动。* 硬件事项:J19的7B,6B,5B,4B依次用杜邦线连接到P27,P26,P25,P24 * *-*/#include #define DataPort P1 /定义数据端口 程序中遇到DataPort 则用P1 替换sbit LATCH1=P20;/定义锁存使能端口 段锁存sbit LATCH2=P21;/ 位锁存sbit S17=P33;/独立按键sbit S18=P32;sbit S19=P31;sbit S20=P30;unsigned char code HEYAO_DuanMa10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/ 显示段码值0123456789unsigned char code HEYAO_WeiMa=0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80;/分别对应相应的数码管点亮,即位码unsigned char TempData8=0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF; /存储显示值的全局变量sbit A1=P27; /定义步进电机连接端口sbit B1=P26;sbit C1=P25;sbit D1=P24;#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;bit StopFlag;bit Flag,sb;void Display(unsigned char FirstBit,unsigned char Num);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);void DelayMs(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); /*- 主函数-*/main() unsigned int j,i;/旋转一周时间 unsigned char num; Init_Timer0(); while(1) /正向 Coil_OFF num=KeyScan(); /循环调用按键扫描 if(num=1)/第一个按键,速度等级增加 if(Speed1) Speed-; else if(num=3)/第三个按键,电机停止和启动 switch(j) case 0: Coil_OFF StopFlag=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_A1 DelayMs(Speed); Coil_AB1 /遇到Coil_AB1 用A1=1;B1=1;C1=0;D1=0;代替 DelayMs(Speed); /改变这个参数可以调整电机转速 , /数字越小,转速越大,力矩越小 Coil_B1 DelayMs(Speed); Coil_BC1 DelayMs(Speed); Coil_C1 DelayMs(Speed); Coil_CD1 DelayMs(Speed); Coil_D1 DelayMs(Speed); Coil_DA1 DelayMs(Speed); num=KeyScan(); if(num=3)/第三个按键,电机停止和启动 Flag=0;sb=0; Coil_OFF i=50; while(i-)&(Flag)/反? / num=KeyScan(); Coil_A1 DelayMs(Speed); Coil_DA1 /遇到Coil_AB1 用A1=1;B1=1;C1=0;D1=0;代替 DelayMs(Speed); /改变这个参数可以调整电机转速 , /数字越小,转速越大,力矩越小 Coil_D1 DelayMs(Speed); Coil_CD1 DelayMs(Speed); Coil_C1 DelayMs(Speed); Coil_BC1 DelayMs(Speed); Coil_B1 DelayMs(Speed); Coil_AB1 DelayMs(Speed); num=KeyScan(); if(num=3)/第三个按键,电机停止和启动 Flag=0;sb=0; TempData0=HEYAO_DuanMaSpeed/10; TempData1=HEYAO_DuanMaSpeed%10; /分解显示信息,如要显示68,则68/10=6 68%10=8 TempData0=HEYAO_DuanMaSpeed/10; TempData1=HEYAO_DuanMaSpeed%10; /*- 显示函数,用于动态扫描数码管 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示 从第三个数码管开始显示 如输入0表示从第一个显示。 Num表示需要显示的位数,如需要显示99两位数值则该值输入2-*/void Display(unsigned char FirstBit,unsigned char Num) static unsigned char i=0; DataPort=0xff; /清空数据,防止有交替重影 LATCH1=1; /段锁存 LATCH1=0; DataPort=HEYAO_WeiMai+FirstBit; /取位码 LATCH2=1; /位锁存 LATCH2=0; DataPort=TempDatai; /取显示数据,段码 LATCH1=1; /段锁存 LATCH1=0; i+; if(i=Num) i=0;/*- 定时器初始化子程序-*/void Init_Timer0(void) TMOD |= 0x01; /使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响 /TH0=0x00; /给定初值 /TL0=0x00; EA=1; /总中断打开 ET0=1; /定时器中断打开 TR0=1; /定时器开关打开 PT0=1; /优先级打开/*- 定时器中断子程序-*/void Timer0_isr(void) interrupt 1 static unsigned char times,i; TH0=(65536-1000)/256; /重新赋值 1ms TL0=(65536-1000)%256; TR0=0; TR0=1; 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) if(!S20) /如果检测到低电平,说明按键按下 DelayMs(10); /延时去抖,一般10-20ms if(!S20) /再次确认按键是否按下,没有按下则退出 while(!S20);/如果确认按下按键等待按键释放,没有释放则一直等待 return 1; if(!S19) /如果检测到低电平,说明按键按下 DelayMs(10); /延时去抖,一般10-20ms if(!S19) /再次确认按键是否按下,没有按下则退出 while(!S19);/如果确认按下按键等待按键释放,没有释放则一直等待 return 2; if(!S18) /如果检测到低电平,说明按键按下 DelayMs(10); /延时去抖,一般10-20ms if(!S18) /再次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 象山店面设计知识培训课件
- 2025版商铺租赁合同范本下载全攻略
- 2025办公室装修改造项目环保壁纸材料选用合同
- 2025版特色主题团建活动设计与执行合同范本
- 2025年度婚庆服务合同范本
- 2025版粉末涂料采购合同范本
- 2025年度区块链技术应用合作协议下载
- 2025年度物流配送合作保证金合同
- 2025年度日用品供应链金融服务合同
- 2025年购买带产权车位应签署何种合同
- 2025-2030中医药大健康产业链整合与投资机会分析报告
- 学前教育学完整-2017课件
- 部编六年级语文上册一二单元教案
- 炮塔铣床数显表使用说明书
- 乒乓球体育课教案1
- 自然灾害与防治
- 先进制造技术第1章
- 2023年兴文县中医院康复医学与技术岗位招聘考试历年高频考点试题含答案解析
- 用地性质分类表代码
- 中班语言绘本《点》课件
- 浙江省地方课程《人自然社会》课件
评论
0/150
提交评论