赞
踩
链接:https://pan.baidu.com/s/1qQ8AC6V8a4dp8aqpMWCa-A?pwd=e0yo
提取码:e0yo
以stm32为最小系统电路进行连接,按钮控制系统开关,使用SRF04采集倒车,LM016L液晶显示屏显示汽车距离障碍物的实时距离。当距离障碍物大于100cm时,小车自由倒退,蜂鸣器、LED提示灯关闭,车辆正常倒退;当距离障碍物大于50cm小于100cm时,蜂鸣器报警,LED灯关闭,车辆正常倒退;当距离障碍物大于30cm小于50cm时,蜂鸣器报警,LED灯闪烁提示,车辆正常倒退;当距离障碍物小于30cm时,蜂鸣器报警,LED灯关闭,小车停止。
链接:https://pan.baidu.com/s/1qQ8AC6V8a4dp8aqpMWCa-A?pwd=e0yo
提取码:e0yo
该系统主要由stm32f103r6作为单片机最小系统、SRF04超声波传感器、LM016L显示屏、L298驱动直流电机、电容、二极管、蜂鸣器、LED灯、按键等硬件组成。
tm32f103r6作为单片机最小系统进行其他部件的连接;按键控制倒车测距系统的开关;SRF04超声波传感器进行小车距障碍物的距离测量;LM016L液晶显示屏显示实时距离;L298驱动直流电机对小车提供动力,驱动小车倒车的动力;led灯和蜂鸣器对倒车距离情况进行反馈。
链接:https://pan.baidu.com/s/1qQ8AC6V8a4dp8aqpMWCa-A?pwd=e0yo
提取码:e0yo
部分源代码
#include "delay.h"
#define PRESCALER_US 1e6
#define PRESCALER_MS 1e3
void delay_ms(int32_t ms){
uint32_t temp,temp1;
SysTick->LOAD=(uint32_t)ms*(SystemCoreClock/PRESCALER_MS); //时间加载(SysTick->LOAD为24bit)
SysTick->VAL =0x00; //清空计数器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数
temp1=SysTick->VAL;
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16))); //等待时间到达
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
void delay_us(uint32_t time) //3.5us+1.5us*(time-1)
{
time=2*time;
while(time--);
}
2.LCD液晶显示屏配置:
#include "main.h"
//使能1602液晶使用的引脚
void LCD1602_PORT_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx,ENABLE); //使能PC端口时钟
GPIO_InitStructure.GPIO_Pin = GPIOx_Pin; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; //IO口速度为10MHz
GPIO_Init(GPIOx, &GPIO_InitStructure); //根据设定参数初始化
}
void delay_nus(uint16_t n)
{
delay_nms(5);
LCD_cmd(0x38);//16*2显示,5*7点阵,8数据
delay_nms(1);
LCD_cmd(0x38);//16*2显示,5*7点阵,8数据
delay_nms(1);
LCD_cmd(0x38);//16*2显示,5*7点阵,8数据
delay_nms(1);
LCD_cmd(0x08);//先关显示,后开显示
delay_nms(1);
LCD_cmd(0x01);//清屏
delay_nms(1);
LCD_cmd(0x06);//写命令,注意
delay_nms(1);
LCD_cmd(0x0c);//显示开,关光标
delay_nms(1);
}
//清屏
void LCD_clr(void)
{
LCD_cmd(0x01);
}
//写命令
void LCD_cmd(uint16_t cmd)
{
//LCD1602_WaitReady();
delay_nms(1);
LCD_RS_0;
delay_nus(1);
LCD_RW_0;
delay_nus(1);
LCD_EN_0;
delay_nus(1);
GPIO_SetBits(LCDPORT, LCD_DATA_PORT & cmd);
GPIO_ResetBits(LCDPORT, LCD_DATA_PORT &(~cmd));
LCD_EN_1;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。