|
串口加屏幕顯示超聲測(cè)距數(shù)據(jù),使用HC-HR04,超聲波測(cè)距是超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)開(kāi)始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來(lái),超聲波接收器收到反射波就立即停止計(jì)時(shí)。超聲波在空氣中的傳播速度為340m/s,根據(jù)計(jì)時(shí)器記錄的時(shí)間t,就可以計(jì)算出發(fā)射點(diǎn)距障礙物的距離(s),即:s=340t/2 。超聲波測(cè)距的原理是利用超聲波在空氣中的傳播速度為已知,測(cè)量聲波在發(fā)射后遇到障礙物反射回來(lái)的時(shí)間,根據(jù)發(fā)射和接收的時(shí)間差計(jì)算出發(fā)射點(diǎn)到障礙物的實(shí)際距離。代碼中已經(jīng)計(jì)算,探測(cè)距離3mm到2m,代碼如下:
stm32單片機(jī)源程序如下:
- /*連接方式
- Trig ---- GPIO_Pin_1
- Echo ---- GPIO_Pin_0
- VCC ---- 5.0V
- GND ---- GND
- */
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "timer.h"
- #include "usart.h"
- extern u8 TIM2CH1_CAPTURE_STA; //輸入捕獲狀態(tài)
- extern u16 TIM2CH1_CAPTURE_VAL; //輸入捕獲值
- float distance;
- int main(void)
- {
-
- u32 temp=0;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級(jí)分組2
- delay_init(); //延時(shí)函數(shù)初始化
- uart_init(9600); //9600
- LED_Init(); //初始化與LED連接的硬件接口
- TIM1_PWM_Init(899,0); //不分頻。PWM頻率=72000/(899+1)=80Khz
- TIM2_Cap_Init(0XFFFF,72-1); //以1Mhz的頻率計(jì)數(shù)
- while(1)
- {
- delay_ms(10);
- Wave_SRD_Strat();
- // TIM_SetCompare1(TIM1,TIM_GetCapture1(TIM1)+1);
- // if(TIM_GetCapture1(TIM1)==300)TIM_SetCompare1(TIM1,0);
- if(TIM2CH1_CAPTURE_STA&0X80)//成功捕獲到了一次高電平
- {
- temp=TIM2CH1_CAPTURE_STA&0X3F;
- temp*=65536; //溢出時(shí)間總和
- temp+=TIM2CH1_CAPTURE_VAL; //得到總的高電平時(shí)間
- distance = temp/59.0;
- printf("HIGH:%.2f cm\r\n",distance); //打印總的高點(diǎn)平時(shí)間
- LED1=!LED1;
- TIM2CH1_CAPTURE_STA=0; //開(kāi)啟下一次捕獲
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
超聲波5.0.rar
(299.59 KB, 下載次數(shù): 104)
2018-9-13 18:50 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|