久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1826|回復: 5
收起左側

單片機步進電機的紅外遙控系統程序,加減速部分不太好 求指導

[復制鏈接]
ID:908239 發表于 2021-10-12 22:21 | 顯示全部樓層 |閱讀模式
求一個步進電機的紅外遙控控制系統
硬件:stc89c51+28BYJ48步進電機+紅外遙控+LCD1602液晶顯示
要求:使用紅外遙控實現步進電機的點動、連續運動、反轉、停止。
共使用六個按鈕,實現四種功能
點動無要求
連續運動的時候可以調節速度,可以設置3—5個擋位,并在1602顯示器上面顯示出來處于哪個擋位
反轉采用一個按鈕進行控制
下面的程序已經實現了遙控啟動停止加速減速反轉,沒有加顯示屏顯示,并且加減速程序不太舒服,希望大佬可以改一下,求求大佬幫幫忙

單片機源程序如下:
  1. #include<reg51.h>

  2. void delay0();
  3. void delay();//可能是漏了函數原型. 如果在main{ ...} 以后定義了函數,main以前要加函數原型聲明.
  4. unsigned char bdata ab[4];
  5. sbit P3_2=P3^2;
  6. char h=0;
  7. bit f0=0;
  8. int i=0;
  9. main()
  10. {        
  11.         char code zz[8]={0x07,0x03,0x0B,0x09,0x0D,0x0c,0x0E,0x06};
  12.         char code fz[8]={0x06,0x0E,0x0C,0x0D,0x09,0x0B,0x03,0x07};
  13.         char djh[5]={0x15,0x63,0x78,0xB1,0xEC};
  14.         char djl[5]={0xA0,0xC0,0xD0,0xE0,0x78};
  15.         P0=0xff;
  16.         EA=1;
  17.         EX0=1;                                                                                                        
  18. //必須先初始化才能賦值;
  19.         IT0=1;               
  20.         do
  21.         {
  22.         if(ab[2]==0x0c)                                                                  
  23. //單步 //開始ab[2]未賦值的時候??
  24.             {   P0=0xf9;
  25.                P2=f0==0?zz[i]:fz[i];                           
  26. //中斷通過改變ab[2]的值來控制步進電機//f0決定正轉反轉
  27.                                 i++;
  28.                         if(i>7)i=0;
  29.                         ab[2]=0;
  30.                         
  31.                                 
  32.                 }
  33.           else if(ab[2]==0x18)                                                        //連續
  34.             {        P0=0xa4;
  35.                         for(;;)
  36.                                   {        P2=f0==0?zz[i]:fz[i];
  37.                                             TH0=djh[h];
  38.                                         TL0=djl[h];
  39.                                         delay();
  40.                                         i++;
  41.                                         if(i>7)i=0;
  42.                                         if(ab[2]==0x0c ){ab[2]=0;break;}                                
  43. //        停止鍵和單步鍵能退出連續運行               
  44.                                         else        if(ab[2]==0x5a ){break;}
  45.                                 }                                
  46.                         
  47.                   }
  48.         } while(1);  
  49.                      
  50. }

  51. void delay0(unsigned char x)    //x*0.14MS
  52. {
  53. unsigned char i;
  54.   while(x--)
  55. {
  56.   for (i = 0; i<7; i++) {}
  57. }
  58. }


  59. //簡單的紅外遙控解碼程序(HT6221)
  60. void hongwai() interrupt 0 //入口點和出口點
  61. {                                
  62.   unsigned char j,k,N=0;
  63.      EX0 = 0;   
  64.          delay0(15);
  65.          if (P3_2==1)
  66.      { EX0 =1;
  67.            return;
  68.           }
  69.                            //確認IR信號出現
  70.   while (!P3_2)            //等IR變為高電平,跳過9ms的前導低電平信號。
  71.     {delay0(1);}

  72. for (j=0;j<4;j++)         //收集四組數據
  73. {
  74.   for (k=0;k<8;k++)        //每組數據有8位
  75.   {
  76.    while (P3_2)            //等 IR 變為低電平,跳過4.5ms的前導高電平信號。
  77.      {delay0(1);}
  78.     while (!P3_2)          //等 IR 變為高電平
  79.      {delay0(1);}
  80.      while (P3_2)           //計算IR高電平時長
  81.       {
  82.     delay0(1);
  83.     N++;           
  84.     if (N>=30)
  85.          { EX0=1;
  86.          return;}                  //0.14ms計數過長自動離開。
  87.       }                        //高電平計數完畢               
  88.      ab[j]=ab[j] >> 1;                  //數據最高位補"0"
  89.      if (N>=8) {ab[j] = ab[j] | 0x80;}  //數據最高位補"1"
  90.      N=0;
  91.   }//end for k
  92. }//end for j

  93.    if (ab[2]!=~ab[3])
  94.    { EX0=1;
  95.      return; }
  96.                         if(ab[2]==0x0c)                                                //數據顯示及用于步進電機控制
  97.                                 {P0=0xf9;
  98.                                 }
  99.                         else if(ab[2]==0x18)
  100.                                 {P0=0xa4;
  101.                                 }
  102.                         else if(ab[2]==0x5e)
  103.                            {        P0=0xb0;
  104.                                         f0=~f0;
  105.                                 }
  106.                         else if(ab[2]==0x08)
  107.                            {        P0=0x99;
  108.                                         h++;
  109.                                         if(h>4)h=4;
  110.                                 }
  111.                         else if(ab[2]==0x1c)
  112.                            {        P0=0x92;
  113.                                         h--;
  114.                                         if(h<0)h=0;
  115.                                    }
  116.                         else if(ab[2]==0x5a)
  117.                                  { P0=0x82;}
  118.                         EX0=1;                                        ////開外部中斷0
  119. }
  120. void delay()
  121. {        
  122.         TMOD=0x01;
  123.         TR0=1;
  124.         while(!TF0);
  125.         TF0=0;
  126.         TR0=0;
  127. }
復制代碼

紅外收發一體1

紅外收發一體1

紅外收發一體2

紅外收發一體2
回復

使用道具 舉報

ID:908239 發表于 2021-10-12 22:29 | 顯示全部樓層
我這個程序的加減速部分不太好,希望大家可以幫忙改改,謝謝大家了
回復

使用道具 舉報

ID:161164 發表于 2021-10-13 00:35 | 顯示全部樓層
加減速部分有什么不好?
回復

使用道具 舉報

ID:908239 發表于 2021-10-13 09:36 | 顯示全部樓層
頻率跨度太大,就是先以最高速運行,按一下減速還行,最多四下就不動了
回復

使用道具 舉報

ID:161164 發表于 2021-10-13 13:09 | 顯示全部樓層
123456uioxhkbhs 發表于 2021-10-13 09:36
頻率跨度太大,就是先以最高速運行,按一下減速還行,最多四下就不動了

那就減少跨度,增加檔位啦
回復

使用道具 舉報

ID:908239 發表于 2021-10-13 19:26 | 顯示全部樓層
哪個大佬看得懂這套程序能不能解釋一下?大概的框架,主要修改速度在哪里修改?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区欧美黑人喷潮水 | 欧美一二三 | 丝袜 亚洲 欧美 日韩 综合 | 欧美在线观看一区二区 | 91视在线国内在线播放酒店 | 欧美视频在线观看 | 午夜丁香视频在线观看 | 国产精品美女视频 | 午夜在线免费观看 | 欧美一级黄色网 | 成人国产精品久久久 | 二区久久 | 在线观看国产 | 国产亚洲欧美日韩精品一区二区三区 | 国产欧美日韩一区二区三区在线观看 | 久久亚洲一区二区 | 亚洲福利在线观看 | 精品国产综合 | 国产一级片一区二区三区 | 久久一区二区三区电影 | 亚洲一区二区三区免费观看 | 精品国产乱码久久久久久闺蜜 | 91av视频| 在线观看成人 | 一区二区三区四区国产 | 黄色在线免费观看 | 日日夜夜草 | 精品一区二区三区在线观看 | 九九久视频 | 欧美一级欧美三级在线观看 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 午夜免费| 国产精品久久久久9999鸭 | 又黑又粗又长的欧美一区 | 国产精品久久久久久久久久三级 | 久久黄色| aaaa一级毛片 | 91视视频在线观看入口直接观看 | 高清一区二区三区 | 成人伊人网 | 鲁一鲁资源影视 |