📄 main.c
字号:
case 3:
GUI_LoadPic(56,30,*(num+a2),8,16); //正常显示第三位
GUI_LoadPic1(64,30,*(num+a3),8,16); //反白显示第四位
break;
case 4:
GUI_LoadPic(64,30,*(num+a3),8,16); //正常显示第四位
GUI_LoadPic1(80,30,*(num+a4),8,16); //反白显示第五位
break;
case 5:
GUI_LoadPic(80,30,*(num+a4),8,16); //正常显示第五位
GUI_LoadPic1(88,30,*(num+a5),8,16); //反白显示第六位
break;
}
yidong++;
if(yidong==6)yidong=0;
}
break;
case KEY_RIGHT:
{
switch(yidong-1)
{
case 0:
GUI_LoadPic1(32,30,*(num+jia),8,16); //反白显示第一位并加相应值
a0=jia;
break;
case 1:
GUI_LoadPic1(40,30,*(num+jia),8,16); //反白显示第二位并加相应值
a1=jia;
break;
case 2:
GUI_LoadPic1(56,30,*(num+jia),8,16); //反白显示第三位并加相应值
a2=jia;
break;
case 3:
GUI_LoadPic1(64,30,*(num+jia),8,16); //反白显示第四位并加相应值
a3=jia;
break;
case 4:
GUI_LoadPic1(80,30,*(num+jia),8,16); //反白显示第五位并加相应值
a4=jia;
break;
case 5:
GUI_LoadPic1(88,30,*(num+jia),8,16); //反白显示第六位并加相应值
a5=jia;
break;
}
jia++;
if(jia==10)jia=0;
}
break;
case KEY_OK:
{
HOUR = a0*10+a1;
MIN = a2*10+a3;
SEC = a4*10+a5;
OSTaskResume(4);
yidong=0;
jia=0;
// GUI_ClearSCR();
return;
}
default:
break;
}
}
}
void DongHua(void)
{
uint8 a0,b0,a=1,i;
uint8 a0q,b0q;
uint8 a0h,b0h;
a0=a0q=23;
b0=b0q=23;
a0h=b0h=1;
GUI_ClearSCR(); //清屏
OSTaskSuspend(4);
OSTaskSuspend(2);
while(a)
{
for(i=0;i<100;i++)
{
GUI_ClearSCR();
GUI_Circle(a0,b0,5,1);
GUI_Circle(a0q,b0q,5,0);
a0q=a0;
b0q=b0;
OSTimeDly(10);
if(a0h==1)
a0=a0+2;
if(b0h==1)
b0=b0+2;
if(a0h==0)
a0=a0-2;
if(b0h==0)
b0=b0-2;
if(a0<=7)
{
a0h=1;
}
if(a0>=121)
{
a0h=0;
}
if(b0>=56)
{
b0h=0;
}
if(b0<=7)
{
b0h=1;
}
if((IO1PIN&IO_KEY4)==0)
{
OSTimeDly(4);
if((IO1PIN&IO_KEY4)==0)
{
while((IO1PIN&IO_KEY4)==0);
OSTaskResume(4);
OSTaskResume(2);
return;
}
}
}
}
}
/****************************************************************************
** 名称: DemoMessage()
** 功能: 显示一个消息框(包含OK和CANSEL两个命令按纽),显示消息
为"Hello,ZLG/GUI",然后等待按键输入
** 入口参数:无
** 出口参数:无
****************************************************************************/
void DemoMessage(void)
{
uint8 select;
uint8 *key;
uint8 err;
WINDOWS message;
message.x=0; //设置窗口的位置和大小
message.y=0;
message.with=128;
message.hight=64;
message.title=(uint8*)0; //窗口标题
message.state=(uint8*)0;
GUI_WindowsDraw(&message); //显示对话框窗口
GUI_PutString(8,35,"Hello,"); //显示对话框的消息"Hello,ZLG/GUI"
GUI_PutString(8,45,"ZLG/GUI!");
select=0;
while(1)
{
if(select==0)
{
GUI_Button_OK1(72,29); //选中OK按钮
GUI_Button_Cancle(72,45); //取消CANSEL按钮的选中状态
if((int)key==KEY_OK)
{
//GUI_ClearSCR();
GUI_WindowsHide(&message);
sh();
return;
}
}
else
{
GUI_Button_OK(72,29); //取消OK按钮的选中状态
GUI_Button_Cancle1(72,45); //选中CANSEL按钮
if((int)key==KEY_OK)
{
GUI_WindowsHide(&message);
return;
}
}
key=OSMboxPend(KeyMbox,0,&err);
if(((int)key==KEY_LEFT)||((int)key==KEY_RIGHT))
{
select=1-select;
}
}
}
/****************************************************************************
** 名称: MenuIcoInit()
** 功能: 初始化mainmenu结构数组。即初始化各图标变量的成员,如图标
图形点阵数据指针、图标标题点阵数据指针及相应的功能函数等
** 入口参数:无
** 出口参数:无
****************************************************************************/
void MenuIcoInit(void)
{
int i;
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;
}
mainmenu[0].Function=(void(*)(void))DemoMessage;
mainmenu[1].Function=(void(*)(void))DongHua;
mainmenu[2].Function=(void(*)(void))DemoMessage;
mainmenu[3].Function=(void(*)(void))DemoMessage;
mainmenu[4].Function=(void(*)(void))DemoMessage;
mainmenu[5].Function=(void(*)(void))DemoMessage;
mainmenu[6].Function=(void(*)(void))DemoMessage;
mainmenu[7].Function=(void(*)(void))DemoMessage;
}
/****************************************************************************
** 名称: DrawMainWindow(void)
** 功能: 在屏幕上显示一个主窗口,大小为128X64
** 入口参数:无
** 出口参数:无
****************************************************************************/
void DrawMainWindow(void)
{
WINDOWS mainw;
mainw.x=0;
mainw.y=0;
mainw.with=128;
mainw.hight=64;
mainw.title=(uint8*)NULL;
mainw.state=NULL;
GUI_WindowsDraw(&mainw);
}
/****************************************************************************
** 名称: Task0任务0有先级为3
** 功能:
** 入口参数:无
** 出口参数:无
****************************************************************************/
void Task0(void *pdata)
{
uint8 select;
pdata=pdata;
while(1)
{
select=SelectMenuIco();
if(select<8)
{
(*mainmenu[select].Function)();
DrawMainWindow();
}
}
}
/****************************************************************************
** 名称: Task1任务1有先级为3
** 功能:
** 入口参数:无
** 出口参数:无
****************************************************************************/
void Task1(void *pdata)
{
uint32 i;
uint32 io_dat;
uint8 key;
pdata=pdata;
TargetInit();
GUI_Initialize();
GUI_SetColor(1,0);
MenuIcoInit();
DrawMainWindow();
OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 3);
OSTaskCreate (TaskDisp,(void *)0, &TaskDispStk[TaskStkLengh - 1], 4);
while(1)
{
OSTimeDly(4);
if((IO1PIN&IO_KEYALL)!=IO_KEYALL)
{
OSTimeDly(2);
io_dat=IO1PIN;
if((io_dat&IO_KEYALL)!=IO_KEYALL)
{
if((io_dat&IO_KEY2)==0)key=KEY_LEFT;
if((io_dat&IO_KEY3)==0)key=KEY_RIGHT;
if((io_dat&IO_KEY4)==0)key=KEY_OK;
for(i=0;i<100000000;i++)
{
if((IO1PIN&IO_KEYALL)==IO_KEYALL) break;
}
OSMboxPost(KeyMbox,(void*)key);
}
}
}
}
void TaskDisp(void *pdata) //Task0 任务0 优先级2
{
uint32 times;
uint8 bak,shuz[6];
pdata=pdata;
while(1)
{
times=CTIME0;
bak=(times>>16)&0x1F; // 获取小时
shuz[0]=bak/10;
shuz[1]=bak%10;
bak=(times>>8)&0x3F; // 获取分钟
shuz[2]=bak/10;
shuz[3]=bak%10;
bak=times&0x3F; // 获取秒
shuz[4]=bak/10;
shuz[5]=bak%10;
GUI_LoadPic(20,4,*(FONT5x7ASCII_1+shuz[0]),5,8); //显示小时
GUI_LoadPic(26,4,*(FONT5x7ASCII_1+shuz[1]),5,8); //显示小时
GUI_LoadPic(32,4,*(FONT5x7ASCII_1+10),5,8); //显示冒号
GUI_LoadPic(38,4,*(FONT5x7ASCII_1+shuz[2]),5,8); //显示分钟
GUI_LoadPic(44,4,*(FONT5x7ASCII_1+shuz[3]),5,8); //显示分钟
GUI_LoadPic(50,4,*(FONT5x7ASCII_1+10),5,8); //显示冒号
GUI_LoadPic(56,4,*(FONT5x7ASCII_1+shuz[4]),5,8); //显示秒
GUI_LoadPic(62,4,*(FONT5x7ASCII_1+shuz[5]),5,8); //显示秒
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -