找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 839|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32單片機(jī)HCSR04程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1123048 發(fā)表于 2024-10-8 10:49 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
  1. #include "delay.h"

  2. #include "key.h"
  3. #include "led.h"
  4. #include "timer.h"
  5. #include "OLED_I2C.h"
  6. #include "HCSR04.h"

  7. #include "stdio.h"        
  8. #include "stdlib.h"        

  9. short Dis_up = 10;                                        //距離上限 默認(rèn)100cm

  10. extern u32 cnt ;

  11. int main(void)
  12. {       

  13.         unsigned int distance = 0;                        //距離
  14.         unsigned char buf[18];
  15.        
  16.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //設(shè)置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
  17.                                                        
  18.         LED_Init();
  19.         OLED_Init();                                    //OLED初始化操作
  20.         OLED_CLS();                                     //OLED清除屏幕       

  21.        
  22.         TIM3_Int_Init(499,7199);                //10Khz的計數(shù)頻率,計數(shù)到500為50ms

  23.         HCSR04_Init();                                        //以1Mhz的頻率計數(shù)
  24.         KEY_Init();                                                //初始化端口
  25.         sprintf((char *)buf,"DisH:%3dcm",Dis_up);
  26.         OLED_ShowStr(16*0,2,buf,2);
  27.        
  28.         while(1)
  29.         {       
  30.                
  31.                 if(flag_timer==1)                                                //200毫秒賦一次值 flag_timer是標(biāo)志位
  32.                 {       
  33.                         flag_timer = 0;                                                //清除標(biāo)志  等待下一次600ms
  34.                         if(HCSR04_Count(&distance)==0)                //測距 將距離值傳遞給distance
  35.                         {
  36.                                 sprintf((char *)buf,(const char *)"Distance:%3dcm",distance);
  37.                                 OLED_ShowStr(16*0,0,buf,2);
  38.                                
  39.                                 if(distance<Dis_up)                                        //當(dāng)前距離小于上限  
  40.                                 {
  41.                                        
  42.                                         flag_beep = 1;                                        //開報警標(biāo)志 執(zhí)行報警程序在定時器中斷       
  43.                                        
  44.                                 }
  45.                                 else
  46.                                 {
  47.                                         flag_beep = 0;                                        //關(guān)報警標(biāo)志位       
  48.                                 }       
  49.                         }
  50.                         else
  51.                         {
  52.                                 flag_beep = 0;                                                //關(guān)報警標(biāo)志位
  53.                                 sprintf((char *)buf,(const char *)"Distance:---cm");
  54.                                 OLED_ShowStr(16*0,0,buf,2);

  55.                         }
  56.                 }       
  57.                 KEY_Set();
  58.        
  59.                



  60.                
  61.         }       
  62. }

復(fù)制代碼


程序.7z

195.58 KB, 下載次數(shù): 1, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表