找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13974|回复: 24
收起左侧

STM32F103C8T6+OLED显示温度+超声波测距 附源程序

  [复制链接]
ID:824746 发表于 2020-11-17 21:03 | 显示全部楼层 |阅读模式
STM32F103C8T60.96OLED屏幕
18B20
HCSR04

IMG_20201117_202243.jpg

单片机源程序如下:
  1. /*
  2. STM32F103C8T6
  3. iic通信0.96寸OLED显示屏;显示中英文、数字、图片
  4. 18B20温度传感器
  5. HC-SR04超声波传感器

  6. OLED接线定义:
  7.                                         VCC--3.3V/5V
  8.                                         GND--GND
  9.                                         SCL--PB8
  10.                                         SDA--PB9
  11. 18B20接线定义:
  12.                                         DQ--PA5
  13. HC-SR04超声波接线定义:
  14.                                         Trig--PB7
  15.                                         Echo--PB6
  16. */

  17. #include "sys.h"  
  18. #include "delay.h"
  19. #include "oled_iic.h"
  20. #include "stdio.h"
  21. #include "wave.h"
  22. #include "timer.h"
  23. #include "usart.h"          
  24. #include "ds18b20.h"

  25. int main(void)
  26. {               
  27.         u8 a=0;       
  28.         u8 t=20;//trig引脚高电平持续时间
  29.         short temperature;                                             
  30.         u8 Distance;
  31.        
  32.         uart_init(115200);//串口初始化
  33.         Wave_SRD_Init();//初始化超声波
  34.         Timer_SRD_Init(9998,7199);//定时器初始化       

  35.         extern const u8 BMP1[];
  36.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  37.         delay_init();
  38.         OLED_Init();                         //OLED屏幕初始化               
  39.         DS18B20_Init();                //DS18B20初始化       
  40.        
  41.         while(Wave_SRD_Strat(t))
  42.         {
  43.         }
  44.        
  45.         OLED_Clear();       
  46.        
  47.         while(1)
  48.         {               
  49.                 //18B20读取温度               
  50.                 if(a%10==0)                        //每100ms读取一次
  51.                 {                                                                          
  52.                         temperature=DS18B20_Get_Temp();
  53.                         if(temperature<0)
  54.                         {
  55.                                 OLED_ShowCH(50,6,"-");                        //显示负号
  56.                                 temperature=-temperature;                        //转为正数
  57.                         }else{
  58.                                 OLED_ShowCH(50,6," ");                        //去掉负号
  59.                         }
  60.                         OLED_ShowNum(60,6,temperature/10,2,16);                        //显示整数部分            
  61.                            OLED_ShowNum(60+28,6,temperature%10,1,16);        //显示小数部分                   
  62.                 }                                  
  63.                  delay_ms(10);
  64.                 a++;
  65.                 if(a==20)
  66.                 {
  67.                         a=0;
  68.                 }

  69.                 OLED_ShowCH(15,0,"屏幕显示测试");                //测试显示中文

  70.                 OLED_ShowCH(0,3,"距离:");                //显示中文:距离
  71. //                OLED_ShowCH(0,3,"Distance: ");        //显示英文
  72.                 OLED_ShowCH(100,3,"cm");                //测试显示中文

  73.                 OLED_ShowCH(0,6,"温度:");                //显示中文:温度
  74. //                OLED_ShowCH(0,6,"Temp: ");                //显示英文
  75.                 OLED_ShowCH(78,6,".");                        //显示.                       
  76.                 OLED_ShowCH(101,6,"℃");                //显示:℃

  77.                 //产生高于10Us的高电平与OLED上显示超声波所测距离               
  78.                 Wave_SRD_Strat(t);
  79.                 Distance = TIM_GetCounter(TIM3)*340/200.0;
  80.                 if(Distance>0)
  81.                 {
  82.                         OLED_ShowNum(50,3,Distance,6,16);                //显示超声波测量距离
  83.                         delay_ms(10);
  84.                 }

  85. /*               
  86.                 OLED_ShowCH(20,1,"屏幕显示测试");                //测试显示中文

  87.                 OLED_ShowNum(20,3,314159265,9,0);                //测试显示数字

  88.                 OLED_DrawBMP(0,0,128,8,(u8 *)BMP1);                //测试显示图片
  89. */
  90.         }
  91. }
复制代码

所有资料51hei提供下载:
01-STM32F103C8T6-OLED显示温度+超声波测距.7z (198.87 KB, 下载次数: 1300)

评分

参与人数 2黑币 +55 收起 理由
王者不可阻挡 + 5 共享资料的黑币奖励!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:541135 发表于 2020-11-23 17:04 | 显示全部楼层
为什么 我的显示距离不对呀
回复

使用道具 举报

ID:337139 发表于 2020-11-24 08:43 | 显示全部楼层
测试的距离与被测物的方向及平面的反射有关系。
回复

使用道具 举报

ID:160860 发表于 2020-12-2 10:38 | 显示全部楼层
感谢大佬的分享啊,学到了
回复

使用道具 举报

ID:770967 发表于 2020-12-5 17:41 | 显示全部楼层
我想加个蜂鸣器当检测距离<10cm  时报警 那么Distance应该>?
回复

使用道具 举报

ID:859164 发表于 2020-12-12 16:27 | 显示全部楼层
膜拜大佬
回复

使用道具 举报

ID:447455 发表于 2020-12-15 11:29 | 显示全部楼层
很实用
回复

使用道具 举报

ID:859612 发表于 2020-12-15 20:08 | 显示全部楼层
stc能用吗
回复

使用道具 举报

ID:658039 发表于 2020-12-19 12:06 | 显示全部楼层
做超声波测距,一定要加上温度补偿,温度越高误差越大!
回复

使用道具 举报

ID:859339 发表于 2020-12-25 20:18 来自手机 | 显示全部楼层
为啥屏幕不亮……
回复

使用道具 举报

ID:859339 发表于 2020-12-25 21:05 来自手机 | 显示全部楼层
为啥屏幕这么乱
image.jpg
回复

使用道具 举报

ID:247920 发表于 2021-1-26 22:51 来自手机 | 显示全部楼层
我打开keil5下载就自动弹出结束运行
回复

使用道具 举报

ID:931040 发表于 2022-1-27 22:16 | 显示全部楼层
接线对了,编译也没错,但是没显示
回复

使用道具 举报

ID:25058 发表于 2022-2-9 14:27 | 显示全部楼层
试过了可以实现全部功能,感谢分享
回复

使用道具 举报

ID:601620 发表于 2022-4-30 11:39 | 显示全部楼层
感谢楼主,功能全部实现
回复

使用道具 举报

ID:948479 发表于 2022-6-29 21:16 来自手机 | 显示全部楼层
liang1981 发表于 2022-2-9 14:27
试过了可以实现全部功能,感谢分享

为什么我的温度显示不出来呢
回复

使用道具 举报

ID:93626 发表于 2022-11-29 08:56 | 显示全部楼层
感谢楼主,功能全部实现
回复

使用道具 举报

ID:1058464 发表于 2022-12-20 17:25 | 显示全部楼层
高山低谷 发表于 2020-11-23 17:04
为什么 我的显示距离不对呀

显示测距调一下
回复

使用道具 举报

ID:1058464 发表于 2022-12-22 12:30 | 显示全部楼层
LED123.. 发表于 2020-12-5 17:41
我想加个蜂鸣器当检测距离?

我也想知道耶
回复

使用道具 举报

ID:1062252 发表于 2023-2-7 11:17 | 显示全部楼层
我的距离为什么一直在1和0之间跳,测不出距离来啊
回复

使用道具 举报

ID:604703 发表于 2023-2-28 20:44 | 显示全部楼层
测不出距离是什么情况
回复

使用道具 举报

ID:1077830 发表于 2023-5-16 14:31 | 显示全部楼层
为什么显示不出去了
回复

使用道具 举报

ID:190577 发表于 2023-7-29 21:49 | 显示全部楼层
uynam2003 发表于 2023-5-16 14:31
为什么显示不出去了

我的也显示不出来,啥情况
回复

使用道具 举报

ID:1100765 发表于 2023-11-22 13:24 | 显示全部楼层
膜拜大佬
回复

使用道具 举报

ID:766282 发表于 2024-3-23 11:11 来自手机 | 显示全部楼层
距离不准改哪里?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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