⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icebox.txt

📁 C++应用于液晶显示电冰箱温控器的源程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
DisplayOneChar(11,1,temp1/10+0x30);
DisplayOneChar(12,1,temp1%10+0x30);
DisplayOneChar(14,1,temp2+0x30);
//===================================
WriteCommandLCM(0x0f,1);//显示屏打开,光标显示、闪烁,检测忙信号
DisplayOneChar(6,0,min/10+0x30);
DisplayOneChar(7,0,min%10+0x30);
}
/***************************************/
void fun3(void)       //液晶显示子函数3
{
WriteCommandLCM(0x0c,1);//显示屏打开,光标不显示、不闪烁,检测忙信号
DisplayListChar(0,0,str0);
DisplayListChar(0,1,str1);
//=========================
DisplayOneChar(3,0,hour/10+0x30);
DisplayOneChar(4,0,hour%10+0x30);
//===============================
DisplayOneChar(6,0,min/10+0x30);
DisplayOneChar(7,0,min%10+0x30);
//=================================
DisplayOneChar(9,0,sec/10+0x30);
DisplayOneChar(10,0,sec%10+0x30);
//=================================
DisplayOneChar(11,1,temp1/10+0x30);
DisplayOneChar(12,1,temp1%10+0x30);
DisplayOneChar(14,1,temp2+0x30);
//=================================
WriteCommandLCM(0x0f,1);//显示屏打开,光标显示、闪烁,检测忙信号
DisplayOneChar(4,1,T/10+0x30);
DisplayOneChar(5,1,T%10+0x30);
}
/************************************/
void key(void)      //扫描键盘
{uchar xx;
P2=0xff;
 if(P2!=0xff)
 {delay(10);
  if(P2!=0xff)
  {xx=P2;
   switch(xx)
   {
   case 0xfe:set_adj();break;
   case 0xfd:inc_key();break;
   case 0xfb:dec_key();break;
   case 0xf7:ON_OFF=!ON_OFF;break;
   default:break;
   }
  }
 }
}
/************************************/
void set_adj(void)     //设定工作模式子函数
{
 if(cnt==5)
 {set++;
 if(set>=4)set=0;
 }
}
/***************************************/
void inc_key(void)     //按键加法子函数
{
 if(cnt==5)
 {
  switch(set)
  {
  case 0:if(P2==0xf7)ON_OFF=!ON_OFF;break;
  case 1:hour++;if(hour>=23)hour=23;break;
  case 2:min++;if(min>=59)min=59;break;
  case 3:T++;if(T>=99)T=99; break;
  default:break;
  }
 }
}
/***************************************/
void dec_key(void)      //按键减法子函数
{
 if(cnt==5)
 {
  switch(set)
  {
  case 0:if(P2==0xf7)ON_OFF=!ON_OFF;break;
  case 1:hour--;if(hour<=0)hour=0;break;
  case 2:min--;if(min<=0)min=0;break;
  case 3:T--;if(T<=1)T=1;break;
  default:break;
  }
 }
}
/***************************************/
/*****************************************/
void delay15us(void)      //延时15微秒子函数
{
uchar i;
for(i=0;i<4;i++);
}
//*************************************************
void delay60us(void)      延时60微秒子函数
{
uchar i;
for(i=0;i<15;i++);
}
//***************************************************
void write0TS(void)      //write bit0
{
TSOR=1;
TSOR=0;
delay15us();delay15us();delay15us();delay15us();
TSOR=1;
_nop_();
_nop_();
}
//********************************************************
void write1TS(void)     //write bit1
{
TSOR=1;
TSOR=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
TSOR=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
delay15us();delay15us();delay15us();
}
//******************************
bit readTS(void)      //read databit
{
bit b;
TSOR=1;
TSOR=0;
_nop_();_nop_();_nop_();_nop_();
TSOR=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
b=TSOR;
delay15us();delay15us();delay15us();
_nop_();_nop_();
return b;
}
//*************************************
void resetTS(void)      //reset databit
{uchar i;
TSOR=1;
TSOR=0;
for(i=0;i<8;i++)delay60us();
TSOR=1;
while(TSOR);
for(i=0;i<8;i++)delay60us();
}
//***************************************
void writeBTS(uchar byte)      //write one byte
{uchar i;
for(i=0;i<8;i++)
{
if(byte&0x01)
write1TS();
else
write0TS();
byte=byte>>1;
}
}
//****************************************
uchar readBTS(void)      //read one byte
{uchar i,j;
bit b;
j=0;
for(i=0;i<8;i++)
{
b=readTS();
if(b)j+=1;
j=_cror_(j,1);
}
return j;
}
//************************************************
void initTS(void)     //初始化DS18B20
{
resetTS();
writeBTS(0xcc);
writeBTS(0x4e);
writeBTS(0x64);
writeBTS(0x8a);
writeBTS(0x1f);
}
//******************************************************
void gettempTS(void)     //读取测得的环境温度
{
resetTS();
writeBTS(0xcc);
writeBTS(0x44);
delay(200);
resetTS();
writeBTS(0xcc);
writeBTS(0xbe);
temp2=readBTS();
temp1=readBTS();
readBTS();readBTS();readBTS();readBTS();
readBTS();readBTS();readBTS();
temp1=temp1<<4;
temp1+=(temp2&0xf0)>>4;
temp2=(temp2&0x0f)?5:0;
}

//********主函数*********
void main(void)
{
delay(500);                      //延时500ms,等电源稳定
InitLcd();                        //LCM初始化
init_timer0();
DisplayListChar(0,0,str0);
DisplayListChar(0,1,str1);
initTS();
reset()
for(;;)
{
//========================
switch(set)    //LCD根据工作模式进行显示
{
case 0:fun0();break;
case 1:fun1();break;
case 2:fun2();break;
case 3:fun3();break;
default:break;
}
delay(300);
gettempTS();    //读取测得的环境温度
if(ON_OFF==1)   //控制压缩机动作
{
 if(temp1>=T+1){delay(1000);
    if(temp1>=T+1){outflag=1;OUT=0;}
    }
 if(temp1<T){delay(1000);
   if(temp1<T){outflag=0;OUT=1;}
    }
}
else 
{outflag=0;OUT=1;}
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -