你好,请问怎么把超声模块和单片机连接起来发射脉冲啊?

作者&投稿:诏娣 (若有异议请与网页底部的电邮联系)
这个51单片机和超声波模块怎么连接呢?(有图)~

看到你的板子上右下角没有,那里有一个电源跟GND,跟超声波相接就好
还有你这个是串口通信的,你接P2口是模拟串口通信吗?

使用单片机或DSP产生脉冲,然后脉冲再加到换能器上面,换能器就可以打出超声波了

超声模块一般采用UART接口,上面有RXD和TXD两根引脚,还有一个TRIG启发引脚。将RXD和TXD分别和单片机的串口相连,TRIG和一个普通I/O相连即可。驱动程序可以到网上下载。

单片机 PTR8000无线发送接收程序 NRF905模块(实验通过 )//分发送和接收两部分,主程序只是为当时调试而写的,根据自己的需要修改。
//IO口的定义就不再详说了,根据程序能看出来或根据自己的需要重新定义。
1发送部分。
#include <AT89X52.h>
#include <ABSACC.h>
#include <intrins.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
//配置口定义//
sbit TXEN = P2^0;
sbit TRX_CE = P2^4;
sbit PWR = P1^4;
//SPI口定义//
sbit MISO = P2^2;
sbit MOSI = P1^1;
sbit SCK = P2^1;
sbit CSN = P1^0;
//sbit P2_0 = P2^0;
//状态输出口//
sbit AM =P2^3;
sbit DR = P1^2;
sbit LCD = P1^3;
uchar da=0;
/*/RF寄存器配置//
unsigned char idata RFConf[11]=
{
0x00, //配置命令//
0x6C, //CH_NO,配置频段在433.2MHZ
0x0E, //输出功率为10db,不重发,节电为正常模式
0x44, //地址宽度设置,为4字节
0x03,0x03, //接收发送有效数据长度为3字节
0xE7,0xE7,0xE7,0xE7, //接收地址
0xC0, //CRC充许,16位CRC校验16M晶振
}; */
uchar TxRxBuffer[5];
///////////延时/////////////////
void Delay(uint x)
{
uint i;
for(i=0;i<x;i++){
_nop_();
}
}
////////////用SPI口写数据至NRF905内//////////
void SpiWrite(unsigned char b)
{
unsigned char i=8;
while (i--)
{
Delay(10);
SCK=0;
MOSI=(bit)(b&0x80);
b<<=1 ;
Delay(10);
SCK=1;
Delay(10);
SCK=0;
}
SCK=0;
}
/*//////////////from 905 read data////////////////
unsigned char SpiRead(void)
{
register unsigned char i=8;
unsigned char ddata=0;
while (i--)
{
ddata<<=1 ;
SCK=0;
Delay(20);
ddata|=MISO;
SCK=1 ;
Delay(20);
}
SCK=0;
return ddata;
}*/
/*//////////////接收数据包/////////////////
void RxPacket(void)
{
uchar i;
i=0;
while(DR)
{
TxRxBuffer[i] = SpiRead();
i++;
}
}*/
/*
;写发射数据命令:20H
;读发射数据命令:21H
;写发射地址命令:22H
;读发射地址命令:23H
;读接收数据命令:24H
*/
void TxPacket(uchar da)
{ PWR=1;
TXEN=1;
CSN=0;
SpiWrite(0x22); //写发送地址,后面跟4字节地址//
SpiWrite(0xE7);
SpiWrite(0xE7);
SpiWrite(0xE7);
SpiWrite(0xE7);
CSN=1;
Delay(2);
CSN=0;
SpiWrite(0x20); //写发送数据命令,后面跟三字节数据//
SpiWrite(da);
//SpiWrite(++da);
//SpiWrite(++da);
//SpiWrite(0x44);
//SpiWrite(0x45);
CSN=1;
Delay(2);
TRX_CE=1; //使能发射模式//
Delay(100); //等带发送完成//

while(!DR);
TRX_CE=0;
}
/*///////////////等待接收数据包///////////////////
uchar temp;
void Wait_Rec_Packet(void)
{
TXEN=0;
TRX_CE=1;
PWR=1;
Delay(1000);
while(1)
{ //if (LCD==1) P0=~P0;
if(DR)
{ //P0=~P0;
TRX_CE=0; //如果数据准备好,则进入待机模式,以便SPI口操作
CSN=0;
SpiWrite(0x24);
RxPacket();
CSN=1;
temp=TxRxBuffer[0]+TxRxBuffer[1]+TxRxBuffer[2];
if(temp==0x06){
lcdbit=!lcdbit;
LCD=lcdbit;
P0=~P0;
//如果接收的数据正确
}
break;
}
}
} */
////////////初始化配置寄存器////////////////
void Ini_System(void)
{
//uchar i;

CSN=1;
SCK=0;
PWR=1;
TRX_CE=0;
TXEN=0;
Delay(2);
CSN=0;
SpiWrite( 0x00); //配置命令//
SpiWrite( 0x6C); //CH_NO,配置频段在433.2MHZ
SpiWrite( 0x0C); //输出功率为10db,不重发,节电为正常模式
SpiWrite( 0x44); //地址宽度设置,为4字节
SpiWrite( 0x01);SpiWrite( 0x01); //接收发送有效数据长度为1字节
SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7); //接收地址
SpiWrite( 0xDE);

/*for(i=0;i<11;i++){
SpiWrite(RFConf[i]);
}*/
CSN=1;
PWR=1;
TRX_CE=0;
TXEN=0;
Delay(1000);
}

void main(void)
{

Ini_System();
PWR=0;
//P0=0;
DR=1;
//TxPacket();
while(1)
{
//Wait_Rec_Packet(); //等待接收完成
// for(i=0;i<2;i++)
// Delay(65530);
TxPacket(da);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
da++;

//P0=~P0;
}
}

#include <AT89X52.h>
#include <ABSACC.h>
#include <intrins.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
uchar num[3];
//配置口定义//
sbit TXEN =P1^5;
sbit TRX_CE =P3^5;
sbit PWR =P1^4;
//SPI口定义//
sbit MISO =P1^7;
sbit MOSI =P1^1;
sbit SCK =P1^6;
sbit CSN =P1^0;
//sbit P2_0 = P2^0;
//状态输出口//
sbit AM =P3^3;
sbit DR =P1^2;
sbit LCD =P1^3;
/*/RF寄存器配置//
unsigned char idata RFConf[11]=
{
0x00, //配置命令//
0x6C, //CH_NO,配置频段在433.2MHZ
0x0C, //输出功率为10db,不重发,节电为正常模式
0x44, //地址宽度设置,为4字节
0x03,0x03, //接收发送有效数据长度为3字节
0xE7,0xE7,0xE7,0xE7, //接收地址
0xC0, //CRC充许,16位CRC校验16M晶振
};*/

uchar TxRxBuffer[5];
///////////延时/////////////////
void Delay(uint x)
{
uint i;
for(i=0;i<x;i++){
_nop_();
}
}
////////////用SPI口写数据至NRF905内//////////
void SpiWrite(unsigned char b)
{
unsigned char i=8;
SCK=0;
while (i--)
{
Delay(10);
MOSI=(bit)(b&0x80);
b<<=1 ;
Delay(10);
SCK=1;
Delay(10);
SCK=0;
}
SCK=0;
}
///////////////from 905 read data////////////////
unsigned char SpiRead(void)
{
register unsigned char i=8;
unsigned char ddata=0;
SCK=0;
while (i--)
{
ddata<<=1 ;
ddata|=MISO;
SCK=1 ;
Delay(10);
SCK=0 ;
Delay(10);
}
SCK=0;
return ddata;
}
///////////////接收数据包/////////////////
void RxPacket(void)
{
uchar i;
i=0;
while(DR)
{
TxRxBuffer[0] = SpiRead();
//i++;
}
}
/*
;写发射数据命令:20H
;读发射数据命令:21H
;写发射地址命令:22H
;读发射地址命令:23H
;读接收数据命令:24H
*/
/*void TxPacket(void)
{ PWR=1;
TXEN=1;
CSN=0;
SpiWrite(0x22); //写发送地址,后面跟4字节地址//
SpiWrite(0xE7);
SpiWrite(0xE7);
SpiWrite(0xE7);
SpiWrite(0xE7);
CSN=1;
Delay(2);
CSN=0;
SpiWrite(0x20); //写发送数据命令,后面跟三字节数据//
SpiWrite(0x01);
SpiWrite(0x02);
SpiWrite(0x03);
CSN=1;
Delay(2);
TRX_CE=1; //使能发射模式//
Delay(100); //等带发送完成//
TRX_CE=0;
while(!DR);
} */
////////////////等待接收数据包///////////////////
uchar temp;
void Wait_Rec_Packet(void)
{
TXEN=0;
TRX_CE=1;
PWR=1;
Delay(1000);
while(1)
{// if (LCD==1)
if(DR)
{
TRX_CE=0; //如果数据准备好,则进入待机模式,以便SPI口操作
CSN=0;
SpiWrite(0x24);
RxPacket();
CSN=1;

break;
}
}
}
////////////初始化配置寄存器////////////////
void Ini_System(void)
{
// uchar i;

CSN=1;
SCK=0;
PWR=1;
TRX_CE=0;
TXEN=0;
Delay(2);
CSN=0;
SpiWrite( 0x00); //配置命令//
SpiWrite( 0x6C); //CH_NO,配置频段在433.2MHZ
SpiWrite( 0x0C); //输出功率为10db,不重发,节电为正常模式
SpiWrite( 0x44); //地址宽度设置,为4字节
SpiWrite( 0x01);SpiWrite( 0x01); //接收发送有效数据长度为3字节
SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7); //接收地址
SpiWrite( 0xDE);

/*for(i=0;i<11;i++){
SpiWrite(RFConf[i]);
}*/
CSN=1;
PWR=1;
TRX_CE=1;
TXEN=0;
Delay(1000);
}

/************显示程序*************/
void disp(void)
{uchar code LEDValue[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF}; //0-9
uchar k;
for(k=0;k<=2;k++)
{
num[0]=TxRxBuffer[0]%10;
num[1]=TxRxBuffer[0]/10%10;
num[2]=TxRxBuffer[0]/100;
SBUF=LEDValue[num[k]];
while(TI==0);
TI=0;
}
}

void main(void)
{
// uchar i;

Ini_System();
PWR=0;
//P0=0;
DR=1;
//TxPacket();
while(1)
{
Wait_Rec_Packet(); //等待接收完成
disp();
Delay(5000);
Delay(5000);
//DR=1;
// for(i=0;i<2;i++)
// Delay(65530);
//TxPacket();
//Delay(50000);
//P0=~P0;


请问用什么材料可以吸收40——50Khz的超声波,有一定强度的最好?
海绵,棉布,比较软的材料都可以吸声.

您好,请问超声波探伤仪友联PXUT-350C型如何做曲线啊?请大家帮帮忙,有视...
在仪器画好DAC曲线上的一点后,回波将被解冻,此时可在试块上移动探头,寻找来自另一深度的缺陷波。如果发现因未找到最高回波而使某一点偏低,使得DAC线不够准确,可重新寻找该点的最高回波,按╋或━键重新将光标移到该点的最高回波上再按键确认该点,该点将被补高。在测试过程中仪器测试...

(急)超声波发生器的工作流程及原理?
你说的发生器是超声换能器么?换能器就是能量转换器件,将电能转换为声能,就是将交流电转化成声波了。

您好,请问超声波换能器可以用方波或三角波信号来驱动吗,不同形式的波...
只要是频率相当的交流信号都可以驱动的。不过最好还是用正弦波。用正弦波表示换能器处于谐振状态。如果用方波和三角波,有很多高频分量,换能器容易发热和损坏。

超声波探伤的计算,小弟不会啊跪求高人指教小弟,最好把计算过程写出来...
1,直接用工件调整,如工件为大平底,2.5MHz探头,300mm厚度,¢2灵敏度要增加灵敏 度计算20lg[(2*5.9\/2.5*300)\/(3.14*2*2)]=41dB 2用试块法:试块与工件形状差10dB,表面光洁度差5dB,试块比工件条件好,这部分为表面补偿15dB,调整后要增加15dB 试块衰减0.04dB\/mm *200=8,工件0....

请问 超声波 测量流速中 时差法 相位法 哪个更精确 能告诉各优缺点就...
这个应该是看管道,用在大管道里面,应该用时差法好些。这样可以用高频的超声波。小管道,用相差法。

超声波驱鼠器放在什么地方好
使用超声波驱鼠器的时候,除了注意安装位置外,还要注意放置要稳定、避免在高温潮湿环境下使用、要24小时不间断使用等。下面一起来了解一下超声波驱鼠器放在什么地方好吧。一、超声波驱鼠器放在什么地方好超声波驱鼠器利用超声波来驱赶老鼠,不过考虑到超声波的传播特性,放太远了可能无法对老鼠产生影响,...

超声波清洗机怎么清洗眼镜
二、用洗眼镜机怎么清洗眼镜?详细步骤!准备工作:把需要清洗的眼镜拿出来放在桌子上备用。准备好加水:超声波清洗机每款的容量都不一样,咱们的第二步就是需要准备好要用的清水或者是清洁液,两者都可以。打开开关:打开开关,一般超声波清洗机至少会有一个清洗模式选择,点一下就可以开始启动清洗了。

请问超声波接收头接收到的信号是电压信号好事频率信号哦,如果是频率...
超声波接收头是超声波传感器,它接收到的是一种机械振动信号,是频率在几十KHZ-几十MHZ范围内。超声波传感器把这个接收到的信号成相应的电信号(电压信号),它之所以能完成这种转变,是由它的结构决定的。超声波传感器主要材料有压电晶体(电致伸缩)及镍铁铝合金(磁致伸缩)两类。压电晶体组成的超声...

请问有什么样的材料能够很好地吸收掉超声波,越薄、效果佳的最好!!
一般来说,软的东西都可以,但看你放在哪里做吸收.橡胶,海面,棉花,都是很好的东西

麟游县13884443653: 新手学51单片机,买了最简系统板,请问怎样与模块(如超声测距模块相连)
离宽板兰: 用杜邦线没错,但是不是直接连在一起就能用了.模块说明书上有接口的定义,需要根据你的设计要求连接到相应的单片机引脚或者其他逻辑电路的引脚或者电源或者地.

麟游县13884443653: 超声波模块如何把数据传输给单片机 -
离宽板兰: 超声波与单片机之间的数据,并不是直接由超声波模块发送给单片机的,而是单片机通过超声波一个触发信号,从而得到超声波的响应,根据这个响应来计算距离.可以给给你一个程序,这个程序同时测试了两个超声波,你可以根据情况选一个...

麟游县13884443653: 这个51单片机和超声波模块怎么连接呢?(有图) -
离宽板兰: 看到你的板子上右下角没有,那里有一个电源跟GND,跟超声波相接就好 还有你这个是串口通信的,你接P2口是模拟串口通信吗?

麟游县13884443653: 超声波测距离模块的四个口和51单片机,1602怎么接 -
离宽板兰: 一个是vcc,一个gnd,一个是发送信号,一个是响应信号,跟io连接,1602接相应io

麟游县13884443653: 超声波测距和单片机的连接 -
离宽板兰: 不需要,VCC接到5V,GND接到地,其余两个直接接到IO口即可,trig(控制端)、 echo(接收端) 是否还要其详细资料,可以去淘宝上找,或者留个邮箱

麟游县13884443653: 超声波传感器测距,直接把传感器与单片机连接行不? -
离宽板兰: 如果你买的是带输出的模拟信号或者数字信号输出的传感器是可以的,不过大部分说的传感器,是一个超声波换能器,是不可以的,要增加发射接收电路才行.你说的几块钱一个的传感器,其实是倒车雷达或者民用的测距传感器,这种就是一个超声波换能器.是很便宜.

麟游县13884443653: 大家好 请问如何把超声波模块的信号 给PLC -
离宽板兰: 当然你要把距离信号检测出来后,通过单片机的串口把数据用串口输出,而且通信协议要与PLC一致才行.我们都有很现成的产品.

麟游县13884443653: 超声波探头怎么连接单片机 -
离宽板兰: 单片机产生信号加到发射电路上,发射电路把单片机产生的信号放大,加到换能器上.换能器接收到信号,经过小信号放大电路,进入单片机.

麟游县13884443653: 入侵报警系统中超声波探测器怎么跟51单片机链接 -
离宽板兰: 你要看下你说的那款探测器 探测到信号之后 有什么输出的变化,如果变化微小的话,直接放大滤波 接入单片机IO口就可以了,,,不是高频信号,不一定非得接外部中断口的,,你就记住一点,传递进去的肯定是电压信号, 高电平,低电平的, 电平发生变化就报警

麟游县13884443653: 超声波模块怎么接线51单片机开发板 请上 -
离宽板兰: 正接正 负接负 中间两根线接普通IO口(P3口需注意模式问题) 它的使用并不复杂

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网