① 超聲波模塊如何把數據傳輸給單片機
超聲波與單片機之間的數據,並不是直接由超聲波模塊發送給單片機的,而是單片機通過超聲波一個觸發信號,從而得到超聲波的響應,根據這個響應來計算距離。
可以給給你一個程序,這個程序同時測試了兩個超聲波,你可以根據情況選一個,刪一個,顯示採用的是數碼管顯示,可以根據自己情況改寫。
#include <reg52.H> //器件配置文件
#include <intrins.h>
unsigned int time=0;
unsigned int times=0;
unsigned long S=0;
sbit la=P1^0;
sbit wela=P1^1;
sbit echo =P1^3; //echo
sbit tring =P1^2; //trig
sbit echo2 = P1^5;
sbit tring2 = P1^4;
sbit beep = P3^6;
bit stat = 1;
unsigned int beep_cnt = 0;
unsigned char flag = 0;
unsigned char qianwei1,wei1,shiwei1,gewei1;
unsigned char qianwei2,wei2,shiwei2,gewei2;
unsigned char aa = 0;
unsigned char leddata[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
};
unsigned char leddatadot[] = {
0xbf, //"0"
0x86, //"1"
0xdb, //"2"
0xcf, //"3"
0xef, //"4"
0xed, //"5"
0xfd, //"6"
0x87, //"7"
0xFF, //"8"
0xEF, //"9"
};
void Display(unsigned long num);
void Conut(void){
unsigned short aa;
aa = 65535;
time= aa * times + TH0 * 256 + TL0;
times = 0;
TH0=0;
TL0=0;
S = (time * 1.845) / 100;
}
void init(){
TMOD=0x11;
TH0=0;
TL0=0;
ET0=1;
TR0=0;
EA=1;
}
void delay(unsigned char z){
int i, j;
for(i = 0; i < z; i++)
for(j = 0; j < 210; j++)
;
}
void start(){
if(flag % 2){
TH0 = 0;
TL0 = 0;
tring = 1;
delay(10);
tring = 0;
}else{
TH0 = 0;
TL0 = 0;
tring2 = 1;
delay(10);
tring2 = 0;
}
}
void beep_act(unsigned int a){
unsigned char i;
if(a < 40){
for(i = 0; i < 30; i++){
beep = 1;
delay(1);
beep = 0;
delay(1);
}
}else
if(a < 140){
for(i = 0; i < 3; i++){
beep = 1;
delay(1);
beep = 0;
delay(1);
}
}
}
void main(void){
init();
while(1){
start();
if(flag % 2){
while(!echo);
TR0=1;
while(echo);
TR0=0;
}else{
while(!echo2);
TR0=1;
while(echo2);
TR0=0;
}
Conut();
Display(S);
if(flag % 2)
beep_act(S);
flag++;
}
}
void Display(unsigned long num){
if(!(flag % 2)){
qianwei1 = num / 1000;
wei1 = (num / 100) % 10;
shiwei1 = (num / 10) % 10;
gewei1 = num % 10;
}else{
qianwei2 = num / 1000;
wei2 = (num / 100) % 10;
shiwei2 = (num / 10) % 10;
gewei2 = num % 10;
}
for(aa = 0; aa < 20; aa++){
wela=1;
P2=0xfe;
wela=0;
la=1;
P0 = leddata[qianwei2];
la=0;
delay(1);
wela=1;
P2=0xfd;
wela=0;
la=1;
P0=leddatadot[wei2];
la=0;
delay(1);
wela=1;
P2=0xfb;
wela=0;
la=1;
P0 = leddata[shiwei2];
la=0;
delay(1);
wela=1;
P2=0xf7;
wela=0;
la=1;
P0=leddata[gewei2];
la=0;
delay(1);
//behind led
wela=1;
P2=0xef;
wela=0;
la=1;
P0 = leddata[qianwei1];
la=0;
delay(1);
wela=1;
P2=0xdf;
wela=0;
la=1;
P0=leddatadot[wei1];
la=0;
delay(1);
wela=1;
P2=0xbf;
wela=0;
la=1;
P0 = leddata[shiwei1];
la=0;
delay(1);
wela=1;
P2=0x7f;
wela=0;
la=1;
P0=leddata[gewei1];
la=0;
delay(1);
}
}
/********************************************************/
void zd0() interrupt 1 {
TH0 = 0;
TL0 = 0;
times++;
}
② 這個51單片機和超聲波模塊怎麼連接呢(有圖)
看到你的板子上右下角沒有,那裡有一個電源跟GND,跟超聲波相接就好
還有你這個是串口通信的,你接P2口是模擬串口通信嗎?
③ 單片機如何接收超聲波感測器的信號
單片機和超聲換能器之間,應該是有發射電路和小信號放大電路。單片機控制發射電路發射,小信號放大電路接收到超聲換能器的信號,進行放大後接入單片機。至於要怎麼採集,採集的時間,要看你具體要實現的功能。
④ 超聲波感測器測距,直接把感測器與單片機連接行不
如果你買的是帶輸出的模擬信號或者數字信號輸出的感測器是可以的,不過大部分說的感測器,是一個超聲波換能器,是不可以的,要增加發射接收電路才行.你說的幾塊錢一個的感測器,其實是倒車雷達或者民用的測距感測器,這種就是一個超聲波換能器.是很便宜.
⑤ 請問HC—SR04超聲波測距的話和單片機還有驅動板的端腳怎麼連接,最好有實物圖,謝謝了
我有這個驅動板,連接單片機很簡單,它就是4個腳,一個是VCC電源,是5V的,還有一個是GND地腳,還有2根線,是TRIG(觸發信號),還有一個是ECO(響應信號)的,這2個腳,你可以連接單片機任何一個P0~P3的2個口線都可以。 VCC -TRIG -ECO-GND是這樣的排序即可。
⑥ 我剛買的HC--SRD4超聲波測距模塊的引腳和單片機STC89C52的連接方法,誰能告訴我啊,還有C代碼,謝謝了@!!!
你這樣的超聲波測距模塊,商家應該會給你提供運用程序的範例的。連接可以單片機的任意兩個I/O口相連,只是要與程序相對應。
⑦ 急急!跪請高手指導1MHz的超聲波接收電路,要求能與單片機相連
發射的在空氣中傳播,遇到障礙物就會返回,超聲波接收部分是為了將野源虧反射波(回波)順利接收到超聲波接收換能器TCT40-2S進行轉換變成電信號,並對此電信號進行放大、濾波、整形等處理後,這里用索尼公司生產的集成晶元CX20106,得到一個負脈沖送給單片機的P3.2(INT0)引腳,以產生一個中斷。接收部分的電路,如圖3-4所示。圖3-4超聲接收電路CX20106對接收探頭收到的信號進行放大、濾波等處理,其總放大增益為80db。該晶元1腳是超聲信號的輸入端,在此調試的時候要特別注意,其探頭兩端如未發現有很大幹擾則不要加電容,有可能會把有用的波濾去,使得頌神最後沒有輸出。2腳與GND直接連接RC串聯網路,他們是負反饋串聯網路的一個組成部分,增大電阻R2或減小C2會使得負反饋量增大,放大倍數下降,反之則放大倍數增大。但C2會影響到頻率特性,一般在實際中不必改動,推薦R2=4.7Ω,C2=1uF。3腳與GND連接檢波電容C3容量大為平均值檢波,瞬間相應靈敏度低,容量小,則為峰值檢波,瞬間相應靈敏度高,但檢波輸出的脈沖寬度變化大,易造成誤動作。推薦參數為C3=3.3Uf。5腳與電源端VCC接入一個電阻R4,用以設置帶通濾波器的中心頻率f0,阻R4阻值越大,中心頻率越低。6腳裂陸與GND之間接入一個330pF的電容C4,C4取得太大會使探測距離變短。7腳是遙控命令輸出端,它是集電極開路輸出方式,因此該引腳必須接一個上拉電阻R4到電源端,推薦R4=20KΩ[1、3]。