電路原理圖如下:
Snipaste_2019-03-23_19-04-17.png (92.17 KB, 下載次數: 87)
下載附件
2019-3-23 19:06 上傳
程序代碼
//超聲波測距系統 12M晶振
//#include "REG2051.H"
#include <REGx51.H>
#include <intrins.h>
//#include "math.h"
#define uint unsigned int
#define uchar unsigned char
#define LED_Data P0 //定義LED顯示數據為P1口
#define OFF P3
sbit led_1H=P2^7; //定義數碼管百位 片選
sbit led_2H=P2^6; //定義數碼管十位 片選
sbit led_3H=P2^5; //定義數碼管個位 片選
sbit DQ=P3^4; //18b20定義端口
sbit bell=P2^2;
sbit Sout=P3^7; //定義超聲波輸出引腳
sbit k1=P1^0; //定義按鍵
sbit k2=P1^1;
sbit k3=P1^2;
bit r=0; //18b20存在標志位 0為不存在,1為存在
bit flag=0; //定義外部中斷1標志位
bit TO=0; //定義T1中斷1標志位
bit tu=0; //定義溫度正、負標示位0為正1為負
bit show_temperature=0;
uchar T_C;
uint i;
uint dis; //定義實形距離變量
float speed=346.50;
uchar temp[3]={0xF7,0xF7,0xF7};//*- - -*/ 定義顯示暫存區
//顯示段代碼表
uchar code LED0[]={ 0x28,0xEE,0x32,0xA2,0xE4,0xA1,0x21,0xEA,0x20,0xA0,0xF7,};//0~9 -
//第一位數碼管顯示段碼
uchar code LED1[]={0x08,0xCE,0x12,0x82,0xC4,0x81,0x01,0xCA,0x00,0x80,}; //0.~9.帶小數點
//
void time_11uS(uint x); //延時11US
void LED_T_C(uint x);
uint Read_Temperature(void);
void write(char wr); //寫1820
uint read(void); //讀1820
uchar reset(void); //復位1820
//--------------------------------------------測距部分涵數聲明
void led_display(void); //LED顯示函數
void time(uint x); //延時1mS
void Send_40K(void); //輸出20個40k方波函數
void LED_temp(uint x); //顯示轉換
void TT1(void); //裝入初值
uint C_speed(void); //根據溫度查表取聲速值
float Dis_count(); //距離計算函數
//--------------------------------------------
//--------------------------------------------
//延時11us
void time_11uS(uint x)
{
for(;x>0;x--);
}
//--------------------------------------------
完整代碼請看附件
51單片機的超聲波測距.doc
(3.14 MB, 下載次數: 27)
2019-3-24 02:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|