欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
我的這個程序是具有超聲波定位的PWM調速風扇,求大神看看
[打印本頁]
作者:
MXP0712
時間:
2020-4-17 21:43
標題:
我的這個程序是具有超聲波定位的PWM調速風扇,求大神看看
大神們,能幫我看一下,為什么我的超聲波定位到人后停留時間變得只有一秒,我的這個程序設計的意義是定位到最近的人就直接超聲波舵機模塊就停止,物體或者人移動后,超聲波舵機就重新掃描再定位到人移動后的地方,做到一個跟蹤的功能,可是程序改完后,定位時間反而變短了,原先是直接停止,等待物體移動后繼續跟蹤。有沒有大神能幫我看一下是什么問題嗎?
單片機源程序如下:
#include “reg52.h”
#include <intrins.h>
unsigned char mos;
sbit pwm1 =P1^4; //PWM信號輸出
sbit RX = P0^6; //定義超聲波傳感器發射端
sbit TX = P0^7; //定義超聲波傳感器接收端
sbit jdq =P2^0; //定義電機
sbit pwm2=P1^6;
unsigned char juli,tt;
unsigned long S=0;
unsigned int ms,mm,suu,time,shu;
sbit s=P1^5;
sbit fmq=P1^3; //定義信號燈
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
unsigned char code su[]={ //數碼管碼共陰
0x3F,/*0*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
};
/*****************************************************
函數功能:延時若干毫秒
入口參數:n
***************************************************/
void delay(unsigned char i)//延時
{
unsigned char j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
/******************************************************************************/
/* 函數名稱 : Init_timer0 */
/* 函數描述 : 初始化單片機函數 */
/* 輸入參數 : 無 */
/* 參數描述 : 無 */
/* 返回值 : 無 */
/******************************************************************************/
void Time0_Init() //定時器初始化
{
TMOD=0x11;
TH1=0x00;
TL1=0x00;
TL0 = 0x49; //設置定時初值
TH0 = 0xFD; //設置定時初值
TR0=1; //定時器開始
ET0=1;
EA=1;
TR1=0;
}
/******************************************************************************/
/* 函數名稱 : timer0 */
/* 函數描述 : T0中斷處理函數 */
/* 輸入參數 : 無 */
/* 參數描述 : 無 */
/* 返回值 : 無 */
/******************************************************************************/
void Time0_Int() interrupt 1 //中斷程序
{
TL0 = 0xA6; //設置定時初值
TH0 = 0xFF; //設置定時初值
ms++;
if(ms>mm){pwm1=0;}
else pwm1=1;
if(ms>200){ms=0;}
}
void ceju()
{
TX=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TX=0;
TH1=0;
TL1=0;
suu=0;
while(!RX) //當RX為零時等待
{
suu++;
if(suu>2000) break;
}
TR1=1; //開啟定時器
suu=0;
while(RX) //當RX為零時等待
{
suu++;
if(suu>2000) break;
}
TR1=0; //關閉計數
time=TH1*256+TL1;
TH1=0;
TL1=0;
S=(time*1.7)/100; //算出來是CM
shu=(unsigned char)S;
}
void xunbo()
{
delay(100);
if(mos==0)
{
mm++;
ms=0;
TR0=1;
delay(200);
TR0=0;
if(mm>=25){mos=1;}
}
if(mos==1)
{
mm--;
ms=0;
TR0=1;
delay(200);
TR0=0;
if(mm<=5){mos=0;tt++;}
}
}
unsigned char i;
void delayms(void)
{while(i--);
}
void disp1()
{
pwm2=1;delay(8000);
pwm2=0;delay(12000);
led1=0;
}
void disp2()
{pwm2=1;delay(12000);
pwm2=0;delay(12000);
led1=1;led2=0;
}
void disp3()
{
pwm2=1;
led2=1;led3=0;
}
void disp4()
{pwm2=0;
led3=0;
}
void keyscan()
{if(s==0)
{delay(5000);
if(s==0)
fmq=0;delay(12000);
fmq=1;
{if(++i==5)i=1;}
TR2=0;
}
}
void main()
{ juli=100;
Time0_Init();
mm=5;
ms=0;
keyscan();
i=0;
TH2=(65536-50000)/256;
TL2=(65536-50000)%256;
ET2=1;
EA=1;
TR2=1;
while(1)
{
P0=~su[tt%10];
if(tt==0)
{
xunbo();
ceju();
if(shu<juli){juli=shu;}
}
if(tt==1)
{
xunbo();
ceju();
if(tt==2){tt=0;juli=100;}
if(shu<(juli+3)) { xunbo(); xunbo(); tt=5;}
}
if(tt==5)
{
jdq=0;
delay(200);
delay(200);
delay(200);
delay(200);
ceju();
if(juli>5)
if((shu<(juli-5))||(shu>(juli+5))) {tt=0; juli=100;jdq=1;}
if (led1==0)
{disp1();}
if (led2==0)
{disp2();}
if (led3==0)
{disp3();}
if (led3==0)
{disp4();}
}
}
}
//定時器2中斷程序
void timer2() interrupt 5
{TF2=0;
switch(i)
{
case 1:disp1();break;
case 2:disp2();break;
case 3:disp3();break;
case 4:disp4();break;
default:;
}
}
復制代碼
作者:
MXP0712
時間:
2020-4-18 21:05
帖子別沉啊,真的沒人懂嗎
作者:
gd2051
時間:
2020-4-19 10:55
這種問題一般人們很難回答,也不愿意回答。這樣,你把無關的部分刪掉,把核心的東西留下,再調試,看看問題出在哪里?
作者:
MXP0712
時間:
2020-4-19 13:43
gd2051 發表于 2020-4-19 10:55
這種問題一般人們很難回答,也不愿意回答。這樣,你把無關的部分刪掉,把核心的東西留下,再調試,看看問題 ...
大神,定時器2的部分感覺上有點小錯誤,核心部分主要還是測距定位部分
作者:
MXP0712
時間:
2020-4-19 13:45
gd2051 發表于 2020-4-19 10:55
這種問題一般人們很難回答,也不愿意回答。這樣,你把無關的部分刪掉,把核心的東西留下,再調試,看看問題 ...
核心部分調試成功了,主要問題還是在于pwm2模塊和定時器2,定時器2用來控制pwm2,但我總感覺是我編程的問題
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1