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

📄 menu.c

📁 下位机程序 菜单一些模块 园
💻 C
📖 第 1 页 / 共 2 页
字号:
0x0D,0x0D,0xFD,0xFD,0x01,0xFD,0x05,0x0D,
0x0D,0x0D,0x0D,0x0D,0x0D,0xFD,0xFD,0xFF
};


const unsigned char code pic4[] = 
{
0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x7F,0x40,0x5F,0x5F,0x5F,0x5F,
0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,
0x5F,0x5F,0x5F,0x40,0x7E,0x8A,0x8F,0xEF,
0xFF,0x10,0x17,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x00,0xFD,0x01,0xFF,0xFF,
0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xF8,0x08,0xE8,0xE8,0xE8,0xE8,
0xEF,0xE8,0xEE,0xE8,0xEF,0xEF,0xE8,0xE8,
0xE8,0xE8,0xE8,0x08,0xF8,0x40,0xEE,0xEE,
0xFE,0x02,0xFA,0x0A,0x0A,0x0A,0x0A,0x0A,
0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,
0xFA,0x02,0xFE,0xA0,0xFD,0xED,0x0D,0x01,
0x0D,0x0D,0x0D,0x01,0x0D,0x01,0xB9,0xBB
};

const unsigned char code pic5[] =
{
0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x8F,0x88,0x8B,
0x8B,0x8B,0x8B,0x8B,0x8B,0x8B,0x8B,0x8B,
0x8B,0x8B,0x8B,0x88,0x8F,0x80,0x80,0xFF,
0xFF,0x00,0x1E,0x11,0x10,0x08,0x08,0x08,
0x08,0x04,0x04,0x04,0x04,0xFC,0x02,0xFE,
0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,
0xFF,0x00,0x00,0xF0,0x0C,0x03,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x60,0xD0,0xD0,0xD0,0xE0,0xE1,0xE1,0xC2,
0xC2,0xC4,0x98,0xE0,0xC0,0x00,0x00,0xFF,
0xFF,0x01,0x01,0x01,0x01,0x01,0x81,0x61,
0x19,0x05,0x09,0x11,0x11,0x21,0x41,0x41,
0x41,0x41,0x81,0x81,0x81,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF
};
const unsigned char code pic6[] = 
{
0xFF,0x80,0x80,0x80,0x80,0x81,0x83,0x83,
0x87,0x87,0x83,0x81,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,
0xFF,0x00,0x1F,0x7F,0xFC,0xF0,0xC0,0x80,
0xC0,0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,
0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x03,
0x00,0x07,0x0F,0x1F,0x1F,0x0F,0x07,0xFF,
0xFF,0x00,0xF8,0xFC,0x7E,0x1F,0x07,0x03,
0x03,0x03,0x03,0x03,0x07,0x1F,0x3F,0xFF,
0xFC,0xE0,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x80,0xC0,0xE0,0xE0,0xC0,0x80,0xFF,
0xFF,0x01,0x01,0x01,0x01,0x01,0x81,0xC1,
0xE1,0xE1,0xE1,0xE1,0xC1,0x81,0x81,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF
};

const unsigned char code num0[] = {"0"};
const unsigned char code num1[] = {"1"};
const unsigned char code num2[] = {"2"};
const unsigned char code num3[] = {"3"};
const unsigned char code num4[] = {"4"};
const unsigned char code num5[] = {"5"};
const unsigned char code num6[] = {"6"};	
const unsigned char code num7[] = {"7"};

//分隔线
static void compartline(void)
{
	lcd_line(117,15,117,95+16,1);
	lcd_line(121,15,121,95+16,1);
}

//菜单按键识别
void GetKeyInput(void)
{
	void (*KeyFuncPtr)(); 			//按键功能指针
	unsigned char KeyValue;
	typedef   struct     
	{   
		unsigned char state;		//当前索引号
		unsigned char keydn;		//同一级菜单下移索引号
		unsigned char keyon;		//同一级菜单上移索引号
		unsigned char keynext;		//下一级菜单索引号
		unsigned char keyback;		//上一级菜单索引号
		void  (*pFun)();  
	}_Fun_Test;
	
	_Fun_Test code KeyTab [23]=
	{
		{0,1,5,6,0,lcdm},{1,2,0,10,1,lcdm2},{2,3,1,11,2,lcdm3},{3,4,2,12,3,lcdm4},{4,5,3,13,4,lcdm5},{5,0,4,14,5,lcdm6},
		
		{6,7,20,21,0,lcdse1},{7,15,6,22,0,lcdse2},

		{8,8,8,8,6,lcdth1},{9,9,9,9,6,lcdth2},

		{10,10,10,10,1,lcdsetemp},
		{11,11,11,11,2,lcdsetemp},
		{12,12,12,12,3,lcdsetemp},
		{13,13,13,13,4,lcdsetemp},
		{14,14,14,14,5,lcdsetemp},
		
		{15,16,7,8,0,lcdse3},
		{16,17,15,9,0,lcdse4},

		{17,18,16,17,0,lcdse5},
		{18,19,17,18,0,lcdse6},
		{19,20,18,19,0,lcdse7},
		{20,6,19,20,0,lcdse8},
		
		{21,21,21,21,6,simulation},

		{22,22,22,22,7,onoff}
	};

	//LEDRUN = 0;

	KeyValue = P2 & 0XFF; 		//
	DelayMs(20*3);
	
	lightflashon();				//工作标志灯
		
	switch(KeyValue)
	{
		case LCDKEY1: 			//回车键,找出新的菜单状态编号
		{
			KeyFuncIndex=KeyTab[KeyFuncIndex].keynext;
			sound = 1;
			DelayMs(5*3);
			sound = 0;
			delchar();			//del all char
			delzipic();			//del haizi and picture
			break;
		}
		case LCDKEY2: 			//向上键,找出新的菜单状态编号
		{
			KeyFuncIndex=KeyTab[KeyFuncIndex].keyon;
			sound = 1;
			DelayMs(5*3);
			sound = 0;
			break;
		}
		case LCDKEY3: 			//向下键,找出新的菜单状态编号
		{
			KeyFuncIndex=KeyTab[KeyFuncIndex].keydn;
			sound = 1;
			DelayMs(5*3);
			sound = 0;
			break;
		}
		case LCDKEY4:			//返回键,找出新的菜单状态编号
		{
			KeyFuncIndex=KeyTab[KeyFuncIndex].keyback;
			sound = 1;
			DelayMs(5*3);
			sound = 0;
			delchar();			//del all char
			delzipic();			//del haizi and picture
			break;
		}
		default: 				//按键错误的处理
			break;
	}
	KeyFuncPtr=KeyTab[KeyFuncIndex].pFun;
	(*KeyFuncPtr)();			//执行当前按键的操作

	lightflashoff();			//工作标志灯

	//LEDRUN = 1;
}

//一级菜单1
void lcdm()
{
	//workstate();
	hanzipic(11,2,hanzi24,16,16,1);
	hanzipic(13,2,hanzi25,16,16,1);
	hanzipic(15,2,hanzi26,16,16,1);
	hanzipic(17,2,hanzi27,16,16,1);

	hanzipic(2,30-5,pic1,32,32,0);
	hanzipic(13,30-5,pic2,32,32,1);
	hanzipic(24,30-5,pic3,32,32,1);
	hanzipic(2,80-8,pic4,32,32,1);
	hanzipic(13,80-8,pic5,32,32,1);
	hanzipic(24,80-8,pic6,32,32,1);
}

void lcdm2()
{
	//workstate();
	hanzipic(11,2,hanzi22,16,16,1);
	hanzipic(13,2,hanzi23,16,16,1);
	hanzipic(15,2,hanzi26,16,16,1);
	hanzipic(17,2,hanzi27,16,16,1);

	hanzipic(2,30-5,pic1,32,32,1);
	hanzipic(13,30-5,pic2,32,32,0);
	hanzipic(24,30-5,pic3,32,32,1);
	hanzipic(2,80-8,pic4,32,32,1);
	hanzipic(13,80-8,pic5,32,32,1);
	hanzipic(24,80-8,pic6,32,32,1);
}

void lcdm3()
{
	//workstate();
	hanzipic(11,2,hanzi28,16,16,1);
	hanzipic(13,2,hanzi29,16,16,1);
	hanzipic(15,2,hanzi30,16,16,1);
	hanzipic(17,2,hanzi31,16,16,1);

	hanzipic(2,30-5,pic1,32,32,1);
	hanzipic(13,30-5,pic2,32,32,1);
	hanzipic(24,30-5,pic3,32,32,0);
	hanzipic(2,80-8,pic4,32,32,1);
	hanzipic(13,80-8,pic5,32,32,1);
	hanzipic(24,80-8,pic6,32,32,1);
}

void lcdm4()
{
	//workstate();
	hanzipic(11,2,hanzi28,16,16,1);
	hanzipic(13,2,hanzi29,16,16,1);
	hanzipic(15,2,hanzi30,16,16,1);
	hanzipic(17,2,hanzi31,16,16,1);


	hanzipic(2,30-5,pic1,32,32,1);
	hanzipic(13,30-5,pic2,32,32,1);
	hanzipic(24,30-5,pic3,32,32,1);
	hanzipic(2,80-8,pic4,32,32,0);
	hanzipic(13,80-8,pic5,32,32,1);
	hanzipic(24,80-8,pic6,32,32,1);
}

void lcdm5()
{
	//workstate();
	hanzipic(11,2,hanzi28,16,16,1);
	hanzipic(13,2,hanzi29,16,16,1);
	hanzipic(15,2,hanzi30,16,16,1);
	hanzipic(17,2,hanzi31,16,16,1);

	hanzipic(2,30-5,pic1,32,32,1);
	hanzipic(13,30-5,pic2,32,32,1);
	hanzipic(24,30-5,pic3,32,32,1);
	hanzipic(2,80-8,pic4,32,32,1);
	hanzipic(13,80-8,pic5,32,32,0);
	hanzipic(24,80-8,pic6,32,32,1);
}

void lcdm6()
{
	//workstate();
	hanzipic(11,2,hanzi28,16,16,1);
	hanzipic(13,2,hanzi29,16,16,1);
	hanzipic(15,2,hanzi30,16,16,1);
	hanzipic(17,2,hanzi31,16,16,1);

	hanzipic(2,30-5,pic1,32,32,1);
	hanzipic(13,30-5,pic2,32,32,1);
	hanzipic(24,30-5,pic3,32,32,1);
	hanzipic(2,80-8,pic4,32,32,1);
	hanzipic(13,80-8,pic5,32,32,1);
	hanzipic(24,80-8,pic6,32,32,0);
}



////////////////////////////////////
//二级菜单

/////二级菜单暂无下级菜单
void lcdsetemp()
{
	hanzipic(9,50,hanzi32,12,16,1);
	hanzipic(11,50,hanzi33,12,16,1);
	hanzipic(13,50,hanzi34,12,16,1);
	hanzipic(15,50,hanzi35,12,16,1);
	hanzipic(17,50,hanzi36,12,16,1);
	hanzipic(19,50,hanzi37,12,16,1);
}
/////
static void lcdseall()
{
	hanzipic(20,10,hanzi28,16,16,1);
	hanzipic(22,10,hanzi29,16,16,1);
	hanzipic(24,10,hanzi30,16,16,1);
	hanzipic(26,10,hanzi31,16,16,1);

	hanzipic(20,40,hanzi28,16,16,1);
	hanzipic(22,40,hanzi29,16,16,1);
	hanzipic(24,40,hanzi30,16,16,1);
	hanzipic(26,40,hanzi31,16,16,1);

	hanzipic(20,70,hanzi28,16,16,1);
	hanzipic(22,70,hanzi29,16,16,1);
	hanzipic(24,70,hanzi30,16,16,1);
	hanzipic(26,70,hanzi31,16,16,1);

	hanzipic(20,100,hanzi28,16,16,1);
	hanzipic(22,100,hanzi29,16,16,1);
	hanzipic(24,100,hanzi30,16,16,1);
	hanzipic(26,100,hanzi31,16,16,1);

	hanzipic(2,10,hanzi38,16,16,1);
	hanzipic(4,10,hanzi39,16,16,1);
	hanzipic(6,10,hanzi40,16,16,1);
	hanzipic(8,10,hanzi55,16,16,1);

	hanzipic(2,40,hanzi41,16,16,1);
	hanzipic(4,40,hanzi42,16,16,1);
	hanzipic(6,40,hanzi40,16,16,1);
	hanzipic(8,40,hanzi55,16,16,1);

	hanzipic(2,70,hanzi16,16,16,1);
	hanzipic(4,70,hanzi17,16,16,1);
	hanzipic(6,70,hanzi54,16,16,1);
	hanzipic(8,70,hanzi18,16,16,1);

	hanzipic(2,100,hanzi19,16,16,1);
	hanzipic(4,100,hanzi20,16,16,1);
	hanzipic(6,100,hanzi48,16,16,1);
	hanzipic(8,100,hanzi21,16,16,1);

	DelayMs(80);				//delay time
}

void lcdse8()
{
	compartline();
	lcdseall();

	hanzipic(20,100,hanzi28,16,16,0);
	hanzipic(22,100,hanzi29,16,16,0);
	hanzipic(24,100,hanzi30,16,16,0);
	hanzipic(26,100,hanzi31,16,16,0);	
}

void lcdse7()
{
	compartline();
	lcdseall();

	hanzipic(20,70,hanzi28,16,16,0);
	hanzipic(22,70,hanzi29,16,16,0);
	hanzipic(24,70,hanzi30,16,16,0);
	hanzipic(26,70,hanzi31,16,16,0);
}

void lcdse6()
{
	compartline();
	lcdseall();

	hanzipic(20,40,hanzi28,16,16,0);
	hanzipic(22,40,hanzi29,16,16,0);
	hanzipic(24,40,hanzi30,16,16,0);
	hanzipic(26,40,hanzi31,16,16,0);

}

void lcdse5()
{
	compartline();
	lcdseall();

	hanzipic(20,10,hanzi28,16,16,0);
	hanzipic(22,10,hanzi29,16,16,0);
	hanzipic(24,10,hanzi30,16,16,0);
	hanzipic(26,10,hanzi31,16,16,0);


}

void lcdse4()
{
	compartline();
	lcdseall();

	hanzipic(2,100,hanzi19,16,16,0);
	hanzipic(4,100,hanzi20,16,16,0);
	hanzipic(6,100,hanzi48,16,16,0);
	hanzipic(8,100,hanzi21,16,16,0);
}

void lcdse3()
{
	compartline();
	lcdseall();

	hanzipic(2,70,hanzi16,16,16,0);
	hanzipic(4,70,hanzi17,16,16,0);
	hanzipic(6,70,hanzi54,16,16,0);
	hanzipic(8,70,hanzi18,16,16,0);
}

void lcdse2()
{
	compartline();
	lcdseall();
	
	hanzipic(2,40,hanzi41,16,16,0);
	hanzipic(4,40,hanzi42,16,16,0);
	hanzipic(6,40,hanzi40,16,16,0);
	hanzipic(8,40,hanzi55,16,16,0);
}

void lcdse1()
{
	compartline();
	lcdseall();
	hanzipic(2,10,hanzi38,16,16,0);
	hanzipic(4,10,hanzi39,16,16,0);
	hanzipic(6,10,hanzi40,16,16,0);
	hanzipic(8,10,hanzi55,16,16,0);
}

/////////////////////////////////////

//三级波动线
void lcdth1()
{
	lcd_box(10,5,15,10,1);
	//lcd_box(30,0,40,10,1);	
	//坐标系
	lcd_line(25,18,25,117,1);	//X轴
	lcd_line(25,117,227,117,1);	//Y轴
	wrchar(3,15,num0);			//X轴刻度
	wrchar(6,15,num1);
	wrchar(9,15,num2);
	wrchar(12,15,num3);
	wrchar(15,15,num4);
	wrchar(18,15,num5);
	wrchar(21,15,num6);
	wrchar(24,15,num7);
	wrchar(2,13,num1);			//Y轴刻度
	wrchar(2,11,num2);
	wrchar(2,9,num3);
	wrchar(2,7,num4);
	wrchar(2,5,num5);
	lcd_line(25,18,21,22,1);
	lcd_line(25,18,29,22,1);
	lcd_line(223,113,227,117,1);
	lcd_line(223,121,227,117,1);

	
	lcd_line(40,100,64,70,1);
	lcd_line(64,70,88,90,1);
	lcd_line(88,90,112,50,1);
	lcd_line(112,50,136,100,1);
	lcd_line(136,100,160,20,1);
	lcd_line(160,20,184,70,1);
	lcd_line(184,70,208,30,1);
}

//三级奥运5环
void lcdth2()
{								
	lcd_circle(50+20+20,85-20,9,1);
	lcd_circle(70+20+20,85-20,9,1);
	lcd_circle(90+20+20,85-20,9,1);
	lcd_circle(50+9+20+20,85+9-20,9,1);
	lcd_circle(70+9+20+20,85+9-20,9,1);
}

//模拟量表格绘制
static void simtable()
{
	lcd_line(6,20,230,20,1);
	lcd_line(6,40,230,40,1);
	lcd_line(6,60,230,60,1);
	lcd_line(6,80,230,80,1);
	lcd_line(6,100,230,100,1);
	lcd_line(6,118,230,118,1);

	lcd_line(6,20,6,118,1);
	lcd_line(76,20,76,118,1);
	lcd_line(116,20,116,118,1);
	lcd_line(186,20,186,118,1);
	lcd_line(230,20,230,118,1);
}

//模拟量显示
void simulation()
{
	hanzipic(10,2,hanzi38,16,16,1);
	hanzipic(12,2,hanzi39,16,16,1);
	hanzipic(14,2,hanzi40,16,16,1);
	hanzipic(16,2,hanzi26,16,16,1);
	hanzipic(18,2,hanzi27,16,16,1);
	simtable();

	hanzipic(1,22,hanzi38,16,16,1);
	hanzipic(3,22,hanzi39,16,16,1);
	hanzipic(5,22,hanzi40,16,16,1);	
	hanzipic(7,22,hanzi44,16,16,1);
	
	hanzipic(1,42,hanzi38,16,16,1);
	hanzipic(3,42,hanzi39,16,16,1);
	hanzipic(5,42,hanzi40,16,16,1);	
	hanzipic(7,42,hanzi45,16,16,1);

	hanzipic(1,62,hanzi38,16,16,1);
	hanzipic(3,62,hanzi39,16,16,1);
	hanzipic(5,62,hanzi40,16,16,1);	
	hanzipic(7,62,hanzi46,16,16,1);

	hanzipic(1,82,hanzi38,16,16,1);
	hanzipic(3,82,hanzi39,16,16,1);
	hanzipic(5,82,hanzi40,16,16,1);	
	hanzipic(7,82,hanzi47,16,16,1);

	hanzipic(1,102,hanzi38,16,16,1);
	hanzipic(3,102,hanzi39,16,16,1);
	hanzipic(5,102,hanzi40,16,16,1);	
	hanzipic(7,102,hanzi48,16,16,1);

	hanzipic(14+1,22,hanzi38,16,16,1);
	hanzipic(16+1,22,hanzi39,16,16,1);
	hanzipic(18+1,22,hanzi40,16,16,1);	
	hanzipic(20+1,22,hanzi49,16,16,1);
	
	hanzipic(14+1,42,hanzi38,16,16,1);
	hanzipic(16+1,42,hanzi39,16,16,1);
	hanzipic(18+1,42,hanzi40,16,16,1);	
	hanzipic(20+1,42,hanzi50,16,16,1);

	hanzipic(14+1,62,hanzi38,16,16,1);
	hanzipic(16+1,62,hanzi39,16,16,1);
	hanzipic(18+1,62,hanzi40,16,16,1);	
	hanzipic(20+1,62,hanzi51,16,16,1);

	hanzipic(14+1,82,hanzi38,16,16,1);
	hanzipic(16+1,82,hanzi39,16,16,1);
	hanzipic(18+1,82,hanzi40,16,16,1);	
	hanzipic(20+1,82,hanzi52,16,16,1);

	hanzipic(14+1,102,hanzi38,16,16,1);
	hanzipic(16+1,102,hanzi39,16,16,1);
	hanzipic(18+1,102,hanzi40,16,16,1);	
	hanzipic(20+1,102,hanzi53,16,16,1);
}

//开关量显示
void onoff()
{
	hanzipic(10,2,hanzi41,16,16,1);
	hanzipic(12,2,hanzi42,16,16,1);
	hanzipic(14,2,hanzi40,16,16,1);
	hanzipic(16,2,hanzi26,16,16,1);
	hanzipic(18,2,hanzi27,16,16,1);
	
	lcd_line(20,33,220,33,1);
	lcd_line(20,35,220,35,1);

	wrchar(3,3,s1);
	wrchar(7,3,s2);
	wrchar(11,3,s3);
	wrchar(15,3,s4);

	hanzipic(3,37,swon,16,8,1);
	hanzipic(7,37,swoff,16,8,1);
	hanzipic(11,37,swon,16,8,1);
	hanzipic(15,37,swoff,16,8,1);
}

//工作状态栏
void workstate()
{
	//lcd_line(0,110,239,110,1);
	wrchar(18-2-2-1,15,run);
	wrchar(22-2-1,15,rxd);
	wrchar(26-2+1,15,txd);
}

void lightflashon()
{
	workstate();
	hanzipic(19-1-1,120,lighton,8,8,1);	
	hanzipic(19+4,120,lighton,8,8,1);
	hanzipic(19+8+1+1,120,lighton,8,8,1);

	LEDRUN = 0; //run led off
}

void lightflashoff()
{
	offnum++;
	if (offnum == 2) 
	{
		offnum = 0;
		workstate();
		hanzipic(19-1-1,120,lightoff,8,8,1);	
		hanzipic(19+4,120,lightoff,8,8,1);
		hanzipic(19+8+1+1,120,lightoff,8,8,1);

		LEDRUN = 1; //run led on
	}
}

⌨️ 快捷键说明

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