设为首页
收藏本站
开启辅助访问
登录
注册
只需一步,快速开始
首页
BBS
在线充值
搜索
工控币获得方法
联系方式
搜索
搜索
本版
帖子
用户
工控论坛
»
首页
›
电子技术
›
STM32/8
›
基于STM32实现的温度控制系统OLED显示程序 ...
返回列表
发新帖
基于STM32实现的温度控制系统OLED显示程序
[复制链接]
4
|
0
|
2020-5-14 18:27:34
|
显示全部楼层
|
阅读模式
本系统采用STM32f103c8t6作为主控芯片,能对DS18B20采集到的信息进行解算,并将结果显示在OLED显示屏上面,并可以通过两个按键实现设定温度加减到设定温度。
具体方案:
首先:OLED接线:CS:PA6 RST:PC15 RS:PA3 SCL:PB0 SDA:PB1 DS18B20接线:PC13 按键:PA2.PA4
完整代码:
基于STM32实现的温度控制系统OLED显示.zip
(358.47 KB, 售价: 1 工控币)
2020-5-14 18:26 上传
点击文件名下载附件
#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);
}
}
}
详细完整代码见本文附件
复制代码
温度
,
oled
,
stm32
相关帖子
•
51单片机采集温度通过串口发送到labview上位机采集曲线显示
•
基于LABVIEW温度越限报警程序设计
•
基于组态王的占空比PID算法温度控制系统设计 含源码和文档
•
STM32+LabVIEW的USB数据采集与显示源程序
•
LabVIEW读取和显示温度曲线 51单片机做下位机
•
远程果蔬工厂监控系统设计 LabVIEW+51单片机程序
•
温室大棚监控系统LabVIEW上位机
•
labview种植大棚温度监控源程序
•
西门子S7-200 Smart PLC模拟量采集计算(压力、温度)程序案例
•
VB6上位源码采集2路温度 并形成曲线图 还可查看历史数据
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
路漫漫
194
主题
199
帖子
74
积分
初级会员
初级会员, 积分 74, 距离下一级还需 426 积分
初级会员, 积分 74, 距离下一级还需 426 积分
工控币
74
加好友
发消息
回复楼主
返回列表
电子技术综合讨论
单片机嵌入式
EDA设计仿真
STM32/8
51单片机
上位机开发及系统管理
Labview
Multisim仿真
图文推荐
用Fanuc Karel语言实现三点建坐标系
2021-01-04
用CH341A做的USB转SPI_232_485_TTL转换器 PCB+SCH文件 烧写器源
2020-12-14
51单片机采集温度通过串口发送到labview上位机采集曲线显示
2020-12-13
基于组态王的占空比PID算法温度控制系统设计 含源码和文档
2020-12-13
基于LabVIEW的电动车速度监测和控制系统上位机程序设计
2020-12-08
热门排行
1
有没有 GE plc PME9.0版本的中文对照表
2
哈哈,网站很好,来支持一下
3
6000CHM废气处理EPLAN电气图纸
4
300多个常用的Multisim仿真电路资料分享
5
谁那有施耐德PES软件 本人愿意提供一定积分
6
交通信号灯电子线路实验Multisim仿真电路图
7
Multisim14仿真PIC16f84单片机驱动led
8
基于labview的电子秤
9
哪位大佬能看看logix5571以太网通信故障这
10
WINCC 7.5+SP1+UPD3