久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一款液晶顯示的超聲波測距板

一款液晶顯示的超聲波測距板

作者: 時間:2016-11-30 來源:網絡 收藏
這是一款液晶顯示超聲波測距板,資料是從網上收集整理的。該測距板顯示屏為3310手機液晶屏,測量范圍是4cm--450cm。單片機用的是51系列單片機,超聲波接收用的是CX20106A。為了使精度盡可能的提高,硬件方面使用了18B20監(jiān)測溫度,由溫度算出聲速的變化;軟件方面使用了“近距離<--->遠距離”自動調節(jié)“盲區(qū)時間”進行測量。因為盲區(qū)時間設小一點,可以測到較小的距離,但是測遠距離時就極不穩(wěn)定了;而盲區(qū)時間大了則相反;.軟件較正使用的是數據擬合的方式,即測出幾十組數據(儀器測出的矩離和實際矩離),輸入EXCEL里面,畫出XY散點圖。然后再擬合出距離關系曲線。這種方法可以使測量點盡量靠近每一個實際距離點。

本文引用地址:http://cqxgywz.com/article/201611/324005.htm




源程序:

#include "stdio.h"

#include "math.h"

#include "regx52.h"

#include "binary.h"

#include "intrins.h"

#define VOUT P3_7 //脈沖產生端口

#define DQ P1_0 //ds18b20端口

/******************系統(tǒng)全局變量***************/

typedef unsigned char uchar;

typedef unsigned int uint;

bit Success; //測量成功標志位

bit Done; //測量完成標志位

bit Mode; //測量模式:0--近距離,1---遠距離

uint nCount;

uint nResult;

/******************18B20相關函數及變量***************/

bit SignedFlag=0; //符號標志位 ,負為1,正為0

uchar TempInt; //整數部分溫度

uint TempDot; //小數部分溫度

void ReadTemperature(void); //在程序中調用此函數

void Init_DS18B20(void);

unsigned char ReadOneChar(void);

void WriteOneChar(unsigned char dat);

void delayx(unsigned int i);

#include "18b20.h"

/******************LCD相關函數******************/

sbit SCLK = P2^0; // 串行時鐘

sbit SDIN = P2^1; // 串行數據輸入

sbit LCD_DC = P2^2; // 數據/命令 選擇端

sbit LCD_CE = P2^3; // 片選

sbit LCD_RST = P2^4; // 外部復位

#include "Nokia5110.c"

/***********超聲波測量相關函數定義***************/

void StartInit();

void Delay_us(uint i); //微秒級延時:T=7+2*(X-1) us

void StartMeasure();

void DisplayResult();

void ConvertCount();

void Delay_ms(uint x);


上一頁 1 2 下一頁

評論


技術專區(qū)

關閉