?? 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 + -