本系統采用STM32f103c8t6作為主控芯片,能對DS18B20采集到的信息進行解算,并將結果顯示在OLED顯示屏上面,并可以通過兩個按鍵實現設定溫度加減到設定溫度。
具體方案:
首先:OLED接線:CS:PA6 RST:PC15 RS:PA3 SCL:PB0 SDA:PB1 DS18B20接線:PC13 按鍵:PA2.PA4
完整代碼:
基于STM32實現的溫度控制系統OLED顯示.zip
(358.47 KB, 售價: 2 E幣)
2020-5-14 18:26 上傳
點擊文件名下載附件
售價: 2 E幣 [記錄]
[ 購買]
1.png (601.75 KB)
下載附件
2020-5-14 18:22 上傳
- #include "stm32f10x.h"
- #include "delay.h"
- #include "LED.h"
- #include "oled.h"
- #include "ds18b20.h"
- #include "usart.h"
- #include "key.h"
- #include "stm32f10x_tim.h"
- unsigned int speed_count=0;//占空比計數器 50次一周期
- static void NVIC_TIM2Configuration(void)
- {
- NVIC_InitTypeDef NVIC_InitStructure;
- /* Set the Vector Table base address at 0x08000000 */
- //NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000);
- /* Enable the TIM5 gloabal Interrupt */
- NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- }
- void TIM2_Init(void)
- { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- /* TIM2 clock enable */
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
- /* Time base configuration */
- //這個就是自動裝載的計數值,由于計數是從0開始的,周期為100us
- TIM_TimeBaseStructure.TIM_Period = (100 - 1);//10kHz
- // 這個就是預分頻系數,當由于為0時表示不分頻所以要減1
- TIM_TimeBaseStructure.TIM_Prescaler = (72 - 1);//1MHz
- // 高級應用本次不涉及。定義在定時器時鐘(CK_INT)頻率與數字濾波器(ETR,TIx)
- // 使用的采樣頻率之間的分頻比例
- TIM_TimeBaseStructure.TIM_ClockDivision = 0;
- //向上計數
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- //初始化定時器5
- TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
- /* Clear TIM5 update pending flag[清除TIM5溢出中斷標志] */
- TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
- /* TIM IT enable */ //打開溢出中斷
- TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
- /* TIM5 enable counter */
- TIM_Cmd(TIM2, ENABLE); //計數器使能,開始工作
- /* 中斷參數配置 */
- NVIC_TIM2Configuration();
- }
- int main(void)
- {
- u8 a=0;u8 b=0; u8 c=0; int temp=0;
- u8 set=20;
- u8 shiwei=0;
- u8 gewei=0;
- float temperature;
- Init_LEDpin();
- delay_init();
- OLED_Init(); //初始化OLED
- DS18B20_Init(); //PC13
- uart_init(9600);
- KEY_Init();//按鍵初始化PA2 PA4
- TIM2_Init();//電機運動PWM定時器
- // OLED_ShowString(0,0, "");
- OLED_ShowString(0,0," TEMP");
- OLED_ShowString(0,32,"Temp1:");
- OLED_ShowString(0,48,"Temp2:");
- // OLED_ShowString(0,54,"TEMP");
- OLED_Refresh_Gram();
-
- while(1)
- {
-
-
- if( !S1)
- {
- delay_ms(10);
- if(!S1)
-
- {
- while( !S1);
- set+=1;
- shiwei=set/10;
- gewei=set%10;
- OLED_ShowNum(63,48,shiwei,1,16);
- OLED_ShowNum(71,48,gewei,1,16);
- OLED_ShowChar(79,48,'.',16,1);
- OLED_ShowNum(87,48,0,1,16);
- OLED_ShowChar(95,48,'^',16,1);
- OLED_ShowChar(103,48,'C',16,1);
- OLED_Refresh_Gram();
- printf("temp:");
- }
- }
- if(!S2)
- {
- delay_ms(10);
- if(!S2)
-
- {
- while(!S2);
- set-=1;
- shiwei=set/10;
- gewei=set%10;
- OLED_ShowNum(63,48,shiwei,1,16);
- OLED_ShowNum(71,48,gewei,1,16);
- OLED_ShowChar(79,48,'.',16,1);
- OLED_ShowNum(87,48,0,1,16);
- OLED_ShowChar(95,48,'^',16,1);
- OLED_ShowChar(103,48,'C',16,1);
- OLED_Refresh_Gram();
- printf("temp:");
-
- }
- }
-
- if( speed_count >= 500)
- {
- speed_count = 0;
-
-
- temperature=DS18B20_Get_Temp();
- temp=(int)temperature;
-
- a=temp/100;
- b=(temp/10)%10;
- c=temp%10;
- OLED_ShowNum(63,32,a,1,16);
- OLED_ShowNum(71,32,b,1,16);
- OLED_ShowChar(79,32,'.',16,1);
- OLED_ShowNum(87,32,c,1,16);
- OLED_ShowChar(95,32,'^',16,1);
- OLED_ShowChar(103,32,'C',16,1);
-
-
- OLED_ShowNum(63,48,a,1,16);
- OLED_ShowNum(71,48,b,1,16);
- OLED_ShowChar(79,48,'.',16,1);
- OLED_ShowNum(87,48,c,1,16);
- OLED_ShowChar(95,48,'^',16,1);
- OLED_ShowChar(103,48,'C',16,1);
-
-
- OLED_Refresh_Gram();
- printf("temperature=%.2f \n",temperature/10);
-
- }
- }
- }
- 詳細完整代碼見本文附件
復制代碼
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|