找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 898|回复: 0
收起左侧

STM32单片机HCSR04程序

[复制链接]
ID:1123048 发表于 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;                                        //距离上限 默认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);        //设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  17.                                                        
  18.         LED_Init();
  19.         OLED_Init();                                    //OLED初始化操作
  20.         OLED_CLS();                                     //OLED清除屏幕       

  21.        
  22.         TIM3_Int_Init(499,7199);                //10Khz的计数频率,计数到500为50ms

  23.         HCSR04_Init();                                        //以1Mhz的频率计数
  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是标志位
  32.                 {       
  33.                         flag_timer = 0;                                                //清除标志  等待下一次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)                                        //当前距离小于上限  
  40.                                 {
  41.                                        
  42.                                         flag_beep = 1;                                        //开报警标志 执行报警程序在定时器中断       
  43.                                        
  44.                                 }
  45.                                 else
  46.                                 {
  47.                                         flag_beep = 0;                                        //关报警标志位       
  48.                                 }       
  49.                         }
  50.                         else
  51.                         {
  52.                                 flag_beep = 0;                                                //关报警标志位
  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. }

复制代码


程序.7z

195.58 KB, 下载次数: 1, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表