找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STC89C52单片机驱动直流电机舵机与步进电机基础代码

[复制链接]
跳转到指定楼层
楼主
ID:403234 发表于 2018-9-27 16:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC89C52驱动直流电机基础代码
  1. /******************************************************/
  2. **              作业4:步进的驱动                                             **
  3. **              班 级:电气15-3(创新)班                                  **
  4. ******************************************************/
  5. #include <reg52.h>
  6. #include <intrins.h>
  7. typedef unsigned char uchar;
  8. typedef unsigned int uint; //宏定义
  9. code uchar bujintable[]={1,2,4,8};//步进电机一相励磁相序表
  10. void delay(uchar z)//延时程序
  11. {
  12.               uchar x,y;
  13.               for(x=z;x>0;x--)
  14.                             for(y=110;y>0;y--);
  15. }
  16. void main()
  17. {
  18.               uchar i;
  19.               while(1)
  20.               {
  21.                             for(i=0;i<4;i++)
  22.                             {               
  23.                                P1=bujintable[i];
  24.                                           delay(20);
  25.                             }
  26.               }               
  27. }
复制代码




  1. /******************************************************/
  2. **              作业4:舵机的驱动                                            **
  3. **              班 级:电气15-3(创新)班                                   **
  4. **              学 号:15501036                                               **
  5. ******************************************************/
  6. #include <reg51.h>
  7. typedef unsigned char uchar; //宏定义()
  8. typedef unsigned int  uint;
  9. sbit  duoji=P1^7;
  10. sbit s2=P3^4;  //启动
  11. uint unm=0;
  12. void delay(uchar z)
  13. {
  14.               uchar x,y;
  15.               for(x=z;x>0;x--)
  16.               for(y=110;y>0;y--);
  17. }
  18. /****100微妙执行一次中断**********/
  19. /*****100扫描一次*****************/
  20. void tiem() interrupt 1
  21. {
  22.               TH0=(65536-100)/256;
  23.               TL0=(65536-100)%256;//100微妙
  24.               unm++;
  25. }
  26. void  keycan()
  27. {
  28.               if(unm==150)  //15毫秒              等15毫秒后为高,也就是15毫秒的时间为低电平
  29.                                           {
  30.                                             duoji=1;
  31.                                           }
  32.                  if(unm==200)  //5毫秒              等加到200时,也就是5毫秒(5毫秒这段时间为高电平)
  33.                                           {
  34.                                             duoji=0;
  35.                                             unm=0;
  36.                                             while(1);                 //由低到高转换完后程序停止
  37.                                           }
  38. }                           
  39. void main()
  40. {
  41.     duoji=0;              //一开始舵机为低电平
  42.               TMOD=0X01;
  43.               TH0=(65536-100)/256;
  44.               TL0=(65536-100)%256;
  45.               EA=1;              //开中断
  46.               ET0=1;
  47.               TR0=1;
  48.    while(1)
  49.    {
  50.                    keycan();
  51.    }
  52. }
复制代码




  1. /******************************************************/
  2. **              作业4:直流电机的驱动                                   **
  3. **              班 级:电气15-3(创新)班                             **
  4. ******************************************************/
  5. #include <reg51.h>
  6. typedef unsigned char uchar; //宏定义()            
  7. uchar jia,jian;                           
  8. sbit zhiliu=P1^7;
  9. sbit s2=P3^4;  //快
  10. sbit s3=P3^5;  //慢
  11. void delay(uchar z)
  12. {
  13.               uchar x,y;
  14.               for(x=z;x>0;x--)
  15.               for(y=110;y>0;y--);
  16. }
  17. void key()
  18. {
  19.               if(s2==0)
  20.               {
  21.                  delay(5);
  22.                   if(s2==0)
  23.                    {
  24.                                                 jian--;jia++;
  25.                                           if(jian==0){jian=100;jia=0;}
  26.                    }
  27.                             while(!s2);
  28.               }
  29. }
  30. void main()
  31. {
  32.               jia=0;  //加
  33.               jian=100;//减
  34.                             while(1)
  35.                             {
  36.                               key();
  37.                                 zhiliu=1;
  38.                               delay(jian);
  39.                                zhiliu=0;
  40.                               delay(jia)
  41.                             }
  42. }
复制代码




完整的Word格式文档51黑下载地址:
作业4:直流步进舵机的驱动.docx (3.05 MB, 下载次数: 28)


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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