新聞中心

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

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

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

本文引用地址:http://butianyuan.cn/article/201611/324005.htm




源程序:

#include "stdio.h"

#include "math.h"

#include "regx52.h"

#include "binary.h"

#include "intrins.h"

#define VOUT P3_7 //脈沖產(chǎn)生端口

#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相關(guān)函數(shù)及變量***************/

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

uchar TempInt; //整數(shù)部分溫度

uint TempDot; //小數(shù)部分溫度

void ReadTemperature(void); //在程序中調(diào)用此函數(shù)

void Init_DS18B20(void);

unsigned char ReadOneChar(void);

void WriteOneChar(unsigned char dat);

void delayx(unsigned int i);

#include "18b20.h"

/******************LCD相關(guān)函數(shù)******************/

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

sbit SDIN = P2^1; // 串行數(shù)據(jù)輸入

sbit LCD_DC = P2^2; // 數(shù)據(jù)/命令 選擇端

sbit LCD_CE = P2^3; // 片選

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

#include "Nokia5110.c"

/***********超聲波測量相關(guān)函數(shù)定義***************/

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 下一頁

評論


技術(shù)專區(qū)

關(guān)閉