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

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

QQ登錄

只需一步,快速開(kāi)始

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

大家好,我現(xiàn)在在做一個(gè)光敏電阻智能窗簾,問(wèn)題是到了晚上電機(jī)啟動(dòng),比如啟動(dòng)到達(dá)....

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:191929 發(fā)表于 2017-5-6 19:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
還請(qǐng)大家?guī)蛶兔Γ戎x謝了
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

來(lái)自 3#
ID:191929 發(fā)表于 2017-5-6 19:45 | 只看該作者

定時(shí)問(wèn)題

本帖最后由 惜緣2008 于 2017-5-6 20:06 編輯

請(qǐng)大家?guī)兔Γ约号撕镁昧耍瑔?wèn)題是:到了晚上電機(jī)啟動(dòng),到達(dá)指定位置電機(jī)要停下來(lái),我用定時(shí)器來(lái)做,無(wú)奈停在定時(shí)循環(huán)出不來(lái),問(wèn)題在程序主函數(shù)里邊,(主函數(shù)keyscan()后面的if語(yǔ)句)---電機(jī)啟動(dòng)后停不下來(lái)了
回復(fù)

使用道具 舉報(bào)

來(lái)自 4#
ID:191929 發(fā)表于 2017-5-6 19:50 | 只看該作者
程序格式不對(duì),我重發(fā)一遍,大家見(jiàn)諒,見(jiàn)怪不怪
  1. #include <reg52.h>       //51芯片管腳定義頭文件
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. uchar code zheng[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
  5. uchar code fan[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
  6. sbit  key1   = P3^0;       //正轉(zhuǎn)
  7. sbit  key2   = P3^1;       //反轉(zhuǎn)----按鍵分時(shí)復(fù)用
  8. sbit  key3   = P3^2;       //停止
  9. sbit  key4   = P3^3;       //時(shí)間調(diào)整按鈕
  10. sbit beep=P2^3; sbit dsds=P2^4;
  11. sbit dsrw=P2^2; sbit dsas=P2^1;
  12. sbit dscs=P2^0; sbit irq=P3^3;
  13. sbit  rd=P3^7;  sbit guang_dq=P3^6;//光敏電阻輸出
  14. sbit DQ=P2^5;//ds18b20與單片機(jī)連接口
  15. sbit lcden=P3^4;sbit lcdrs=P3^5;
  16. sbit dula=P2^6;sbit wela=P2^7;
  17. char shi,fen,miao,nian,yue,ri;
  18. uchar num,flag,flag1,flag_ting,count;
  19. uint temp,aa;//溫度值
  20. uchar tflag;//溫度正負(fù)標(biāo)志
  21. uchar code table[]="  :  :   T:     ";
  22. uchar code table1[]="20  -  -  L:   G";
  23. void write_ds(uchar,uchar);
  24. uchar read_ds(uchar);
  25. uchar set_alarm(uchar,uchar,uchar);
  26. uchar read_time(uchar);
  27. void delay(uint z)//延時(shí)函數(shù)--1ms
  28. {
  29.   uint x,y;
  30.   for(x=z;x>0;x--)
  31.      for(y=110;y>0;y--);
  32. }
  33. void didi()
  34. {
  35.   beep=0;
  36.   delay(200);
  37.   beep=1;
  38. }
  39. void wr_com(uchar com)//寫(xiě)指令//
  40. {
  41.     delay(1);
  42.     lcdrs=0;
  43.     lcden=0;
  44.     P0=com;
  45.     delay(1);
  46.     lcden=1;
  47.     delay(1);
  48.     lcden=0;
  49. }
  50. void wr_data(uchar date)//寫(xiě)數(shù)據(jù)//
  51. {
  52.     delay(1);
  53.     lcdrs=1;
  54.     lcden=0;
  55.     P0=date;
  56.     delay(1);
  57.     lcden=1;
  58.     delay(1);
  59.     lcden=0;
  60. }
  61. void init()//初始化設(shè)置//
  62. {
  63.     beep=1;
  64.     EA=1;
  65.     TMOD=0x01;
  66.     TH0=(65536-50000)/256;
  67.     TL0=(65536-50000)%256;
  68.     ET0=1;
  69.     TR0=1;
  70.     rd=0;
  71.     dula=0;
  72.     wela=0;

  73.     wr_com(0x38);
  74.     wr_com(0x0c);
  75.     wr_com(0x04);
  76.     wr_com(0x01);
  77.     wr_com(0x80);
  78.    for(num=0;num<15;num++)
  79.           {
  80.             wr_data(table[num]);
  81.         delay(20);
  82.           }
  83.    wr_com(0x80+0x40);
  84.    for(num=0;num<16;num++)
  85.           {
  86.             wr_data(table1[num]);
  87.         delay(20);
  88.           }
  89. }
  90. /////////////寫(xiě)時(shí)分秒
  91. void write_sfm(uchar add,uchar date)
  92. {
  93.   uchar shi,ge;
  94.   shi=date/10;
  95.   ge=date%10;
  96.   wr_com(0x80+add);
  97.   wr_data(0x30+shi);
  98.   wr_data(0x30+ge);
  99. }
  100. /////////////寫(xiě)年月日
  101. void write_nyr(uchar add,uchar date)
  102. {
  103.   uchar shi,ge;
  104.   shi=date/10;
  105.   ge=date%10;
  106.   wr_com(0x80+0x40+add);
  107.   wr_data(0x30+shi);
  108.   wr_data(0x30+ge);
  109. }
  110. ///////////12c887寫(xiě)一位
  111. void write_ds(uchar add,uchar date)
  112. {
  113.   dsas=1;
  114.   dsds=1;
  115.   dsrw=1;
  116.   dscs=0;
  117.   P0=add;
  118.   dsas=0;
  119.   dsrw=0;
  120.   P0=date;
  121.   dsrw=1;
  122.   dscs=1;
  123.   dsas=1;
  124. }
  125. ///////////12c887讀一位
  126. uchar read_ds(uchar add)
  127. {
  128.   uchar data_ds;
  129.   dsas=1;
  130.   dsds=1;
  131.   dsrw=1;
  132.   dscs=0;
  133.   P0=add;
  134.   dsas=0;
  135.   dsds=0;
  136.   P0=0xff;
  137.   data_ds=P0;
  138.   dsds=1;
  139.   dscs=1;
  140.   dsas=1;
  141. return data_ds;
  142. }
  143. /***************************ds18b20程序****************************/
  144. void delay_18B20(uint i)//延時(shí)1微秒
  145. {
  146.    while(i--);
  147. }
  148. void ds1820rst()/*ds1820復(fù)位*/
  149. {

  150.     DQ = 1;          //DQ復(fù)位
  151.     delay_18B20(4); //延時(shí)
  152.     DQ = 0;          //DQ拉低
  153.     delay_18B20(100); //精確延時(shí)大于480us
  154.     DQ = 1;          //拉高
  155.     delay_18B20(30);
  156. }
  157. uchar ds1820rd()/*讀數(shù)據(jù)*/
  158. {
  159.     uchar i=0;
  160.     uchar dat = 0;
  161.     for (i=8;i>0;i--)
  162.     {  
  163.         DQ = 0; //給脈沖信號(hào)
  164.         dat>>=1;
  165.         DQ = 1; //給脈沖信號(hào)
  166.         if(DQ)
  167.         dat|=0x80;
  168.         delay_18B20(10);
  169.     }
  170.    return(dat);
  171. }
  172. void ds1820wr(uchar wdata)/*寫(xiě)數(shù)據(jù)*/
  173. {
  174.     uchar i=0;
  175.     for (i=8; i>0; i--)
  176.     {
  177.         DQ = 0;
  178.         DQ = wdata&0x01;
  179.         delay_18B20(10);
  180.         DQ = 1;
  181.         wdata>>=1;
  182.     }
  183. }
  184. uint read_temp()/*讀取溫度值并轉(zhuǎn)換*/
  185. {
  186.     uint a,b;
  187.     ds1820rst();   
  188.     ds1820wr(0xcc);//*跳過(guò)讀序列號(hào)*/
  189.     ds1820wr(0x44);//*啟動(dòng)溫度轉(zhuǎn)換*/
  190.     ds1820rst();   
  191.     ds1820wr(0xcc);//*跳過(guò)讀序列號(hào)*/
  192.     ds1820wr(0xbe);//*讀取溫度*/
  193.     a=ds1820rd();
  194.     b=ds1820rd();
  195.     temp=b;
  196.     temp<<=8;
  197.     temp=temp|a;
  198.     if(temp<0x08ff)
  199.      tflag=0;
  200.     else
  201.     {
  202.      temp=~temp+1;
  203.      tflag=1;
  204.     }                                                                                                         
  205.     temp=temp*(0.0625)*100+0.5;//溫度值擴(kuò)大10倍,精確到liang位小數(shù)
  206.   return temp;
  207. }
  208. void display_real_temp(uint temp)//實(shí)時(shí)溫度顯示函數(shù)
  209. {
  210.         uchar datas[] = {0, 0, 0, 0}; //定義數(shù)組
  211.        
  212.         datas[0] = temp % 10000 / 1000;
  213.         datas[1] = temp % 1000 / 100;
  214.         datas[2] = temp % 100 / 10;
  215.        
  216.         wr_com(0x80+0x0b);     //寫(xiě)地址 80表示初始地址
  217.         wr_data('0'+datas[0]); //十位
  218.        
  219.         wr_com(0x80+0x0c);     //寫(xiě)地址 80表示初始地址
  220.         wr_data('0'+datas[1]); //個(gè)位

  221.         wr_com(0x80+0x0d);     //寫(xiě)地址 80表示初始地址
  222.         wr_data(0x20+14); //個(gè)位
  223.        
  224.         wr_com(0x80+0x0e);     //寫(xiě)地址 80表示初始地址
  225.         wr_data('0'+datas[2]); //顯示小數(shù)點(diǎn)

  226.         wr_com(0x80+0x0f);     //寫(xiě)地址 80表示初始地址
  227.         wr_data(0x60+3); //顯示C   
  228.        
  229. }
  230. /********************************************************
  231.                     步進(jìn)電機(jī)正轉(zhuǎn)
  232. *********************************************************/
  233. void  motor_zheng()
  234. {
  235.    uchar i;
  236.    for (i=0; i<8; i++)       //一個(gè)周期轉(zhuǎn)45度
  237.     {
  238.       P1 = zheng[i];          //取數(shù)據(jù)
  239.       delay(1);            //調(diào)節(jié)轉(zhuǎn)速
  240.     }
  241. }
  242. /********************************************************/
  243. /*步進(jìn)電機(jī)反轉(zhuǎn)
  244. /********************************************************/
  245. void  motor_fan()
  246. {
  247. uchar i;
  248. for (i=0; i<8; i++)     //一個(gè)周期轉(zhuǎn)45度1
  249.   {
  250.         P1 = fan[i];          //取數(shù)據(jù)
  251.         delay(1);            //調(diào)節(jié)轉(zhuǎn)速
  252.   }
  253. }
  254. //////////////手動(dòng)按鍵控制
  255. void shoudong()
  256. {
  257.    uchar r,N=1; //N 步進(jìn)電機(jī)運(yùn)轉(zhuǎn)圈數(shù) 因?yàn)槲覀兊牟竭M(jìn)電機(jī)是減速步進(jìn)電機(jī) 減速比是1/64 所以這里N=64時(shí) 步進(jìn)電機(jī)外部的主軸轉(zhuǎn)1圈
  258.    if(key1==0)
  259.           {
  260.         delay(10);
  261.         if(key1==0)
  262.            {
  263.              if(!key1);
  264.              wr_com(0x80+0x40+15);
  265.              wr_data('Z');
  266.               while(1)
  267.                  {
  268.                                          for(r=0;r<N;r++)
  269.                                  {
  270.                                            motor_zheng();       //電機(jī)正轉(zhuǎn)                           
  271.                                      }
  272.                                          if(key3==0)
  273.                                           break;    //退出此循環(huán)程序
  274.                                          if(key2==0)
  275.                                           break;                     
  276.                  }
  277.                    }
  278.       }
  279.          if(key2==0)
  280.        {
  281.              delay(10);
  282.          if(key2==0)
  283.            {
  284.               if(!key2);
  285.              wr_com(0x80+0x40+15);
  286.              wr_data('F');
  287.               while(1)
  288.                 {
  289.                                  for(r=0;r<N;r++)
  290.                          {
  291.                                motor_fan();       //電機(jī)反轉(zhuǎn)                          
  292.                                  }
  293.                                  if(key3==0)
  294.                                   break;    //退出此循環(huán)程序
  295.                                  if(key1==0)
  296.                                break;
  297.                 }               
  298.            }
  299.        }
  300.           if(key3==0)
  301.         {
  302.           delay(10);
  303.           if(key3==0)
  304.             {
  305.                      if(!key3);
  306.              wr_com(0x80+0x40+15);
  307.              wr_data('G');  
  308.                          P1=0xf0;
  309.             }
  310.         }            
  311. }
  312. /////////////電機(jī)自動(dòng)正轉(zhuǎn)
  313. void zidong_zheng()
  314. {
  315.   //uchar i,j
  316.   while(1)
  317.      {
  318.       motor_zheng();
  319.      }
  320. }
  321. /////////////電機(jī)自動(dòng)反轉(zhuǎn)
  322. void zidong_fan()
  323. {
  324.   //uchar r,N=1;
  325.    while(1)
  326.      {
  327.        motor_fan();
  328.      }
  329. }
  330. void keyscan()
  331. {
  332.    uchar keynum;
  333.    if(key4==0)//----加和減都是在第一個(gè)按鍵按下情況下進(jìn)行的
  334.     {
  335.       delay(10);//按鍵消抖----有按鍵操作就需要消抖--還需要進(jìn)行松手檢測(cè)
  336.       if(key4==0)//第一個(gè)按鍵
  337.         {
  338.           flag=1;
  339.          keynum++;
  340.          if(keynum==1)//第一次按鍵--操作秒---即光標(biāo)的位置<操作對(duì)象>
  341.             {
  342.               while(!key4);
  343.                   wr_com(0x80+6);//指令執(zhí)行位置
  344.                   wr_com(0x0f);//光標(biāo)閃爍
  345.             }
  346.          if(keynum==2)//第二次按鍵--操作分
  347.             {
  348.               while(!key4);
  349.                   wr_com(0x80+3);
  350.                   wr_com(0x0f);
  351.             }
  352.          if(keynum==3)//第三次按鍵--操作時(shí)
  353.             {
  354.               while(!key4);
  355.                   wr_com(0x80);
  356.                   wr_com(0x0f);
  357.             }
  358.          if(keynum==4)//第4次按鍵--操作日
  359.             {
  360.               while(!key4);
  361.                   wr_com(0x80+0x40+8);
  362.                   wr_com(0x0f);
  363.             }
  364.          if(keynum==5)//第5次按鍵--操作月
  365.             {
  366.               while(!key4);
  367.                   wr_com(0x80+0x40+5);
  368.                   wr_com(0x0f);
  369.             }
  370.          if(keynum==6)//第6次按鍵--操作年
  371.             {
  372.               while(!key4);
  373.                   wr_com(0x80+0x40+2);
  374.                   wr_com(0x0f);
  375.             }
  376.          if(keynum==7)//第7次按鍵一--回復(fù)操作前狀態(tài)
  377.             {
  378.                while(!key4);
  379.                keynum=0;
  380.                wr_com(0x0c);
  381.                flag=0;//DS12C887正常運(yùn)行---并將修改過(guò)的值寫(xiě)進(jìn)芯片-----這句不加不能進(jìn)入設(shè)置
  382.                write_ds(0,miao);
  383.                write_ds(2,fen);
  384.                write_ds(4,shi);
  385.                write_ds(7,ri);
  386.                            write_ds(8,yue);
  387.                            write_ds(9,nian);
  388.             }
  389.      }
  390.   }
  391. //////////////時(shí)間調(diào)整---加
  392. if(keynum!=0)
  393.         {
  394.           if(key2==0)
  395.            {
  396.              delay(10);
  397.              if(key2==0)
  398.                {
  399.                   if(keynum==1)
  400.                      {
  401.                        while(!key2);
  402.                         miao++;
  403.                        if(miao==60)
  404.                         miao=0;
  405.                         write_sfm(6,miao);
  406.                         wr_com(0x80+6);                       
  407.                      }
  408.                   if(keynum==2)
  409.                      {
  410.                        while(!key2);
  411.                         fen++;
  412.                        if(fen==60)
  413.                         fen=0;
  414.                         write_sfm(3,fen);
  415.                         wr_com(0x80+3);                       
  416.                      }
  417.                   if(keynum==3)
  418.                      {
  419.                        while(!key2);
  420.                         shi++;
  421.                        if(shi==24)
  422.                         shi=0;
  423.                         write_sfm(0,shi);
  424.                         wr_com(0x80);                       
  425.                      }
  426.                   if(keynum==4)
  427.                      {
  428.                        while(!key2);
  429.                         ri++;
  430.                        if(ri==32)
  431.                         ri=1;
  432.                         write_nyr(8,ri);
  433.                         wr_com(0x80+0x40+8);                       
  434.                      }
  435.                   if(keynum==5)
  436.                      {
  437.                        while(!key2);
  438.                         yue++;
  439.                        if(yue==13)
  440.                         yue=1;
  441.                         write_nyr(5,yue);
  442.                         wr_com(0x80+0x40+5);                       
  443.                      }
  444.                   if(keynum==6)
  445.                      {
  446.                        while(!key2);
  447.                         nian++;
  448.                        if(nian==100)
  449.                         nian=0;
  450.                         write_nyr(2,nian);
  451.                         wr_com(0x80+0x40+2);                       
  452.                      }
  453.                }
  454.            }
  455. //////////////時(shí)間調(diào)整---減
  456.          if(key3==0)
  457.            {
  458.              delay(10);
  459.              if(key3==0)
  460.                {
  461.                   if(keynum==1)
  462.                      {
  463.                       while(!key3);
  464.                       miao--;
  465.                       if(miao==-1)
  466.                           miao=59;
  467.                       write_sfm(6,miao);
  468.                       wr_com(0x80+6);
  469.                      }
  470.                   if(keynum==2)
  471.                      {
  472.                       while(!key3);
  473.                       fen--;
  474.                       if(fen==-1)
  475.                          fen=59;
  476.                       write_sfm(3,fen);
  477.                       wr_com(0x80+3);
  478.                      }
  479.                   if(keynum==3)
  480.                      {
  481.                       while(!key3);
  482.                       shi--;
  483.                       if(shi==-1)
  484.                           shi=23;
  485.                       write_sfm(0,shi);
  486.                       wr_com(0x80);
  487.                      }
  488.                   if(keynum==4)
  489.                      {
  490.                       while(!key3);
  491.                       ri--;
  492.                       if(ri==0)
  493.                           ri=31;
  494.                       write_nyr(8,ri);
  495.                       wr_com(0x80+0x40+8);
  496.                      }
  497.                   if(keynum==5)
  498.                      {
  499.                       while(!key3);
  500.                       yue--;
  501.                       if(yue==0)
  502.                           yue=12;
  503.                       write_nyr(5,yue);
  504.                       wr_com(0x80+0x40+5);
  505.                      }
  506.                   if(keynum==6)
  507.                      {
  508.                       while(!key3);
  509.                       nian--;
  510.                       if(nian==-1)
  511.                           nian=99;
  512.                       write_nyr(2,nian);
  513.                       wr_com(0x80+0x40+2);
  514.                      }
  515.                }
  516.            }
  517.         }
  518. }

  519. /********************************************************                                                      
  520. *  主程序                                                                                                   
  521. *********************************************************/
  522. void main()
  523. {
  524.    //uchar i;   
  525.     init();
  526.    while(1)
  527.     {
  528.               keyscan();
  529.           if((guang_dq==1)&&(aa<200))//----------問(wèn)題在這,程序一直在這循環(huán)
  530.            {
  531.                 zidong_zheng();
  532.            }
  533.        didi();
  534.        delay(200);
  535.        P1=0xf0;
  536.        flag=0;
  537.       if(flag==0)
  538.         {
  539.                   read_temp();
  540.                   display_real_temp(temp);
  541.                   shoudong();

  542.               miao=read_ds(0);
  543.               fen=read_ds(2);
  544.               shi=read_ds(4);
  545.               ri=read_ds(7);
  546.               yue=read_ds(8);
  547.               nian=read_ds(9);
  548.        
  549.              write_sfm(6,miao);
  550.              write_sfm(3,fen);
  551.              write_sfm(0,shi);
  552.              write_nyr(8,ri);
  553.              write_nyr(5,yue);
  554.              write_nyr(2,nian);
  555.         }
  556.     }
  557. }
  558. void timer0() interrupt 1  //定時(shí)器---程序復(fù)雜--為了不影響時(shí)鐘的反應(yīng)速度--在定時(shí)器內(nèi)完成這些操作
  559. {

  560.   TH0=(65536-50000)/256;
  561.   TL0=(65536-50000)%256;
  562.   aa++;

  563. }

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:191929 發(fā)表于 2017-5-6 19:44 | 只看該作者
問(wèn)題是到了晚上,電機(jī)啟動(dòng),既然起動(dòng)就要到達(dá)指定位置停下來(lái),我用定時(shí)器來(lái)做,無(wú)奈程序一直在那循環(huán),不知道怎么改了,希望大家?guī)蛶臀遥x謝謝謝了
回復(fù)

使用道具 舉報(bào)

5#
ID:166760 發(fā)表于 2017-5-6 19:55 | 只看該作者
沒(méi)問(wèn)題啊
回復(fù)

使用道具 舉報(bào)

6#
ID:191929 發(fā)表于 2017-5-6 19:59 | 只看該作者

就是主函數(shù)里邊,keyscan()函數(shù)下邊的if語(yǔ)句,程序停在那,出不來(lái)
回復(fù)

使用道具 舉報(bào)

7#
ID:7485 發(fā)表于 2017-5-6 21:41 | 只看該作者
如果使用步進(jìn)電機(jī)的話,可以規(guī)定步數(shù),一定的步數(shù)自然是到達(dá)一定的位置。如果使用直流電機(jī),一般做這類(lèi)動(dòng)作需要一個(gè)限位開(kāi)關(guān)或傳感器,如磁、光電等傳感器。用定時(shí)即便你的程序能達(dá)到目的,也不可靠。
回復(fù)

使用道具 舉報(bào)

8#
ID:10641 發(fā)表于 2017-5-6 21:49 | 只看該作者
可以添加極限傳感器
回復(fù)

使用道具 舉報(bào)

9#
ID:191024 發(fā)表于 2017-5-6 22:26 | 只看該作者
可能是延時(shí)時(shí)間太長(zhǎng)了,你可以使用庫(kù)函數(shù)intrins或使用DelayX_us(unsigned char t),都是引用_nop_,這樣就不會(huì)耽誤太多的時(shí)間去等待延時(shí)判斷。
回復(fù)

使用道具 舉報(bào)

10#
ID:191929 發(fā)表于 2017-5-6 22:38 | 只看該作者
本帖最后由 惜緣2008 于 2017-5-6 23:10 編輯
ahshmj 發(fā)表于 2017-5-6 21:41
如果使用步進(jìn)電機(jī)的話,可以規(guī)定步數(shù),一定的步數(shù)自然是到達(dá)一定的位置。如果使用直流電機(jī),一般做這類(lèi)動(dòng)作 ...

恩恩,對(duì)的,現(xiàn)在想通了用定時(shí)器行不通,我用的步進(jìn)電機(jī),現(xiàn)在換成一個(gè)變量,還是不行不受控制,控制步數(shù)走的太慢,還是停不下來(lái)
  1. void main()
  2. {
  3.     uchar i=0;  
  4.     init();
  5.    
  6.    while(1)
  7.     {
  8.               keyscan();
  9.           if((guang_dq==1)&&(i<200))//----------問(wèn)題在這,程序一直在這循環(huán)
  10.            {
  11.            i++;
  12.                    for (k=0; k<8; k++)       //一個(gè)周期轉(zhuǎn)45度
  13.                     {
  14.                       P1 = zheng[k];          //取數(shù)據(jù)
  15.                       delay(1);
  16.             }
  17.            }
  18.        //didi();
  19.       //flag=0;
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

11#
ID:191929 發(fā)表于 2017-5-6 22:39 | 只看該作者
navyzq 發(fā)表于 2017-5-6 21:49
可以添加極限傳感器

這個(gè)我還沒(méi)接觸到
回復(fù)

使用道具 舉報(bào)

12#
ID:191929 發(fā)表于 2017-5-6 22:43 | 只看該作者
HUANGHFS 發(fā)表于 2017-5-6 22:26
可能是延時(shí)時(shí)間太長(zhǎng)了,你可以使用庫(kù)函數(shù)intrins或使用DelayX_us(unsigned char t),都是引用_nop_,這樣就不 ...

恩恩,好的,我試試
回復(fù)

使用道具 舉報(bào)

13#
ID:151348 發(fā)表于 2017-5-7 09:42 | 只看該作者
惜緣2008 發(fā)表于 2017-5-6 19:44
問(wèn)題是到了晚上,電機(jī)啟動(dòng),既然起動(dòng)就要到達(dá)指定位置停下來(lái),我用定時(shí)器來(lái)做,無(wú)奈程序一直在那循環(huán),不知 ...

你的aa相對(duì)于用于計(jì)時(shí),aa=200,說(shuō)明定時(shí)10s。問(wèn)題是,定時(shí)10s結(jié)束之后,電機(jī)就要停止,但定時(shí)器timer0仍然在工作,所以aa一直有機(jī)會(huì)小于200(aa超uint范圍后又會(huì)回到0),if((guang_dq==1)&&(aa<200))就會(huì)不斷成立。所以當(dāng)aa>200后,就應(yīng)該關(guān)閉定時(shí)器
回復(fù)

使用道具 舉報(bào)

14#
ID:111634 發(fā)表于 2017-5-7 11:12 | 只看該作者
ahshmj 發(fā)表于 2017-5-6 21:41
如果使用步進(jìn)電機(jī)的話,可以規(guī)定步數(shù),一定的步數(shù)自然是到達(dá)一定的位置。如果使用直流電機(jī),一般做這類(lèi)動(dòng)作 ...

"如果使用步進(jìn)電機(jī)的話,可以規(guī)定步數(shù),一定的步數(shù)自然是到達(dá)一定的位置。如果使用直流電機(jī),一般做這類(lèi)動(dòng)作需要一個(gè)限位開(kāi)關(guān)或傳感器,如磁、光電等傳感器。用定時(shí)即便你的程序能達(dá)到目的,也不可靠。"

照此辦理,沒(méi)錯(cuò)!根本不需要定時(shí)器,若需早晨和晚上定時(shí)開(kāi)關(guān),倒是可以考慮用定時(shí)器。
回復(fù)

使用道具 舉報(bào)

15#
ID:197714 發(fā)表于 2017-5-7 21:38 | 只看該作者
我也做的是窗簾
回復(fù)

使用道具 舉報(bào)

16#
ID:191929 發(fā)表于 2017-5-8 11:20 | 只看該作者
zl2168 發(fā)表于 2017-5-7 11:12
"如果使用步進(jìn)電機(jī)的話,可以規(guī)定步數(shù),一定的步數(shù)自然是到達(dá)一定的位置。如果使用直流電機(jī),一般做這類(lèi) ...

恩恩,謝謝,我試試,也有定時(shí)開(kāi)關(guān)功能,還要用定時(shí)器,
回復(fù)

使用道具 舉報(bào)

17#
ID:191929 發(fā)表于 2017-5-8 11:23 | 只看該作者
imxuheng 發(fā)表于 2017-5-7 09:42
你的aa相對(duì)于用于計(jì)時(shí),aa=200,說(shuō)明定時(shí)10s。問(wèn)題是,定時(shí)10s結(jié)束之后,電機(jī)就要停止,但定時(shí)器timer0仍 ...

對(duì)對(duì)對(duì),就是這個(gè)問(wèn)題,我用的是步進(jìn)電機(jī),先控制下步數(shù),,在定時(shí)開(kāi)關(guān)的時(shí)候我會(huì)這樣試試,謝謝
回復(fù)

使用道具 舉報(bào)

18#
ID:191929 發(fā)表于 2017-5-8 11:25 | 只看該作者

一起學(xué)吧,哈哈,有問(wèn)題一起解決,大家這么熱情
回復(fù)

使用道具 舉報(bào)

19#
ID:7485 發(fā)表于 2018-11-2 09:25 | 只看該作者
惜緣2008 發(fā)表于 2017-5-6 22:38
恩恩,對(duì)的,現(xiàn)在想通了用定時(shí)器行不通,我用的步進(jìn)電機(jī),現(xiàn)在換成一個(gè)變量,還是不行不受控制,控制步數(shù) ...

如果是步進(jìn)電機(jī),到了指定的步數(shù),一定能停下來(lái)的。嫌慢你可以加快,或換步進(jìn)電機(jī)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产极品粉嫩美女呻吟在线看人 | 久久久视| 一二区视频 | yiren22 亚洲综合 | 91精品国产综合久久久久蜜臀 | 在线一区观看 | 91毛片在线看 | 九九九视频在线 | 国产91视频一区二区 | 成人亚洲精品久久久久软件 | 国产人成精品一区二区三 | 99久久婷婷国产综合精品电影 | 欧美日韩国产精品激情在线播放 | 精品国产乱码久久久久久蜜退臀 | 国产黄色电影 | 99久久精品一区二区成人 | 在线观看国产精品视频 | 欧美大片黄 | 精品久草| 国产精品美女久久久久久久网站 | 国产在线一区二区 | 国产精品成人久久久久 | 美女久久久久久久久 | 成人亚洲视频 | 在线激情视频 | 午夜精品久久久久久久久久久久久 | 色综合99 | 国产精品美女一区二区 | 99精品国产一区二区三区 | 国产精品一区二区三区在线 | 久久成人免费观看 | av中文字幕在线观看 | 99精品国产成人一区二区 | 欧美久久一区二区三区 | 久久久xx | 天堂成人国产精品一区 | 国产综合精品 | 久久久精品一区二区三区 | 啪一啪在线视频 | 久久久无码精品亚洲日韩按摩 | 激情av在线 |