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

📄 allwindow.c

📁 液晶程序液晶程序液晶程序液晶程序液晶程序液晶程序
💻 C
字号:
#include<reg52.h>
//----------------------------------------------
//宏定义
#define   KEY_ENTER      0x01
#define   KEY_MOVE       0x02
#define   KEY_DOWN       0x03
#define   KEY_UP         0x04
#define   KEY_SET        0x05
#define   KEY_ESC        0x06
//----------------------------------------------------

//外部变量声明
extern unsigned char xdata KEY_BUF;
extern unsigned char xdata XPOS;//XPOS为0~7
extern unsigned char xdata YPOS;//YPOS为0~127
extern bit FB_FLAG;
//-------------------------------------------------------

//外部函数声明
void putstr(unsigned int *STR);
void clearscreen();
void putchar(unsigned int singlecharnum);
//--------------------------------------------------------------
void can_common();
//--------------------------------------------------------------

//外部变量定义
unsigned int xdata Ia,Ib,Ic,Vab,Vbc,Vca,PF;//各电压电流全局变量
bit PHASE_FLAG=0;//相位标志位,0为正1为负
bit DISP_ENTER_FLAG=0;//是否进入电压电流显示界面
unsigned int xdata bit1,bit2,bit3,bit4;//计算数得到的4位
//unsigned int xdata fignum[]={0x000A,0x000A,0x000A,0x000A,0x000A,0x00ff};
//unsigned char xdata j; 
//-----------------------------------------------------------

//字符串定义
unsigned int code TITLE_VOL[]={0x800f,0x8059,0x00ff};//电压
unsigned int code TITLE_CUR[]={0x800f,0x805a,0x00ff};//电流
unsigned int code TITLE_PF[] = {0x801a,0x805d,0x805e,0x801f,0x00ff};//功率因数
//------------------------------------------------------------------------------

//得到各个位,最高bit4,bit3,bit2,bit1;
void getfigurebit(unsigned int para)
{
	if(para > 1000 )
	{
		bit1 = para%10;
		bit2 = ((para-bit1)/10)%10;
		bit4 = para/1000;
		bit3 = (para-1000*bit4)/100;
	}
	else if(99 < para && para <= 999)
	{
		bit1 = para%10;
		bit2 = ((para-bit1)/10)%10;
		bit3 = para/100;
	}
	else if(9 < para && para <= 99)
	{
		bit1 = para%10;
		bit2 = para/10;
	}
	else if(0 <= para && para <= 9)
	{
		bit1 = para;
	}
}
//----------------------------------------------------------------------------

//写入0000型电压数据
void display_vol(unsigned int para)
{
	unsigned int data volstr[5]={0x005c,0x005c,0x005c,0x005c,0x00ff};
	if(999<para&&para<=9999)
		volstr[0]=bit4;
	if(para>99)
		volstr[1]=bit3;
	if(para>9)
		volstr[2]=bit2;
		volstr[3]=bit1;
	putstr(volstr);
}
//---------------------------------------------------------------------  

void display_dat(unsigned int para)
{
	if(para > 1000)
	{
		unsigned int data datstr[6] = {0x005c,0x005c,0x005c,0x005c,0x005c,0x00ff};
		datstr[0] = bit4;//百位
		datstr[1] = bit3;//十位
		datstr[2] = bit2;//个位
		datstr[3] = 0x005b;//小数点
		datstr[4] = bit4;//小数位

		putstr(datstr);
	}
	if(99 < para && para <= 999)
	{
		unsigned int data datstr[5] = {0x005c,0x005c,0x005c,0x005c,0x00ff};
		datstr[0] = bit3;//十位
		datstr[1] = bit2;//个位
		datstr[2] = 0x005b;//小数点
		datstr[3] = bit1;//小数位

		putstr(datstr);
	}
	if(9 < para && para <= 99)
	{
		unsigned int data datstr[5] = {0x005c,0x005c,0x005c,0x005c,0x00ff};
		datstr[0] = 0x0017;//十位 空格
		datstr[1] = bit2;//个位
		datstr[2] = 0x005b;//小数点
		datstr[3] = bit1;//小数位

		putstr(datstr);
	}
	if(0 <= para && para <= 9)
	{
		unsigned int data datstr[5] = {0x005c,0x005c,0x005c,0x005c,0x00ff};
		datstr[0] = 0x0017;//十位 空格
		datstr[1] = 0x0000;//个位
		datstr[2] = 0x005b;//小数点
		datstr[3] = bit1;//小数位

		putstr(datstr);
	}
}
//--------------------------------------------------------------------
/*
//写入000.0型电流数据
void display_cur(unsigned int para)
{
	unsigned int data curstr[6]={0x005c,0x005c,0x005c,0x005c,0x005c,0x00ff};
	
//	if(999<para&&para<=9999)
		curstr[0]=bit4;//百位
//	if(para>99)
		curstr[1]=bit3;//十位
		curstr[2]=bit2;//个位
		curstr[3]=0x005b;//小数点
		curstr[4]=bit1;//小数
	putstr(curstr);
}
//-------------------------------------------------------------------

//写入00.0型数据
void display_(unsigned int para)
{
	unsigned int data curstr[6]={0x005c,0x005c,0x005c,0x005c,0x005c,0x00ff};
	
//	if(999<para&&para<=9999)
//		curstr[0]=bit4;//百位
	if(para>99)
		curstr[0]=bit3;//十位
		curstr[1]=bit2;//个位
		curstr[2]=0x005b;//小数点
		curstr[3]=bit1;//小数
	putstr(curstr);
}
//-------------------------------------------------------------------

//写入0.0型数据
void display__(unsigned int para)
{
	unsigned int data curstr[4]={0x005c,0x005c,0x005c,0x00ff};
	
//	if(999<para&&para<=9999)
//		curstr[0]=bit4;//百位
	if(para > 9)
		curstr[0]=bit2;//个位
		curstr[1]=0x005b;//小数点
		curstr[2]=bit1;//小数
	putstr(curstr);
}
//-------------------------------------------------------------------
*/
//显示3相电压
void display_p3vol()
{
	getfigurebit(Vab);//显示a相电压
	XPOS=2;
	YPOS=16;
//	display_vol(Vab);
	display_dat(Vab);
	
	getfigurebit(Vbc);//显示b相电压
	XPOS=4;
	YPOS=16;
//	display_vol(Vbc);
	display_dat(Vbc);
	
	getfigurebit(Vca);//显示C项电压
	XPOS=6;
	YPOS=16;
//	display_vol(Vca);
	display_dat(Vca);
}
//-------------------------------------------------------------------

//显示3相电流
void display_p3cur()//显示三行电流
{
	getfigurebit(Ia);//显示a相电流
	XPOS=2;
	YPOS=72;
//	display_cur(Ia);
	display_dat(Ia);
	
	getfigurebit(Ib);//显示b相电流
	XPOS=4;
	YPOS=72;
//	display_cur(Ib);
	display_dat(Ib);
	
	getfigurebit(Ic);//显示C相电流
	XPOS=6;
	YPOS=72;
//	display_cur(Ic);
	display_dat(Ic);
}
//-------------------------------------------------------------------

//写不变部分
void title_unit_CV()//题目和单位
{
	XPOS=0;
	YPOS=16;
	FB_FLAG=0;
	putstr(TITLE_VOL);//题目:电压
	YPOS=80;
	putstr(TITLE_CUR);//题目:电流
	
	YPOS=0;
	XPOS=2;
	putchar(0x0036);//a
	XPOS=4;
	putchar(0x0037);//b
	XPOS=6;
	putchar(0x0038);//c
	
	YPOS = 48;
	XPOS = 2;
	putchar(0x003b);//K
	XPOS = 4;
	putchar(0x003b);//K
	XPOS = 6;
	putchar(0x003b);//K

	YPOS = 56;
	XPOS = 2;
	putchar(0x0046);//V
	XPOS = 4;
	putchar(0x0046);//V
	XPOS = 6;
	putchar(0x0046);//V 

	YPOS=112;
	XPOS=2;
	putchar(0x0036);//A
	XPOS=4;
	putchar(0x0036);//A
	XPOS=6;
	putchar(0x0036);//A
}
title_unit_PF()
{
	XPOS = 2;
	YPOS=32;
	FB_FLAG=0;
	putstr(TITLE_PF);//题目:功率因数
}
//-------------------------------------------------------------------
void main_disp()
{
///////////////临时赋值
	Vab = 1;Vbc = 23;Vca = 456;Ia = 7890;Ib = 123;Ic = 45;PF = 6;
//-----------------------------------------------------------------------------------
	DISP_ENTER_FLAG=0;//进入显示页面标志置1 
	//title_unit();
	//can_common();//先更新数据
	//display_p3vol();
	//display_p3cur();
	clearscreen();

	while(KEY_BUF!=KEY_ESC)
	{
		if(DISP_ENTER_FLAG == 0)
		{
			//can_common();
			title_unit_CV();
			display_p3vol();
			display_p3cur();
			//can_common();
		}
		else if(DISP_ENTER_FLAG == 1)
		{
			title_unit_PF();
			getfigurebit(PF);//显示a相电压
			XPOS = 4;
			YPOS = 44;
			display_dat(PF);			
		}
		if(KEY_BUF == KEY_UP)
		{
			DISP_ENTER_FLAG = (~DISP_ENTER_FLAG);
			KEY_BUF = 0xff;
			clearscreen();
		}
		else if(KEY_BUF == KEY_DOWN)
		{
			clearscreen();
			DISP_ENTER_FLAG = (~DISP_ENTER_FLAG);
			KEY_BUF = 0xff;
		}
	}
	KEY_BUF=0xff; 
	DISP_ENTER_FLAG=0;//退出显示页面
}

⌨️ 快捷键说明

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