📄 common.c
字号:
#include <head.h> // SFR declarations
void DisplayAll(void)
{
write_chinese(0,0,0x10,kong);
write_chinese(15,0,0x10,qi);
write_chinese(30,0,0x10,nong);
write_chinese(46,0,0x10,du);
write_chinese(62,0,0x10,kong);
write_chinese(77,0,0x10,qi);
write_chinese(92,0,0x10,nong);
write_chinese(107,0,0x10,du);
clear_screen(4);
write_chinese(0,0,0x10,wen);
write_chinese(0x0f,0,0x10,du);
write_chinese(0x3a,0,0x10,nong);
write_chinese(0x4a,0,0x10,du);
write_chinese(0,2,0x10,shi);
write_chinese(0x0f,2,0x10,du);
}
void DisplayNongdu(float value)
{
// unsigned char Nd100,Nd10;
unsigned char x,y,i;
unsigned int temp;
// Nudu100,Nudu10,Nudu1
temp = value*100;
x = 0x3a;
y = 0;
write_chinese(x,y,0x10,nong);
write_chinese(x+0x10,y,0x10,du);
Nudu100 = 0;
i = 4;
while(temp >= 100)
{
Nudu100++;
temp = temp - 100;
}
write_chinese(x+(i++)*0x08,y,0x08,number(Nudu100));
write_chinese(x+(i++)*0x08,y,0x08,dot);
Nudu10 = 0;
while(temp >= 10)
{
Nudu10++;
temp = temp - 10;
}
Nudu1 = temp;
write_chinese(x+(i++)*0x08,y,0x08,number(Nudu10));
write_chinese(x+(i++)*0x08,y,0x08,number(Nudu1));
}
unsigned char CalHumidity(unsigned int Count)
{
unsigned char temp;
if(Count >= 7351) return(0);
else if(Count >= 6728)
{
temp = (7351 - Count) * LOW50;
}
else if(Count >= 6186)
{
temp = 50 + (6728 - Count) * HIGH40;
}
else if(Count > 6033)
{
temp = 90 + (6186 - Count) * MAX10;
}
else
temp = 100;
return(temp);
}
float CalTemp(unsigned int Count)
{
float temp;
temp = Count*TempPara - 271.6667 - XIUZHENG;
return(temp);
}
void DisplayHumidity()
{
// unsigned char d10;
// Shidu10,Shidu1;
unsigned char x,y,i;
unsigned char temp;
temp = CalHumidity(HumidityFreq);
x = 0;
y = 2;
i = 2;
write_chinese(x,y,0x10,shi);
write_chinese(x+i*0x08-1,y,0x10,du);
i = 4;
Shidu10 = 0;
while(temp >= 10)
{
Shidu10++;
temp = temp - 10;
}
Shidu1 = temp;
write_chinese(x+(i++)*0x08-3,y,0x08,number(Shidu10));
write_chinese(x+(i++)*0x08-4,y,0x08,number(Shidu1));
write_chinese(x+(i++)*0x08-5,y,0x08,baifenhao);
}
void DisplayTemp()
{
// unsigned char d10;
//Wendu10,Wendu1
unsigned char x,y,i;
unsigned char temp;
temp = CalTemp(TempValue);
x = 0;
y = 0;
i = 2;
write_chinese(x,y,0x10,wen);
write_chinese(x+i*0x08-1,y,0x10,du);
i = 4;
Wendu10 = 0;
while(temp >= 10)
{
Wendu10++;
temp = temp - 10;
}
Wendu1 = temp;
write_chinese(x+(i++)*0x08-2,y,0x08,number(Wendu10));
write_chinese(x+(i++)*0x08-3,y,0x08,number(Wendu1));
write_chinese(x+(i++)*0x08-4,y,0x0e,sheshidu);
}
void TestProm(void)
{
unsigned char i;
if(ZEROFLAG==0)
{
ZeroCount = 0;
for(i=0;i<3;i++)
ZeroCount += TestLight();
ZeroCount /= 3;
ZEROFLAG = 1;
DisplayNongdu(0);
}
if(READFLAG==0)
{
ReadCount = 0;
for(i=0;i<3;i++)
ReadCount += TestLight();
ReadCount /= 3;
READFLAG = 1;
TestValue = formula(ReadCount,ZeroCount);
if(TestValue > 0.109999) JQOverFlag = 1;
else JQOverFlag = 0;
DisplayNongdu(TestValue);
}
{
HumidityCount++;
HumidityFreq += TestHumidity();
if(HumidityCount >= 10)
{
HumidityCount = 0;
DisplayHumidity();
HumidityFreq = 0;
}
}
{
TempCount++;
TempValue += Adc0_sample();
if(TempCount >= 10)
{
TempCount = 0;
DisplayTemp();
TempValue = 0;
}
}
}
unsigned int TestLight(void)
{
unsigned int temp;
TR1 = 0;
LED = 0; // led on
TH1 = 0;
TL1 = 0;
TR1 = 1;
TMR3H = 0x3C; // Timer 3 High Byte
TMR3L = 0xB0; // Timer 3 Low Byte
TMR3CN = 0x04; // Timer 3 Control Register
ENABLE = 1; // enable
while(!(TMR3CN & 0x80));
TMR3CN = 0x04;
while(!(TMR3CN & 0x80));
TMR3CN = 0x00;
LED = 1; // led off
ENABLE = 0; // disable
TR1 = 0;
temp = TH1*256 + TL1;
return(temp);
}
unsigned int TestHumidity(void)
{
unsigned int temp;
TR0 = 0;
TH0 = 0;
TL0 = 0;
TR0 = 1;
TMR3H = 0x3C; // Timer 3 High Byte
TMR3L = 0xB0; // Timer 3 Low Byte
TMR3CN = 0x04; // Timer 3 Control Register
while(!(TMR3CN & 0x80));
TMR3CN = 0x04;
while(!(TMR3CN & 0x80));
TMR3CN = 0x00;
TR0 = 0;
temp = TH0*256 + TL0;
return(temp);
}
unsigned int Adc0_sample(void)
{
// ADC0CN |= AD0BUSY; // Start Conversion
// AMX0CF = 0x00; // AMUX Configuration Register
AD0BUSY = 1;
while(!AD0INT); // Wait Conversion is over
AD0INT = 0; // Clear flag
// POWERMEAR
return ADC0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -