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

📄 menu.c

📁 CC2430的液晶显示程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "app_ex.h"
#include "hal.h"
#include "lcd128_64.h"
#include "string.h"
#include "Font.h"
#include "guangming.h"
#include "potentiometer.h"
#include "sensormenu.h"

INT8U NowItem = 0;
INT8U FirstItem = 0;
INT8U TopDisp = 1;
unsigned char MenuItem[10][17];					//菜单缓冲区
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 Page1Display(INT8U ss, INT8U tt);
INT8U  DrawMenu(INT8U MenuItem[][17] , 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[][17] , 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+2),0,MenuItem[FirstItem + ii],1);
					}
					else
					{	
						Print((ii*2+2),0,MenuItem[FirstItem + ii],0);				
					}
				}
			}
			else
			{
				for(ii = 0 ; ii < 2 ; ii++)
				{
					if(NowItem != ii)
					{				
						Print((ii*2+2),0,MenuItem[FirstItem + ii],1);
					}
					else
					{	
						Print((ii*2+2),0,MenuItem[FirstItem + ii],0);				
					}
				}
			}
                        //Page1Display((FirstItem + NowItem),(MenuNo+1));
                        while(ScanKey() != 0xff);
                        halWait(5);
		}
		key = ScanKey();
		if(K_UP == key)
		{
			while(ScanKey() == K_UP);
			if(NowItem > 0) NowItem -= 1;
			else if(FirstItem > 0) FirstItem -= 1;
			NowScreen = 1;
		}
              //  /*
		if(K_DOWN == key)
		{
			while(ScanKey() == K_DOWN);
			if(MenuNo > 2)
			{
				if(NowItem < 2) 	NowItem += 1;                     //显示的菜单不是屏上显示的最后一条
				else if((FirstItem + 3) < MenuNo) 	FirstItem += 1;  //首条菜单后移一条,比如将显示菜单由123改为234
                                else                                                     //首条菜单+3>菜单总数
                                {
                                    FirstItem = 0;
                                    NowItem   = 0;
                                }
			}
			else
			{
				if(NowItem < 1) 	NowItem += 1;                 //如果菜单
			}
                        NowScreen = 1;
		}
            //    */
                /*
                		if(K_DOWN == key)
		{
			while(ScanKey() == K_DOWN);
			if(MenuNo > 2)//菜单数大于2
			{
				if(NowItem < 2) 	NowItem += 1;   //显示的菜单不是屏上显示的最后一条
				else if((FirstItem + 3) < MenuNo)       //显示第一条菜单的编号<菜单数目
                                {
                                  FirstItem += 1;                       //首条菜单后移一条,比如将显示菜单由123改为234
                                }
                                if((FirstItem + 3) >= MenuNo)           //首条菜单+3>菜单总数
                                {
                                    FirstItem = 0;                      //从第一条开始显示
                                    NowItem = 0;
                                }
				NowScreen = 1;                          //下一次刷屏
			}
			else                                            //总菜单数目<2
			{
				if(NowItem < 1) 	NowItem += 1;   //选择将菜单后移
				NowScreen = 1;                          //刷屏
			}
		}
                */

		if(K_OK == key)
		{
			while(ScanKey() == K_OK);
                        halWait(5);
                        return FirstItem + NowItem;
		}
		if(K_CANCEL == key)
		{
			while(ScanKey() == K_CANCEL);
                        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:Stop Watch    ");
	        strcpy((char*)MenuItem[2] ,"3:UART          ");
	        strcpy((char*)MenuItem[3] ,"4:CllckModes    ");
                strcpy((char*)MenuItem[4] ,"5:Random        ");
                strcpy((char*)MenuItem[5] ,"6:AES           ");
                strcpy((char*)MenuItem[6] ,"7:DMA           ");
                strcpy((char*)MenuItem[7] ,"8:Power         ");
                strcpy((char*)MenuItem[8] ,"9:Setting       ");
                strcpy((char*)MenuItem[9] ,"10:SYS Sensor   ");
         //}

        else
        {
                strcpy((char*)MenuItem[0] ,"1:无线测试      ");
	        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[6] ,"7:直接存贮测试  ");
                strcpy((char*)MenuItem[7] ,"8:电源模式      ");
                strcpy((char*)MenuItem[8] ,"9:表演板设定    ");
                strcpy((char*)MenuItem[9] ,"10:传感器       ");
        }
                */

	FirstItem = 0;
	NowItem = 0;
        TopDisp = 1;
        while(1)
        {
                strcpy((char*)MenuItem[0] ,"1 :RF Test      ");
	        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[6] ,"7 :DMA          ");
                strcpy((char*)MenuItem[7] ,"8 :Power        ");
                strcpy((char*)MenuItem[8] ,"9 :Setting      ");
                strcpy((char*)MenuItem[9] ,"10:SYS Sensor   ");


            sel = DrawMenu(MenuItem , 10);

            while(ScanKey() != 0xff);
            halWait(5);
            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;
                            DoSetContrast();
                    }break;

                    case 9:
                    {
                            TopDisp = 12;
                            Sensor_Menu();
                    }break;

                    default:
                    break;
            }
        }//end while
		
}
//*********************************************************************************
//函数名:void SettingDisp(void)
//功能:参数设定菜单显示
//输入:无
//输出:无
//*********************************************************************************
void SettingDisp(void)
{
        INT8U sel;
        /*
        if(LanguageSel == 1)
        {
                strcpy((char*)MenuItem[0] ,"1:Contrast      ");
	        strcpy((char*)MenuItem[1] ,"2:Language      ");
        }
        else
        {
                strcpy((char*)MenuItem[0] ,"1:对比度设定    ");
	        strcpy((char*)MenuItem[1] ,"2:语言设定      ");
        }
        */
        strcpy((char*)MenuItem[0] ,"1:Contrast      ");

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

//*********************************************************************************
//函数名:void BackLampDisp(void)
//功能:背光设定菜单显示
//输入:无
//输出:无
//*********************************************************************************
void BackLampDisp(void)
{

⌨️ 快捷键说明

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