标题:
51单片机超声波测距,1602显示,已全部写成函数,直接调用
[打印本页]
作者:
hb-l
时间:
2018-7-13 15:13
标题:
51单片机超声波测距,1602显示,已全部写成函数,直接调用
H54Z)V27@EDF)LI~A(KZ]56.png
(207.46 KB, 下载次数: 64)
下载附件
2018-7-13 15:13 上传
单片机源程序如下:
#include"hc_sr04.h"
#include"1602.h"
uchar array[4];
uchar overflow=0;//溢出标志
uchar code table[]="distance:";
unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M'}; //1602显示
void hc_sr04datadispose() //数据计算
{
uint dat;
unsigned long S=0;
dat=TH0*256+TL0;
//因为第八位满一次即TL0=256便往高八位进移位,所以在算时间的时候TH0得*-256
TH0=0;
TL0=0;
/*1.7=高电平时间(us)*声速(340M/S))/2=高电平时间(us)*0.034/2=高电平时间(us)*0.017=1.7cm/us*/
S=(dat*1.7)/100; //测试距离=(高电平时间(us)*声速(340M/S))/2;在后面乘以10是为了化成cm,65.536ms=65536μs最大探测距离是65536×0.017
if((S>400)||overflow==1) //溢出标志
{
overflow=0;
DisplayOneChar(0, 1, ASCII[11]);
DisplayOneChar(1, 1, ASCII[10]); //显示点
DisplayOneChar(2, 1, ASCII[11]);
DisplayOneChar(3, 1, ASCII[11]);
DisplayOneChar(4, 1, ASCII[12]); //显示M
}
else
{
array[0]=(S/100); //数据处理
array[1]=(S%100/10);
array[2]=(S%10);
DisplayOneChar(0, 1, ASCII[array[0]]);
DisplayOneChar(1, 1, ASCII[10]); //显示点
DisplayOneChar(2, 1, ASCII[array[1]]);
DisplayOneChar(3, 1, ASCII[array[2]]);
DisplayOneChar(4, 1, ASCII[12]); //显示M
}
}
void delayms(uint xms) //延时
{
uint b;
for(b=xms;b>0;b--);
}
void main()
{
uchar aa=0;
LCDinitialize(); //初始化
LCDwritecommand(0x80); //发显示位置
while(table[aa]!='\0') //显示文字
{
LCDwritedata(table[aa]); //发数据
aa++;
}
hc_sr04read(); //hc——sr04数据处理
}
复制代码
所有资料51hei提供下载:
实验25:超声波测距 - 1602显示.zip
(38.45 KB, 下载次数: 45)
2018-7-13 15:12 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
单片机老司机
时间:
2019-12-8 13:16
这个程序可以直接烧录吗?
作者:
1072686085
时间:
2019-12-8 15:54
原理图有吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1