智能测温仪表系统程序代码和系统流程图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

智能测温仪表系统程序代码和系统流程图

基于STC89C51单片机的智能测温仪表程序框架如下。

#include //51单片机头文件

定义数码管译码数组;

定义数码管位选数组;

定义保存在24C02中数据的数组;

定义时间标记变量;//display_time,sample_time,control_time,DAC_time等

定义其他全局数组与变量;

声明函数原型;(TLC1549,TLC5615、24C02等函数)

void main(void)

{

定时器初始化;

引脚初始化;//按钮、LED灯、ADC、DAC、E2PROM和软件SPI用引脚初始化

其他初始化语句;

从24C02读数组语句;//将保存的数据读到数组,每次单片机上电后,就使用该数组中的数据

while(1)

{

按键处理语句;

{

功能选择,控制周期、设定值、回差值、报警值等输入;

将数组写入24C02语句;//将按键输入的数据保存到数组

}

//数码管显示语句:

if(display_time= =1) //如果显示标记display_time=1,则执行显示任务,完成一位数码管显示

{

数码管扫描显示语句;//采用两片74HC595扫描数码管

display_time= =0;

}

//ADC转换与数字滤波语句:

if(sample_time= =1) //如果数据采样标记sample_time=1,执行ADC转换任务

1

{

TLC1549转换、数字滤波与非线性校正程序;

sample_time= =0;

}

//ADC输出数值判断、报警、比例算法运算与控制量输出:

if (control_time= =1) //如果控制周期标记control_time=1,则实现控制算法

{

温度值判断与报警语句;

比例算法运算语句;

控制量输出语句;(引脚赋值语句)

control_time=0;

}

//DAC转换语句:

if (DAC_time= =1) //如果DAC转换标记DAC_time=1,将数据写入DAC

{

TLC5615数据输出语句;

DAC_time=0;

}

}

//定时器0中断服务程序,用于产生显示、ADC转换与控制周期标记

void Timer0() interrupt 1

{

static unsigned char n,m,k,h;

n++; m++,k++;h++;

if(n= = display_time0) //display_time0为显示周期

{n=0; display_time=1;

}

if(m= = sample_time0) //sample_time0为ADC转换周期

{m=0; sample_time=1;

}

if(k= = control_time0) //control_time0为控制周期

{k=0; control_time=1;

}

if(h= = DAC_time0) //DAC_time0为DAC转换周期

{h=0; DAC_time=1;

}

}

系统流程图

相关文档
最新文档