步进电机(键盘控制可调速)(Stepper motor (keyboard control, adjustable speed)).docVIP

步进电机(键盘控制可调速)(Stepper motor (keyboard control, adjustable speed)).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
步进电机(键盘控制可调速)(Stepper motor (keyboard control, adjustable speed))

步进电机(键盘控制可调速)(Stepper motor (keyboard control, adjustable speed)) 步进电机 (键盘控制可调速) # reg51.h in # define uchar unsigned char static unsigned int count; / / 计数 static int step _ index; / / 步进索引数, 值为0-7 static bit map; / / 步进电机转动方向 static bit stop _ flag; / / 步进电机停止标志 static int speedlevel; / / 步进电机转速参数, 数值越大速度越大, 最小值为1, 速度最慢 static int spcount; / / 步进电机转速参数计数 ddelay void (void); / / 键盘扫描延时函数 void delay (unsigned int endcount); / / 延时函数, 延时为endcount * 1毫秒 void gorun (); / / 步进电机控制步进函数 sbit p10 = p2 ^ 0; / / 电机端口定义 sbit p11 = p2 ^ 1; sbit p12 = p2 ^ 2; sbit p13 = p2 ^ 3; / * 键消抖延时函数 * / ddelay void (void) { uchar i; for (i = 300; i 0; i --); } / * 键扫描函数 * / uchar keyscan (void) { uchar scancode; uchar tmpcode; p1 = 0xf8; / / 发全0行扫描码 if (p1 0xf8). = 0xf8) / / 若有键按下 { ddelay (); / / 延时去抖动 if (p1 0xf8). = 0xf8) / / 延时后再判断一次, 去除抖动影响 { scancode = 0xfe; while ((scancode 0x08). = 0) / / 逐行扫描 { p1 = scancode; / / 输出行扫描码 if (p1 0xf8). = 0xf8) / / 本行有键按下 { tmpcode = (p1 0xf8) | 0x07; return ((~ scancode) + (~ tmpcode)); / / 返回特征字节码, 为1的位即对应于行和列 } elsa scancode = (scancode 1) | 0x01; / / 行扫描码左移一位 } } } return (0); / / 无键按下, 返回值为0 } void main (void) { uchar key; count = 0; step _ index = 0; spcount = 0; p10 = 0; p11 = 0; p12 = 0; p13 = 0; ea = 1; / / 允许cpu中断 tmod = 0x11; / / 设定时器0和1为16位模式1 et0 = 1; / / 定时器0中断允许 th0 = 0xfc; tl0 = 0x18; / / 设定时每隔1ms中断一次 tr0 = 1; / / 开始计数 feet _ flag = 0; turn = 0; speedlevel = 20; while (1) { key = keyscan (); switch (key) { case 0x09: / / 按键 #, 正转以speedlevel = 1的速度转1000 * 0.5ms = 0.5s feet _ flag = 0; turn = 0; speedlevel = 10; gorun (); delay (1000); break; case 0x0c: / / 按键 *, 停止 2000 * 0.5ms = 0.5s feet _ flag = 1; break; case 0x0a: / / 按键0, 反转以speedlevel = 1的速度转1000 * 0.5ms = 0.5s feet _ flag = 0; turn = 1; speedlevel = 10; gorun (); delay (1000); break; case 0x11: / / 按键9, 以 - - speedlevel的加速转1000 * 0.5ms = 0.5s feet _ flag = 0; if (speedlevel = = 1) speedlevel = 1 {;} elsa {- speedlevel;} gorun (); delay (1000); break; Case 0x12: / /

您可能关注的文档

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档