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

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

QQ登錄

只需一步,快速開始

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

紅外線遙控直流電機(jī)啟停源碼(原創(chuàng)設(shè)計(jì))

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:374361 發(fā)表于 2018-10-14 22:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
紅外線遙控直流電機(jī)啟停源碼


單片機(jī)源程序如下:
  1. #include"reg51.h"
  2. typedef unsigned  char u8;
  3. typedef unsigned  int u16;
  4. sbit  a=P1^4;
  5. sbit  b=P1^5;
  6. sbit  c=P1^6;
  7. u8 reddata[6];
  8. u8 redcom[2];
  9. u8 time,j,k;
  10. u16 err;
  11. sbit  stop=P3^2;
  12. sbit  motor=P1^0;
  13. sbit  motoa=P3^4;
  14. sbit  motob=P3^5;
  15. sbit  motoc=P3^6;
  16. sbit  motod=P3^7;
  17. u16 smg[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0X76};
  18. /*************************************************************/
  19. void smgbitswitch(num)
  20. {
  21.                 switch(num)         //位選,選擇點(diǎn)亮的數(shù)碼管,
  22.                 {
  23.                         case(0):
  24.                                 a=0;b=0;c=0; break;//顯示第0位
  25.                         case(1):
  26.                                 a=1;b=0;c=0; break;//顯示第1位
  27.                         case(2):
  28.                                 a=0;b=1;c=0; break;//顯示第2位
  29.                         case(3):
  30.                                 a=1;b=1;c=0; break;//顯示第3位
  31.                         case(4):
  32.                                 a=0;b=0;c=1; break;//顯示第4位
  33.                         case(5):
  34.                                 a=1;b=0;c=1; break;//顯示第5位
  35.                         case(6):
  36.                                 a=0;b=1;c=1; break;//顯示第6位
  37.                         case(7):
  38.                                 a=1;b=1;c=1; break;//顯示第7位       
  39.                 }
  40. }
  41. void delay(u16 num)
  42. {
  43.       while(num)
  44.           {
  45.               num--;
  46.           }

  47. }
  48. void you1(num)
  49. {
  50.     smgbitswitch(7);
  51.         P0=smg[num];
  52.         delay(10);
  53.         P0=0x00;
  54. }
  55. void you2(num)
  56. {
  57.     smgbitswitch(6);
  58.         P0=smg[num];
  59.     delay(10);
  60.         P0=0x00;
  61. }
  62. void you3(num)
  63. {
  64.     smgbitswitch(5);
  65.         P0=smg[num];
  66.     delay(10);
  67.         P0=0x00;
  68. }
  69. void   redcomsmg()
  70. {
  71.      if(reddata[2]==0x16)
  72.          {
  73.              redcom[1]=0;
  74.          }
  75.          if(reddata[2]==0x0c)
  76.          {
  77.              redcom[1]=1;
  78.          }
  79.          if(reddata[2]==0x18)
  80.          {
  81.              redcom[1]=2;
  82.          }
  83.          if(reddata[2]==0x5e)
  84.          {
  85.              redcom[1]=3;
  86.          }
  87.          if(reddata[2]==0x08)
  88.          {
  89.              redcom[1]=4;
  90.          }
  91.          if(reddata[2]==0x1c)
  92.          {
  93.              redcom[1]=5;
  94.          }
  95.          if(reddata[2]==0x5a)
  96.          {
  97.              redcom[1]=6;
  98.          }
  99.          if(reddata[2]==0x42)
  100.          {
  101.              redcom[1]=7;
  102.          }
  103.          if(reddata[2]==0x52)
  104.          {
  105.              redcom[1]=8;
  106.          }
  107.          if(reddata[2]==0x4a)
  108.          {
  109.              redcom[1]=9;
  110.          }
  111. }
  112. void  inter()
  113. {
  114.        EX0=1;          
  115.            IT0=1;
  116.            EA=1;


  117.            stop=1;
  118. }
  119. void main()
  120. {
  121.      inter();
  122.          delay(1);
  123.          motoa=0;
  124.          motob=0;
  125.          motoc=0;
  126.          motod=0;
  127.          motor=0;
  128.      while(1)
  129.          {
  130.              redcomsmg();
  131.                  delay(2000);
  132.                  you1(10);
  133.                  you2(redcom[1]);
  134.                  you3(0);
  135.                  if(redcom[1]==0)                  //        直流電機(jī)停止
  136.                  {
  137.                      motor=0;
  138.                  }
  139.                  if(redcom[1]==3)                  //   直流電機(jī)啟動(dòng)
  140.                  {                     
  141.                      motor=1;
  142.                  }
  143.                  if(redcom[1]==2)           //                 步進(jìn)電機(jī)啟動(dòng)
  144.                  {
  145.                      motoa=1;
  146.                          motob=0;
  147.                          motoa=1;
  148.                          motob=1;
  149.                          delay(200);
  150.                          
  151.                          motoa=1;
  152.                          motob=1;
  153.                          motoa=1;
  154.                          motob=0;
  155.                          delay(200);
  156.                          
  157.                          
  158.                          motoa=0;
  159.                          motob=1;
  160.                          motoa=1;
  161.                          motob=1;
  162.                          delay(200);
  163.                          
  164.                          
  165.                          motoa=1;
  166.                          motob=1;
  167.                          motoa=0;
  168.                          motob=1;
  169.                          delay(200);  
  170.                  }
  171.                  if(redcom[1]==4)         //           步進(jìn)電機(jī)停止
  172.                  {
  173.                      motoa=0;
  174.                          motob=0;
  175.                          motoa=0;
  176.                          motob=0;
  177.                  }   
  178.          }
  179. }


  180. void stopservice() interrupt 0
  181. {
  182.      time=0;
  183.          if(stop==0)           //如果按鍵按下
  184.          {
  185.               err=1000;
  186.                   while((stop==0)&&(err>0))                  //        等待9ms低電平過去
  187.                   {
  188.                        delay(1);
  189.                            err--;
  190.                   }
  191.                   if(stop==1)
  192.                   {
  193.                        err=500;
  194.                            while((stop==1)&&(err>0))  // 等待4.5ms高電平過去
  195.                            {
  196.                                delay(1);
  197.                                    err--;
  198.                            }
  199.                            for(k=0;k<4;k++)
  200.                            {
  201.                                  for(j=0;j<8;j++)
  202.                                          {
  203.                                               err=60;
  204.                                                   while((stop==0)&&(err>0))          //  等待560us低電平過去
  205.                                                   {
  206.                                                       delay(1);
  207.                                                           err--;
  208.                                                   }
  209.                                                   err=50;
  210.                                                   while((stop==1)&&(err>0))                   //計(jì)算高電平時(shí)間
  211.                                                   {
  212.                                                        delay(10);
  213.                                                            time++;
  214.                                                            if(time>30)
  215.                                                            {
  216.                                                                 err=0;
  217.                                                                        return;
  218.                                                            }
  219.                                                   }
  220.                                                   reddata[k]>>=1;         //        因?yàn)榧t外通信是先傳低位,再傳高位。所以是右移。
  221.                                                   if(time>=8)                //         如果大于0.8ms說明是高電平,0.8ms是一個(gè)中間值
  222.                                                   {
  223.                                                        reddata[k]|=0x80;
  224.                                                   }
  225.                                                   time=0;
  226.                                                   err=0;                                                                                                    
  227.                                          }
  228.                            }
  229.                   }
  230.                   if(reddata[2]!=~reddata[3])
  231.                   {
  232.                       return;
  233.                   }
  234.          }
  235.           
  236. }
復(fù)制代碼

所有資料51hei提供下載:
紅外遙控直流電機(jī)啟停.rar (525.55 KB, 下載次數(shù): 23)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-10-15 01:28 | 只看該作者
樓主能分享下原理圖嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:295874 發(fā)表于 2018-10-15 08:57 | 只看該作者
沒有原理圖參考起來不易,意義是有,但不好參考學(xué)習(xí),建議上傳原理圖,謝謝。
回復(fù)

使用道具 舉報(bào)

地板
ID:374361 發(fā)表于 2018-10-15 19:31 | 只看該作者
實(shí)驗(yàn)板原理圖,其實(shí)最重要的還是那個(gè)PPT,紅外遙控的編碼規(guī)則和時(shí)序搞清楚了就簡單了

EM3 V2.2開發(fā)板原理圖.pdf

274.28 KB, 下載次數(shù): 13, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

5#
ID:374361 發(fā)表于 2018-10-15 19:34 | 只看該作者
動(dòng)態(tài)數(shù)碼管的作用是將外紅遙控的按鍵顯示在上面,按1,經(jīng)過譯碼之后數(shù)碼管顯示1,按2,經(jīng)過譯碼之后數(shù)碼管顯示2.其他按鍵也是同樣的原理。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产玖玖 | 天天躁日日躁狠狠很躁 | 国产成人精品久久二区二区91 | 中文字幕不卡 | 久久久久久综合 | 干出白浆视频 | 国产成人啪免费观看软件 | 欧美一级二级视频 | 国产精品欧美一区二区三区 | 国产精品免费一区二区三区四区 | 日韩高清国产一区在线 | 精品久久精品 | 成人国产精品 | 九九精品在线 | 午夜理伦三级理论三级在线观看 | 国产精品不卡一区 | 中文二区| 精品二三区 | 中文字幕一区二区三区不卡 | 精品日本中文字幕 | 亚洲欧美日韩精品久久亚洲区 | 337p日本欧洲亚洲大胆鲁鲁 | 国产一区二区三区视频免费观看 | 男女网站在线观看 | 精品久久一区 | 久久久精品视频一区二区三区 | 午夜伦理影院 | 亚洲精品中文字幕在线 | 久草在线 | 一级黄色片在线免费观看 | 国产成人叼嘿视频在线观看 | 91精品国模一区二区三区 | 黄色大全免费看 | 亚洲高清视频在线观看 | 欧美综合在线观看 | 无码一区二区三区视频 | a级黄色片在线观看 | 国产精品视频播放 | 久久国 | 精品一区二区三区在线视频 | 在线观看国产视频 |