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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1925|回復(fù): 4
收起左側(cè)

我的這個程序是具有超聲波定位的PWM調(diào)速風(fēng)扇,求大神看看

[復(fù)制鏈接]
ID:727285 發(fā)表于 2020-4-17 21:43 來自手機 | 顯示全部樓層 |閱讀模式
大神們,能幫我看一下,為什么我的超聲波定位到人后停留時間變得只有一秒,我的這個程序設(shè)計的意義是定位到最近的人就直接超聲波舵機模塊就停止,物體或者人移動后,超聲波舵機就重新掃描再定位到人移動后的地方,做到一個跟蹤的功能,可是程序改完后,定位時間反而變短了,原先是直接停止,等待物體移動后繼續(xù)跟蹤。有沒有大神能幫我看一下是什么問題嗎?
單片機源程序如下:
  1. #include “reg52.h”
  2. #include <intrins.h>
  3. unsigned char mos;     
  4. sbit pwm1 =P1^4;          //PWM信號輸出
  5. sbit  RX = P0^6;           //定義超聲波傳感器發(fā)射端
  6. sbit  TX = P0^7;           //定義超聲波傳感器接收端
  7. sbit  jdq =P2^0;           //定義電機
  8. sbit pwm2=P1^6;           
  9. unsigned char juli,tt;

  10. unsigned long S=0;
  11. unsigned int ms,mm,suu,time,shu;

  12. sbit s=P1^5;
  13. sbit fmq=P1^3;            //定義信號燈
  14. sbit led1=P1^0;
  15. sbit led2=P1^1;
  16. sbit led3=P1^2;
  17. unsigned char code su[]={                  //數(shù)碼管碼共陰
  18.         0x3F,/*0*/
  19.         0x06,/*1*/
  20.         0x5B,/*2*/
  21.         0x4F,/*3*/
  22.         0x66,/*4*/
  23.         0x6D,/*5*/
  24.         0x7D,/*6*/
  25.         0x07,/*7*/
  26.         0x7F,/*8*/
  27.         0x6F,/*9*/  
  28.                 };
  29. /*****************************************************
  30. 函數(shù)功能:延時若干毫秒
  31. 入口參數(shù):n
  32. ***************************************************/
  33. void delay(unsigned char i)//延時
  34. {
  35.   unsigned char j,k;
  36.   for(j=i;j>0;j--)
  37.     for(k=125;k>0;k--);
  38. }
  39. /******************************************************************************/
  40. /* 函數(shù)名稱  : Init_timer0                                                       */
  41. /* 函數(shù)描述  : 初始化單片機函數(shù)                                               */
  42. /* 輸入?yún)?shù)  : 無                                                             */
  43. /* 參數(shù)描述  : 無                                                             */
  44. /* 返回值    : 無                                                             */
  45. /******************************************************************************/
  46. void Time0_Init()          //定時器初始化
  47.     {
  48.          TMOD=0x11;
  49.          TH1=0x00;
  50.          TL1=0x00;
  51.      TL0 = 0x49;                //設(shè)置定時初值
  52.          TH0 = 0xFD;                //設(shè)置定時初值
  53.      TR0=1;                 //定時器開始      
  54.          ET0=1;
  55.          EA=1;
  56.          TR1=0;
  57.     }
  58. /******************************************************************************/
  59. /* 函數(shù)名稱  : timer0                                                         */
  60. /* 函數(shù)描述  : T0中斷處理函數(shù)                                                 */
  61. /* 輸入?yún)?shù)  : 無                                                             */
  62. /* 參數(shù)描述  : 無                                                             */
  63. /* 返回值    : 無                                                             */
  64. /******************************************************************************/
  65. void Time0_Int() interrupt 1 //中斷程序
  66.      {
  67.             TL0 = 0xA6;                //設(shè)置定時初值
  68.          TH0 = 0xFF;                //設(shè)置定時初值
  69.          ms++;
  70.          if(ms>mm){pwm1=0;}
  71.          else pwm1=1;
  72.          if(ms>200){ms=0;}
  73.      }

  74. void ceju()
  75.       {
  76.            TX=1;
  77.           _nop_();
  78.           _nop_();
  79.           _nop_();
  80.           _nop_();
  81.           _nop_();
  82.           _nop_();
  83.           _nop_();
  84.           _nop_();
  85.           _nop_();
  86.           _nop_();
  87.           _nop_();
  88.           _nop_();
  89.           _nop_();
  90.           _nop_();
  91.           _nop_();
  92.           _nop_();
  93.           _nop_();
  94.           _nop_();
  95.           _nop_();
  96.           _nop_();
  97.           _nop_();
  98.           _nop_();
  99.          _nop_();
  100.           _nop_();
  101.           _nop_();
  102.           _nop_();
  103.           _nop_();
  104.           _nop_();
  105.           _nop_();
  106.           _nop_();
  107.           _nop_();
  108.           _nop_();
  109.           _nop_();
  110.            _nop_();
  111.           _nop_();
  112.           _nop_();
  113.           _nop_();
  114.           _nop_();
  115.          TX=0;
  116.          TH1=0;
  117.          TL1=0;
  118.          suu=0;
  119.          while(!RX)                //當(dāng)RX為零時等待
  120.           {
  121.           suu++;
  122.           if(suu>2000) break;
  123.           }
  124.          TR1=1;                            //開啟定時器
  125.          suu=0;
  126.          while(RX)                //當(dāng)RX為零時等待
  127.          {
  128.           suu++;
  129.           if(suu>2000) break;
  130.          }
  131.          TR1=0;                                //關(guān)閉計數(shù)
  132.      time=TH1*256+TL1;
  133.          TH1=0;
  134.          TL1=0;
  135.          S=(time*1.7)/100;     //算出來是CM
  136.          shu=(unsigned char)S;
  137.          }
  138. void xunbo()
  139.      {
  140.      delay(100);
  141.       if(mos==0)
  142.        {
  143.        mm++;
  144.        ms=0;
  145.        TR0=1;
  146.        delay(200);
  147.        TR0=0;
  148.        if(mm>=25){mos=1;}
  149.        }
  150.        if(mos==1)
  151.        {
  152.        mm--;
  153.        ms=0;
  154.        TR0=1;
  155.        delay(200);
  156.        TR0=0;
  157.        if(mm<=5){mos=0;tt++;}
  158.        }
  159.          }
  160. unsigned char i;
  161. void delayms(void)
  162. {while(i--);
  163. }
  164. void disp1()
  165. {
  166. pwm2=1;delay(8000);
  167. pwm2=0;delay(12000);
  168. led1=0;
  169. }
  170. void disp2()
  171. {pwm2=1;delay(12000);
  172. pwm2=0;delay(12000);
  173. led1=1;led2=0;
  174. }
  175. void disp3()
  176. {
  177. pwm2=1;
  178. led2=1;led3=0;
  179. }
  180. void disp4()
  181. {pwm2=0;
  182. led3=0;
  183. }
  184. void keyscan()
  185. {if(s==0)

  186. {delay(5000);
  187. if(s==0)
  188. fmq=0;delay(12000);
  189. fmq=1;
  190. {if(++i==5)i=1;}
  191. TR2=0;
  192. }
  193. }


  194. void main()
  195. { juli=100;
  196. Time0_Init();
  197.   mm=5;
  198.   ms=0;

  199. keyscan();
  200. i=0;
  201. TH2=(65536-50000)/256;
  202. TL2=(65536-50000)%256;
  203. ET2=1;
  204. EA=1;
  205. TR2=1;            
  206. while(1)
  207.   {
  208.            P0=~su[tt%10];
  209.     if(tt==0)
  210.         {
  211.     xunbo();
  212.         ceju();         
  213.         if(shu<juli){juli=shu;}
  214.         }
  215.         if(tt==1)
  216.          {         
  217.           xunbo();
  218.           ceju();
  219.           if(tt==2){tt=0;juli=100;}
  220.           if(shu<(juli+3)) { xunbo(); xunbo(); tt=5;}
  221.          }
  222.         if(tt==5)
  223.           {                        
  224.             jdq=0;
  225.             delay(200);
  226.                 delay(200);
  227.             delay(200);
  228.                 delay(200);
  229.             ceju();
  230.                 if(juli>5)
  231.             if((shu<(juli-5))||(shu>(juli+5))) {tt=0; juli=100;jdq=1;}        
  232.         if (led1==0)
  233.         {disp1();}
  234.         if (led2==0)
  235.         {disp2();}
  236.         if (led3==0)
  237.         {disp3();}
  238.         if (led3==0)
  239.         {disp4();}      

  240. }         
  241. }
  242. }
  243. //定時器2中斷程序
  244. void timer2() interrupt 5
  245. {TF2=0;
  246. switch(i)
  247. {
  248. case 1:disp1();break;
  249. case 2:disp2();break;
  250. case 3:disp3();break;
  251. case 4:disp4();break;
  252. default:;
  253. }

  254. }
復(fù)制代碼


回復(fù)

使用道具 舉報

ID:727285 發(fā)表于 2020-4-18 21:05 來自手機 | 顯示全部樓層
帖子別沉啊,真的沒人懂嗎
回復(fù)

使用道具 舉報

ID:77479 發(fā)表于 2020-4-19 10:55 | 顯示全部樓層
這種問題一般人們很難回答,也不愿意回答。這樣,你把無關(guān)的部分刪掉,把核心的東西留下,再調(diào)試,看看問題出在哪里?
回復(fù)

使用道具 舉報

ID:727285 發(fā)表于 2020-4-19 13:43 來自手機 | 顯示全部樓層
gd2051 發(fā)表于 2020-4-19 10:55
這種問題一般人們很難回答,也不愿意回答。這樣,你把無關(guān)的部分刪掉,把核心的東西留下,再調(diào)試,看看問題 ...

大神,定時器2的部分感覺上有點小錯誤,核心部分主要還是測距定位部分
回復(fù)

使用道具 舉報

ID:727285 發(fā)表于 2020-4-19 13:45 來自手機 | 顯示全部樓層
gd2051 發(fā)表于 2020-4-19 10:55
這種問題一般人們很難回答,也不愿意回答。這樣,你把無關(guān)的部分刪掉,把核心的東西留下,再調(diào)試,看看問題 ...

核心部分調(diào)試成功了,主要問題還是在于pwm2模塊和定時器2,定時器2用來控制pwm2,但我總感覺是我編程的問題
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 草久久| 日韩国产一区二区三区 | 日本成人中文字幕在线观看 | 日本高清中文字幕 | 日韩欧美精品一区 | 亚洲狠狠爱 | 国产欧美日韩综合精品一区二区 | av资源网站| 国产精品久久久免费 | 99精品视频免费观看 | 欧美性网 | 日日夜夜免费精品 | 亚洲久久在线 | 色天堂视频 | 久久久久99 | 国产成人影院 | 国产精品成人一区二区三区 | 颜色网站在线观看 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 久久久国产亚洲精品 | 永久精品 | 黄色日本片 | 伊色综合久久之综合久久 | 国产高清在线视频 | 国产精品不卡一区 | 欧美一区二区在线视频 | 青青久久| 欧美成人性生活 | 日韩免费视频一区二区 | 亚洲在线一区二区三区 | 人成在线 | 欧洲亚洲视频 | 91视频网 | 亚洲国产精品视频 | 亚洲一区二区av | 日日干夜夜操 | 欧美激情国产精品 | 91精品久久久久久久久中文字幕 | 91在线精品播放 | 在线观看黄免费 | 日韩毛片播放 |