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

📄 gui.c

📁 别人的C51菜单程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <at89c51xd2.h>
#include "common.h"
#include "hanzi.h"
#include "lm3228.h"
#include "ds18b20.h"
#include "PCA_9555.h"
#include "ds1302.h"
#include "LTC1860.h"
#include "stdio.h"
#include "lct1451.h"

#define KeyTabLen 13
extern uchar data keyvalue[2];
extern bit key_flag;
volatile uchar data zhen_temp[4];   //
volatile uchar data xiaoshu_temp[5]; //
extern bit ds18b20_flag;
extern bit dot_dis;
bit timeout=0;
uchar data time_count=0;
uchar data keyfuncindex=12;
uchar data ds18b20_1_dis,ds18b20_2_dis,ds18b20_3_dis,ds18b20_4_dis;
//函数申明
void FunctionDisp(void);
void Config(void);
void Serial(void);
void HelpInf(void);
void Temprature(void);
void Time(void);
void AD(void);
void CaculatorDisp(void);
void TempratureDisp(void);
void AD_Disp(void);
void Caculator(void);
void TimeDisp(void);
void gui_init(void);
void time_init(void);
void channel_display(void);

//结构定义
typedef struct
	{
	uchar KeyTab_MenuIndex;		//当前状态索引号			//uchar KeyTab_MaxItems;		//本级菜单最大条目数
    uchar KeyTab_PressDown;    	//按下"向下"键时转向的状态索引号
    uchar KeyTab_PressUp;    	//按下"向上"键时转向的状态索引号
	uchar KeyTab_PressOk;    	//按下"回车"键时转向的状态索引号
    uchar KeyTab_PressEsc;		//按下"返回"键时转向的状态索引号
	void    (*CurrentOperate)();    	//当前状态应该执行的功能操作
	}KeyTabStruct;

void    (*KeyFuncPtr)();    //按键功能指针
//结构数组
KeyTabStruct xdata KeyTab[KeyTabLen]={
{0,1,3,4,12,(*FunctionDisp)},
{1,2,1,1,0,(*Config)},
{2,3,1,2,0,(*Serial)},
{3,0,2,3,0,(*HelpInf)},
{4,5,7,8,0,(*Temprature)},
{5,6,4,9,0,(*Time)},
{6,7,5,10,0,(*AD)},
{7,4,6,11,0,(*Caculator)},
{8,8,8,8,4,(*TempratureDisp)},
{9,9,9,9,5,(*TimeDisp)},
{10,10,10,10,6,(*AD_Disp)},
{11,11,11,11,7,(*CaculatorDisp)},
{12,11,0,12,12,(*gui_init)}

};
//
void delay(unsigned int time)
{
	unsigned int i,j;
	for(i=0;i<time;i++)
		for(j=0;j<200;j++);
}
//开机动画
void open_picture_init(void)
{
	uchar  i;//data
	hanzi_display(open_picture,sizeof(open_picture),0x00,0x10);
	
	for(i=0;i<30;i++)
	{	
		if(!key_flag)
		{
			set_display_area(GRAPHIC_ADDRESS,0x00+i,0x00);
			delay(100);
		}
		else
			break;
	}
	
}
//开机密码
/*void open_code(void)
{
	uint data key_code=0;
	uchar data i;
	bit code_ok=0;
	uchar code *str="Please input code:";
	uchar code *str1="code error!:";
	clrgraphic();
	set_point(SET_ADDRESS_POINTER,0x00,0x31);
	
	string_display_code(0,str,0x00,0x31);
	while(!code_ok)
	{
		for(i=0;i<4;i++)
		{
			while(!key_flag)
			{
			}
			{
				key_flag=0;
			
				readregister(keyvalue);
			
				text_display('*');  // ,0x00,0x00
				key_code=key_code*10+(keyvalue[0]&0x0f);
			}
		}
		if(key_code==124)
		code_ok=1;
		else
		{	clrtext();
			set_point(SET_ADDRESS_POINTER,0x00,0x31);
			string_display_code(0,str1,0x00,0x31);
			 
			while(!key_flag)
			{
			}
			key_flag=0;
			key_code=0;
			set_point(SET_ADDRESS_POINTER,0x00,0x31);
			string_display_code(0,str,0x00,0x31);
		}
	}
}*/
	

//界面初始化
void gui_init(void)
{
	Picture  pic1={64,32,menu1};   //data
	Picture  pic2={64,32,menu2}; //data
	Picture  pic3={64,32,menu3}; //data
	Picture  pic4={64,32,menu4};//data
	Picture *point1=&pic1;
	clrgraphic();
	clrtext();
		
	picture_display(point1,0x00,0x00,0);
	point1=&pic2;
	picture_display(point1,0x08,0x00,0);
	point1=&pic3;
	picture_display(point1,0x10,0x00,0);
	point1=&pic4;
	picture_display(point1,0x18,0x00,0);
	hanzi_display(cancel,sizeof(cancel),0x1c,0x1e);
	hanzi_display(ok,sizeof(ok),0x00,0x1e);

}

//得到键
void get_inputkey(void)
{
	switch(keyvalue[0]&0x0f)
	{
		case 0x03: //向上键
			keyfuncindex=KeyTab[keyfuncindex].KeyTab_PressUp;	
			break;
		case 0x07: //向下键
			keyfuncindex=KeyTab[keyfuncindex].KeyTab_PressDown;
			break;
		case 0x0b:	//功能键
			keyfuncindex=0;
			break;	
		case 0x0c: //cancel
			keyfuncindex=KeyTab[keyfuncindex].KeyTab_PressEsc;	
			break;
		case 0x0e: //帮助键
			
			break;
		case 0x0f: //ok键
			keyfuncindex=KeyTab[keyfuncindex].KeyTab_PressOk;	
			break;
		default:
			break;
	}

	KeyFuncPtr=KeyTab[keyfuncindex].CurrentOperate;
	(*KeyFuncPtr)();
}
//
void FunctionDisp(void)
{
	Picture pic1={64,32,menu1};
	Picture pic2={64,32,menu2};
	Picture pic3={64,32,menu3};
	Picture pic4={64,32,menu4};
	
	Picture *point2=&pic1;
	clrgraphic();
	clrtext();
	picture_display(point2,0x00,0x00,1);
	point2=&pic2;
	picture_display(point2,0x08,0x00,0);
	point2=&pic3;
	picture_display(point2,0x10,0x00,0);
	point2=&pic4;
	picture_display(point2,0x18,0x00,0);
}
//
void Config(void)
{
	Picture data pic1={64,32,menu1};
	Picture data pic2={64,32,menu2};
	Picture data pic3={64,32,menu3};
	Picture data pic4={64,32,menu4};
	Picture *point1=&pic1;	
	picture_display(point1,0x00,0x00,0);
	point1=&pic2;
	picture_display(point1,0x08,0x00,1);
	point1=&pic3;
	picture_display(point1,0x10,0x00,0);
	point1=&pic4;
	picture_display(point1,0x18,0x00,0);
}
//
void Serial(void)
{
	Picture data pic1={64,32,menu1};
	Picture data pic2={64,32,menu2};
	Picture data pic3={64,32,menu3};
	Picture data pic4={64,32,menu4};
	Picture *point1=&pic1;
	picture_display(point1,0x00,0x00,0);
	point1=&pic2;
	picture_display(point1,0x08,0x00,0);
	point1=&pic3;
	picture_display(point1,0x10,0x00,1);
	point1=&pic4;
	picture_display(point1,0x18,0x00,0);
}
//
void HelpInf(void)
{
	Picture data pic1={64,32,menu1};
	Picture data pic2={64,32,menu2};
	Picture data pic3={64,32,menu3};
	Picture data pic4={64,32,menu4};
	Picture *point1=&pic1;	
	picture_display(point1,0x00,0x00,0);
	point1=&pic2;
	picture_display(point1,0x08,0x00,0);
	point1=&pic3;
	picture_display(point1,0x10,0x00,0);
	point1=&pic4;
	picture_display(point1,0x18,0x00,1);
}
//
void Temprature(void)
{
	Picture data pic1={48,24,menu5};
	Picture data pic2={48,24,menu6};
	Picture data pic3={48,24,menu7};
	Picture data pic4={48,24,menu8};
	Picture *point1=&pic1;
	clrgraphic();
	clrtext();
	picture_display(point1,0x00,0x04,1);
	point1=&pic2;
	picture_display(point1,0x00,0x07,0);
	point1=&pic3;
	picture_display(point1,0x00,0x0a,0);
	point1=&pic4;
	picture_display(point1,0x00,0x0d,0);
}
//
void Time(void)
{
	Picture data pic1={48,24,menu5};
	Picture data pic2={48,24,menu6};
	Picture data pic3={48,24,menu7};
	Picture data pic4={48,24,menu8};
	Picture *point1=&pic1;
	clrgraphic();
	clrtext();	
	picture_display(point1,0x00,0x04,0);
	point1=&pic2;
	picture_display(point1,0x00,0x07,1);
	point1=&pic3;
	picture_display(point1,0x00,0x0a,0);
	point1=&pic4;
	picture_display(point1,0x00,0x0d,0);
}
//
void AD(void)
{
	Picture data pic1={48,24,menu5};
	Picture data pic2={48,24,menu6};
	Picture data pic3={48,24,menu7};
	Picture data pic4={48,24,menu8};
	Picture *point1=&pic1;
	clrgraphic();
	clrtext();	
	picture_display(point1,0x00,0x04,0);
	point1=&pic2;
	picture_display(point1,0x00,0x07,0);
	point1=&pic3;
	picture_display(point1,0x00,0x0a,1);
	point1=&pic4;
	picture_display(point1,0x00,0x0d,0);
}
//
void Caculator(void)
{
	Picture data pic1={48,24,menu5};
	Picture data pic2={48,24,menu6};
	Picture data pic3={48,24,menu7};
	Picture data pic4={48,24,menu8};
	Picture *point1=&pic1;
	clrgraphic();
	clrtext();	
	picture_display(point1,0x00,0x04,0);
	point1=&pic2;
	picture_display(point1,0x00,0x07,0);
	point1=&pic3;
	picture_display(point1,0x00,0x0a,0);
	point1=&pic4;
	picture_display(point1,0x00,0x0d,1);
}
//
void TempratureDisp(void)
{

	uchar data temp;
	uchar code *str1="Do you want to display 4 channel temperature at the same time:\nPlease press cancel for no or ok for yes";
	uchar code *str2="Please input the num of channel(eg:1,2,3,4):";
	
	Picture data pic1={64,32,menu1};
	Picture data pic2={64,32,menu2};
	Picture data pic3={64,32,menu3};
	Picture data pic4={64,32,menu4};
	
	Picture *point1=&pic1;
	clrgraphic();	
	picture_display(point1,0x00,0x00,0);
	point1=&pic2;							  
	picture_display(point1,0x08,0x00,0);
	point1=&pic3;
	picture_display(point1,0x10,0x00,0);
	point1=&pic4;
	picture_display(point1,0x18,0x00,0);
	time_init(); 
	clrtext();
	while(!key_flag)

⌨️ 快捷键说明

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