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

📄 menu.c

📁 CC2430多功能调试程序
💻 C
字号:
#include "app_ex.h"
#include "hal.h"
#include "lcd128_64.h"
#include "string.h"
#include "Font.h"

INT8U NowItem = 0;
INT8U FirstItem = 0;
INT8U TopDisp = 1;
unsigned char MenuItem[13][16];					//菜单缓冲区
extern INT8U ContrastValue;

extern void clockmodes_main(void);
extern void random_main(void);
extern void power_modes_main(void);
extern void dma_main(void);
extern void aes_main(void);
extern void adc_main(void);

void Page7Display(INT8U ss, INT8U tt);
INT8U  DrawMenu(INT8U MenuItem[][16] , INT8U MenuNo);
void MenuMenuDisp(void);
void Page0Display(void);
void SettingDisp(void);
void DoSetContrast(void);
void LanguageDisp(void);
void BackLampDisp(void);
//*********************************************************************************
//函数名:INT8U  DrawMenu(INT8U MenuItem[][16] , INT8U MenuNo)
//功能:菜单显示
//输入:无
//输出:无
//*********************************************************************************
INT8U  DrawMenu(INT8U MenuItem[][16] , INT8U MenuNo)
{
	INT8U ii;
	INT8U key;
	INT8U NowScreen = 1;
	ClearScreen();
	Page0Display();
	while(1)
	{	
		if(NowScreen)
		{	
			NowScreen = 0;
			if(MenuNo > 2)
			{
				for(ii = 0 ; ii < 3 ; ii++)
				{
					if(NowItem != ii)
					{				
						Print((ii*2+1),0,MenuItem[FirstItem + ii],1);
					}
					else
					{	
						Print((ii*2+1),0,MenuItem[FirstItem + ii],0);				
					}
				}
			}
			else
			{
				for(ii = 0 ; ii < 2 ; ii++)
				{
					if(NowItem != ii)
					{				
						Print((ii*2+1),0,MenuItem[FirstItem + ii],1);
					}
					else
					{	
						Print((ii*2+1),0,MenuItem[FirstItem + ii],0);				
					}
				}
			}
                        Page7Display((FirstItem + NowItem),(MenuNo+1));
//修改过                        while(ScanKey() != 0xff);
                        halWait(5);
		}
		key = ScanKey();
//修改过                
                key = 37;
//
		if(K_UP == key)
		{
			if(NowItem > 0) NowItem -= 1;
			else if(FirstItem > 0) FirstItem -= 1;
			NowScreen = 1;
		}
		if(K_DOWN == key)
		{
			if(MenuNo > 2)
			{
				if(NowItem < 2) 	NowItem += 1;
				else if((FirstItem + 3) < MenuNo) 	FirstItem += 1;
				NowScreen = 1;
			}
			else
			{
				if(NowItem < 1) 	NowItem += 1;
				NowScreen = 1;
			}
		}
		if(K_OK == key)
		{
//			while(ScanKey() != 0xff);
                        halWait(5);
                        return FirstItem + NowItem;
		}
		if(K_CANCEL == key)
		{
			while(ScanKey() != 0xff);
                        halWait(5);
                        return 0xff;
		}
	}
}
//*********************************************************************************
//函数名:void TurnOnDisp(void)
//功能:开机画面显示
//输入:无
//输出:无
//*********************************************************************************
void TurnOnDisp(void)
{
        INT8U i;
        LoadICO();
        for(i=0; i<12; i++)
        halWait(200);
}

//*********************************************************************************
//函数名:void MenuMenuDisp( void )
//功能:主菜单显示
//输入:无
//输出:无
//*********************************************************************************
void MenuMenuDisp( void )
{
	INT8U sel;
        /*if(LanguageSel == 1)
        {
                strcpy((char*)MenuItem[0] ,"1:RF TEST      ");
//	        strcpy((char*)MenuItem[1] ,"2:ADC CONV     ");
//	        strcpy((char*)MenuItem[2] ,"3:ADC SERIES   ");
	        strcpy((char*)MenuItem[1] ,"2:STOP WATCH   ");
	        strcpy((char*)MenuItem[2] ,"3:UART         ");
	        strcpy((char*)MenuItem[3] ,"4:CLOCKMODES   ");
                strcpy((char*)MenuItem[4] ,"5:RANDOM       ");
                strcpy((char*)MenuItem[5] ,"6:AES          ");
 //               strcpy((char*)MenuItem[8] ,"9:FLASH        ");
                strcpy((char*)MenuItem[6] ,"7:DMA          ");
                strcpy((char*)MenuItem[7] ,"8:POWER        ");
                strcpy((char*)MenuItem[8] ,"9:SETTING      ");
        }
        else
        {
                strcpy((char*)MenuItem[0] ,"1:无线测试     ");
	//        strcpy((char*)MenuItem[1] ,"2:ADC 测试     ");
	//        strcpy((char*)MenuItem[2] ,"3:按键测试     ");
	        strcpy((char*)MenuItem[1] ,"2:跑表         ");
	        strcpy((char*)MenuItem[2] ,"3:串口测试     ");
	        strcpy((char*)MenuItem[3] ,"4:时钟模式     ");
                strcpy((char*)MenuItem[4] ,"5:随机数测试   ");
                strcpy((char*)MenuItem[5] ,"6:加密解密测试 ");
 //               strcpy((char*)MenuItem[8] ,"9:FLASH测试    ");
                strcpy((char*)MenuItem[6] ,"7:直接存贮测试 ");
                strcpy((char*)MenuItem[7] ,"8:电源模式     ");
                strcpy((char*)MenuItem[8] ,"9:表演板设定   ");
        }

	FirstItem = 0;
	NowItem = 0;
        TopDisp = 1;
	sel = DrawMenu(MenuItem , 9);    //用户选择了的菜单项
	
//        while(ScanKey() != 0xff);
        halWait(5);*/

        sel = 2;
//
        
	switch(sel)      //根据用户的选择进入相应的操作
	{
		case 0:
		{
			TopDisp = 2;
                        RfTestDisp();
		}break;
		case 1:
		{
			stop_watch_main();
		}break;
		case 2:
		{
			uart_main();;
		}break;
		case 3:
		{
			clockmodes_main();
		}break;
		case 4:
		{
			random_main();
		}break;
                case 5:
		{
			aes_main();
		}break;
                case 6:
                {
                        dma_main();
                }break;
                case 7:
                {
                        power_modes_main();
                }break;
                case 8:
                {
                        TopDisp = 3;
                        SettingDisp();
                }break;
                case 9:
                {
                        timer_int_main();
                }break;
                default:
                break;
	}
		
}
//*********************************************************************************
//函数名:void SettingDisp(void)
//功能:参数设定菜单显示
//输入:无
//输出:无
//*********************************************************************************
void SettingDisp(void)
{
        INT8U sel;
        if(LanguageSel == 1)
        {
                strcpy((char*)MenuItem[0] ,"1:Contrast     ");
	        strcpy((char*)MenuItem[1] ,"2:BackLamp     ");
	        strcpy((char*)MenuItem[2] ,"3:Language     ");
        }
        else
        {
                strcpy((char*)MenuItem[0] ,"1:对比度设定   ");
	        strcpy((char*)MenuItem[1] ,"2:背光开关     ");
	        strcpy((char*)MenuItem[2] ,"3:语言设定     ");
        }

	FirstItem = 0;
	NowItem = 0;
        while(1)
        {
	        sel = DrawMenu(MenuItem , 3);
	
	        switch(sel)
	        {
		        case 0:
		        {
                                DoSetContrast();
		        }break;
		        case 1:
		        {
			        BackLampDisp();
		        }break;
		        case 2:
		        {
			        LanguageDisp();
		        }break;
                        case 0xff:
		        {
                                return;
                        }
	        }
        }
		
}

//*********************************************************************************
//函数名:void BackLampDisp(void)
//功能:背光设定菜单显示
//输入:无
//输出:无
//*********************************************************************************
void BackLampDisp(void)
{
        INT8U sel;
        if(LanguageSel == 1)
        {
                strcpy((char*)MenuItem[0] ,"1:ON           ");
	        strcpy((char*)MenuItem[1] ,"2:OFF          ");
        }
        else
        {
                strcpy((char*)MenuItem[0] ,"1:开           ");
	        strcpy((char*)MenuItem[1] ,"2:关           ");
        }

	FirstItem = 0;
	NowItem = 0;

	sel = DrawMenu(MenuItem , 2);
	
	switch(sel)
	{
		case 0:
	        {
                         P0_4 = 0;
	         }break;
		 case 1:
		 {
			 P0_4 = 1;
		 }break;
                 case 0xff:
		 {
                        ;
                 }break;
        }	
        if(LanguageSel == 1)
        {
                strcpy((char*)MenuItem[0] ,"1:Contrast     ");
	        strcpy((char*)MenuItem[1] ,"2:BackLamp     ");
	        strcpy((char*)MenuItem[2] ,"3:Language     ");
        }
        else
        {
                strcpy((char*)MenuItem[0] ,"1:对比度设定   ");
	        strcpy((char*)MenuItem[1] ,"2:背光开关     ");
	        strcpy((char*)MenuItem[2] ,"3:语言设定     ");
        }

	FirstItem = 0;
	NowItem = 0;
}

//*********************************************************************************
//函数名:void LanguageDisp(void)
//功能:语言设定菜单显示
//输入:无
//输出:无
//*********************************************************************************
void LanguageDisp(void)
{
        INT8U sel;
        if(LanguageSel == 1)
        {
                strcpy((char*)MenuItem[0] ,"1:SimpChinese  ");
	        strcpy((char*)MenuItem[1] ,"2:Eenglish     ");
        }
        else
        {
                strcpy((char*)MenuItem[0] ,"1:中文显示     ");
	        strcpy((char*)MenuItem[1] ,"2:英文显示     ");
        }

	FirstItem = 0;
	NowItem = 0;

	sel = DrawMenu(MenuItem , 2);
	
	switch(sel)
	{
		case 0:
	        {
                        LanguageSel = 0;
	         }break;
		 case 1:
		 {
			LanguageSel = 1;;
		 }break;
                 case 0xff:
		 {
                        ;
                 }break;
        }	
        if(LanguageSel == 1)
        {
                strcpy((char*)MenuItem[0] ,"1:Contrast     ");
	        strcpy((char*)MenuItem[1] ,"2:BackLamp     ");
	        strcpy((char*)MenuItem[2] ,"3:Language     ");
        }
        else
        {
                strcpy((char*)MenuItem[0] ,"1:对比度设定   ");
	        strcpy((char*)MenuItem[1] ,"2:背光开关     ");
	        strcpy((char*)MenuItem[2] ,"3:语言设定     ");
        }

	FirstItem = 0;
	NowItem = 0;
}
			
/******************************************************************************/
//函数名称:DoSetContrast
//功能:设置液晶对比度
//Input Vector:NONE
//Output Vector :NONE
/*******************************************************************************/
void DoSetContrast(void)
{

	INT8U key;
	INT8U ii;
	INT8U Temp_ContrastValue;
	INT8U state_key = 1;

	Temp_ContrastValue = ContrastValue;
	ClearScreen();
	Rectangle(10 , 3 , 100 , 5);
	if(LanguageSel == 1)
	{
		Print6(2, 28, "SetContrast", 1);
	}
	else
	{
		Print(1, 32, "对比度", 1);
	}
	while(1)
	{
		if(state_key == 1)
		{
			state_key = 0;
			Printn(6 , 80 , Temp_ContrastValue , 1 , 2);
//			SetContrast(1 , Temp_ContrastValue);
			SetRamAddr(4 ,11);
			for(ii = 11; ii < 100 ;ii++)
			{
				Lcdwritedata(0x00);
			}

			SetRamAddr(4 ,11);
			for(ii = 11; ii < (Temp_ContrastValue * 2.57) + 11 ;ii++)
			{
				Lcdwritedata(0xff);
			}
		}
		key = ScanKey();
		if(K_OK == key)
		{	
			SetContrast(1 , Temp_ContrastValue);		
			ContrastValue = Temp_ContrastValue;
			return;
		}
		else if(K_RIGHT == key)
		{
			if(Temp_ContrastValue < 30)
			{
				Temp_ContrastValue += 1;
			}
			if(Temp_ContrastValue>=30)
			{
				Temp_ContrastValue=10;
			}
			state_key = 1;
		}
		else if(K_CANCEL == key)
		{
			ClearScreen();
			return;
		}
		else if(K_LIFT == key)
		{
			if(Temp_ContrastValue > 10)
			{
				Temp_ContrastValue -= 1;
			}
			else
			{
				Temp_ContrastValue = 30;
			}
			state_key = 1;
		}
                while(ScanKey() != 0xff);
	}
}

/*********************************************************************************/
//函数名:void Page7Display(INT8U ss, INT8U tt)
//功能:第七页显示内容.
//输入:ss:当前的选择项   tt:该二维数组的项数
//输出:无
/*********************************************************************************/
void Page7Display(INT8U ss, INT8U tt)
{
	INT8U sel,temp;
	sel = ss;
	temp = tt-2;

	Print6(7,10,"OK",1);
	if(sel > 0)
	{
		Print6(7,30,"UP",1);
	}
	else
	{
		Print6(7,30,"  ",1);
	}
	if(sel < temp)
	{
		Print6(7,56,"DOWN",1);
	}
	else
	{
		Print6(7,56,"    ",1);
	}
	Print6(7,89,"ESC",1);
}


/*********************************************************************************/
//函数名:void Page7Display(INT8U ss, INT8U tt)
//功能:第七页显示内容.
//输入:ss:当前的选择项   tt:该二维数组的项数
//输出:无
/*********************************************************************************/
void Page0Display(void)
{
	switch(TopDisp)
        {
                case 1:
                {
                        Print6(0,10,"---MAIN MENU---",1);
                }break;
                case 2:
                {
                        Print6(0,10," ---RF TEST--- ",1);
                }break;
                case 3:
                {
                        Print6(0,10," ---SETTING--- ",1);
                }break;
                case 7:
                {
                    Print6(0,10," --CLOCKMODE--",1);
                }break;
                case 8:
                {
                    Print6(0,10,"---FLASH TEST---",1);
                }
                case 10:
                {
                    Print6(0,10,"-POWERMODE TEST-",1);
                }break;
        }
}





⌨️ 快捷键说明

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