基于STM32的多路数字式温度采集系统 - 图文(6)

2019-06-05 13:29

4 软件设计

程序是一个系统的思想,没有程序,电路就是死体,不能正常运作。有了程序,就想肉体有了灵魂,一个有效地程序,能让一堆电路工作,一个合理高效的程序,能优化整个系统是整个系统处于最佳的工作状态。

4.1 主程序流程图

本系统的软件程序主要包括主程序、温度检测程序、显示程序、报警系统程序,键盘控制程序几个大模块。主程序的优化结构,决定了一个系统的优化程度。

主程序采用循环式扫描,对系统进行循环的检测。首先是各个子程序的初始化程序,包括对各个功能模块的检测,然后是温度检测程序,不断的检测采集到的温度是否超出设置的范围,将检测到的温度显示在TFT彩屏上,在这过程中还可以设置显示哪路温度和温度测量的范围,如此不断的执行程序,主程序流程图如图4.1:

开始 子程序初始化 按键温度设置 读采集到的温度值 解除报警 是否超过设置的温度 Y 报警 N 显示温度 图4.1 主程序流程图

4.2温度采集处理流程图

温度采集程序主要是对DS18B20的控制程序。由微控制器STM32F103ZET6严格按

21

照DS18B20的时序控制它,进行温度的采集和转换并输出到TFTLCD,使我们能够清楚地看到当前温度值。对DS18B20的设定在主程序已经完成,在这几只是其转化的程序,不在需要不停地对其设置,减轻了系统的压力,使系统的运行速度提高。

温度采集程序流程图如下:

开始 初始化DS18B20 IO端口 检测DS18B20是否存在 提示错误 复位DS18B20

TFTLCD显示温度值 开始温度转换 得到温度值 图4.2 温度采集模块程序流程图

部分程序代码如下:

DS18B20_Start (a); // ds1820 start convert DS18B20_Rst(a); DS18B20_Check(a);

DS18B20_Write_Byte(a,0xcc);// skip rom DS18B20_Write_Byte(a,0xbe);// convert TL=DS18B20_Read_Byte(a); // LSB TH=DS18B20_Read_Byte(a); // MSB

4.3 显示子程序介绍

显示字程序需较为复杂,主要因为TFT的驱动难,但驱动程序就可以达百行。本系

22

统显示程序突出优点是折线图,通过折线图将实时的温度显示出来,看起来更加的直观,更容易看出温度的变化趋势走向。

开始 TFTLCD 初始化 确定显示位置 显示数据 图4.3 显示程序流程图

部分程序代码如下:

LCD_Fill(2,32,239,320,WHITE); //特点区域填充为白色

POINT_COLOR=BLUE;//设置字体为蓝色

LCD_ShowString(60,90,240,16,16,\LCD_ShowString(60,110,240,16,16,\LCD_ShowString(60,130,240,16,16,\LCD_ShowString(60,150,240,16,16,\LCD_ShowString(60,170,200,16,16,\ . C\ LCD_ShowString(60,190,200,16,16,\ . C\LCD_ShowString(60,210,200,16,16,\ . C\ LCD_ShowString(60,230,200,16,16,\ . C\LCD_ShowString(60,250,200,16,16,\ . C\LCD_ShowString(60,270,200,16,16,\ . C\LCD_ShowNum(60+40,270,(u32)Low_temp,2,16); LCD_ShowNum(60+48,250,(u32)High_temp,2,16);

显示子程序实现了当前温度值的显示,主要的是TFTLCD液晶显示器的初始化命令的设置,我们通过STM32F103微处理器控制显示器,使显示器能够显示我们想要的效果,程序设计过程中,能够同时显示四路温度,通过K0按键控制得到哪路温度显示,通过K1按键控制设置的温度上下限,通过显示器我们可以很清楚的知道当前温度和设置的温度上下限值。

4.4 按键子程序介绍

本设计采用中断方式来查询按键,所以按键后的相应操作即中断服务程序。中断按键

23

程序的较多优点,其不需要单片机随时扫描,让单片机一直处于对温度的检测,大大降低了单片机的压力,增强单片机的控制效率,增加了系统温度采集的效率,降低系统的延迟时间,提高系统的循环速度。设置键主要是TFTLCD上光标的切换,每按键一下,标志信号加一, 再根据标志信号执行对应的操作,表示光标相应的改变,即得到相应路数的温度。

N K0是否按下 无操作,程序正常运行

Y

K1是否按下 返回到断点处继续执行程序 外部中断0发生,执行外部中断0服务程序 使光标定位到选择的温度路数上 N 程序正常运行 Y 外部中断1 发生,执行外部中断1服务程序 使光标定位到设置温度的上限或者下限处

返回到断点处继续执行程序 图4.4 按键程序流程图

上图显示了K0 和K1的作用,K2按键实现报警温度上下限的加功能,K3按键实现报警温度上下限的减功能,同样也是用外部中断来实现其功能的,其温度值再送到TFTLCD上显示出来。

外部中断3服务程序代码如下: // 报警温度加

void EXTI3_IRQHandler(void) {

delay_ms(10);//消抖 if(KEY1==0) {

{

24

//按键KEY1

if(set_flag == 1)

}

Low_temp ++;

LCD_ShowNum(60+40,270,Low_temp,2,16); if(set_flag == 0) {

High_temp ++;

LCD_ShowNum(60+48,250,High_temp,2,16); } }

EXTI_ClearITPendingBit(EXTI_Line3); }

25

//清除LINE3上的中断标志位


基于STM32的多路数字式温度采集系统 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:总体施组 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: