9.8 实用的电机控制程序

上面我们虽然完成了用中断控制电机转动的程序,但实际上这个程序还是没多少实用价值的,我们不能每次想让它转动的时候都上下电啊,是吧。还有就是它不但能正转还得能反转啊,也就是说不但能转过去,还得能转回来呀。好吧,我们就来做一个实例程序吧,结合第 8 章的按键程序,我们设计这样一个功能程序:按数字键 1~9,控制电机转过 1~9 圈;配合上下键改变转动方向,按向上键后正向转 1~9 圈,向下键则反向转
摘要由CSDN通过智能技术生成
上面我们虽然完成了用中断控制电机转动的程序,但实际上这个程序还是没多少实用价值的,我们不能每次想让它转动的时候都上下电啊,是吧。还有就是它不但能正转还得能反转啊,也就是说不但能转过去,还得能转回来呀。好吧,我们就来做一个实例程序吧,结合第 8 章的按键程序,我们设计这样一个功能程序:按数字键 1~9,控制电机转过 1~9 圈;配合上下键改变转动方向,按向上键后正向转 1~9 圈,向下键则反向转 1~9 圈;左键固定正转 90 度,右键固定反转 90;Esc 键终止转动。通过这个程序,我们也可以进一步体会到如何用按键来控制程序完成复杂的功能,以及控制和执行模块之间如何协调工作,而你的编程水平也可以在这样的实践练习中得到锻炼和提升。
   
   
   
  1. #include <reg52.h>
  2. sbit KEY_IN_1 = P2^4;
  3. sbit KEY_IN_2 = P2^5;
  4. sbit KEY_IN_3 = P2^6;
  5. sbit KEY_IN_4 = P2^7;
  6. sbit KEY_OUT_1 = P2^3;
  7. sbit KEY_OUT_2 = P2^2;
  8. sbit KEY_OUT_3 = P2^1;
  9. sbit KEY_OUT_4 = P2^0;
  10. unsigned char code KeyCodeMap[4][4] = { //矩阵按键编号到标准键盘键码的映射表
  11. { 0x31, 0x32, 0x33, 0x26 }, //数字键 1、数字键 2、数字键 3、向上键
  12. { 0x34, 0x35, 0x36, 0x25 }, //数字键 4、数字键 5、数字键 6、向左键
  13. { 0x37, 0x38, 0x39, 0x28 }, //数字键 7、数字键 8、数字键 9、向下键
  14. { 0x30, 0x1B, 0x0D, 0x27 } //数字键 0、ESC 键、 回车键、 向右键
  15. };
  16. unsigned char KeySta[4][4] = { //全部矩阵按键的当前状态
  17. { 1, 1, 1, 1}, { 1, 1, 1, 1}, { 1, 1, 1, 1}, { 1, 1, 1, 1}
  18. };
  19. signed long beats = 0; //电机转动节拍总数
  20. void KeyDriver();
  21. void main(){
  22. EA = 1; //使能总中断
  23. TMOD = 0x01; //设置 T0 为模式 1
  24. TH0 = 0xFC; //为 T0 赋初值 0xFC67,定时 1ms
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值