找回密码
 立即注册

QQ登录

只需一步,快速开始

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

直流电机调速单片机源代码

[复制链接]
跳转到指定楼层
楼主
ID:236125 发表于 2017-11-23 12:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #define  CYCLE 10         //pwn周期
  5. sbit PWN0=P1^4;
  6. sbit PWN1=P1^5;
  7. sbit key1=P3^0;        //jia
  8. sbit key2=P3^1;        //jian
  9. sbit key3=P3^2;        //tingzhi
  10. sbit key4=P3^3;  //zhengfanzhuan
  11. char  PWN_ON=0;
  12. char  count=0;         //定时器计数
  13. int  num,flag;//正反转标志位


  14. void delayms(int x)
  15. {
  16.     int i,j;
  17.         for(i=x;i>0;i--)
  18.           for(j=110;j>0;j--);
  19. }            

  20. void keyscan()
  21. {
  22.      if(key1==0)
  23.          {
  24.             delayms(5);
  25.                 if(key1==0)
  26.                 {
  27.                     while(!key1);
  28.                  if(num<=3)
  29.                           num++;

  30.                 }
  31.          }
  32.     if(key2==0)
  33.         {
  34.            delayms(5);
  35.            if(key2==0)
  36.            {
  37.               if(num>0)
  38.                    num--;
  39.                    while(!key2);
  40.                 }
  41.          }
  42.          if(key3==0)
  43.          {
  44.             delayms(5);
  45.             if(key3==0)
  46.             {
  47.               while(!key3);
  48.               num=!num;
  49.              }
  50.           }
  51.           if(key4==0)
  52.           {
  53.                 delayms(5);
  54.                  if(key4==0)
  55.                  {
  56.                      while(!key4);
  57.                      flag++;
  58.                          if(flag==2)
  59.                          flag=0;
  60.                  }
  61.           }
  62.           switch(num)
  63.           {
  64.                 case 0: PWN_ON=0;break;
  65.                  case 1: PWN_ON=4;break;
  66.                  case 2: PWN_ON=7;break;
  67.                  case 3: PWN_ON=10;break;
  68.                 default:
  69.                  break;
  70.           }
  71. }
  72. void init()        //初始化
  73. {

  74.         PWN0=1;
  75.         PWN1=1;
  76.        TMOD=0X01;
  77.         TH1=(65535-45872)/256;
  78.         TL1=(65535-45872)%256;
  79.         EA=1;
  80.         ET1=1;
  81.         TR1=1;
  82. }
  83. void main()
  84. {
  85.         init();
  86.         while(1)
  87.         {
  88.             keyscan();
  89.         }
  90. }
  91. void  T1_time()interrupt 3
  92. {  
  93.          TH1=(65535-45872)/256;
  94.          TL1=(65535-45872)%256;
  95.            count++;
  96.           if(count>CYCLE)
  97.           count=0;
  98.           if(count<PWN_ON)//进行正反转
  99.           {
  100.                if(flag==1)
  101.                    {
  102.                      
  103.                           PWN0=0;
  104.                          PWN1=1;
  105.                         }
  106.                         else
  107.                         {
  108.                            PWN0=1;
  109.                            PWN1=0;
  110.                         }
  111.          }
  112.          else
  113.          {
  114.              PWN0=1;
  115.             PWN1=1;
  116.          }
  117. }


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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