📄 main.c
字号:
GUI_Button_OK1(30,15); // 选中"OK"按钮
GUI_Button_Cancle(30,30); // 取消"CANSEL"按钮的选中状态
}
else
{
GUI_Button_OK(30,15);
GUI_Button_Cancle1(30,30);
}
key = OSMboxPend(KeyMbox, 0, &err);
if( ((int)key==KEY_LEFT)||
((int)key==KEY_RIGHT) )
{ select = 1- select;
}
if((int)key==KEY_OK)
{ GUI_WindowsHide(&message); // 清除窗口显示
return;
}
OSTimeDly(10);
}
}
/****************************************************************************
* 名称: MenuIcoInit()
* 功能: 初始化mainmenu结构数组。即初始化各图标变量的成员,如图标
* 图形点阵数据指针,图标标题点阵数据指针,相应的功能函数等等。
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void MenuIcoInit(void)
{ int i;
extern uint8 *pic_all[][2]; // 图标资源(pic1--pic8)
for(i=0; i<8; i++)
{ /* 初始化为末选中状态 */
mainmenu[i].state = 0;
/* 连接相应的图标数据 */
mainmenu[i].icodat = (uint8 *) pic_all[i][0];
mainmenu[i].title = (uint8 *) pic_all[i][1];
/* 连接菜单功能函数 */
mainmenu[i].Function = ( void(*) (void) ) DemoMessage;
}
}
/****************************************************************************
* 名称: DrawMainWindow()
* 功能: 在屏幕上显示一个主窗口,大小为128x64。
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void DrawMainWindow(void)
{ WINDOWS mainw;
mainw.x = 0;
mainw.y = 0;
mainw.with = 84;
mainw.hight = 48;
mainw.title = (uint8 *) "HELLO"; // 窗口标题
mainw.state = NULL; // 状态栏不显示
GUI_WindowsDraw(&mainw); // 显示窗口
}
/*********************************************************************************************************
** Task0 任务0
** 功能:使用ZLG/GUI实现图标菜单演示。在LCD屏幕上显示图标菜单,
** 通过KEY2、KEY3按键选择菜单,通过KEY4按键确定选择。
** 说明:请将EasyARM2131开发板上的P0.17、P0.18、P0.19跳线器短
** 接到"KEY2"、"KEY3"、"KEY4"端。
********************************************************************************************************/
void Task0(void *pdata)
{
uint8 select;
pdata = pdata;
TargetInit ();
/* 初始化ZLG/GUI */
GUI_Initialize();
GUI_SetColor(1, 0) ;
/* 图标菜单初始化 */
MenuIcoInit();
/* 显示窗口 */
DrawMainWindow();
/* 循环调用图标菜单操作,并执行相应功能 */
while(1)
{ select = SelectMenuIco(); // 选择菜单
if(select<8)
{ (*mainmenu[select].Function)(); // 执行功能
}
OSTimeDly(1);
}
}
/*********************************************************************************************************
** Task1 任务1
** 功能: 等待一个按键,然后发送按键消息。具有去抖动功能和按键超时退出功能。
** 说明:按键和键值的对应关系如下
** KEY2 -------- KEY_LEFT
** KEY3 -------- KEY_RIGHT
** KEY3 -------- KEY_OK
********************************************************************************************************/
void Task2(void *pdata)
{
int temp;
pdata = pdata;
while(1)
{
AD_START();
//OSMboxPost(KeyMbox, (void *)(temp%5)); // 发送按键消息
temp++;
SSP_SEND_LED(temp%16);
OSTimeDly(150);
}
}
void Task3(void *pdata)
{
uint8 *snd="12a";
pdata = pdata;
while(1)
{
UART0_SendStr(snd);
IO1CLR =(1<<25);
IO1CLR =(1<<23);
// IO0CLR=(1<<11);
OSTimeDly(100);
}
}
void Task1(void *pdata)
{
uint8 k=0,GPIO_DATA[3];
uint8 RS485_RECV[2];
pdata = pdata;
memset(GPIO_DATA,0,sizeof(GPIO_DATA)) ;
while(1)
{
IO1SET =(1<<25);
IO1SET =(1<<23);
GPIO_DATA[k++]=SSP_READ_GPIO() ;
if(k>2) k=0;
UART1_GetStr(RS485_RECV,3);
OSTimeDly(200);
}
}
void RTC_TASK(void *pdata)
{
RTCTime Time ;
char Display[9],DisplayDATE[11];
// uint8 Wait_Signal0;
pdata = pdata; /*防止编译器警告 */
Time.RTC_Sec = 0; /* 秒 - [0,59] */
Time.RTC_Min = 0; /* 分 - [0,59] */
Time.RTC_Hour = 0; /* 小时 - [0,23] */
Time.RTC_Mday = 25; /* 当月天数- [1,31] */
Time.RTC_Mon = 4; /* 月 - [1,12] */
Time.RTC_Year = 2007; /* 年 - [0,4095] */
Time.RTC_Wday = 2; /* 星期- [0,6] */
Time.RTC_Yday = 156; /* 当年天数 - [1,365] */
TargetInit(); /*硬件初始化 */
RTCInit(); /**/
RTCSetTime(Time);
RTCStart();
while(1)
{
// OSSemPend(DispSem,0,&Wait_Signal0); /*等待信号量 */
Time = RTCGetTime();
Display[0] = ((uint8)Time.RTC_Hour/10)+48;
Display[1] = ((uint8)Time.RTC_Hour%10)+48;
Display[2] = ':';
Display[3] = ((uint8)Time.RTC_Min/10)+48;
Display[4] = ((uint8)Time.RTC_Min%10)+48;
Display[5] = ':';
Display[6] = ((uint8)Time.RTC_Sec/10)+48;
Display[7] = ((uint8)Time.RTC_Sec%10)+48;
Display[8] = '\0';
DisplayDATE[0] =((uint8) Time.RTC_Year/1000)+48;
Time.RTC_Mday=Time.RTC_Mday%1000;
DisplayDATE[1] =((uint8) Time.RTC_Year/100)+48;
Time.RTC_Mday=Time.RTC_Mday%100;
DisplayDATE[2] =((uint8) Time.RTC_Year/10)+48;
Time.RTC_Mday=Time.RTC_Mday%10;
DisplayDATE[3] =((uint8)Time.RTC_Year)+48;
DisplayDATE[4]=':';
DisplayDATE[5] = ((uint8)Time.RTC_Mon/10)+48;
DisplayDATE[6] = ((uint8)Time.RTC_Mon%10)+48;
DisplayDATE[7]=':';
DisplayDATE[8] = ((uint8)Time.RTC_Mday/10)+48;
DisplayDATE[9] = ((uint8)Time.RTC_Mday%10)+48;
DisplayDATE[10] = '\0';
GUI_PutString(8, 15, "Date is:"); //
GUI_PutString(8, 25, &DisplayDATE[0]);
GUI_PutString(8, 30, "Time is:"); //
GUI_PutString(8, 40, &Display[0]);
// GUI_Picture(0, 0,97,66,BMP);
OSTimeDly(100);
// Wait_Signal0 = OSSemPost(DispSem); /*发送信号量 */
}
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -