步进电机(键盘控制可调速)

上传人:子 文档编号:42004477 上传时间:2018-05-31 格式:DOC 页数:23 大小:52KB
返回 下载 相关 举报
步进电机(键盘控制可调速)_第1页
第1页 / 共23页
步进电机(键盘控制可调速)_第2页
第2页 / 共23页
步进电机(键盘控制可调速)_第3页
第3页 / 共23页
步进电机(键盘控制可调速)_第4页
第4页 / 共23页
步进电机(键盘控制可调速)_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《步进电机(键盘控制可调速)》由会员分享,可在线阅读,更多相关《步进电机(键盘控制可调速)(23页珍藏版)》请在金锄头文库上搜索。

1、步进电机步进电机( (键盘控制可调速键盘控制可调速) )步进电机(键盘控制可调速)#include #define uchar unsigned charstatic unsigned int count; /计数static int step_index; /步进索引数,值为 07static bit turn; /步进电机转动方向static bit stop_flag; /步进电机停止标志static int speedlevel; /步进电机转速参数,数值越大速度越大,最小值为 1,速度最慢static int spcount; /步进电机转速参数计数void ddelay(void)

2、; /键盘扫描延时函数void delay(unsigned int endcount); /延时函数,延时为endcount*1 毫秒void gorun(); /步进电机控制步进函数sbit P10=P20 ; /电机端口定义sbit P11=P21 ;sbit P12=P22; sbit P13=P23 ;/* 键消抖延时函数 */void ddelay(void)uchar i;for (i=300;i0;i-);/* 键扫描函数*/ uchar keyscan(void)uchar scancode;uchar tmpcode;P1 = 0xf8; / 发全 0 行扫描码if (P1

3、 / 延时去抖动if (P1while(scancode / 输出行扫描码if (P1return(scancode)+(tmpcode); / 返回特征字节码,为1 的位即对应于行和列 else scancode = (scancode7)step_index=0;else /反转step_index-;if (step_index #define uchar unsigned charstatic unsigned int count; /计数static int step_index; /步进索引数,值为 07static bit turn; /步进电机转动方向static bit st

4、op_flag; /步进电机停止标志static int speedlevel; /步进电机转速参数,数值越大速度越大,最小值为 1,速度最慢static int spcount; /步进电机转速参数计数void ddelay(void); /键盘扫描延时函数void delay(unsigned int endcount); /延时函数,延时为endcount*1 毫秒void gorun(); /步进电机控制步进函数void Delay400Ms(void);void LCMInit(void); /LCM 初始化void WriteCommandLCM(unsigned char WCL

5、CM,BuysC); /BuysC 为0 时忽略忙检测void DisplayOneChar(uchar X, uchar Y, uchar DData);void DisplayListChar(uchar X, uchar Y,uchar ListLength, uchar *DData,uchar n);sbit P10=P30 ; /电机端口定义sbit P11=P31 ;sbit P12=P32; sbit P13=P33 ;uchar code speed= 0x3a,0x39,0x38,0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x30;uchar c

6、ode stop = “stop“;uchar code go = “go:“; uchar code back = “back:“;uchar code max = “max:8“;/* 键消抖延时函数 */void ddelay(void)uchar i;for (i=300;i0;i-);/* 键扫描函数*/ uchar keyscan(void)uchar scancode;uchar tmpcode;P1 = 0xf8; / 发全 0 行扫描码if (P1 / 延时去抖动if (P1while(scancode / 输出行扫描码if (P1return(scancode)+(tmpc

7、ode); / 返回特征字节码,为1 的位即对应于行和列 else scancode = (scancode7)step_index=0;else /反转step_index-;if (step_index sbit P00=P20 ;sbit P01=P21 ;sbit P02=P22; sbit P03=P23 ;static unsigned int count; /计数static int step_index; /步进索引数,值为 07static bit turn; /步进电机转动方向static bit stop_flag; /步进电机停止标志static int speedle

8、vel; /步进电机转速参数,数值越大速度越快,最小值为 1,速度最慢static int spcount; /步进电机转速参数计数void delay(unsigned int endcount); /延时函数,延时为endcount*0.5 毫秒void gorun(); /步进电机控制步进函数void main(void) count = 0;step_index = 0;spcount = 0;stop_flag = 0;P00 = 0;P01 = 0;P02 = 0;P03 = 0;EA = 1; /允许 CPU 中断 TMOD = 0x11; /设定时器 0 和 1 为 16 位模

9、式 1 ET0 = 1; /定时器 0 中断允许 TH0 = 0xFE;TL0 = 0x0C; /设定时每隔 0.5ms 中断一次TR0 = 1; /开始计数turn = 0;dospeedlevel =4;delay(10000); /以 speedlevel = 4 的速度转2000*0.5MS=1Sspeedlevel =4;delay(10000); /以 speedlevel = 4 的速度转2000*0.5MS=1Sstop_flag=1;delay(6000);/停止,2000*0.5MS=3Sstop_flag=0;while(1); /定时器 0 中断处理 void timeint(void) interrupt 1 TH0=0xFE;TL0=0x0C; /设定时每隔 0.5ms 中断一次count+;spcount-;if(spcount7)step_index=0;elsestep_index-;if (step_index0)step_index=7;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号