📄 main.c
字号:
sysData[MIN]=0;
break;
case 5:BCDpp(&sysData[SEC]);
if(sysData[SEC]>0x59)
sysData[SEC]=0;
break;
case 6:BCDpp(&sysData[DAY]);
if(sysData[DAY]>0x07)
sysData[DAY]=1;
break;
case 7:tempLimit++;break;
case 8:humiLimit++;break;
default:break;
}
}
if(flagDec)
{
flagDec=0;
blinkCount=0;
switch(flagOpt)
{
case 0:BCDmm(&sysData[YEAR]);
if(sysData[YEAR]==0xf9)
sysData[YEAR]=0x99;
break;
case 1:BCDmm(&sysData[MON]);
if(sysData[MON]<1)
sysData[MON]=0x12;
break;
case 2:BCDmm(&sysData[DATE]);
if(sysData[DATE]<1)
sysData[DATE]=MonSheet[CheckLeapyear(sysData[YEAR])][sysData[MON]];
break;
case 3:BCDmm(&sysData[HOUR]);
if(sysData[HOUR]==0xf9)
sysData[HOUR]=0x23;
break;
case 4:BCDmm(&sysData[MIN]);
if(sysData[MIN]==0xf9)
sysData[MIN]=0x59;
break;
case 5:BCDmm(&sysData[SEC]);
if(sysData[SEC]==0xf9)
sysData[SEC]=0x59;
break;
case 6:BCDmm(&sysData[DAY]);
if(sysData[DAY]<1)
sysData[DAY]=0x07;
break;
case 7:tempLimit--;break;
case 8:humiLimit--;break;
default:break;
}
}
Set1302(sysData);
}
/********************************************************************
函数名称:ShowMonitorData()
功 能:显示年月日时分秒和监测数据
入口参数:无
返回参数:无
********************************************************************/
void ShowMonitorData()
{
Display12864(ADDR_LINE1+1,"20");
if(R1302(ADDR_YEAR)!=sysData[YEAR])
{
sysData[YEAR]=R1302(ADDR_YEAR);
DisplayYear();
}
if(R1302(ADDR_MON)!=sysData[MON])
{
sysData[MON]=R1302(ADDR_MON);
DisplayMon();
}
if(R1302(ADDR_DATE)!=sysData[DATE])
{
sysData[DATE]=R1302(ADDR_DATE);
DisplayDate();
}
if(R1302(ADDR_DAY)!=sysData[DAY])
{
sysData[DAY]=R1302(ADDR_DAY);
DisplayDay();
}
if(R1302(ADDR_HOUR)!=sysData[HOUR])
{
sysData[HOUR]=R1302(ADDR_HOUR);
DisplayHour();
}
if(R1302(ADDR_MIN)!=sysData[MIN])
{
sysData[MIN]=R1302(ADDR_MIN);
DisplayMin();
}
if(R1302(ADDR_SEC)!=sysData[SEC])
{
sysData[SEC]=R1302(ADDR_SEC);
DisplaySec();
}
if(SHTcount%256==0) //执行256次程序读取SHT10一次,防止传感器过热
{
GetSHT10(&tempf,&humif);
sprintf(temps,"%.1f",tempf);
sprintf(humis,"%.1f",humif);
Display12864(POS_TEMP,temps);
Display12864(POS_HUMI,humis);
}
}
/********************************************************************
函数名称:ShowSettingsData()
功 能:显示设置的数据
入口参数:无
返回参数:无
********************************************************************/
void ShowSettingsData()
{
sprintf(temps,"%.1f",tempLimit);
sprintf(humis,"%.1f",humiLimit);
switch(flagOpt)
{
case 0:
if(blinkCount%128<64)
{
Display12864(ADDR_LINE1+1,"20");
DisplayYear();
blinkCount++;
}
else
{
Display12864(ADDR_LINE1+1," ");
blinkCount++;
}
DisplayMon();
DisplayDate();
DisplayHour();
DisplayMin();
DisplaySec();
sysData[DAY]=GetDay(sysData[YEAR],sysData[MON],sysData[DATE]);
DisplayDay();
Display12864(POS_TEMP,temps);
Display12864(POS_HUMI,humis);
break;
case 1:
if(blinkCount%128<64)
{
DisplayMon();
blinkCount++;
}
else
{
Display12864(POS_MON," ");
blinkCount++;
}
Display12864(ADDR_LINE1+1,"20");
DisplayYear();
if(sysData[DATE]>MonSheet[CheckLeapyear(sysData[YEAR])][sysData[MON]])
sysData[DATE]=MonSheet[CheckLeapyear(sysData[YEAR])][sysData[MON]];
DisplayDate();
DisplayHour();
DisplayMin();
DisplaySec();
sysData[DAY]=GetDay(sysData[YEAR],sysData[MON],sysData[DATE]);
DisplayDay();
Display12864(POS_TEMP,temps);
Display12864(POS_HUMI,humis);
break;
case 2:
if(blinkCount%128<64)
{
DisplayDate();
blinkCount++;
}
else
{
Display12864(ADDR_LINE1+6," ");
blinkCount++;
}
Display12864(ADDR_LINE1+1,"20");
DisplayYear();
DisplayMon();
DisplayHour();
DisplayMin();
DisplaySec();
sysData[DAY]=GetDay(sysData[YEAR],sysData[MON],sysData[DATE]);
DisplayDay();
Display12864(POS_TEMP,temps);
Display12864(POS_HUMI,humis);
break;
case 3:
if(blinkCount%128<64)
{
DisplayHour();
blinkCount++;
}
else
{
Display12864(POS_HOUR," ");
blinkCount++;
}
Display12864(ADDR_LINE1+1,"20");
DisplayYear();
DisplayMon();
DisplayDate();
DisplayMin();
DisplaySec();
DisplayDay();
Display12864(POS_TEMP,temps);
Display12864(POS_HUMI,humis);
break;
case 4:
if(blinkCount%128<64)
{
DisplayMin();
blinkCount++;
}
else
{
Display12864(POS_MIN ,": :");
blinkCount++;
}
Display12864(ADDR_LINE1+1,"20");
DisplayYear();
DisplayMon();
DisplayDate();
DisplayHour();
DisplaySec();
break;
case 5:
if(blinkCount%128<64)
{
DisplaySec();
blinkCount++;
}
else
{
Display12864(POS_SEC," ");
blinkCount++;
}
Display12864(ADDR_LINE1+1,"20");
DisplayYear();
DisplayMon();
DisplayDate();
DisplayHour();
DisplayMin();
DisplayDay();
Display12864(POS_TEMP,temps);
Display12864(POS_HUMI,humis);
break;
case 6:
if(blinkCount%128<64)
{
DisplayDay();
blinkCount++;
}
else
{
Display12864(POS_DAY," ");
blinkCount++;
}
Display12864(ADDR_LINE1+1,"20");
DisplayYear();
DisplayMon();
DisplayDate();
DisplayHour();
DisplayMin();
DisplaySec();
Display12864(POS_TEMP,temps);
Display12864(POS_HUMI,humis);
break;
case 7:
if(blinkCount%128<64)
{
Display12864(POS_TEMP,temps);
blinkCount++;
}
else
{
Display12864(POS_TEMP," ");
blinkCount++;
}
Display12864(ADDR_LINE1+1,"20");
DisplayYear();
DisplayMon();
DisplayDate();
DisplayHour();
DisplayMin();
DisplaySec();
DisplayDay();
Display12864(POS_HUMI,humis);
break;
case 8:
if(blinkCount%128<64)
{
Display12864(POS_HUMI,humis);
blinkCount++;
}
else
{
Display12864(POS_HUMI," ");
blinkCount++;
}
Display12864(ADDR_LINE1+1,"20");
DisplayYear();
DisplayMon();
DisplayDate();
DisplayHour();
DisplayMin();
DisplaySec();
DisplayDay();
Display12864(POS_TEMP,temps);
break;
default:break;
}
}
/********************************************************************
函数名称:ShowData()
功 能:显示DS1302和SHT10的数据
入口参数:无
返回参数:无
********************************************************************/
void ShowData()
{
if(flagSettings==0)
{
ShowMonitorData();
}
if(flagSettings==1)
{
ShowSettingsData();
}
}
/********************************************************************
函数名称: SystemInit
功 能:系统初始化
入口参数:无
返回参数:无
********************************************************************/
void SystemInit()
{
TMOD=0x11;
EA=1;
ET0=1;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ConnectionResetSHT10();
if(R1302(0xC1)!=0x55)
{
W1302(0x8e,0x00);
W1302(0xC0,0x55);
W1302(0x8e,0x80);
Set1302(sysData);
}
LcdInit();
LcdClear();
}
/********************************************************************
函数名称: main
功 能:主函数
入口参数:无
返回参数:无
********************************************************************/
void main()
{
SystemInit();
DisplayFrame();
while(1)
{
keyscan();
if(flagSettings==0)
{
if(pFlagSettings==1)
DisplayFrame();
ShowData();
CheckLimit(&tempf,&humif);
SHTcount++;
}
if(flagSettings==1)
{
Display12864(ADDR_LINE1,"*");
if(pFlagSettings==0)
DisplayFrame();
ShowData();
SystemSettings();
}
pFlagSettings=flagSettings;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -