标题:
STM32超声波测距源程序(12864实时显示距离)
[打印本页]
作者:
daningmeng
时间:
2018-7-24 11:19
标题:
STM32超声波测距源程序(12864实时显示距离)
该文件采用12864实时显示超声波测距的距离,超声波的最大显示距离为4米,精度可根据实际调节
单片机源程序如下:
/***********************************************/
//实验名称:超声波传感器实验
//接线说明:超声波模块的J2口接核心板的P3接口。
//实验现象:液晶上显示当前距离。
/***********************************************/
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "12864.h"
#include "timer.h"
#include "exti.h"
#define CSB_TX PAout(8) // PA8 发送超声波引脚
#define BEEN PAout(10)
// 变量
u32 status=0; // 计数值
char s2[10],s1[10]; // LCD显示缓存数组
u32 real_time; // 读回值
float dis; // 距离计算值
u8 distance[7] = {0};
void tran(void); // 左发生超声波函数
void DisplayDis(float value);
void Display(u8 Pos);
int main(void)
{
Stm32_Clock_Init(9); // 系统时钟设置
delay_init(72); // 延时初始化
uart_init(72,9600); // 串口初始化
Timerx_Init(10,71); // 1Mhz的计数频率,计数到10为10us
Init_12864(); // 液晶初始化
EXTIX_Init(); // 外部中断初始化
while(1)
{
tran();
if(dis<10 && dis!=0)
BEEN=1;
else
BEEN=0;
if(dis>80)
dis=0;
DisplayDis( dis * 10 );
dis=0; //无物体
LED0=!LED0; //指示灯闪烁
delay_ms(300);
}
}
// 左发生超声波函数
void tran(void)
{
u8 i;
TIM3->CR1|=0x01; // 使能定时器3
TIM3->SR&=~(1<<0); // 清除中断标志位
status = 0; // 定时器清零
for(i=0;i<8;i++) // 发送信号
{
CSB_TX = 1;
delay_us(12);
CSB_TX = 0;
delay_us(12);
}
delay_ms(10);
}
//
void DisplayDis(float value)
{
u32 val = (u32)value;
distance[0] = (val / 100) + 48;
distance[1] = (val % 100) /10 + 48;
distance[2] = '.';
distance[3] = val % 10 + 48;
distance[4] = ' ';
distance[5] = 'c';
distance[6] = 'm';
Display(0x9C);
}
//****************************************
//显示子程序
//****************************************
void Display(u8 Pos)
{
u8 i;
write_12864com(Pos);
for(i=7;i>0;i--)
{
write_12864data(distance[7-i]);
delay_us(10);
}
}
复制代码
所有资料51hei提供下载:
超声波 12864显示.rar
(327.07 KB, 下载次数: 154)
2018-7-24 11:18 上传
点击文件名下载附件
超声波测距
下载积分: 黑币 -5
作者:
xiaomaer
时间:
2019-10-29 09:07
怎么下载下来是空文件呢
作者:
xiaomaer
时间:
2019-10-30 17:15
定义接口时(1<<4)代表什么呢?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1