📄 screen.c
字号:
#include <stdio.h>
#include <absacc.h>
#include <stdarg.h>
#include <./Atmel/at89x52.h>
#include "source.h"
/*为屏幕的下部分显示时间、信息的区域显示函数*/
bit screen_hbs(void){
static unsigned char inf_seq=0;
unsigned char local_msg;
local_msg=read_hbs_msg();//读其消息队列
if(local_msg){//如果返回值为非0,则消息不为空
switch(local_msg){
case MSG_HBS_INFO_CLEAR:
switch(screen.hbs_fsm){
case FSM_HBS_CLEAR:
break;
default:
clr_notice();
change_hbs_fsm(FSM_HBS_CLEAR);
break;
}
break;
case MSG_HBS_INFO_SHOW:
switch(screen.hbs_fsm){
case FSM_HBS_INFO:
break;
default:
clr_notice(); //清除以前的信息
inf_seq=0;
show_elvinfo(show_notice.ognd+inf_seq); //显示第一条信息
change_hbs_fsm(FSM_HBS_INFO);//把状态转换为显示信息状态
break;
}
break;
case MSG_HBS_INFO_CHANGE:
switch(screen.hbs_fsm){
case FSM_HBS_INFO://循环显示从1到9的信息
clr_notice();//清除以前的信息
inf_seq++;
inf_seq %=10;
show_elvinfo(show_notice.ognd+inf_seq);//显示下一条信息
break;
}
break;
case MSG_HBS_UPD_TIME://更新时间
break;
case MSG_HBS_UPD_TEMPE://更新温度
show_wd(others.temperature);
break;
default:
break;
}
return 1;
}
else{
return 0;
}
}
/*为屏幕显示箭头的区域*/
bit screen_status(void){
static unsigned char move_step=(STATAREA_HEIGHT-ARROW_HEIGHT)/3-1;
unsigned char this_msg;
this_msg=read_status_msg();//读其消息队列
if(this_msg){
switch(this_msg){
case MSG_STATUS_UP://为显示箭头向上的消息
switch(screen.status_fsm){
case FSM_STATUS_UP:
break;
default:
clr_area(STATAREA_LEFT,STATAREA_TOP,STATAREA_WIDTH,STATAREA_HEIGHT);
draw_uparrow(POS_ARROW_ORGX,STATAREA_TOP+STATAREA_HEIGHT-ARROW_HEIGHT);
scentry.arrow_cur_top=STATAREA_TOP+STATAREA_HEIGHT-ARROW_HEIGHT;
change_status_fsm(FSM_STATUS_UP);
break;
}
break;
case MSG_STATUS_DOWN://为显示箭头向下的消息
switch(screen.status_fsm){
case FSM_STATUS_DOWN:
break;
default:
clr_area(STATAREA_LEFT,STATAREA_TOP,STATAREA_WIDTH,STATAREA_HEIGHT);
draw_downarrow(POS_ARROW_ORGX,STATAREA_TOP);
scentry.arrow_cur_top=STATAREA_TOP;
change_status_fsm(MSG_STATUS_DOWN);
break;
}
break;
case MSG_STATUS_CLEAR://为清除箭头的消息
switch(screen.status_fsm){
case FSM_STATUS_CLR:
break;
default:
/*清除显示箭头的区域*/
clr_area(STATAREA_LEFT,STATAREA_TOP,STATAREA_WIDTH,STATAREA_HEIGHT);
change_status_fsm(FSM_STATUS_CLR);
break;
}
break;
case MSG_STATUS_MOVE://箭头移动
switch(screen.status_fsm){
case FSM_STATUS_DOWN:
if(scentry.arrow_cur_top+move_step+ARROW_HEIGHT>STATAREA_HEIGHT+STATAREA_TOP){
//已经到达箭头显示区域的最低部,箭头停止
}
else{//向下移动箭头,在移动箭头时没有清除以前的箭头,可以看出其移动轨迹
set_timer(MOVE_TIMER,MOVE_TIME_LENGTH);
scentry.arrow_cur_top +=move_step;
draw_downarrow(POS_ARROW_ORGX,scentry.arrow_cur_top);
}
break;
case FSM_STATUS_UP:
if(scentry.arrow_cur_top<(move_step+STATAREA_TOP)){
//已经到达箭头显示区域的最顶部,箭头停止
}
else{//向上移动箭头,在移动箭头时没有清除以前的箭头,可以看出其移动轨迹
set_timer(MOVE_TIMER,MOVE_TIME_LENGTH);
scentry.arrow_cur_top -=move_step;
draw_uparrow(POS_ARROW_ORGX,scentry.arrow_cur_top);
}
break;
}
break;
default:
break;
}
return 1;
}
else{
return 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -