⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hmi2.c

📁 交流异步电机直接转矩控制程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************
* 文 件 名: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 + -