云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于单片机的超声波测距仪的设计 - 图文

基于单片机的超声波测距仪的设计 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/12/9 15:08:51

}

/****************转换成2进制***************/ void HEXtoBCD() {

float tp;

unsigned long int tmp; fuhao=0;

//温度符号位

if(temp<0x8000) tp=temp*0.0625; else {

BUMA(); tp=temp*0.0625; fuhao=1; }

tp*=10; tmp=tp;

num[12]=tmp/100; if(fuhao)

num[12]=num[12]|0x80; num[13]=tmp/10-(tmp/100)*10; tmp=distance; num[25]=tmp/1000; tmp%=1000; num[26]=tmp/100; tmp%=100; num[27]=tmp/10; tmp%=10; num[28]=tmp/1; }

/**************温度转换函数***************************/ void TESTTEMP() {

Init_18B20(); if(flag)

//初始化18B20

//最高位加上符号位

//数据转换后放到显示数组里面

//温度为负,则求补码得到原码

24

{ 匹配 }

/***********读取温度函数**************/ uint GET_WD(void) {

uint a = 0, b = 0, t = 0; }

/***************18B20复位函数***********************/ void Init_18B20() {

DQ = 1; Delay(10);

DQ = 0; Delay(80); DQ = 1; if(DQ) flag=0; else flag=1; Delay(20); }

//单片机将DQ拉低 //480us //拉高总线

//DQ复位

Init_18B20();

//初始化18B20

//跳过读序号列号的操作 //发送读温度命令

//读取一个字节(读出高8位和低8位)

B20_WDAT(0xCC); B20_WDAT(0xBE); a = B20_RDAT(); b = B20_RDAT(); t = b; t <<= 8; t = t | a;

//字节合并 //返回结果给调用

B20_WDAT(0x44);

// 发送温度转化命令

}

B20_WDAT(0xCC);

// 跳过读序号列号的操作,忽略ROM

return (t);

Delay(10); //稍做延时后 如果x=0则初始化成功,x=1则初始化失败

25

/*******************读数据******************************/ uchar B20_RDAT(void) {

uchar i = 0; uchar dat = 0;

for (i = 8; i > 0; i--) {

DQ = 0; dat >>= 1;

DQ = 1; if(DQ)

dat |= 0x80;

//拼装处理

// 拉高数据线,停止读数据

// 拉低数据线,开始读数据

//读取一个字节

Delay(15); }

return (dat); }

/*********************写数据****************************/ void B20_WDAT(uchar dat) {

uchar i = 0;

for (i = 8; i > 0; i--) {

}

/*******************数据转换函数**************************/ void BUMA() {

temp=~temp; temp+=1; }

//按位取反

DQ = 0;

//拉低数据线至少15us以作为起始信号

//取出低位的一位数据 //将数据线拉高以作为停止信号 //稍作延时

//移位,为写入下一位数据做准备

DQ = dat&0x01; Delay(5); DQ = 1;

dat>>=1;

//注意读取的为补码

}

26

/**************************LCD显示函数*******************/ void LCD_DISP() {

uchar a,b,d; Init_LCD();

Write_Comm(0x01); //清显示 Write_Comm(0x80); //写首地址 for(a=0;a<16;a++) {

d=dispBUF[a];

if((a>11)&&(a<14)) {

d=numcode[num[a]]; //待显示的结果 }

if(14==a) { }

//写入要显示的数据

//换行,换到第二行

d=0xdf;

//如果是结果位到num[]里面读取

Write_Data(d); }

Write_Comm(0xc0); for(b=16;b<33;b++) {

d=dispBUF[b]; if((b>24)&&(b<29)) {

d=numcode[num[b]]; }

Write_Data(d); } }

/*********检查LCD忙状态***********/ bit LCD_BUSY() {

//lcd_busy为1时,忙,等待。

lcd-busy为0时,闲,可写指令与数据

//写入要显示的数据(数据传输)

27

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

} /****************转换成2进制***************/ void HEXtoBCD() { float tp; unsigned long int tmp; fuhao=0; //温度符号位 if(temp<0x8000) tp=temp*0.0625; else { BUMA(); tp=temp*0.0625; fuhao=1; }

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com