智能测温仪表系统程序代码和系统流程图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能测温仪表系统程序代码和系统流程图
基于STC89C51单片机的智能测温仪表程序框架如下。
#include
定义数码管译码数组;
定义数码管位选数组;
定义保存在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;
}
}
系统流程图