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

📄 common.c

📁 好东西与大家分享……关于单片机驱动微型打印机和液晶屏的程序!!已经测试过!绝对没有问题
💻 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 + -