標題: STM32F407超聲波+LCD測距顯示程序 [打印本頁]

作者: DENGJIAQI    時間: 2021-7-7 13:55
標題: STM32F407超聲波+LCD測距顯示程序
適用于需要代碼想法的人,
此例程為中斷實現(xiàn)


單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "lcd.h"
  6. #include "timer.h"
  7. #include "wave.h"



  8. int main(void)
  9. {
  10.         u8 t=20;//trig引腳高電平持續(xù)時間
  11.    float Distance;
  12.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統(tǒng)中斷優(yōu)先級分組2
  13.         delay_init(168);      //初始化延時函數(shù)
  14.         uart_init(115200);                //初始化串口波特率為115200
  15.         LED_Init();                                          //初始化LED
  16.    Wave_SRD_Init();//初始化超聲波
  17.    TIM3_Int_Init(9998,7199);//  APB1定時器時鐘84M,分頻系數(shù)8400,所以84M/8400=10KHZ的技術頻率,記一次數(shù)0.1ms
  18.         LCD_Init();           //初始化LCD FSMC接口
  19.    while(Wave_SRD_Strat(t))
  20.         {
  21.                 LCD_ShowString(60,140,200,16,16,"HC_SR04 IS ERROR");
  22.                 delay_ms(200);
  23.                 LCD_Fill(60,330,239,130+16,WHITE);
  24.                 delay_ms(200);
  25.         }
  26.    LCD_ShowString(60,160,200,16,16,"HC_SR04 IS OK");
  27.         POINT_COLOR=BLUE;
  28.         LCD_ShowString(60,180,200,16,16,"Distance:         cm");
  29.           while(1)
  30.         {                 
  31.       Wave_SRD_Strat(t);
  32.                 Distance = TIM_GetCounter(TIM3)*340/200.0;
  33.         if(Distance>0)
  34.         {
  35.                 LCD_ShowNum(60+70,180,Distance,6,16);//顯示測量距離
  36.                 delay_ms(10);
  37.         }
  38.                 LED1=!LED1;
  39.                 delay_ms(2000);
  40.         }
  41. }
復制代碼

所有資料51hei提供下載:
F407超聲波實驗.7z (338.23 KB, 下載次數(shù): 64)






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1