久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: STM32單片機OLED顯示溫度和距離Keil源程序 [打印本頁]

作者: 黑芯    時間: 2022-7-13 20:07
標題: STM32單片機OLED顯示溫度和距離Keil源程序
最開始學習32的時候是用的自身的OLED模塊,后面發現更多的時候用的都是iic的OLED模塊,因此去做了一個OLED顯示溫度和超聲波測距的實驗

單片機源程序如下:
  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. }


復制代碼

Keil代碼下載:
Keil代碼.7z (198.86 KB, 下載次數: 50)





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲最新在线 | 色婷婷精品久久二区二区蜜臂av | 欧美xxxx日本 | 国产传媒视频在线观看 | 欧美在线资源 | 成人三级视频 | 日韩中文字幕在线观看 | 操操日 | 羞羞视频在线观免费观看 | 在线一区二区国产 | 中文字幕综合 | 在线欧美亚洲 | 欧美精品一区二区三区在线播放 | 久久久久国产 | 久久久久国产一区二区三区 | 国产99久久精品一区二区永久免费 | 亚洲精品国产偷自在线观看 | 国产高清免费在线 | 国产精品久久久久久婷婷天堂 | 天堂久久天堂综合色 | 久久一| 国产精品性做久久久久久 | 国产xxxx岁13xxxxhd | 男女黄网站 | 91中文| 在线观看国产www | 国产精品久久久久久久久久久久午夜片 | 欧美一区二 | 国产精品一区免费 | 中文字幕不卡在线88 | 一区二区三区四区国产精品 | 中文字幕在线观看 | 成人乱人乱一区二区三区软件 | 久久99精品久久久久久国产越南 | 夜夜草 | 日韩精品在线视频 | 国产精品亚洲一区二区三区在线观看 | 99精品久久久国产一区二区三 | 狼人伊人影院 | 国产精品国产精品 | 麻豆va|