【Proteus仿真】【STM32单片机】超声波测距系统

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使用动态数码管、按键、HCSR04超声波、蜂鸣器模块等。

主要功能:
系统运行后,数码管显示超声波检测距离,当检测距离小于阈值,默认50CM;蜂鸣器报警,且距离越近报警频率越快;
可通过按键K3进入阈值设置模式,K1和K2调节阈值。


二、软件设计

/*
作者:嗨小易(QQ技术交流群:570487280)*///系统数据显示
void sys_data_show(void)
{u8 buf[4];while(1){//正常模式显示if(sys_ctrl.mode==0){buf[0]=0;if(sys_ctrl.dis>=100){buf[1]=gsmg_code[sys_ctrl.dis/100];buf[2]=gsmg_code[sys_ctrl.dis%100/10];buf[3]=gsmg_code[sys_ctrl.dis%100%10];	}	else if(sys_ctrl.dis>=10){buf[1]=0;buf[2]=gsmg_code[sys_ctrl.dis%100/10];buf[3]=gsmg_code[sys_ctrl.dis%100%10];	}else if(sys_ctrl.dis>=0){buf[1]=0;buf[2]=0;buf[3]=gsmg_code[sys_ctrl.dis%100%10];	}	}//阈值设置显示else{buf[0]=0x48;buf[1]=gsmg_code[sys_ctrl.disl/100];buf[2]=gsmg_code[sys_ctrl.disl%100/10];buf[3]=gsmg_code[sys_ctrl.disl%100%10];		}smg_display(buf,1);break;				}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);//设置if(key==KEY3_PRESS){	sys_ctrl.mode=!sys_ctrl.mode;	}//阈值设置模式if(sys_ctrl.mode==1){//加if(key==KEY1_PRESS){sys_ctrl.disl++;if(sys_ctrl.disl>500)sys_ctrl.disl=0;		}//减else if(key==KEY2_PRESS){sys_ctrl.disl--;if(sys_ctrl.disl<0)sys_ctrl.disl=500;		}}
}//系统功能控制
void sys_fun_ctrl(void)
{static u16 i=0;//正常模式if(sys_ctrl.mode==0){//如果检测距离小于阈值,蜂鸣器报警if(sys_ctrl.dis<sys_ctrl.disl){i++;if(i<sys_ctrl.dis)BEEP=0;else if(i<2*sys_ctrl.dis)BEEP=1;	else i=0;}else{i=0;BEEP=1;}	}
}

三、实验现象

B站演示视频:https://space.bilibili.com/444388619
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联系作者

视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/319296.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Canvas保姆级教程----深入解析HTML5 Canvas工作原理和常用方法

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

simulink代码生成(十)——eQEP模块

1 光电编码器的测速原理 光电编码器是一种通过光学或者光电子传感器来检测物体位置、速度或者运动方向的装置。它的测速原理基于光电效应和编码技术&#xff0c;通常包含一个光源、光电传感器和旋转或移动的编码盘。 光源&#xff1a; 光电编码器中通常包含一个光源&#xff0…

用户输入分数, 根据分数奖励不同的车( 利用多分支语句 )

90~100 分 奖励法拉利 80~90 分 奖励奥迪 60~80 分 奖励奥拓 60 分以下 打一顿 <script>const numprompt(请输入一个分数)if(num>90){alert(恭喜你喜提法拉利)}else if(num>80){alert(恭喜你喜提奥迪)}else if(num>60){alert(奖励奥拓)}else{alert(打一顿…

一步到位:掌握Python中Lambda表达式的5种实用技巧

一步到位&#xff1a;掌握Python中Lambda表达式的5种实用技巧 引言技巧一&#xff1a;单行函数定义技巧二&#xff1a;与内置函数结合技巧三&#xff1a;在数据结构排序中的应用技巧四&#xff1a;作为回调函数技巧五&#xff1a;与函数式编程结合结语 引言 在Python编程的宇宙…

QT上位机开发(简易图像处理软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 大家都知道图像处理非常地重要&#xff0c;因为它不仅仅是可以用于拍照美颜&#xff0c;而且在工业、医疗和军事等方面也发挥着巨大的作用。另外一…

文件摆渡系统如何实现网络隔离后的数据交换、业务流转?

近年来全球网络安全威胁态势的加速严峻&#xff0c;使得企业对于网络安全有了前所未有的关注高度。即便没有行业性的强制要求&#xff0c;但在严峻的安全态势之下&#xff0c;企业的网络安全体系建设正从“以合规为导向”转变到“以风险为导向”&#xff0c;从原来的“保护安全…

mybatis自动生成代码

以下为真实案例&#xff1a;mybatis自动生成代码 首选准备环境&#xff1a; 开发工具&#xff1a;idea(版本任意) 开发环境&#xff1a;jdk1.8、tomcat8.5、maven3.5 数据库&#xff1a;mysql5.7 数据库驱动&#xff1a;mysql-connector-5.1 方法一&#xff1a;idea搭建环…

贪吃蛇C语言实现(有源码)

前言 之前学了一点easyx图形库的使用&#xff0c;掌握一些基本用法后就用贪吃蛇来进行实战了&#xff0c;运行视频放在csdn视频那一栏了&#xff0c;之前的烟花也是。 1.头文件 #define _CRT_SECURE_NO_WARNINGS 1 #include<easyx.h> #include<conio.h> #includ…

【论文阅读|冷冻电镜】DISCA: High-throughput cryo-ET structural pattern mining

论文题目 High-throughput cryo-ET structural pattern mining by unsupervised deep iterative subtomogram clustering 摘要 现有的结构排序算法的吞吐量低&#xff0c;或者由于依赖于可用模板和手动标签而固有地受到限制。本文提出了一种高吞吐量的、无需模板和标签的深度…

Apache HTTPD 多后缀解析漏洞详解

Apache HTTPD 多后缀解析漏洞 1.查看python版本 这里python版本很重要&#xff0c;因为版本过低可能会导致后面的结果运行不成功 这里我就遇到了因为版本过低而执行不了docker-compose up -d的情况 查看python版本 cd /usr/bin ls -al python* 当版本过低时安装高版本的 …

AI:106-基于卷积神经网络的遥感图像地物分类

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

9. C++ GDB调试原理(简洁版)

背景 GDB支持断点、单步执行、打印变量、观察变量、查看寄存器、查看堆栈等调试手段。 断点 断点是我们在调试中经常用的一个功能&#xff0c;我们在指定位置设置断点之后&#xff0c;程序运行到该位置将会暂停&#xff0c;这个时候我们就可以对程序进行更多的操作&#xff…