新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一款液晶显示的超声波测距板

一款液晶显示的超声波测距板

作者: 时间:2016-11-30 来源:网络 收藏
这是一款液晶显示超声波测距板,资料是从网上收集整理的。该测距板显示屏为3310手机液晶屏,测量范围是4cm--450cm。单片机用的是51系列单片机,超声波接收用的是CX20106A。为了使精度尽可能的提高,硬件方面使用了18B20监测温度,由温度算出声速的变化;软件方面使用了“近距离<--->远距离”自动调节“盲区时间”进行测量。因为盲区时间设小一点,可以测到较小的距离,但是测远距离时就极不稳定了;而盲区时间大了则相反;.软件较正使用的是数据拟合的方式,即测出几十组数据(仪器测出的矩离和实际矩离),输入EXCEL里面,画出XY散点图。然后再拟合出距离关系曲线。这种方法可以使测量点尽量靠近每一个实际距离点。

本文引用地址:https://www.eepw.com.cn/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端口

/******************系统全局变量***************/

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

评论


技术专区

关闭