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

📄 main.c

📁 SPLC501液晶显示模组驱动程序
💻 C
字号:
//============================================================
//  工程名称:ChineseMenu.spj
//  作者:     xinqiang  (email: xinqiang@sunnorth.com.cn)    
//  联系方式:010-62981668-2916
//  适应芯片: SPCE061A
//  实现功能: SPLC501液晶显示模组驱动演示  中文菜单显示Demo
//
//  系统要求: PC with CPU 233MHz,128MB RAM,
//                      SUNPLUS u'nSP IDE 1.8.4(or later)
//
//   涉及的库:(a) CMacro.lib
//             (b) 
//
// 组成文件:
//     main.c/chinese.c/ISR.c/Menu_Second.c/MenuShow.c/ResourceList.c
//	   SPLC501User.c
//     SPLC501Driver_IO.asm/DataOSforLCD.asm 
//	   key.asm
//     SPLC501User.h/SPLC501Driver_IO.inc
//	   chinese.h/ChineseMenu.h/ResourceList.h
//
//  当前版本:  V1.0
//  日期:  2005-8-12
//  
//  参考文件:
//  维护记录:
//--------------------------------------------------------------------------------------------------------
//  Version   YYYY-MM-DD-INDEX   Modified By         Description
//
//===============================================


///////////////////////////////////////////////////////////////////////////////
//文件名称: main.c
//描述:  SPLC501模组驱动程序  中文菜单显示Demo主程序文件
//		LCD  D0~D7接IOA8~IOA15
//		LCD  EP   接IOB6
//		LCD  RWP  接IOB5
//		LCD  A0   接IOB4
//		LCD  /CS1 接IOB9  或接地也可
//
//		IO高电平:3.3V     
//		IOA0~2接三个按键(按键公共端接高电平)
//      Key1  IOA0   确定键
//		Key2  IOA1   向下控制键
//		Key3  IOA2   向上控制键
//========================================================================================
//#define Clear_Watchdog()	*(unsigned int*)0x7012=1;		// 清看门狗
#define P_SystemClock       	(unsigned int *)0x7013
#include "SPLC501User.h"
#include "ChineseMenu.h"

void UpDateMenu(unsigned int First_Index,unsigned int Menu_Index,unsigned int* Menu_List);
unsigned int GetMLNum(unsigned int* Menu_List);
unsigned int GetMLiNum_Page(unsigned int* Menu_List);

int main(void)
{
	unsigned int uiKey;
	unsigned int Item_Num,Update_Flag,Enter_Flag=0;
	unsigned int PageItem_Num;
	unsigned int First_Index=0,Active_Index=0,Temp_Index=0;
	
	*P_SystemClock = 0x0080;
	
	LCD501_Init(0x00);											//SPLC501初始化
	F_Key_Scan_Initial();										//键盘扫描初始化
	PowerON_Show(20);											//进入开机界面
	
	Item_Num = GetMLNum((unsigned int *)Menu_List1);			//获取要显示的菜单的菜单项个数
	PageItem_Num = GetMLiNum_Page((unsigned int *)Menu_List1);	//获取要显示的菜单的页数
	UpDateMenu(0,0,(unsigned int *)Menu_List1);					//初始化显示菜单
	while(1)
	{
		uiKey = SP_GetCh();					//获取键值
		if(uiKey)							//如有键按下则响应
		{
			switch(uiKey)					//判断键值进行分支控制界面
			{
				case 0x0001:				//确定键按下
					Enter_Flag=1;			//enter flag set
					break;
				case 0x0002:				//down	向下键按下
					if(Active_Index<Item_Num)	
					{
						Active_Index++;
						if(Temp_Index<PageItem_Num-1) Temp_Index++;
						else if(First_Index<Item_Num) First_Index++;
						Update_Flag = 1;
					}
					break;
				case 0x0004:				//up  向上键按下
					if(Active_Index>0)
					{
						Active_Index--;
						if(Temp_Index>0) Temp_Index--;
						else if(First_Index>0) First_Index--;
						Update_Flag = 1;
					}
					break;
				default:break;
			}
		}
		if(Update_Flag)						//Update_Flag为1时刷新菜单
		{
			UpDateMenu(First_Index,Active_Index,(unsigned int *)Menu_List1);
			Update_Flag=0;
		}
		if(Enter_Flag)						//有确定键按下时,则进入相应的功能函数
		{
			Enter_Flag = 0;
			switch(Active_Index)
			{
				case 0:ASCII_Menu();Update_Flag=1;break;		//进入第二级菜单
				case 1:Chinese_Menu();Update_Flag = 1;break;	//进入第二级菜单
				case 2:BMP_Menu();Update_Flag = 1;break;		//进入第二级菜单
				case 3:BMP_Play_Show(10,10,400,(unsigned int *)BMP_Cartoon,4);	//放动画
					BMP_Play_Show(10,0,1000,(unsigned int *)BMP_Cartoon3,10);	//放动画
					Update_Flag = 1;break;
				case 4:LCD_Show_Auto();Update_Flag = 1;break;	//自动演示
				case 5:PowerON_Show(20);Update_Flag = 1;break;	//调用开机界面
				default:break;
			}
		}
		F_Key_Scan_ServiceLoop();								//扫键程序的后台服务程序
		Clear_Watchdog();										//清看门狗
	}
}

⌨️ 快捷键说明

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