📄 main.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 + -