📄 hmi2.c
字号:
/****************************************************************************
* 文 件 名:HMI2.c
* 版 本: V1.0
* 功 能:通用人机界面2
* 连 接:
* 说 明:
* 作者:黄振升
* 日期:2006/10/12
*---------------历史版本信息-------------------------------------------------
* 修 改 人: 黄振升
* 版 本: V1.0
* 日 期: 2006/05/10
* 描 述:
****************************************************************************/
/***********************************************************************
包含文件
***********************************************************************/
#include "config.h"
#include "masterine.h"//包含管脚定义头文件//
#include "lcd19264_h.h"
#include "math.h"
#include "frequent-convter_h.h"
#include "frequent_conventer_char.h"
/***********************************************************************
* 常量参数定义
***********************************************************************/
#define Xmenu1 0 //标题位置
#define Ymenu1 0
#define Xmenu2 0
#define Ymenu2 0
#define Xmenu3 0
#define Ymenu3 2
#define Xmenu4 0
#define Ymenu4 2
#define Xmenu5 0
#define Ymenu5 4
#define Xmenu6 0
#define Ymenu6 4
#define Xmenu7 0
#define Ymenu7 6
#define Xmenu8 0
#define Ymenu8 6
#define XParameter1 0 //修改惨数位置
#define XParameter2 0
#define XParameter3 0
#define XParameter4 0
#define XParameter5 0
#define XParameter6 0
#define XParameter7 0
#define XParameter8 0
#define MAX_Parameter 8 //最大显示项目数
#define MAX_value1 MAX_TZfrquent //显示数字的界限
#define MAX_value2 MAX_Carry_Frequent
#define MAX_value3 MAX_TDZ
#define MAX_value4 10000
#define MAX_value5 10000
#define MAX_value6 10000
#define MAX_value7 10000
#define MAX_value7 10000
#define MIN_value1 0
#define MIN_value2 0
#define MIN_value3 0
#define MIN_value4 0
#define MIN_value5 0
#define MIN_value6 0
#define MIN_value7 0
#define MIN_value8 0
#define value1_RW 1 //参数是只读还是能修改,1表示可以修改
#define value2_RW 1
#define value3_RW 1
#define value4_RW 1
#define value5_RW 1
#define value6_RW 1
#define value7_RW 1
#define value8_RW 1
/***********************************************************************
* 使用的数据结构
***********************************************************************/
typedef struct
{
uint8 const *menu1; //菜单
uint8 qm1; //菜单1字数
uint8 const *menu2; //菜单
uint8 qm2; //菜单1字数
uint8 const *menu3; //菜单
uint8 qm3; //菜单1字数
uint8 const *menu4; //菜单
uint8 qm4; //菜单1字数
uint8 const *menu5; //菜单
uint8 qm5; //菜单1字数
uint8 const *menu6; //菜单
uint8 qm6; //菜单1字数
uint8 const *menu7; //菜单
uint8 qm7; //菜单1字数
uint8 const *menu8; //菜单
uint8 qm8; //菜单1字数
}HMI2_Parameter1; //只读显示参数
typedef struct //HMI2显示用结构体2,这里预设,两行整数,一行浮点,一行整数
{
int32 value1[2]; //第1个值占存,保持数组结构是为了缓冲需要,根据需要使用
int32 value2[2]; //第2个值占存,保持数组结构是为了缓冲需要,根据需要使用
fp32 value3[2]; //第3个值占存,保持数组结构是为了缓冲需要,根据需要使用
int32 value4[2]; //第4个值占存,保持数组结构是为了缓冲需要,根据需要使用
fp32 value5[2]; //第5个值占存,保持数组结构是为了缓冲需要,根据需要使用
fp32 value6[2]; //第6个值占存,保持数组结构是为了缓冲需要,根据需要使用
int32 value7[2]; //第7个值占存,保持数组结构是为了缓冲需要,根据需要使用
int32 value8[2]; //第8个值占存,保持数组结构是为了缓冲需要,根据需要使用
int8 choice; //被选中的修改项,0既没有项目被选中
int8 old_choice; //旧选中项,用于显示完整性
uint32 remark1; //备注1
}HMI2_Parameter2; //读写显示参数
HMI2_Parameter1 HMI2_RO;
HMI2_Parameter2 HMI2_RW;
/***********************************************************************
* 名 称: void HMI2_Init( void )
* 功 能:界面初始化
* 入口参数:无
* 出口参数:无
* 说 明:
***********************************************************************/
void HMI2_Init(void)
{
LCD19264_Init() ; //LCD19264初始化
/***********************************************************************
* 初始化显示区
***********************************************************************/
HMI2_RO.menu1 = FC_CHA1;
HMI2_RO.qm1 = 3;
HMI2_RO.menu2 = FC_CHA2;
HMI2_RO.qm2 = 3;
HMI2_RO.menu3 = FC_CHA3;
HMI2_RO.qm3 = 3;
HMI2_RO.menu4 = FC_CHA4;
HMI2_RO.qm4 = 3;
HMI2_RO.menu5 = FC_CHA5;
HMI2_RO.qm5 = 3;
HMI2_RO.menu6 = FC_CHA6;
HMI2_RO.qm6 = 3;
HMI2_RO.menu7 = FC_CHA7;
HMI2_RO.qm7 = 3;
HMI2_RO.menu8 = FC_CHA8;
HMI2_RO.qm8 = 3;
/***********************************************************************
* 初始显示值
***********************************************************************/
HMI2_RW.value1[0] = 0;
HMI2_RW.value2[0] = 0;
HMI2_RW.value3[0] = 0;
HMI2_RW.value4[0] = 0;
HMI2_RW.value5[0] = 0;
HMI2_RW.value6[0] = 0;
HMI2_RW.value7[0] = 0;
HMI2_RW.value8[0] = 0;
HMI2_RW.choice = 0;
HMI2_RW.old_choice = 0;
/***********************************************************************
* 写入项目
***********************************************************************/
LCD19264_16X16_newline(Xmenu1,Ymenu1,HMI2_RO.menu1,HMI2_RO.qm1);
LCD19264_16X16_newline(Xmenu2,Ymenu2,HMI2_RO.menu2,HMI2_RO.qm2);
LCD19264_16X16_newline(Xmenu3,Ymenu3,HMI2_RO.menu3,HMI2_RO.qm3);
LCD19264_16X16_newline(Xmenu4,Ymenu4,HMI2_RO.menu4,HMI2_RO.qm4);
LCD19264_16X16_newline(Xmenu5,Ymenu5,HMI2_RO.menu5,HMI2_RO.qm5);
LCD19264_16X16_newline(Xmenu6,Ymenu6,HMI2_RO.menu6,HMI2_RO.qm6);
LCD19264_16X16_newline(Xmenu7,Ymenu7,HMI2_RO.menu7,HMI2_RO.qm7);
LCD19264_16X16_newline(Xmenu8,Ymenu8,HMI2_RO.menu8,HMI2_RO.qm8);
}
/***********************************************************************
* 名 称: void HMI2_ReFlash( void )
* 功 能:界面刷新
* 入口参数:需要刷新的项目,用一个8位寄存器表示,分别对应8个参数,为1即为需要刷新
* 出口参数:无
* 说 明: 无闪烁功能
***********************************************************************/
void HMI2_HMI2_ReFlash(uint8 rewhat)
{
uint8 i;
for(i=0;i<8;i++)
{
if((rewhat&0x01) == 1) //查到有项目被选中
{
/***********************************************************************
* 根据需要刷新
***********************************************************************/
switch(i)
{
case 1:
{
#if value1_RW == 1
if(HMI2_RW.choice ==i)
LCD19264_FNum(XParameter1,Ymenu1,(fp32)HMI2_RW.value1[0],1,1,5);
else LCD19264_FNum(XParameter1,Ymenu1,(fp32)HMI2_RW.value1[0],1,0,5);
break;
#else
LCD19264_FNum(XParameter1,Ymenu1,(fp32)HMI2_RW.value1[0],1,0,5);
#endif
}
case 2:
{
#if value2_RW == 1
if(HMI2_RW.choice ==i)
LCD19264_FNum(XParameter2,Ymenu2,(fp32)HMI2_RW.value2[0],1,1,5);
else LCD19264_FNum(XParameter2,Ymenu2,(fp32)HMI2_RW.value2[0],1,0,5);
break;
#else
LCD19264_FNum(XParameter2,Ymenu2,(fp32)HMI2_RW.value2[0],1,0,5);
#endif
}
case 3:
{
#if value3_RW == 1
if(HMI2_RW.choice ==i)
LCD19264_FNum(XParameter3,Ymenu3,(fp32)HMI2_RW.value3[0],2,1,5);
else LCD19264_FNum(XParameter3,Ymenu3,(fp32)HMI2_RW.value3[0],2,0,5);
break;
#else
LCD19264_FNum(XParameter3,Ymenu3,(fp32)HMI2_RW.value3[0],2,0,5);
#endif
}
case 4:
{
#if value4_RW == 1
if(HMI2_RW.choice ==i)
LCD19264_FNum(XParameter4,Ymenu4,(fp32)HMI2_RW.value4[0],1,1,5);
else LCD19264_FNum(XParameter4,Ymenu4,(fp32)HMI2_RW.value4[0],1,0,5);
break;
#else
LCD19264_FNum(XParameter4,Ymenu4,(fp32)HMI2_RW.value4[0],1,0,5);
#endif
}
case 5:
{
#if value5_RW == 1
if(HMI2_RW.choice ==i)
LCD19264_FNum(XParameter5,Ymenu5,(fp32)HMI2_RW.value5[0],1,1,5);
else LCD19264_FNum(XParameter5,Ymenu5,(fp32)HMI2_RW.value5[0],1,0,5);
break;
#else
LCD19264_FNum(XParameter5,Ymenu5,(fp32)HMI2_RW.value5[0],1,0,5);
#endif
}
case 6:
{
#if value6_RW == 1
if(HMI2_RW.choice ==i)
LCD19264_FNum(XParameter6,Ymenu6,(fp32)HMI2_RW.value6[0],1,1,5);
else LCD19264_FNum(XParameter6,Ymenu6,(fp32)HMI2_RW.value6[0],1,0,5);
break;
#else
LCD19264_FNum(XParameter6,Ymenu6,(fp32)HMI2_RW.value6[0],1,0,5);
#endif
}
case 7:
{
#if value7_RW == 1
if(HMI2_RW.choice ==i)
LCD19264_FNum(XParameter7,Ymenu7,(fp32)HMI2_RW.value7[0],1,1,5);
else LCD19264_FNum(XParameter7,Ymenu7,(fp32)HMI2_RW.value7[0],1,0,5);
break;
#else
LCD19264_FNum(XParameter7,Ymenu7,(fp32)HMI2_RW.value7[0],1,0,5);
#endif
}
case 8:
{
#if value8_RW == 1
if(HMI2_RW.choice ==i)
LCD19264_FNum(XParameter8,Ymenu8,(fp32)HMI2_RW.value8[0],1,1,5);
else LCD19264_FNum(XParameter8,Ymenu8,(fp32)HMI2_RW.value8[0],1,0,5);
break;
#else
LCD19264_FNum(XParameter8,Ymenu8,(fp32)HMI2_RW.value8[0],1,0,5);
#endif
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -