程序下载链接 可以看看
https://download.csdn.net/download/id_l_j_j_/11271843
先说一下本设计中采用的控制芯片,是STM32F103C8T6单片机,我采用的是淘宝上买的最小系统板,大概10块钱不到(便宜的7块钱不到),显示部分使用LCD1602显示温度的实时值以及设定值,并且用于显示输入的温度,温度的采集使用的是DS18B20模块。
在我的程序中定义了以下的那些变量:
u8 t=0;//读取温度用到的指针
u8 H=0;//温度整数位
u8 L=0;//温度小数位
u8 i=0;//lcd1602指针
u16 limit= 250;//设定初始温度为30.0度
u8 H_limit;//温度限制整数位
u8 L_limit;//温度限制小数位
u8 a,b,c;//温度设定的十位 个位 小数位
u8 key_num = 0;//按键扫描到的按键
u8 sheding = 3;
short temperature;
unsigned char temp_T[30] = {0};
unsigned char limit_T[30] ={0};
这段代码的实现过程着实简陋,我的DS18B20库中读取的温度精确到小数点后一位,由于测试的环境的限制,温度都在100度以下和0度以上,所以我就默认温度为0~100度之间,将读取到的温度值存入中间变量中,由于读取到的实际数据是三位数,所以通过整除与取余的操作就可以得到温度的整数位以及小数位。
temperature=DS18B20_Get_Temp();
H = temperature/10; //取十位和个位
L = temperature %10; //取小数位
设定的时候通过设定abc的值,然后分别比较温度的整数部分以及小数部分就可以知道温度是否超出阈值,如果超出阈值则开始报警,报警使用无源蜂鸣器模块,低电平触发。如果需要控制继电器,这个输出也可以控制继电器模块,如果需要自己焊接继电器,个人感觉使用三极管和PC817光耦模块驱动比较好。