標(biāo)題:
stm32多點(diǎn)測(cè)溫oled顯示程序
[打印本頁(yè)]
作者:
我叫小大打
時(shí)間:
2020-5-14 11:50
標(biāo)題:
stm32多點(diǎn)測(cè)溫oled顯示程序
程序是本人移植的
需要就去下載吧
31eed6d6666466a30d12d5273a7882e.jpg
(123.91 KB, 下載次數(shù): 78)
下載附件
2020-5-14 11:47 上傳
單片機(jī)源程序如下:
#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;//占空比計(jì)數(shù)器 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 */
//這個(gè)就是自動(dòng)裝載的計(jì)數(shù)值,由于計(jì)數(shù)是從0開(kāi)始的,周期為100us
TIM_TimeBaseStructure.TIM_Period = (100 - 1);//10kHz
// 這個(gè)就是預(yù)分頻系數(shù),當(dāng)由于為0時(shí)表示不分頻所以要減1
TIM_TimeBaseStructure.TIM_Prescaler = (72 - 1);//1MHz
// 高級(jí)應(yīng)用本次不涉及。定義在定時(shí)器時(shí)鐘(CK_INT)頻率與數(shù)字濾波器(ETR,TIx)
// 使用的采樣頻率之間的分頻比例
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
//向上計(jì)數(shù)
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
//初始化定時(shí)器5
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
/* Clear TIM5 update pending flag[清除TIM5溢出中斷標(biāo)志] */
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
/* TIM IT enable */ //打開(kāi)溢出中斷
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
/* TIM5 enable counter */
TIM_Cmd(TIM2, ENABLE); //計(jì)數(shù)器使能,開(kāi)始工作
/* 中斷參數(shù)配置 */
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();//電機(jī)運(yùn)動(dòng)PWM定時(shí)器
// 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);
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
基于STM32實(shí)現(xiàn)的溫度控制系統(tǒng)OLED顯示.7z
(203.6 KB, 下載次數(shù): 58)
2020-5-14 17:02 上傳
點(diǎn)擊文件名下載附件
stm32
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1