找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1251|回复: 4
打印 上一主题 下一主题
收起左侧

51单片机步进电机极简驱动程序

[复制链接]
跳转到指定楼层
楼主
花了一点时间写的,只有55行代码,大约1KB(实际上是846B),可以实现正反转,停止功能,带有指示灯。
单片机源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code ffw[]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};
  5. uchar code rev[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};

  6. sbit k1=P3^0;
  7. sbit k2=P3^1;
  8. sbit k3=P3^2;

  9. void delayms(uint ms){
  10.         uchar i;
  11.         while(ms--){
  12.                 for(i=0;i<120;i++);//120
  13.         }
  14. }
  15. void step_motor_ffw(uint n){
  16.         uint i,j;
  17.         for(i=0;i<512*n;i++){
  18.                 for(j=0;j<8;j++){
  19.                         if(k3==0){
  20.                                 break;
  21.                         }
  22.                         delayms(1);
  23.                         P1=ffw[j];
  24.                 }
  25.         }
  26. }
  27. void step_motor_rev(uint n){
  28.         uint i,j;
  29.         for(i=0;i<512*n;i++){
  30.                 for(j=0;j<8;j++){
  31.                         if(k3==0){
  32.                                 break;
  33.                         }
  34.                         delayms(1);
  35.                         P1=rev[j];
  36.                 }
  37.         }
  38. }
  39. void main(){
  40.         uint x=1;
  41.         while(1){
  42.                 if(k1==0){
  43.                         P2=0xfe;
  44.                         step_motor_ffw(x);
  45.                 }else if(k2==0){
  46.                         P2=0xfd;
  47.                         step_motor_rev(x);
  48.                 }else{
  49.                         P2=0xfb;
  50.                         P1=0x00;
  51.                 }
  52.         }
  53. }
复制代码


屏幕截图 2023-11-06 144848.png (1.02 MB, 下载次数: 46)

屏幕截图 2023-11-06 144848.png

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:314651 发表于 2023-11-24 11:34 | 只看该作者
为什么没有P0引脚的定义,但是仿真接了?
回复

使用道具 举报

板凳
ID:1091661 发表于 2023-11-24 19:05 | 只看该作者
花少广 发表于 2023-11-24 11:34
为什么没有P0引脚的定义,但是仿真接了?

接的是P1
回复

使用道具 举报

地板
ID:371895 发表于 2024-1-2 00:14 来自手机 | 只看该作者
外面那个循环什么意思,250*n
回复

使用道具 举报

5#
ID:1091661 发表于 2024-1-2 23:56 | 只看该作者
红了脚丫 发表于 2024-1-2 00:14
外面那个循环什么意思,250*n

因为要转一圈要循环512次才行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表