📄 main.c
字号:
#include "U873.H"
#include "LCD.H"
#include "Dis.h"
#include "define.h"
void Show_Warn();
void Show_Liangcheng();
void Show_Time();
void INI()
{
INTCON = 0;
Zero = ReadEEPROM(E_Zero);
if(Zero==0xff)
{
Zero = 0;
WriteEEPROM(Zero,E_Zero);
}
Biaoding.Char[0] = ReadEEPROM(E_BiaodingL);
Biaoding.Char[1] = ReadEEPROM(E_BiaodingH);
if(Biaoding.Int ==0xffff)
{
Biaoding.Int = 490; //默认1.2v ETO:20ppm. 10ppm to warn
WriteEEPROM(Biaoding.Char[0],E_BiaodingL);
WriteEEPROM(Biaoding.Char[1],E_BiaodingH);
}
WarnPoint = ReadEEPROM(E_WarnPoint);
Liangcheng = ReadEEPROM(E_Liangcheng);
if(Liangcheng == 0xff)
Liangcheng = 20;
if(WarnPoint == 0xff)
WarnPoint = (Liangcheng-Zero)>>1; //ETO:默认10ppm
Danwei = ReadEEPROM(E_Danwei);
ShutFlag = 0;
timeCount = 0;
ini_time = INITime; //
ErrorFlag = 0;
WarnFlag = 0;
ADFlag = 0;
ShowFlag=0;
nongdu=0;
PowerLowFlag = 0;
MENU_Flag = 0;
SonMenuFlag = 0;
time_Menu_Flag=0;
RBPU = 0; //pull up on
TRISB = 0B11100001; //KeyIn, Contrl Output,YK Input.
TRISA = 0b11011011; //RA2,RA5 to Contrl.RA4 to test Power.AN0 for Input.
TRISC = 0b00000000; //Data Output.
ADCON1 = 0x05; //D-D-D-D-V-D-A-A
PR2 = 199; //TMR2
T2CON = 0b01001101; //8ms
TMR2IE = 1;
PEIE = 1;
GIE = 1;
}
void main()
{
//char i=0;
INI();
DATA = 0x01; //clear screen
Enable();
DATA = 0x01; //clear screen
Enable();
DATA = 0x38; //
Enable();
DATA = 0x0f; //0000 1 D C B D:开显示,C:显示光标,B:光标闪烁
Enable();
DATA = 0x06; //00000 1 N S N:地址指针加(1)/减(0)一 ||| S:S=1,整屏左移(N=1)/右移(N=0);S=0,屏幕不移动
Enable();
while(1)
{
ADi = Adresult_Vol.Int;
if(ADi<Zero)
ADi = Zero;
//AD=500;
nongdu = Zero*10+(uint)((float)(ADi-Zero)/(float)(Biaoding.Int-Zero)*(float)Liangcheng*10.0); //50.0 = 500
ADi = Adresult_Power.Int;
dianya =(uint)(Volage*1024.0/(float)ADi); //3.7v = 370
if(ini_time==0)
{
if(nongdu>Liangcheng*10)
{
if(!MENU_Flag)
ErrorFlag = 1;
}
else if(nongdu>=WarnPoint*10)
{
ErrorFlag = 0;
WarnFlag = 1;
}
else
{
ErrorFlag = 0;
WarnFlag = 0;
}
if(dianya<340)
{
PowerLowFlag = 1;
if(dianya<330)
goto xx;
}
else
PowerLowFlag = 0;
}
if(!Key_Menu)
KEYCOUNT=0;
else
{
KEYCOUNT++;
{
if(KEYCOUNT>10)
{
KEYCOUNT=0;
if(MENU_Flag)
{
MENU_Flag = 0;
SonMenuFlag = 0;
ShowFlag=0;
UPDOWN = 0;
Secret=0;
}
else //shutdown
{
xx: Ctrl_Bell_Off;
Ctrl_Shake_Off;
BL_LightOff;
ShutFlag = 1;
//TMR2IE=0;
DATA=0x01;
Enable();
DATA=0x08;
Enable();
while(1)
{
if(POWERIN)
{
delayI(5000);
if(POWERIN)
{
DATA = 0x0f;
Enable();
PowerFlag=1;
}
else PowerFlag = 0;
}
else
{
DATA = 0x08;
Enable();
PowerFlag = 0;
}
if(Key_Menu)
{
delayI(50000);
KEYCOUNT++;
}
else
KEYCOUNT=0;
if(KEYCOUNT>2)
{
TRISB0=0; //硬复位;
RB0=0;
}
}
}
}
}
time_Return=0;
time_Light_Count=0;
delayI(12000);
if(Key_Menu)
{
if(++ShowFlag>=5)
ShowFlag=0;
if(Secret==0)
Secret=1;
if(MENU_Flag)
{
if(SonMenuFlag==0)
SonMenuFlag=1;
else
{
if(UPDOWN!=2)
SonMenuFlag = 0;
switch(UPDOWN)
{
case 1:
WriteEEPROM(WarnPoint,E_WarnPoint);
break;
case 2: //time
time_Menu_Flag++;
if(time_Menu_Flag>6)
{
SonMenuFlag=0;
time_Menu_Flag=0;
}
else
SonMenuFlag=1;
break;
case 3: //zeroPoint
Zero = Adresult_Vol.Int;
WriteEEPROM(Zero,E_Zero);
break;
case 4: //biaoding
Biaoding.Int = Adresult_Vol.Int;
if(Biaoding.Int<500)
Biaoding.Int = 500;
WriteEEPROM(Biaoding.Char[0],E_BiaodingL);
WriteEEPROM(Biaoding.Char[1],E_BiaodingH);
break;
case 5: //danwei
WriteEEPROM(Danwei,E_Danwei);
break;
case 6: //liangcheng
WriteEEPROM(Liangcheng,E_Liangcheng);
break;
}
}
}
}
}
if(Key_Up)
{
time_Return=0;
time_Light_Count=0;
delayI(12000);
if(Key_Up)
{
if(Secret==1||Secret==3||Secret==5||Secret==6 )
Secret++;
else if(Secret!=9)
Secret=0;
if(MENU_Flag)
{
if(!SonMenuFlag)
{
if(UPDOWN>1)
UPDOWN--;
}
else //子菜单
{
switch(UPDOWN)
{
case 1:
if(WarnPoint<Liangcheng)
WarnPoint++;
break;
case 2: //time
if(time_Menu_Flag==1)
{
Time_Year++;
}
else if(time_Menu_Flag==2)
{
Time_Month++;
if(Time_Month>12)
Time_Month=1;
}
else if(time_Menu_Flag==3)
{
Time_Day++;
if(Time_Month==1||Time_Month==3||Time_Month==5||Time_Month==7||Time_Month==8||Time_Month==10||Time_Month==12)
{
if(Time_Day>31)
Time_Day=1;
}
else if(Time_Month==4||Time_Month==6||Time_Month==9||Time_Month==11)
{
if(Time_Day>30)
Time_Day=1;
}
else if(Time_Month==2)
{
if(Time_Year%400==0||(Time_Year%4==0&&Time_Year%100!=0))
{
if(Time_Day>29)
Time_Day=1;
}
else
{
if(Time_Day>28)
Time_Day=1;
}
}
}
else if(time_Menu_Flag==4)
{
Time_Hour++;
if(Time_Hour>=24)
Time_Hour=0;
}
else if(time_Menu_Flag==5)
{
Time_Min++;
if(Time_Min>=60)
Time_Min=0;
}
else if(time_Menu_Flag==6)
{
Time_Second++;
if(Time_Second>=60)
Time_Second=0;
}
break;
case 5: //danwei
if(Danwei==DW_LEL)
Danwei=DW_PPM;
else if(Danwei==DW_PPM)
Danwei=DW_VOL;
else
Danwei = DW_LEL;
break;
case 6: //liangcheng
Liangcheng++;
break;
default:
break;
}
}
}
}
}
if(Key_Down)
{
time_Return=0;
time_Light_Count=0;
delayI(12000);
if(Key_Down)
{
if(Secret==2||Secret==4||Secret==7||Secret==8)
Secret++;
else if(Secret==9) //进入菜单设置
{
MENU_Flag = 1;
ErrorFlag = 0;
}
else Secret=0;
if(MENU_Flag)
{
if(!SonMenuFlag)
{
if(UPDOWN<6)
UPDOWN++;
}
else //子菜单
{
switch(UPDOWN)
{
case 1:
if(WarnPoint>Zero)
WarnPoint--;
break;
case 2: //time
if(time_Menu_Flag==1)
{
Time_Year--;
if(Time_Year<8)
Time_Year=8;
}
else if(time_Menu_Flag==2)
{
Time_Month--;
if(Time_Month==0)
Time_Month=12;
}
else if(time_Menu_Flag==3)
{
Time_Day--;
if(Time_Day==0)
{
if(Time_Month==1||Time_Month==3||Time_Month==5||Time_Month==7||Time_Month==8||Time_Month==10||Time_Month==12)
{
Time_Day=31;
}
else if(Time_Month==4||Time_Month==6||Time_Month==9||Time_Month==11)
{
Time_Day=30;
}
else if(Time_Month==2)
{
if(Time_Year%400==0||(Time_Year%4==0&&Time_Year%100!=0))
{
Time_Day=29;
}
else
{
Time_Day=28;
}
}
}
}
if(time_Menu_Flag==4)
{
if(Time_Hour>0)
Time_Hour--;
else
Time_Hour=23;
}
else if(time_Menu_Flag==5)
{
if(Time_Min>0)
Time_Min--;
else
Time_Min=59;
}
else if(time_Menu_Flag==6)
{
if(Time_Second>0)
Time_Second--;
else
Time_Second=59;
}
break;
case 5: //danwei
if(Danwei==DW_LEL)
Danwei=DW_VOL;
else if(Danwei==DW_VOL)
Danwei=DW_PPM;
else
Danwei = DW_LEL;
break;
case 6: //liangcheng
if(Liangcheng>Zero)
Liangcheng--;
break;
default:
break;
}
}
}
}
}
if(POWERIN)
{
delayI(5000);
if(POWERIN)
{
PowerFlag=1;
}
else PowerFlag = 0;
}
else PowerFlag = 0;
}
}
void interrupt INT()
{
uchar i;
if(TMR2IF)
{
TMR2IF = 0;
if(ShutFlag)
{
if(++timeCount>=125)
{
timeCount=0;
if(++Time_Second>=60)
{
Time_Second=0;
if(++Time_Min>=60)
{
Time_Min = 0;
if(++Time_Hour>=24)
Time_Hour=0;
}
}
if(PowerFlag)
if(++PowerInCount>=5)
PowerInCount=0;
}
if(PowerFlag)
{
DATA = 0x01;
Enable();
DATA = Addr_LCD_Top;
Enable();
for(i=0;i<8;i++)
{
WriteLCD(TOP_PowerInput[i]);
}
DATA = Addr_LCD_Bottom+2;
Enable();
for(i=0;i<PowerInCount;i++)
WriteLCD('.');
DATA = Addr_LCD_Bottom+8;
Enable();
}
else
{
DATA = 0x01;
Enable();
}
}
else
{
if(++timeCount>=125) //处理显示
{
timeCount = 0;
if(ini_time!=0) //初始化过程计数显示
{
ini_time--;
ShowFlag=0;
DATA = Addr_LCD_Top; //
Enable();
for(i=0;i<8;i++)
{
Top[i] = TOP_INIT[i];
WriteLCD(Top[i]);
}
for(i=0;i<8;i++)
Bottom[i]=' ';
Bottom[3]=0x30+ini_time/10;
Bottom[4]=0x30+ini_time%10;
DATA = Addr_LCD_Bottom;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -