完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
之前在学校的毕业设计就是这个,当时找资料感觉还真的贼费劲,虽然多但是代码全的还是少,现在又看到了稍作修改分享给大家.
1.基本原理 STM32F407正点原子的开发板加超声波模块HC-SR04,基本原理不多废话,两张图解释下吧,之前写的仅供参考 2.连接方式 连接方式:VCC–> +5V TRIG–>PF15 ECHO–>PA0 GND–>GND 3.主要功能 通过模块的返回信号测距,我加上了一个蜂鸣器报警,当距离低于5厘米的时候蜂鸣器报警,有按键控制,但是好像有点问题,所以就是开机自动测距,间隔为200ms,每次测量一次距离LED就闪烁一次,距离低于5cm时报警,测距模块精确到0.3cm,我感觉还是挺靠谱的,但是不适合运用于精确测量.上图 测量的到屋顶的距离,和用手遮挡的距离(忽略界面,应该要改进的). 4.驱动程序 程序简单主要是通过原子的代码修改的,原理就是输入捕获,给模块一个10us以上的高电平,然后捕获模块接收到回波然后给单片机的高电平,然后用公式distance=340*temp/2就得到了距离. main函数 int main(void) { unsigned int count=0; float distance=0; float distancebuf[]={0}; //这里的数组没有意义,是在调试程序的时候,怕测的距离有误差,把连续几次测到的数值放入数组中求平均值,以提高精度 /* USART1 config 115200 8-N-1 */ USART1_Config(); Distance_Config(); //距离转换函数,在上面的说明中有提到,但是具体的实现和上面的公式是不相同的 CLI() ;//关闭总中断 SEI(); //开启总中断 Tim3_Config(); //定时器初始化 GPIO_ResetBits(GPIOA,GPIO_Pin_5); //先拉低电平 while(1) { GPIO_SetBits(GPIOA,GPIO_Pin_5); //再拉高电平,这里拉低拉高电平是根据上面给出的测距原理来写的 Delay(30); //延时30个us,注意这里使用的是粗略的延时函数,测距原理中说是延时10个us,这里给30个us也无妨 // Delay(20); // Delay(20); GPIO_ResetBits(GPIOA,GPIO_Pin_5); TIM3->CNT=0; //TIM3的计数器清零 while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4) == 0); //等待ECHO的高电平 TIM_Cmd(TIM3,ENABLE); //运行TIM3进行计数 while((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4) == 1) && (TIM3->CNT < TIM3->ARR-10)); TIM_Cmd(TIM3,DISABLE); count=TIM3->CNT; printf("count=%d",count); distance=ChangeDistance(count); printf(" µ±Ç°¾àÀëΪ£º%fn",distance); Delay(20000); Delay(20000); //这里的延时没有具体的意义,可以去掉 while(1); //程序测距一次后卡死在这里 } } 距离转换函数 float ChangeDistance(unsigned int cout1) { float distance=0; printf("cou1=%dn",cout1); distance=cout1/58.0; return distance; } 定时器程序,就是正点原子的例程,定时器5通道1,代码注释有点问题,老是卡死,还是截图吧 led.c beep.c 主要就这么多还有个LCD屏的驱动程序,就是原子的不用改直接用都行,代码太多了不贴了,不过有个问题,就是在模块的触发脚不连接单片机的时候模块也能工作,没加按键控制这倒是不影响,有兴趣的可以加一下按键控制,但是我感觉这样测得的值有可能不准.希望对你们有帮助吧最后祝大家毕业快乐. |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1202 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1217 浏览 1 评论
625 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
470 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1146 浏览 2 评论
1680浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
339浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
335浏览 3评论
329浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
306浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 14:34 , Processed in 0.670864 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191