452 基于MSP430恒温箱热水器温度计加热控制系统( AD原理图 程序代码 论文报告 )

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;}//关断继电器
      
    }
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值