IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 超声波测距在LCD1602上显示 -> 正文阅读

[嵌入式]超声波测距在LCD1602上显示

一:超声波作用:

超声波测距模块是用来测量距离的一种产品,通过发送和就接收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离。

二:超声波模块介绍 :

?此模块性能稳定,测度距离精确,模块高精度,盲区小。
产品应用领域: 机器人避障 物体测距 液位检测 公共安防 停车场检测 。
接线方式:VCC、trig(控制端)、 echo(接收端)、 GND

三:超声波工作时序:

介绍:

初始化时将trig和echo端口都置低,首先向给trig 发送至少10 us的高电平脉冲,启动超声波模块,模块自动向外发送8个40K的方,在一定范围内(大概2~400cm),方波反弹回来,超声波接收到方波时,echo会被拉高,这个高电平的持续时间就是从发送到接收到方波的时间,接收到方波时打开定时器开始计时,等待echo变成低电平,关闭定时器,读出计时器的时间,这就是超声波在空气中运行的时间,按照 测试距离=(高电平时间*声速(340M/S))/2 就可以算出超声波到障碍物的距离。

时序图

四:LCD1602介绍:

LCD602液晶显示屏除了电源、地以外,有3个控制引脚 RS R/W E 和8个数据引脚DB0-7。建议8个数据引脚接在同一组上,程序写起来比较简单。硬件连接参考如图。

?五:LCD1602初始化设置:

显示模式设置:

?

?

有关lcd1602的基础知识我就不给大家赘述了,大家可以找一下相关知识?

代码部分?

lcd1602.c

#include "lcd1602.h"
#include "main.h"

void lcd1602_busy()//检测lcd1602是否处于忙碌状态
{
	u8 sta;
	IO=0xff;//单片机IO口作为输入的时候先拉高
	RS=0;
	RW=1;//设置成读取模式
	do   //先执行里面语句,在判断while()是否成立
	{
		EN=1;
		sta=IO;
		EN=0;
	}
	while(sta & 0x80);//第七位等于1,表示液晶正在忙,重复检测直到其等于0
}

void lcd1602_cmd(u8 cmd)//输入指令
{
	lcd1602_busy();
	RS=0;
	RW=0;
	IO=cmd;
	EN=1;
	EN=0;
}

void lcd1602_date(u8 date)//输入数据
{
	lcd1602_busy();
	RS=1;
	RW=0;
	IO=date;
	EN=1;
	EN=0;
}

void lcd1602_sor(u8 x,u8 y)//显示字符的位置
{
	u8 add;
	if(y==1)
	{
		add=0x80+x;//第一行
	}
	else
	{
		add=0xc0+x;//第二行
	}
	lcd1602_cmd(add);
}

void lcd1602_str(unsigned char x,unsigned char y,unsigned char *str)//设置字符位置以及显示的字符
{
	lcd1602_sor(x,y);
	while(*str!='\0')//字符串最后一位是空字符
	{
		lcd1602_date(*str++);//先取str指向的数据,然后地址在自加
	}		
}

void lcd1602_init()
{
	lcd1602_cmd(lcd1602_cmd1);//16*2显示  5*7点阵   8位数据接口
	lcd1602_cmd(lcd1602_cmd7);//开显示器,光标关闭
	lcd1602_cmd(lcd1602_cmd9);//文字不动,地址自动加1
	lcd1602_cmd(lcd1602_cmd3);//清屏
}

?lcd1602.h

#ifndef __lcd1602_H__
#define __lcd1602_H__

#include "main.h"

#define IO P0//定义P0口

/*LCD1602指令控制*/

#define lcd1602_cmd1    0x38//八位数据口,两行,5*8点阵
#define lcd1602_cmd2    0x28//四位数据口,两行,5*8点阵

#define lcd1602_cmd3    0x01//清屏
#define lcd1602_cmd4    0x02//光标复位

/*显示开关控制指令*/
#define lcd1602_cmd5    0x0f//显示开,光标开,光标闪烁
#define lcd1602_cmd6    0x0e//显示开,光标开,光标不闪烁
#define lcd1602_cmd7    0x0c//显示开,光标关,光标不闪烁
#define lcd1602_cmd8    0x08//显示关,光标关,光标不闪烁

/*显示模式控制*/
#define lcd1602_cmd9    0x06//光标右移,显示不移动
#define lcd1602_cmd10   0x04//光标左移,显示不移动
#define lcd1602_cmd11   0x07//操作后,AC自加,画面平移
#define lcd1602_cmd12   0x05//操作后,AC自减,画面平移

/*光标,显示移动指令*/
#define lcd1602_cmd13   0x10//光标左移
#define lcd1602_cmd14   0x14//光标右移
#define lcd1602_cmd15   0x18//显示左移
#define lcd1602_cmd16   0x1c//显示右移

sbit EN=P2^7;
sbit RS=P2^6;
sbit RW=P2^5;

void lcd1602_init();//其他函数可以用到,声名一下
void lcd1602_str(unsigned char x,unsigned char y,unsigned char *str);
//需要被调用的函数,形参得写成直接形式,u8和u16没有被头文件调用

#endif

HC_SR04.c?

#include "HC_SR04.h"
#include "delay.h"
#include "lcd1602.h"

unsigned long time=0;
u16 S=0;
u16 dis_table[]={0x3f,0x06,0x5b,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴数码管段码
u16 dis_table1[]={0,0,0,0,0,0,0,0};

u8 dis_table2[]="jvli: 000CM";
u8 dis_table3[]="-----------";

void sr04_init()
{
	TMOD=0x01;//定时器0,工作方式1,16位
	TH0=0;//定时器1来计算,声波返回的时间
	TL0=0;
	EA=1;
	ET0=1;
	TR0=0;
}

void sr04_count()
{
	time=TH0*256+TL0;
	TH0=0;
	TL0=0;
	
	S=(time*1.7)/100;
	delayms(100);
	
/*******//*超声波基于lcd1602显示*//********/
	if(S>=30)
	{
		lcd1602_str(0,1,dis_table3);
	}
	else
	{
		dis_table2[6]=S/100%10+'0';
		dis_table2[7]=S/10%10+'0';
		dis_table2[8]=S%10+'0';
		lcd1602_str(0,1,dis_table2);
	}
}

void sr04()
{
	Trig=0;
	Trig=1;
	delay10us(2);
	Trig=0;

	while(!Echo);
	TR0=1;
	while(Echo);
	TR0=0;
}





?main.c

#include "main.h"
#include "HC_SR04.h"
#include "lcd1602.h"



void main()
{
	sr04_init();
	lcd1602_init();
	while(1)
	{
		sr04();
		sr04_count();
	}
}

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 09:00:42  更:2021-11-26 09:01:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:33:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码