MSP430单片机恒温箱热水器温度计加热控制系统5
本系统由MSP430F149单片机核心、LCD1602液晶显示、蜂鸣器报警、按键、
温度传感器DS18B20、继电器控制及电源组成。
1、实现0-100℃温度检测,精读达到0.1℃,并在LCD1602显示屏显示,
同时显示温度上下限数据。
2、通过4个按键设置温度上下限值,如果温度值不在上下限范围,
蜂鸣器将会报警;
3、如果温度值低于下限,继电器将会启动控制输出(用于接加热丝),
如果温度值高于上限,继电器断开表示停止加热。
4、按键操作有,设置、数据-、数据+、取消设置。
完整版 电路图和程序代码 下载地址
https://pan.baidu.com/s/1Jf1aVe1yUwXA5mv037RxGw?pwd=3456
部分代码展示
#include "system.h"
#include <stdio.h>
#define key1 (P6IN&BIT7)
#define key2 (P6IN&BIT6)
#define key3 (P6IN&BIT5)
#define key4 (P6IN&BIT4)
#define OPEN_Buzzer (P5OUT|=BIT7)
#define CLOSE_Buzzer (P5OUT&=~BIT7)
#define OPEN_Relay (P5OUT|=BIT6)
#define CLOSE_Relay (P5OUT&=~BIT6)
float NowTemp=0; //实际测试纸
unsigned int setU=35; //上限
unsigned int setD=25; //下限
unsigned char SetFlag = 0;//设置标志
char dis0[16];//显示暂存
char dis1[16];//显示暂存
unsigned int tem; //暂存温度值
unsigned char DisFlag=FALSE; //显示更新
unsigned char ReadTempFlag=FALSE;//读取温度标志
void disPlayLcd(void);
void CheckKey(void);
void main( void )
{
IO_init();
// Uart0_init(9600);
TimerA(); //初始化定时器
TimerB();
// Init_WDT();
_EINT();
P5DIR |= (BIT6|BIT7); //初始化输出
P6DIR &= ~(BIT4|BIT5|BIT6|BIT7);//初始化输入
LcdReset(); //LCD1602初始化
OPEN_Buzzer; //开启蜂鸣器
OPEN_Relay;
delay_ms(200);
CLOSE_Buzzer; //关闭蜂鸣器
CLOSE_Relay;
sprintf(dis0,"NowTemp: %4.1f ",NowTemp);//更新显示
DispStr(0,0,(unsigned char *)dis0);//打印显示
Disp1Char(13,0,0xdf);//显示符号
Disp1Char(14,0,'C');
while(1)
{
CheckKey();//读取按键 并进行修改
if(ReadTempFlag==1)//读取温度标志
{
ReadTempFlag=0;
tem=ReadTemp(); //读取温度
}
if(DisFlag==1) //更新显示
{
DisFlag=0;
NowTemp=(float)tem*0.0625;//计算温度 根据手册来
sprintf(dis0,"NowTemp: %4.1f ",NowTemp);//更新显示
DispStr(0,0,(unsigned char *)dis0);//打印显示
Disp1Char(13,0,0xdf);//显示符号
Disp1Char(14,0,'C');
disPlayLcd();// 显示设置第二行数据
if((NowTemp<setD)||(NowTemp>setU))//对比上下限
{
OPEN_Buzzer; //开启蜂鸣器
}
else
{
CLOSE_Buzzer;//关断蜂鸣器
}
if(NowTemp<setD)//低于下限
{OPEN_Relay;}//开启开启继电器
else if(NowTemp>setU)//高于上限
{CLOSE_Relay;}//关断继电器
}
}
}