|
使用HC-SR04超聲波模塊做了個超聲波測距器帶程序、原理圖、PCB和仿真
全部文件見附件
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
PCB圖3D.jpg (89.48 KB, 下載次數: 100)
下載附件
PCB 3D圖
2019-5-19 15:39 上傳
PCB.jpg (169.23 KB, 下載次數: 94)
下載附件
PCB圖
2019-5-19 15:40 上傳
實物圖1.jpg (66.5 KB, 下載次數: 101)
下載附件
實物圖1
2019-5-19 15:40 上傳
實物圖2.jpg (73.9 KB, 下載次數: 109)
下載附件
實物圖2
2019-5-19 15:40 上傳
原理圖.jpg (142.23 KB, 下載次數: 107)
下載附件
原理圖
2019-5-19 15:40 上傳
單片機超聲波測距仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (14.19 KB, 下載次數: 107)
下載附件
2019-5-20 01:41 上傳
主程序如下(程序來自互聯網,本人僅做了部分修改,如有侵權,請聯系刪除)
//宏定義
#define uchar unsigned char
#define uint unsigned int
#define ULint unsigned long int
//溫度零上與零下的標志位
char flag=0;
//超聲波
char flags=0;
//超聲波距離
char flag1s=0;
//計算定時間
uint time=0;
//計算距離
ULint L_=0;
//溫度
uint t_=0;
//顯示模式 0正常 1最小值調整
uchar mode=0;
//uint Max=490;
uint Min=30;
//按鍵標志
uchar k=0;
//數值有誤
uchar FW=0;
//頭函數
#include <reg52.h>
#include <intrins.h>
#include "BJ_Key.h" //報警按鍵
#include "display.h" //顯示頭函數
#include "ultrasonic_wave.h"//超聲波頭函數
#include "DS18B20.h" //溫度傳感器頭函數
//函數聲明
void delayms(uint ms);
//主函數
void main()
{
Init_ultrasonic_wave();
//屏幕初始化
Init1602();
//溫度初始化
tmpchange();
t_=tmp();
tmpchange();
t_=tmp();
tmpchange();
t_=tmp();
//循環顯示
while(1)
{
Key();
//正常顯示
if(mode==0)
{
StartModule();//啟動超聲波
while(!RX); //當RX為零時等待
TR0=1; //開啟計數
while(RX); //當RX為1計數并等待
TR0=0; //關閉計數
delayms(20); //20MS
tmpchange(); //溫度轉換
t_=tmp(); //度溫度
Conut(t_/10); //計算距離
if(L_<Min)
{
Feng_Start();
}
/* if(FW=0)
Feng_Stop();
*/
Display_1602(t_/10,L_);
}
//調整顯示
else if(mode!=0)
{
//最大最小值
Init_MaxMin();
while(mode!=0)
{
Key();
/*if(k==1&&mode==1)
{
Init_MaxMin();
write_com(0x8d);//設置位置
}
*/
if(k==1&&mode==1)
{
Init_MaxMin();
write_com(0x89);//設置光標位置
}
k=0;
}
//界面初始化
Init1602();
}
}
}
void delayms(uint ms)
{
uchar i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
//T0中斷用來計數器溢出,超過測距范圍
/*void CJ_T0() interrupt 1
{
flags=1; //中斷溢出標志
}*/
0.png (5.43 KB, 下載次數: 98)
下載附件
2019-5-20 01:39 上傳
全部資料51hei下載地址:
超聲波測距.zip
(2.85 MB, 下載次數: 431)
2019-5-19 15:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|