欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
動(dòng)手制作超聲波測(cè)距板,為避障小車作準(zhǔn)備
[打印本頁]
作者:
dzdiy
時(shí)間:
2015-4-11 19:08
標(biāo)題:
動(dòng)手制作超聲波測(cè)距板,為避障小車作準(zhǔn)備
本帖最后由 dzdiy 于 2015-4-11 20:33 編輯
就是這個(gè)超聲波測(cè)距,我有元件,只是不齊全,所以就買了一個(gè)測(cè)距模塊,制作了一個(gè)超聲波測(cè)距板。一切都用洞洞板焊,自己搭建電路,那樣學(xué)得到更多東西,用套件的話,學(xué)到的只是編程,硬件原理就會(huì)有空缺。自己自學(xué)單片機(jī)也有一段時(shí)間了,看來還是要檢測(cè)一下自己的能力才行,想來想去,覺得小車很不錯(cuò),如果我可以一獨(dú)立制作出自己的小車,哪是一件不錯(cuò)的事,所以從今天起,我開始制作和編寫自己的小車,還是一步一步來哈。超聲波測(cè)距只是第一步。下載超聲波測(cè)距程序包
超聲波測(cè)距源程序:
超聲波測(cè)距模塊程序包.zip
(28.17 KB, 下載次數(shù): 31)
2015-4-11 18:30 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit trig=P1^5;//超聲波測(cè)距模塊//
sbit echo=P3^2;
bit flag1;//觸發(fā)信號(hào)標(biāo)志位//
sbit EN=P2^5; //1602相關(guān)端口定義//
sbit RS=P1^0;
sbit RW=P1^1;
sbit STA7=P0^7;
uchar count;
long int distance;//距離變量//
//………………………………延時(shí)函數(shù)…………………………//
void delayt(uint x)
{
uchar j;
while(x-- > 0)
{
for(j = 0;j < 125;j++)
{
;
}
}
}
//……………………LCD1602相關(guān)函數(shù)…………………………//
void panmang()//1602判忙//
{
P0=0xff;
do
{
RS=0;
RW=1;
EN=0;
EN=1;
}
while(STA7==1);
EN=0;
}
void w_data(uchar dat)//1602寫數(shù)據(jù)//
{
panmang();
EN=0;
P0=dat;
RS=1;
RW=0;
EN=1;
EN=0;
}
void w_cmd(uchar cmd)//1602寫指令//
{
panmang();
EN=0;
P0=cmd;
RS=0;
RW=0;
EN=1;
EN=0;
}
void init_1602()//1602初始化//
{
w_cmd(0x38);//設(shè)置16x2顯示,5x7點(diǎn)陣,8位數(shù)據(jù)接口//
w_cmd(0x0c);//設(shè)置開顯示,光標(biāo)不顯示,光標(biāo)不閃爍//
w_cmd(0x06);//設(shè)置當(dāng)讀或?qū)懸粋(gè)字符后地址指針加1,且光標(biāo)加1,整屏不移動(dòng)//
w_cmd(0x01);//清屏//
w_cmd(0x80+0x40);
w_data('D');
w_data('i');
w_data('s');
w_data('t');
w_data('a');
w_data('n');
w_data('c');
w_data('e');
w_data(':');
w_cmd(0x80+0x4c);
w_data('.');
w_cmd(0x80+0x4e);//單位是厘米//
w_data('c');
w_data('m');
}
//……………………………………………定時(shí)器1初始化,用于計(jì)算響應(yīng)信號(hào)時(shí)間……………………………………………//
void init_t0()
{
TMOD = 0x01;
TL0 = 0x66;
TH0 = 0xfc; //1ms
ET0 = 1;
EA = 1;
}
//………………………………………觸發(fā)信號(hào)………………………………………//
void trigger()
{
trig=1;
delayt(1);
trig=0;
}
//……………………………………………………初始化相應(yīng)端口及變量…………………………………………………………//
void init_measuring()
{
trig=0;
echo=0;
count=0;
}
//…………………………………………………………測(cè)距相關(guān)函數(shù)……………………………………………………………………//
void measuring()
{
uchar l;
uint h,y;
TR0 = 1;
while(echo)
{
;
}
TR0 = 0;
l = TL0;
h = TH0;
y = (h << 8) + l;
y = y - 0xfc66;//us部分
distance = y + 1000 * count;//計(jì)算總時(shí)間,單位是微秒
TL0 = 0x66;
TH0 = 0xfc;
delayt(30);
distance = 3453* distance / 20000;//原始為:(0.34毫米/us)*時(shí)間/2//
}
//……………………………………………顯示函數(shù)………………………………………………………//
void display(uint x)
{
uchar qian,bai,shi,ge;
qian=x/1000;
bai=(x/100)%10;
shi=(x/10)%10;
ge=x%10;
w_cmd(0x80+0x49);//單位是厘米//
w_data(qian+0x30);
w_data(bai+0x30);
w_data(shi+0x30);
w_cmd(0x80+0x4d);
w_data(ge+0x30);
}
//……………………………………………………主函數(shù)……………………………………………………//
void main()
{
init_1602();
init_t0();
init_measuring();
while(1)
{
trigger();
while(echo==0) //等待回聲
{
;
}
measuring();
display(distance);
init_measuring();
delayt(600);//每次測(cè)量間隔60ms//
}
}
//……………………………………………中斷服務(wù)函數(shù)…………………………………………………//
void T_0()interrupt 1
{
TF0 = 0;
TL0 = 0x66;
TH0 = 0xfc;
count++;
if(count==18)
{
TR0 =0;
TL0 = 0x66;
TH0 = 0xfc;
count = 0;
}
}
復(fù)制代碼
作者:
6ningning
時(shí)間:
2015-4-12 14:33
不錯(cuò)。
作者:
Orz123
時(shí)間:
2017-3-22 21:38
電路和焊接能發(fā)下嗎,小白傷不起
作者:
13756176595
時(shí)間:
2017-7-28 20:08
Orz123 發(fā)表于 2017-3-22 21:38
電路和焊接能發(fā)下嗎,小白傷不起
同上
作者:
Kinarmy
時(shí)間:
2018-5-16 22:27
可以發(fā)張接線的圖片么?新手不是很懂
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1