微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430G2553做DS18B20温度控制器

MSP430G2553做DS18B20温度控制器

时间:11-13 来源:互联网 点击:
//P2.5 继电器输出

#include"msp430g2553.h"

#include"LCD1602_4bit.h"

#include"DS18B20.H"

unsigned char temp_L,temp_H,temp_s,temp_s_flag,temp_s_H,temp_s_M,temp_s_L,temp;

unsigned char time_num;

unsigned char i1;

unsigned char table_1[]="Real:";

unsigned char table_2[]="set:";

unsigned char table_3[]="setting:";

unsigned char key3_flag;//,key1_flag,key2_flag;

void time0_int(void)

{

CCTL0 = CCIE; //CCTLx是捕获/比较控制寄存器

CCR0 = 40000;

TACTL = TASSEL_2+MC_1+ID_3;//增计数模式从0计到CCR0

}

void io_int(void)

{

P1DIR&=~BIT3;//输入

P1DIR&=~BIT4;//输入

P2DIR&=~BIT4;//输入

P2DIR|=BIT5;//输出

}

void key_scan(void)

{

if((P2IN&BIT4)==0)

{

delay_ms(15);

if((P2IN&BIT4)==0)

{

key3_flag++;

if(key3_flag==5)

{

key3_flag=0;

for(i1=0; i1<4; i1++)

{

LCD1602_4bit_CMD(0xc0+i1);

LCD1602_4bit_Data(table_2[i1]);

}

if(temp_s_flag==0)

{

LCD1602_4bit_CMD(0xc0+0x04);

LCD1602_4bit_Data(0x20);

}

else

{

LCD1602_4bit_CMD(0xc0+0x04);

LCD1602_4bit_Data(0x2d);

}

LCD1602_4bit_CMD(0xc0+0x05);

LCD1602_4bit_Data(0x30+temp_s_H);

LCD1602_4bit_CMD(0xc0+0x06);

LCD1602_4bit_Data(0x30+temp_s_M);

LCD1602_4bit_CMD(0xc0+0x07);

LCD1602_4bit_Data(0x30+temp_s_L);

for(i1=0; i1<5; i1++)

{

LCD1602_4bit_CMD(0xc8+i1);

LCD1602_4bit_Data(0x20);

}

}

if(key3_flag==1)

{

temp_s_flag=0;temp_s_H=0;temp_s_M=0;temp_s_L=0;

LCD1602_4bit_CMD(0xc0+0x09);

LCD1602_4bit_Data(0x20);

for(i1=0; i1<8; i1++)

{

LCD1602_4bit_CMD(0xc0+i1);

LCD1602_4bit_Data(table_3[i1]);

}

if(temp_s_flag==0)

{

LCD1602_4bit_CMD(0xc0+0x09);

LCD1602_4bit_Data(0x20);

}

else

{

LCD1602_4bit_CMD(0xc0+0x09);

LCD1602_4bit_Data(0x2d);

}

LCD1602_4bit_CMD(0xc0+0x0a);

LCD1602_4bit_Data(0x30+temp_s_H);

LCD1602_4bit_CMD(0xc0+0x0b);

LCD1602_4bit_Data(0x30+temp_s_M);

LCD1602_4bit_CMD(0xc0+0x0c);

LCD1602_4bit_Data(0x30+temp_s_L);

}

while((P2IN&BIT4)==0)

{}

}

}

if((P1IN&BIT3)==0)

{

delay_ms(15);

if((P1IN&BIT3)==0)

{

if(key3_flag==1)

{

LCD1602_4bit_CMD(0xc0+0x09);

LCD1602_4bit_Data(0x20);//空格

temp_s_flag=0;//表示正温度

}

if(key3_flag==2)

{

temp_s_H++;

if(temp_s_H==2)

{

temp_s_H=0;

}

if(temp_s_flag==1)

{

temp_s_H=0;

}

LCD1602_4bit_CMD(0xc0+0x0a);

LCD1602_4bit_Data(0x30+temp_s_H);

}

if(key3_flag==3)

{

temp_s_M++;

if(temp_s_M==10)

{

temp_s_M=0;

}

if(temp_s_flag==0&&temp_s_H==1&&(temp_s_M>2))

{

temp_s_M=0;

}

if(temp_s_flag==1&&(temp_s_M>5))

{

temp_s_M=0;

}

LCD1602_4bit_CMD(0xc0+0x0b);

LCD1602_4bit_Data(0x30+temp_s_M);

}

if(key3_flag==4)

{

temp_s_L++;

if(temp_s_L==10)

{

temp_s_L=0;

}

if(temp_s_flag==0&&temp_s_H==1&&temp_s_M==2&&(temp_s_L>5))

{

temp_s_L=0;

}

if(temp_s_flag==1&&temp_s_M==5&&(temp_s_L>5))

{

temp_s_L=0;

}

LCD1602_4bit_CMD(0xc0+0x0c);

LCD1602_4bit_Data(0x30+temp_s_L);

}

while((P1IN&BIT3)==0)

{}

}

}

if((P1IN&BIT4)==0)

{

delay_ms(15);

if((P1IN&BIT4)==0)

{

if(key3_flag==1)

{

LCD1602_4bit_CMD(0xc0+0x09);

LCD1602_4bit_Data(0x2d);

temp_s_flag=1;//表示负温度

}

if(key3_flag==2)

{

temp_s_H--;

if(temp_s_H==255)

{

temp_s_H=1;

}

if(temp_s_flag==1)

{

temp_s_H=0;

}

LCD1602_4bit_CMD(0xc0+0x0a);

LCD1602_4bit_Data(0x30+temp_s_H);

}

if(key3_flag==3)

{

temp_s_M--;

if(temp_s_M==255)

{

temp_s_M=9;

}

if(temp_s_flag==0&&temp_s_H==1&&(temp_s_M>2))

{

temp_s_M=2;

}

if(temp_s_flag==1&&(temp_s_M>5))

{

temp_s_M=5;

}

LCD1602_4bit_CMD(0xc0+0x0b);

LCD1602_4bit_Data(0x30+temp_s_M);

}

if(key3_flag==4)

{

temp_s_L--;

if(temp_s_L==255)

{

temp_s_L=9;

}

if(temp_s_flag==0&&temp_s_H==1&&temp_s_M==2&&(temp_s_L>5))

{

temp

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top