📄 allwindow.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&¶<=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&¶<=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&¶<=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&¶<=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 + -