新闻中心

EEPW首页>嵌入式系统>设计应用> DS18b20与1602搭配,还带高低温(可调)报警

DS18b20与1602搭配,还带高低温(可调)报警

作者: 时间:2016-12-02 来源:网络 收藏

/*******************************************************************/
void ds1820disp()//温度值显示
{ uchar flagdat;
disdata[0]=tvalue/1000+0x30;//百位数
disdata[1]=tvalue%1000/100+0x30;//十位数
disdata[2]=tvalue%100/10+0x30;//个位数
disdata[3]=tvalue%10+0x30;//小数位

if(tflag==0)
flagdat=0x20;//正温度不显示符号
else
flagdat=0x2d;//负温度显示负号:-
if(disdata[0]==0x30)
{disdata[0]=0x20;//如果百位为0,不显示
if(disdata[1]==0x30)
{disdata[1]=0x20;//如果百位为0,十位为0也不显示
}
}
wr_com(0xc0);
wr_dat(flagdat);//显示符号位
wr_com(0xc1);
wr_dat(disdata[0]);//显示百位
wr_com(0xc2);
wr_dat(disdata[1]);//显示十位
wr_com(0xc3);
wr_dat(disdata[2]);//显示个位
wr_com(0xc4);
wr_dat(0x2e);//显示小数点
wr_com(0xc5);
wr_dat(disdata[3]);//显示小数位
wr_com(0x80+0x40+7);
wr_dat(0xdf); //写入摄氏度的小圈
wr_com(0x80+0x40+8);//写入摄氏度的C
wr_dat(C);
}

本文引用地址://m.amcfsurvey.com/article/201612/324682.htm

/*功能按键扫描函数*/
void keyscan()//按键扫描函数 ,如果有按键按下,按照按下的功能键执行相应功能
{
if(s1==0)
{
delay1ms(5);
if(s1==0)
{
s1num++;
while(!s1);//松手检测

if(s1num==1) //
{
wr_com(0x80+13);
wr_com(0x0f);//光标开始闪
}

if(s1num==2)//被按两下,
{
wr_com(0x80+5);
wr_com(0x0f);//光标开始闪
}
if(s1num==3)//被按三下
{
s1num=0;

wr_com(0x0c);//开显示,光标不显示
}


}

}
if(s1num!=0)
{
if(s2==0)
{
delay1ms(5);
while(!s2);
if(s1num==1)
{
Tl++;
wr_Tl(12,Tl);//
wr_com(0x80+13);//因为每次写入指
针自动加一,所以将批针前移一位
}
if(s1num==2)
{
Th++;
wr_Th(4,Th);
wr_com(0x80+5);
}
}

if(s3==0)
{
delay1ms(5);
while(!s3);
if(s1num==1)
{
Tl--;
wr_Tl(12,Tl);
wr_com(0x80+13);
}

if(s1num==2)
{
Th--;
wr_Th(4,Th);
wr_com(0x80+5);
}
}

}
}

void exter0()interrupt 0
{
BEEP=1;
keyscan();
}

/********************主程序***********************************/

void main()
{
gnd=0;
init_play();//初始化显示
EA=1;//开总中断
EX0=1;//开外中部断0
IT0=0;//设定中断触发方式。IT0=0是电平触发方式。IT0=1是下降沿触发方式。12脚当中断源

while(1)

{

read_temp();//读取温度

ds1820disp();//显示

if((tvalue/10)>=Th||(tvalue/10)<=Tl)
{
delay1ms(2000);
//BEEP=0;
}
else
BEEP=1;

}
}


上一页 1 2 下一页

关键词:DS18b201602高低

评论


技术专区

关闭