使用超声波传感器HY-SRF05时,VCC端接在STM32F103C8T6单片机的5V引脚?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用超声波传感器HY-SRF05时,VCC端接在STM32F103C8T6单片机的5V引脚?相关的知识,希望对你有一定的参考价值。
这样接可以正常使用吗
参考技术A STM32F103的电源是3.3V的,而一般这个3.3V的电源都是从5V电源得来的;如果你板上没有5V电源,如是直接从锂电池供电的,只需要加个小小的电源转换模块,3.3-->5V,便可得到5V电源,而传感器的耗电很小容易满足; 参考技术B STM32F103的电源是3.3V的,而一般这个3.3V的电源都是从5V电源得来的;
如果你板上没有5V电源,如是直接从锂电池供电的,只需要加个小小的电源转换模块,3.3-->5V,便可得到5V电源,而传感器的耗电很小容易满足;本回答被提问者和网友采纳 参考技术C STM32F103的电源是3.3V的,而一般这个3.3V的电源都是从5V电源得来的;
如果你板上没有5V电源,如是直接从锂电池供电的,只需要加个小小的电源转换模块,3.3-->5V,便可得到5V电源,而传感器的耗电很小容易满足; 参考技术D STM32F103的电源是3.3V的,而一般这个3.3V的电源都是从5V电源得来的;
如果你板上没有5V电源,如是直接从锂电池供电的,只需要加个小小的电源转换模块,3.3-->5V,便可得到5V电源,而传感器的耗电很小容易满足; 第5个回答 2022-04-08 ① F103没有5V引脚,只有“兼容5V”的通用IO口……
② 你需要的是电源输入。你需要的是电源输入。
51单片机 HC-SR04超声波测距 我写的C语言代码,请问
/*
HC-SR04使用方法:给触发端子trig一个10us以上的高电平即可触发,触发后echo端子将接受到高电平,高电平的持续时间就是测距的往返时间。
下面是我写的代码:我想测试自己使用该模块是否正确,于是就想实现如果echo端接受到了高电平,蜂鸣器BEEP就响。但是实际使用的时候发现并非预期结果,情高人帮忙看看下面的代码有何问题。代码不长,望大神赐教!
*/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/*位定义*/
sbit CHUFA=P0^1; //位定义超声波触发端(10us以上高电平触发)
sbit JIESHOU=P0^3; //接收端(接受高电平)
sbit BEEP=P2^0; //蜂鸣器
sbit OUT0=P3^2; //外部中断0
uchar JS_FLAG; //接收标志
uint CF_TIME,t0,t1,shu;
/*函数声明*/
void timer0();
void int0();
void display(uint);
main()
CHUFA=0; //初始化拉低触发端和接收端电平
JIESHOU=0;
JS_FLAG=0;
CF_TIME=15; //初始化触发时间(大于10us)
TMOD=0x11; //定时器方式选择
EA=1; //开总中断
ET0=1; //开定时器0中断
EX0=1; //开外部中断0
IT0=0; //外部中断选择下降沿触发
//JIESHOU=1;
while(1)
OUT0=JIESHOU; //外部中断0被赋值为接收端信号,当出现下降沿是触发外部中断0
if(JS_FLAG==0) //如果没有接收到高电平则触发
CHUFA=1;
while(CF_TIME--); //10us以上高电平触发传感器
if(JIESHOU==1)
TR0=1; //如果接收端收到高电平则启动定时器
JS_FLAG=1; //并且标志位置1
BEEP=0; //蜂鸣器响
display(t1); //显示测量时间(秒)
/*定时器0中断程序*/
void timer0() interrupt 1
TH0=(65536-10000)/256; //装初值 10ms
TL0=(65536-10000)%256;
t0++; //每进入一次中断t0加1
/*外部中断0中断程序*/
void int0() interrupt 0
TR0=0; //一旦进入外部中断0,说明接收端收到下降沿信号。关闭定时器0
JS_FLAG=0; //接收标志位置0
BEEP=1; //关闭蜂鸣器
t1=t0*10/1000; //测量时间为 进入定时器中断次数t0乘以每次时间10ms,除以1000化为秒为单位
t0=0; //t0清零
/*数码管显数函数*/
void display(uint shu)
//数码管显示函数
1、HC-SR04使用方法:给触发端子trig一个10us以上的高电平即可触发,触发后echo端子将接受到高电平,高电平的持续时间就是测距的往返时间。
2、例程:
#define uchar unsigned char
#define uint unsigned int
/*位定义*/
sbit CHUFA=P0^1; //位定义超声波触发端(10us以上高电平触发)
sbit JIESHOU=P0^3; //接收端(接受高电平)
sbit BEEP=P2^0; //蜂鸣器
sbit OUT0=P3^2; //外部中断0
uchar JS_FLAG; //接收标志
uint CF_TIME,t0,t1,shu;
/*函数声明*/
void timer0();
void int0();
void display(uint);
main()
CHUFA=0; //初始化拉低触发端和接收端电平
JIESHOU=0;
JS_FLAG=0;
CF_TIME=15; //初始化触发时间(大于10us)
TMOD=0x11; //定时器方式选择
EA=1; //开总中断
ET0=1; //开定时器0中断
EX0=1; //开外部中断0
IT0=0; //外部中断选择下降沿触发
//JIESHOU=1;
while(1)
OUT0=JIESHOU; //外部中断0被赋值为接收端信号,当出现下降沿是触发外部中断0
if(JS_FLAG==0) //如果没有接收到高电平则触发
CHUFA=1;
while(CF_TIME--); //10us以上高电平触发传感器
if(JIESHOU==1)
TR0=1; //如果接收端收到高电平则启动定时器
JS_FLAG=1; //并且标志位置1
BEEP=0; //蜂鸣器响
display(t1); //显示测量时间(秒)
/*定时器0中断程序*/
void timer0() interrupt 1
TH0=(65536-10000)/256; //装初值 10ms
TL0=(65536-10000)%256;
t0++; //每进入一次中断t0加1
/*外部中断0中断程序*/
void int0() interrupt 0
TR0=0; //一旦进入外部中断0,说明接收端收到下降沿信号。关闭定时器0
JS_FLAG=0; //接收标志位置0
BEEP=1; //关闭蜂鸣器
t1=t0*10/1000; //测量时间为 进入定时器中断次数t0乘以每次时间10ms,除以1000化为秒为单位
t0=0; //t0清零
/*数码管显数函数*/
void display(uint shu)
//数码管显示函数
参考技术A 初学C,只懂些简单语法,不懂单片机。
不知道这个会不会影响:
sbit JIESHOU=P0^3; //接收端(接受高电平)
JIESHOU=0;
//JIESHOU=1;
后面就没有见到再给JIESHOU赋值。 参考技术B 一,你计时器初值填错了
二,每次,while(CF_TIME--); 之后没置CF_TIME为15
还有你us级延时可能不能用循环,要用_nop()_
然而现在还是不对 参考技术C CHUFA=1;
while(CF_TIME--); //10us以上高电平触发传感器
要产生10us的脉冲 拉高后你要拉低啊
CHUFA=1;
while(CF_TIME--); //10us以上高电平触发传感器
CHUFA=0;追问
你好,谢谢指出这个问题。但是我修改后依然无法实现其功能。这段代码是我自己写的,你能不能帮我检查一下哪里存在错误呢?麻烦你啦!
本回答被提问者采纳以上是关于使用超声波传感器HY-SRF05时,VCC端接在STM32F103C8T6单片机的5V引脚?的主要内容,如果未能解决你的问题,请参考以下文章
stm32避障小车,驱动是l298n,超声波传感器是HY-SRF05,求程序,若成功还有追加财富值。麻烦大家了。