找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2273|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

直流電機(jī)調(diào)速單片機(jī)源代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:236125 發(fā)表于 2017-11-23 12:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  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;         //定時(shí)器計(jì)數(shù)
  13. int  num,flag;//正反轉(zhuǎn)標(biāo)志位


  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)//進(jìn)行正反轉(zhuǎn)
  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. }


復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表