找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STM32F407超声波+LCD测距显示程序

[复制链接]
ID:656155 发表于 2021-7-7 13:55 | 显示全部楼层 |阅读模式
适用于需要代码想法的人,
此例程为中断实现
MVIMG_20210707_135053.jpg

单片机源程序如下:
  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引脚高电平持续时间
  11.    float Distance;
  12.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  13.         delay_init(168);      //初始化延时函数
  14.         uart_init(115200);                //初始化串口波特率为115200
  15.         LED_Init();                                          //初始化LED
  16.    Wave_SRD_Init();//初始化超声波
  17.    TIM3_Int_Init(9998,7199);//  APB1定时器时钟84M,分频系数8400,所以84M/8400=10KHZ的技术频率,记一次数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, 下载次数: 64)

评分

参与人数 1黑币 +40 收起 理由
admin + 40 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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