📄 disp.c
字号:
OCM_onewr(0, (info+i)->num / 10 + 0x10); //显示编号
OCM_onewr(0, (info+i)->num % 10 + 0x10);
for (j = 0; j < 11; j++) OCM_onewr(0, 0x00); //空格
OCM_onewr(0,(&((info+i)->t))->mon / 10 + 0X10);
OCM_onewr(0,(&((info+i)->t))->mon % 10 + 0X10);
OCM_onewr(0, '-' - 0X20);
OCM_onewr(0,(&((info+i)->t))->date / 10 + 0X10);
OCM_onewr(0,(&((info+i)->t))->date % 10 + 0X10);
OCM_onewr(0, 0x00); //显示空格
OCM_onewr(0,(&((info+i)->t))->hour / 10 + 0X10);
OCM_onewr(0,(&((info+i)->t))->hour % 10 + 0X10);
OCM_onewr(0, ':' - 0X20); //冒号显示
OCM_onewr(0,(&((info+i)->t))->min / 10 + 0X10);
OCM_onewr(0,(&((info+i)->t))->min % 10 + 0X10);
}
}
/*******************************************************************************************
** 函数名称: void Disp_picture(uchar target, uchar mod)
** 功能描述: 显示相应图标
** 输入参数: target: 对象选择
target 0 1 2 3 4 5
对象 目录 时钟 注册 继电器 上下限修改 电源
mod: =0: 不显示, =其他 :显示
** 调用模块: 外部函数
********************************************************************************************/
void Disp_picture(uchar target, uchar mod)
{
switch (target)
{
case 0:
if (mod)
OCM_picture(ICO_ADDR + ICO_WIDE * 0, //显示查看图标
8 * sizeof(gImage_look[0]), //宽度
sizeof(gImage_look) / sizeof(gImage_look[0]), //高度
gImage_look[0]);
else
OCM_picture_clr(ICO_ADDR + ICO_WIDE * 0, //清除图标
8 * sizeof(gImage_look[0]),
sizeof(gImage_look) / sizeof(gImage_look[0]));
break;
case 1:
if (mod)
OCM_picture(ICO_ADDR + ICO_WIDE * 1, //显示时钟图标
8 * sizeof(gImage_time[0]), //宽度
sizeof(gImage_time) / sizeof(gImage_time[0]), //高度
gImage_time[0]);
else
OCM_picture_clr(ICO_ADDR + ICO_WIDE * 1, //清除图标
8 * sizeof(gImage_time[0]),
sizeof(gImage_time) / sizeof(gImage_time[0]));
break;
case 2:
if (mod)
OCM_picture(ICO_ADDR + ICO_WIDE * 2, //显示手动注册
8 * sizeof(glmage_login[0]), //宽度
sizeof(glmage_login) / sizeof(glmage_login[0]), //高度
glmage_login[0]);
else
OCM_picture_clr(ICO_ADDR + ICO_WIDE * 2, //清除图标
8 * sizeof(glmage_login[0]),
sizeof(glmage_login) / sizeof(glmage_login[0]));
break;
case 3:
if (mod)
OCM_picture(ICO_ADDR + ICO_WIDE * 3, //显示上下限修改
8 * sizeof(glmage_limit[0]), //宽度
sizeof(glmage_limit) / sizeof(glmage_limit[0]), //高度
glmage_limit[0]);
else
OCM_picture_clr(ICO_ADDR + ICO_WIDE * 3, //清除图标
8 * sizeof(glmage_limit[0]),
sizeof(glmage_limit) / sizeof(glmage_limit[0]));
break;
case 4:
if (mod)
OCM_picture(ICO_ADDR + ICO_WIDE * 4, //显示屏蔽图标
8 * sizeof(gImage_dis[0]), //宽度
sizeof(gImage_dis) / sizeof(gImage_dis[0]), //高度
gImage_dis[0]);
else
OCM_picture_clr(ICO_ADDR + ICO_WIDE * 4, //清除图标
8 * sizeof(gImage_dis[0]),
sizeof(gImage_dis) / sizeof(gImage_dis[0]));
break;
case 5:
if (mod)
OCM_picture(Figure_Addr + 8 * 30 * 13 + 26, //显示电池图标
8 * sizeof(gImage_barr[0]), //宽度
sizeof(gImage_barr) / sizeof(gImage_barr[0]), //高度
gImage_barr[0]);
else
OCM_picture_clr(Figure_Addr + 8 * 30 * 13 + 26, //清除图标
8 * sizeof(gImage_barr[0]),
sizeof(gImage_barr) / sizeof(gImage_barr[0]));
break;
default: break;
}
}
/*********************************************************************************************
** 函数名称: void Disp_Year(uint year)
** 功能描述: 显示年
** 输入参数: year 年份
** 调用模块: 外部函数
*********************************************************************************************/
void Disp_Year(uint year)
{
OCM_ac(2, DATA_ADDR); //年月首地址
OCM_onewr(0,year / 1000 + 0X10);
OCM_onewr(0,year % 1000 / 100 + 0X10);
OCM_onewr(0,year % 100 / 10 + 0X10);
OCM_onewr(0,year % 10 + 0X10);
}
/*********************************************************************************************
** 函数名称: void Disp_Time(struct time * t)
** 功能描述: 显示时间
** 输入参数: struct time * t
** 输出参数: 无
** 调用模块: 外部函数调用
*********************************************************************************************/
void Disp_Time(struct time * t)
{
struct time t_date;
t_date = * t;
OCM_ac(2, DATA_ADDR+5); //显示地址13行第22个字
OCM_onewr(0,t_date.mon / 10 + 0X10);
OCM_onewr(0,t_date.mon % 10 + 0X10);
OCM_onewr(0, '-' - 0X20);
OCM_onewr(0,t_date.date / 10 + 0X10);
OCM_onewr(0,t_date.date % 10 + 0X10);
OCM_ac(2, TIME_ADDR);
OCM_onewr(0,t_date.hour / 10 + 0X10);
OCM_onewr(0,t_date.hour % 10 + 0X10);
OCM_onewr(0, ':' - 0X20); //冒号显示
OCM_onewr(0,t_date.min / 10 + 0X10);
OCM_onewr(0,t_date.min % 10 + 0X10);
}
/*******************************************************************************************
** 函数名称: void Limit_change_ico(void)
** 功能描述: 上下限报警修改界面显示
** 输入参数: 无
** 调用模块: 外部函数
********************************************************************************************/
void Limit_change_ico(void)
{
OCM_autwr(MESSAGE_ADDR1,sizeof(PLEASE_tab),PLEASE_tab);
OCM_autwr(MESSAGE_ADDR2,sizeof(ADDR_tab),ADDR_tab);
OCM_autwr(MESSAGE_ADDR2 + sizeof(ADDR_tab),sizeof(LIMIT_tab),LIMIT_tab);
}
/*******************************************************************************************
** 函数名称: void Linkage_change_ico(void)
** 功能描述: 上下限报警修改界面显示
** 输入参数: 无
** 调用模块: 外部函数
********************************************************************************************/
void Linkage_change_ico(void)
{
OCM_autwr(MESSAGE_ADDR1,sizeof(PLEASE_tab),PLEASE_tab);
OCM_autwr(MESSAGE_ADDR2,sizeof(ADDR_tab),ADDR_tab);
OCM_autwr(MESSAGE_ADDR2 + sizeof(ADDR_tab),sizeof(LINKAGE_tab),LINKAGE_tab);
OCM_autwr(MESSAGE_ADDR2 + sizeof(ADDR_tab) + sizeof(LINKAGE_tab),sizeof(SHIELD_tab),SHIELD_tab);
}
/******************************************************************************************
函数名称: void OCM_dispinit(void)
函数描述: 初始显示
********************************************************************************************/
void OCM_dispinit(void)
{
/* 固定图形显示 */
Disp_Alarm_Figure(); //显示固定的报警图像
Disp_Line(11 * (30 * 8) + 4 * 30); //画线
Disp_Line(3 * (30 * 8) + 4 * 30);
/* DVO 显示 */
OCM_picture(Figure_Addr + 0, 16, 24, &DVO_tab[0][0]); //显示DVO图标
OCM_picture(Figure_Addr + 2, 16, 24, &DVO_tab[1][0]);
OCM_picture(Figure_Addr + 4, 16, 24, &DVO_tab[2][0]);
/* 图标显示 */
Disp_picture(0, 1); //显示查看图标
Disp_picture(1, 1); //显示时钟图标
Disp_picture(2, 1); //显示上电掉电图标
Disp_picture(3, 1); //显示继电器开关图标
Disp_picture(4, 1); //显示屏蔽图标
//Disp_picture(5, 1); //显示电池图标
}
#if DISP_TEST > 0
void main(void)
{
/*
void Message_clr(void) 清除信息显示区
void Disp_Arrow(uchar num) 显示箭头
void Disp_Alarm_num(uchar num, uchar bus) 显示报警数量
void Disp_Alarm( struct alarm *info) 显示详细报警信息
void Disp_fault(struct fault *info) 显示故障信息
void Disp_limit(struct limit *info) 显示上下限信息
void Disp_shield(struct shield *info) 显示屏蔽信息
void Disp_login(struct login *info) 显示注册信息
void Disp_Power(struct power *info) 上掉电信息
void Disp_Time(struct time * t) 显示时间
void Disp_Year(uint year) 显示年
void Disp_picture(uchar target, uchar mod) 图标显示
void Limit_change_ico(void) 上下限修改界面
void Linkage_change_ico(void) 联动和屏蔽修改界面
void OCM_dispinit(void) 显示初始化 */
struct time idata Time_Date = {11,9,10,26}; //定义了一个时间结构体初始化为11月9日10:26
struct alarm idata Alarm_Date[4] ={{1},{1},{1},{1}};
struct fault idata Fault_Date[4] ={{2},{2},{2},{2}};
struct shield idata Shield_Date[12] ={{3},{3},{3},{3}};
struct power idata Power_Date[4] ={{4},{4},{4},{4}};
struct login idata Login_Date[12] ={{5},{5},{5},{5}};
struct limit idata Limit_Date[4] ={{6},{6},{6},{6}};
OCM_init();
OCM_dispinit(); //初始显示
Disp_Year(2009);
Disp_Time(&Time_Date); //显示时间
Disp_Alarm_num(132,3); //显示报警数和总线
Disp_Arrow(4); //显示箭头
Message_clr();
Limit_change_ico();
Message_clr();
Linkage_change_ico();
Message_clr();
Disp_Alarm(Alarm_Date);
Message_clr();
Disp_fault(Fault_Date);
Message_clr();
Disp_limit(Limit_Date);
Message_clr();
Disp_shield(Shield_Date);
Message_clr();
Disp_login(Login_Date);
Message_clr();
Disp_Power(Power_Date);
while(1);
}
#endif
/*************************************END************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -