📄 main.c
字号:
#include "CONFIG.H"
WINDOWS Mwindows={x:0,y:0,with:97,hight:67,title:"yhy_GUI_TEST"}; /* 主窗口句柄 */
WINDOWS *current_Mwindows=&Mwindows;
uint8 menu1[4]={"File"}; /*主菜单名*/
uint8 menu2[4]={"Edit"};
uint8 menu3[4]={"Wind"};
uint8 smenu11[8]={"DATA_Dis"}; /*子菜单名*/
uint8 smenu12[8]={"Graphics"};
uint8 smenu13[8]={"CurveDIS"};
uint8 smenu21[8]={"Zoom out"};
uint8 smenu22[8]={"Shorten "};
uint8 smenu23[8]={"NON_Done"};
uint8 smenu31[8]={"SLE_YHY1"};
uint8 smenu32[8]={"STOP/RUN"};
uint8 smenu33[8]={"STEM_RST"};
MMENU mmenu={no:3}; /* 主菜单句柄*/
MMENU *current_MMENU=&mmenu; /*主菜单指针*/
uint16 TEM_Buffer,TEM_L;
uint16 TEM_H=25;
uint8 Display[6]={'2','5','.','0','0','0'}; /*温度显示数据*/
SMENU Smenu[3]={
{mmenu_no:0,no:3,state:0,},
{mmenu_no:1,no:3,state:0,},
{mmenu_no:2,no:3,state:0,}
}; /* 子菜单句柄 */
SMENU *current_SMENU=&Smenu[0];
uint8 current_MMENU_NO=0,old_MMENU_NO=0;
uint8 current_SMENU_NO=0,old_SMENU_NO=0;
uint8 buttom=0,OK=0,KEY=0x00;
uint8 Stop_Run=0xff;
uint8 Temperature_buffer[61]={25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25};
uint8 Function_SMENU_NO,Function_MMENU_NO;
uint8 Acc=0;
volatile uint8 Rec_D,Rec_Start; /*中断中接受的数据用volatile*/
uint8 TEM_Alarm=32;
uint16 Eep_Addr=0x01;
#define E_Addr 0x0001
#define A_Addr 0x0003
void DATA_Dis(void);
void CurveDIS(void);
void Graphics(void);
void EXt_Init(void);
void task0(void)
{
uint8 REC_TEMP;
while(1)
{
GUI_CPutChar8_8(12, 55, Rec_D+48,Red);
if(0x0a==Rec_D) /*1010*/
{
Acc=0;
Rec_Start=1; /* 导言正确 启动接收数据 */
}
if((Rec_D!=0x0a)&&(1==Rec_Start))
{
if((0==Acc)&&(!(Rec_D&0x04)))
{
Rec_Start=0;
}
Acc++;
TEM_Buffer+=(Rec_D-1)<<(12-(3*Acc));
}
if(Acc==4)
{
REC_TEMP=((TEM_Buffer&0x0fc0)>>6)-22;
if((REC_TEMP>10)&&(REC_TEMP<41))
{
TEM_H = REC_TEMP;
if(TEM_H>=TEM_Alarm)
{Alarm=1;}
else
{Alarm=0;PORTD|=0x01;}
TEM_L=(TEM_Buffer&0x003c)>>2;
TEM_L=TEM_L*1000/16;
KEY=(TEM_Buffer&0x0002)? (KEY|0xf0):(KEY&0x0f);
KEY=(TEM_Buffer&0x0001)? (KEY|0x0f):(KEY&0xf0);
}
TEM_Buffer=0;
Rec_Start=0;
}
OSWait(K_SIG,0);
}
}
void task1(void)
{uint8 i;
while(1)
{
Display[0]=(TEM_H/10)+48;
Display[1]=(TEM_H%10)+48;
Display[3]=(TEM_L/100)+48;
Display[4]=((TEM_L%100)/10)+48;
Display[5]=((TEM_L%100)%10)+48;
Temperature_buffer[0]=TEM_H;
eeprom_write_byte (Eep_Addr, TEM_H);
Eep_Addr++;
if(Eep_Addr>512)
{Eep_Addr=4;}
for(i=59;i>0;i--)
{
Temperature_buffer[60]=Temperature_buffer[i-1];
Temperature_buffer[i]=Temperature_buffer[60];
}
OSWait(K_TMO | K_SIG,50);
}
}
void task2(void)
{
while(1)
{
GUI_MMenuNSelect(current_MMENU, old_MMENU_NO);
GUI_MMenuSelect(current_MMENU, current_MMENU_NO);
if(buttom&0x80) /* 如果OK按钮有按下*/
{
buttom &=0x7f;
if(buttom==1)
{
if(current_SMENU->mmenu_no != current_MMENU_NO)
{
current_SMENU=&Smenu[old_MMENU_NO];
current_SMENU->mmenu_no=old_MMENU_NO;
GUI_SMenuHide( current_SMENU ); /* 消除下拉菜单*/
}
current_SMENU=&Smenu[current_MMENU_NO];
current_SMENU->state=current_SMENU_NO;
current_SMENU->mmenu_no=current_MMENU_NO; /* 画下拉菜单 */
GUI_SMenuDraw(current_SMENU);
}
if(buttom==0)
{
if(current_SMENU->mmenu_no==current_MMENU_NO)
{
GUI_SMenuHide( current_SMENU ); /* 消除下拉菜单*/
}
}
}
if(buttom==1)
{
if(current_SMENU->state!=current_SMENU_NO)
{
GUI_SMenuSelect(current_SMENU, old_SMENU_NO,current_SMENU_NO);
}
}
if(OK&0x01)
{
(*Smenu[Function_MMENU_NO].Function[Function_SMENU_NO])(); /* 调用子功能函数 */
}
OSWait(K_TMO | K_SIG,50);
}
}
void task3(void)
{
uint8 key_temp=0,old_key=0;
while(1)
{
OSWait(K_TMO, 3); /* 等待50MS*/
key_temp=(PIND&0xf0);
OSWait(K_TMO, 1); /* 等待50MS*/
if((PIND&0xf0) ==key_temp)
{
if(key_temp != old_key) /* 识别长按
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -