资源简介
超声波测距并LCD1602上显示距离,蜂鸣器发出的声音频率判断距离大小。
代码片段和文件信息
#include
#include
typedef unsigned int u16; //对数据类型进行声明定义
#define uint unsigned int
#define uchar unsigned char
sbit rs=P2^6; //1602的数据/指令选择控制线
sbit rw=P2^5; //1602的读写控制线
sbit en=P2^7; //1602的使能控制线
sbit trig=P1^0; //超声波测距模块Trig
sbit echo=P1^1; //超声波测距模块Echo
sbit beep=P1^5; // 蜂鸣器连接端
uchar flag=1; //触发信号标志位//
uchar count; //中断累加变量
long int distance; //测量所得距离
unsigned char code table[ ]={“0123456789“}; //定义字符数组显示数字
/*------------------------------------------------
延时函数
------------------------------------------------*/
void delay(uint n)
{
uint xy;
for(x=n;x>0;x--)
for(y=110;y>0;y--);
}
/*---延时函数---*/
void delay1(u16 i)
{
while(i--);
}
/*------------------------------------------------
延时函数
------------------------------------------------*/
void delayt(uint x)
{
uchar j;
while(x-- > 0)
{
for(j = 0;j < 125;j++)
{
;
}
}
}
/*------------------------------------------------
1602写命令函数
------------------------------------------------*/
void lcd_wcom(uchar com)
{
rs=0; //选择指令寄存器
rw=0; //选择写
P0=com; //把命令字送入P0
delay(5); //延时一小会儿,让1602准备接收数据
en=1; //使能线电平变化,命令送入1602的8位数据口这点非常重要
en=0;
}
/*------------------------------------------------
1602写数据函数
------------------------------------------------*/
void lcd_wdat(uchar dat)
{
rs=1; //选择数据寄存器
rw=0; //选择写
P0=dat; //把要显示的数据送入P0
delay(5); //延时一小会儿,让1602准备接收数据也就是检测忙信号,这点非常重要。
en=1; //使能线电平变化,数据送入1602的8位数据口
en=0;
}
/*------------------------------------------------
1602初始化函数
------------------------------------------------*/
void lcd_init()
{
lcd_wcom(0x38); //8位数据,双列,5*7字形 ,用到功能设定指令
lcd_wcom(0x0c); //开启显示屏,关光标,光标不闪烁,用到显示开关控制指令
lcd_wcom(0x06); //显示地址递增,即写一个数据后,显示位置右移一位,用到了写入模式设置指令
lcd_wcom(0x01); //清屏,用到了清屏指令
}
/*------------------------------------------------
1602显示固定字符函数
------------------------------------------------*/
void lcd_xianshi()
{
lcd_wcom(0x40+0x40);
lcd_wdat(‘D‘);
lcd_wdat(‘i‘);
lcd_wdat(‘s‘);
lcd_wdat(‘t‘);
lcd_wdat(‘a‘);
lcd_wdat(‘n‘);
lcd_wdat(‘c‘);
lcd_wdat(‘e‘);
lcd_wdat(‘:‘);
lcd_wcom(0x40+0x4c);
lcd_wdat(‘.‘);
lcd_wcom(0x40+0x4e);//单位是厘米// 0x40表示第一排显示0x80表示第二排显示
lcd_wdat(‘c‘);
lcd_wdat(‘m‘);
}
/*------------------------------------------------
定时器0初始化,用于计算响应信号时间
------------------------------------
相关资源
- STM32f103超声波模块例程
- 用于无线传感器网络应用的超声波传
- VL53L0X激光测距传感器资料
- 用两个摄像头实现,双目标定,双目
- opencv视觉测距
- 循迹小车51程序(超声波 颜色识别 舵
- 基于51单片机的超声波测距技术实现含
- 51单片机智能小车花式,寻迹,红外,
- 论文研究 - Barkhausen检测距离对冷轧低
- 基于M-BUS的矿用超声波明渠流量计设计
- 超声波遥控开关电路图
- 基于51单片机超声波测距毕业设计
- STM32F103RCT6 TIME4 TIME5 同时捕获六路
- HC-SR04超声波模块(包含基于51stm32配套
- STM32f103C8t6型单片机用于超声波测距
- bumblebee双目标定/伪彩色深度图/鼠标测
- 超声波车速测量系统设计
- 基于单片机控制和超声波传感器的液
- 基于超声波定位的跟随小车
- 基于STM32VET6的身高体重肺活量测量系
- STM32F103_FREERTOS_MPU6050DMP_USART_Timer输入捕
- 超声波传感器全套资料
- 超声波雾化器专用IC
- stm32-超声波避障程序案例
- MSP432蓝牙控制小车并进行超声波测距
- 激光测距模块简易测量(STM32F429).
- 激光测距模块tof10120基于stm32f103开发板
- 单目视觉测距系统
- stm32f103超声波传感器hcsr04控制模板
- 红外测距系统设计
评论
共有 条评论