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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機步進電機的紅外遙控系統(tǒng)程序,加減速部分不太好 求指導(dǎo)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:908239 發(fā)表于 2021-10-12 22:21 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
求一個步進電機的紅外遙控控制系統(tǒng)
硬件:stc89c51+28BYJ48步進電機+紅外遙控+LCD1602液晶顯示
要求:使用紅外遙控實現(xiàn)步進電機的點動、連續(xù)運動、反轉(zhuǎn)、停止。
共使用六個按鈕,實現(xiàn)四種功能
點動無要求
連續(xù)運動的時候可以調(diào)節(jié)速度,可以設(shè)置3—5個擋位,并在1602顯示器上面顯示出來處于哪個擋位
反轉(zhuǎn)采用一個按鈕進行控制
下面的程序已經(jīng)實現(xiàn)了遙控啟動停止加速減速反轉(zhuǎn),沒有加顯示屏顯示,并且加減速程序不太舒服,希望大佬可以改一下,求求大佬幫幫忙

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

  2. void delay0();
  3. void delay();//可能是漏了函數(shù)原型. 如果在main{ ...} 以后定義了函數(shù),main以前要加函數(shù)原型聲明.
  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決定正轉(zhuǎn)反轉(zhuǎn)
  27.                                 i++;
  28.                         if(i>7)i=0;
  29.                         ab[2]=0;
  30.                         
  31.                                 
  32.                 }
  33.           else if(ab[2]==0x18)                                                        //連續(xù)
  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. //        停止鍵和單步鍵能退出連續(xù)運行               
  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.                            //確認(rèn)IR信號出現(xiàn)
  70.   while (!P3_2)            //等IR變?yōu)楦唠娖剑^9ms的前導(dǎo)低電平信號。
  71.     {delay0(1);}

  72. for (j=0;j<4;j++)         //收集四組數(shù)據(jù)
  73. {
  74.   for (k=0;k<8;k++)        //每組數(shù)據(jù)有8位
  75.   {
  76.    while (P3_2)            //等 IR 變?yōu)榈碗娖剑^4.5ms的前導(dǎo)高電平信號。
  77.      {delay0(1);}
  78.     while (!P3_2)          //等 IR 變?yōu)楦唠娖?br />
  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計數(shù)過長自動離開。
  87.       }                        //高電平計數(shù)完畢               
  88.      ab[j]=ab[j] >> 1;                  //數(shù)據(jù)最高位補"0"
  89.      if (N>=8) {ab[j] = ab[j] | 0x80;}  //數(shù)據(jù)最高位補"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)                                                //數(shù)據(jù)顯示及用于步進電機控制
  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. }
復(fù)制代碼

61d8cb22190e25252c0c3524e92ccab.png (95.21 KB, 下載次數(shù): 78)

紅外收發(fā)一體1

紅外收發(fā)一體1

84617afe7e3bf2e2c8dabc6141684d7.png (30.51 KB, 下載次數(shù): 72)

紅外收發(fā)一體2

紅外收發(fā)一體2
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:908239 發(fā)表于 2021-10-12 22:29 | 只看該作者
我這個程序的加減速部分不太好,希望大家可以幫忙改改,謝謝大家了
回復(fù)

使用道具 舉報

板凳
ID:161164 發(fā)表于 2021-10-13 00:35 | 只看該作者
加減速部分有什么不好?
回復(fù)

使用道具 舉報

地板
ID:908239 發(fā)表于 2021-10-13 09:36 | 只看該作者
頻率跨度太大,就是先以最高速運行,按一下減速還行,最多四下就不動了
回復(fù)

使用道具 舉報

5#
ID:161164 發(fā)表于 2021-10-13 13:09 | 只看該作者
123456uioxhkbhs 發(fā)表于 2021-10-13 09:36
頻率跨度太大,就是先以最高速運行,按一下減速還行,最多四下就不動了

那就減少跨度,增加檔位啦
回復(fù)

使用道具 舉報

6#
ID:908239 發(fā)表于 2021-10-13 19:26 | 只看該作者
哪個大佬看得懂這套程序能不能解釋一下?大概的框架,主要修改速度在哪里修改?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91影院| 欧洲性生活视频 | 日日夜夜天天久久 | 久久国产精品一区二区三区 | 国产97碰免费视频 | 成人区精品一区二区婷婷 | 国产精品精品视频一区二区三区 | 中文字幕一区二区三区乱码在线 | 91视频播放 | 美女爽到呻吟久久久久 | 在线欧美a | 97国产在线观看 | 欧美福利精品 | 91精品国产一区二区三区动漫 | 国产日批 | 久久久久成人精品 | 亚洲一区二区久久 | 欧美在线观看一区 | 久久久久久久久久久成人 | 亚洲精品性视频 | 久久久久久国产精品 | 在线视频成人 | 亚洲人人 | www.嫩草| h视频免费在线观看 | 男女视频91 | 久久精品国产一区二区三区不卡 | 午夜视频在线免费观看 | 国产99久久久国产精品 | 国产在线观看一区 | 成人一区av | 欧美人妇做爰xxxⅹ性高电影 | 一区二区三区不卡视频 | 国产精品2| 欧美乱码精品一区二区三区 | 欧美一区二区三区在线观看 | 四虎精品在线 | 91免费视频 | 在线播放一区二区三区 | 丁香一区二区 | 中文字幕在线网 |