電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

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

超聲波模塊Echo電平一直是低

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2022-7-13 17:31:49 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式




問問各位該怎么解決,不知道怎么修改
該會(huì)員沒有填寫今日想說內(nèi)容.

589

主題

924

帖子

4975

積分

四級(jí)會(huì)員

Rank: 4

積分
4975
沙發(fā)
發(fā)表于 2022-7-13 17:32:49 | 只看該作者
這是我的代碼


#include <STC15F2K60S2.H>
#include <intrins.h>


#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long


sbit led_sel=P2^3;


uchar code duanxuan[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};


sbit Trig=P1^0;
sbit Echo=P1^1;


uchar data_H,data_L;
uint  distance;
void Init(){
P0M0=0XFF;
P0M1=0X00;

P2M0=0XFF;
P2M1=0X00;

TR1=1;
TR0=0;

TMOD=0x11;
AUXR=0xC0;

EA=1;
ET0=0;
ET1=1;

TH1=(65536-60000)/256;
TL1=(65535-60000)%256;
}


void S_Init(){
Trig=0;
Echo=0;
}


void Delay20us()//@11.0592MHz
{
unsigned char i;


_nop_();
_nop_();
_nop_();
i = 52;
while (--i);
}


void Timer1() interrupt 3{
EA=0;
TH1=(65536-60000)/256;
TL1=(65536-60000)%256;

Trig=1;
Delay20us();
Trig=0;

while(Echo==0);
TH0=0;
TL0=0;

TR0=1;
while(Echo==1);
data_H=TH0;
data_L=TL0;

TH0=0;
TL0=0;

distance=data_H;
distance=distance<<8;
distance=distance|data_L;
distance=distance/58;

EA=1;
}


void Delay10us()//@11.0592MHz
{
unsigned char i;


_nop_();
i = 25;
while (--i);
}


void seg_display(){
uchar ge_data,shi_data,bai_data;
bai_data=distance/100;
shi_data=distance%100/10;
ge_data=distance%100/10%10;

led_sel=0;

P0=0x00;
P2=0x00;
Delay10us();
P2=0x00;
P0=duanxuan[bai_data];
Delay10us();
P2=0x01;
P0=duanxuan[shi_data];
Delay10us();
P2=0x01;
P0=duanxuan[ge_data];
Delay10us();
}


void main(){
Init();
S_Init();
while(1){
seg_display();
}
}

591

主題

959

帖子

5157

積分

四級(jí)會(huì)員

Rank: 4

積分
5157
板凳
發(fā)表于 2022-7-13 17:33:48 | 只看該作者
把你的S_Init()函數(shù)刪去再試試

591

主題

1772

帖子

5770

積分

四級(jí)會(huì)員

Rank: 4

積分
5770
地板
發(fā)表于 2022-7-13 17:34:34 | 只看該作者
#include<reg52.h>
#include<intrins.h>


#define uint unsigned int
#define uchar unsigned char
#define LCD1602 P0


sbit E=P2^7;
sbit RS=P2^6; //寫數(shù)據(jù)or命令
sbit RW=P2^5;//讀or寫數(shù)據(jù)


sbit TRIG=P3^7;//產(chǎn)生脈沖
sbit ECHO=P3^6;//接收脈沖


uchar zm[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38};//在LCD1602上的0~9
uint h,l,flag=0,sum;//高八位 低八位 接收成功標(biāo)志 高電平時(shí)長(zhǎng)
uchar dist_[4];   //存儲(chǔ)距離的各個(gè)位


void Delay1ms(uint a)
{
uint i;
while(a--)
{
for(i=0;i<1000;i++)
_nop_();
}
}


void Delay1us(uint a)
{
while(a--)
{
_nop_();
}
}


void LcdWriteCom(uchar com)
{
E=0;
RS=0;
RW=0;


LCD1602=com;
Delay1ms(1);
E=1;
Delay1ms(5);
E=0;
}


void LcdWriteDat(uchar dat)
{
E=0;
RS=1;
RW=0;


LCD1602=dat;
Delay1ms(1);
E=1;
Delay1ms(5);
E=0;
}


void LcdInit()
{
LcdWriteCom(0x38);  //開顯示
LcdWriteCom(0x0c);  //開顯示不顯示光標(biāo)
LcdWriteCom(0x06);  //寫一個(gè)指針加1
LcdWriteCom(0x01);  //清屏
LcdWriteCom(0x80);  //設(shè)置數(shù)據(jù)指針起點(diǎn)
}


void InitTime()
{
TMOD=0X01;//定時(shí)器0 工作方式1
TH0=(65536-1)/256;//1us
TL0=(65536-1)%256;
ET0=1;
}


void Dat_chuli()
{
uint dist;
dist=sum*170/10000;  //cm
dist_[3]='\0';
dist_[2]=dist/100;
dist_[1]=dist%100/10;
dist_[0]=dist%10;
}   


void Lcd_xianshi()
{
uchar i;
LcdWriteCom(0x80);
for(i=0;dist_!='\0';i++)
{
LcdWriteDat(zm[dist_]);
}
}
void main()
{  
uint i=0;
LcdInit();  // lcd1602初始化
InitTime();  //定時(shí)器0初始化
IT0=1;  //下降沿觸發(fā)
EA=1;
while(1)
{
TRIG=0;
ECHO=0;
Delay1ms(10);
TRIG=1;
Delay1us(20);//輸出一個(gè)20us的高脈沖
TRIG=0;

  
while(ECHO==0);   //等待回波
flag=0;
EX0=1; //打開中斷0 計(jì)時(shí)器0
TH0=0;
TL0=0;
TR0=1;
//*********************************高電平結(jié)束,進(jìn)入中斷0函數(shù)
while(TH0<30);//等待測(cè)量結(jié)果
TR0=0;
TH0=0;
TL0=0;
  
if(flag==1)
{
sum=h*256+l;//計(jì)算接收總時(shí)長(zhǎng)
}
else
{
sum=0;
}
Dat_chuli();   //計(jì)算距離并將其各個(gè)位分開
Lcd_xianshi();   //將得到的結(jié)果顯示到Lcd1602上
}
}


void Time0() interrupt 1
{
TH0=0;
TL0=0;
flag=0;   //回波過長(zhǎng),測(cè)量失敗
}


void It0() interrupt 0
{
h=TH0; //提取ECHO負(fù)跳變瞬間計(jì)時(shí)器的時(shí)間
l=TL0;
flag=1; //接收成功
EX0=0;//關(guān)閉中斷0
}

657

主題

1025

帖子

5598

積分

四級(jí)會(huì)員

Rank: 4

積分
5598
5#
發(fā)表于 2022-7-13 17:35:33 | 只看該作者
能給我看看嗎 謝謝,我的程序卡在while(ECHO==0); //等待回波

591

主題

1772

帖子

5770

積分

四級(jí)會(huì)員

Rank: 4

積分
5770
6#
發(fā)表于 2022-7-13 17:36:02 | 只看該作者
也是echo一直為低電平
7#
發(fā)表于 2022-7-13 17:36:52 | 只看該作者
樓主找到原因了嗎,我的程序也是這樣

598

主題

943

帖子

5138

積分

四級(jí)會(huì)員

Rank: 4

積分
5138
8#
發(fā)表于 2022-7-13 17:37:01 | 只看該作者
我來終結(jié)此貼,echo接P32

657

主題

1025

帖子

5598

積分

四級(jí)會(huì)員

Rank: 4

積分
5598
9#
發(fā)表于 2022-7-13 17:37:15 | 只看該作者
哇忘記看帖子了,原因一般是出在Trig高電平持續(xù)時(shí)間,最好是用器件推薦的,我當(dāng)時(shí)隨意給的20us。結(jié)果器件寫的是10us……

568

主題

922

帖子

4783

積分

四級(jí)會(huì)員

Rank: 4

積分
4783
10#
發(fā)表于 2022-7-13 17:37:52 | 只看該作者
因?yàn)閱纹瑱C(jī)拉低了,外部抬不起來!

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表