標(biāo)題:
以stm32f103為基礎(chǔ)的超聲波測距系統(tǒng)程序設(shè)計(jì)
[打印本頁]
作者:
17756
時(shí)間:
2019-3-19 10:44
標(biāo)題:
以stm32f103為基礎(chǔ)的超聲波測距系統(tǒng)程序設(shè)計(jì)
當(dāng)時(shí)做的開放性實(shí)驗(yàn),實(shí)驗(yàn)板上插上超聲波探頭就能用,供大家參考
以下是主程序部分,大概思路就是這么著了
單片機(jī)源程序如下:
#include"stm32f10x.h"
#include"SysTick.h"
#include"TFT_Drive.h"
#include"GUI.h"
#include"Uitr.h"
#include"Time.h"
void Count(void);
void LED_GPIO_Config(void);
uint32_t Distance;
uint16_t Time;
uint8_t ShowData[6]={0,0,0,0,0};
int main(void)
{
TFT_Init();
Uitr_GPIO_Config();
LED_GPIO_Config();
GUI_ClearScreen(BLACK);
GUI_WriteCHAR(0,300,"Distance:",RED,BLACK);
TIM4_Config();
TIM3_Config();
while(1)
{
while(ECHO_IN != 1);
TIM_Cmd(TIM4,ENABLE); //計(jì)數(shù)器開始計(jì)數(shù)
while(ECHO_IN == 1);
TIM_Cmd(TIM4,DISABLE); //計(jì)數(shù)器停止計(jì)數(shù)
Count(); //計(jì)算距離
}
}
void Count(void)
{
Time = TIM4->CNT; //讀計(jì)數(shù)器值
TIM4->CNT = 0; //清除計(jì)數(shù)器
if(Time>23530) //判斷是否在4M范圍,超出顯示ERRO
{
GUI_WriteCHAR(72,300,"error ",RED,BLACK);
}
else
{
Distance = (uint32_t)((Time*1.7)/10) ; //計(jì)算出來的是MM
ShowData[0] = (Distance%10000/1000)+'0';
ShowData[1] = '.';
ShowData[2] = (Distance%1000/100)+'0';
ShowData[3] = (Distance%100/10)+'0';
ShowData[4] = (Distance%10/1)+'0';
ShowData[5] = 'm';
GUI_WriteCHAR(72,300,ShowData,RED,BLACK); //顯示距離值
}
}
復(fù)制代碼
所有資料51hei提供下載:
STM32-超聲波測距.7z
(228.55 KB, 下載次數(shù): 46)
2019-3-19 16:19 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
狄我部分
時(shí)間:
2019-3-19 22:27
剛好要用到超聲波
作者:
hujj
時(shí)間:
2019-3-20 09:28
不錯(cuò),代碼清晰,結(jié)構(gòu)簡捷,適合初學(xué)者。
作者:
hujj
時(shí)間:
2019-3-20 13:34
請問TIM4如何配置呢?另外TIM3是起什么作用呢?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1