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

📄 disp.c

📁 OCM240128-7.rar
💻 C
📖 第 1 页 / 共 3 页
字号:
		
		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 + -