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

📄 lcd_screen.c

📁 1、arm7芯片2148驱动大液晶 2、ym320240的液晶驱动 3、I2c通信at24c256 4、各种字符的显示
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "LCD.H"
#include "key.h"
#include "LCD_SCREEN.h"



/*********************************************************************************************************
** 函数名称:void WR_temperature(Uchar8 T_Type, Uchar8 *Date_time)
** 输 入: 
			T_Type显示类型			0表示8*8的字体,1表示16*8的字体
			Date_time显示的温度.
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void WR_Ver(Ushort16 T_Ver)
{
	Uchar8 temp_buf[11], m;
	temp_buf[0] = 70;	   //字符“(”
	temp_buf[1] = CHAR_V;	   //字符“V”
	temp_buf[2] = CHAR_e;	   //字符“e”
	temp_buf[3] = CHAR_r;	   //字符“r”
	temp_buf[4] = 63;	   //字符“:”
	temp_buf[5] = 65;	   //字符“:”
	Account_num(4, T_Ver);
	for(m = 0; m < 4; m++)
	{
		temp_buf[m + 6] = num_buf[m];	   
	}
	temp_buf[10] = 71;	   //字符“(”
	LCD_WR_string_16x8(0, Ver_16x16_addr_x, Ver_16x16_addr_y, 11, temp_buf);
}

/*********************************************************************************************************
** 函数名称:void WR_temperature(Uchar8 T_Type, Uchar8 *Date_time)
** 输 入: 
			T_Type显示类型			0表示8*8的字体,1表示16*8的字体
			Date_time显示的温度.
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void WR_Tel(Ushort16 Tle_C, Uint32 Tle_num)
{
	Uchar8 temp_buf[18], m;
	temp_buf[0] = CHAR_T;	   //字符“V”
	temp_buf[1] = CHAR_e;	   //字符“e”
	temp_buf[2] = CHAR_l;	   //字符“r”
	temp_buf[3] = 63;	   //字符“:”
	temp_buf[4] = 65;	   //字符“ ”

	Account_num(4, Tle_C);
	for(m = 0; m < 4; m++)
	{
		temp_buf[m + 5] = num_buf[m];	   
	}	
	temp_buf[9] = 62;	   	//字符“-”

	Account_num(8, Tle_num);
	for(m = 0; m < 8; m++)
	{
		temp_buf[m + 10] = num_buf[m];	   
	}
	LCD_WR_string_16x8(0, Tel_16x16_addr_x, Tel_16x16_addr_y, 18, temp_buf);
}

/*********************************************************************************************************
** 函数名称:void WR_temperature(Uchar8 T_Type, Uchar8 *Date_time)
** 输 入: 
			T_Type显示类型			0表示8*8的字体,1表示16*8的字体
			Date_time显示的温度.
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void Dis_Lcd_Start(void)
{
	LCD_WR_String_20x40(0, Name_20x40_addr_x, Name_20x40_addr_y, 6, (Uchar8 *)&Name_code_20x40[0][0]);			 //显示“ct3310”
	LCD_WR_String_40x40(0, Name_40x40_addr_x, Name_40x40_addr_y, 6, (Uchar8 *)&Name_code_40x40[0][0]);			 //显示“三通道直阻仪”
	WR_Ver(Ver_code);																						 //写版本号
	LCD_WR_string_16x16(0, Factory_16x16_addr_x, Factory_16x16_addr_y, 10, (Uchar8 *)&factory_code_16[0][0]);	   //显示“杭州高电科技有限公司”
	WR_Tel(Tel_code1, Tel_code2);																			 //写电话号码
}

/*********************************************************************************************************
** 函数名称:void Dis_Lcd_Start(void)
** 输 入: 
			T_Type显示类型			0表示8*8的字体,1表示16*8的字体
			Date_time显示的温度.
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void Dis_Lcd_Set(Uchar8 Cursor)	
{
	LCD_Write_rectangle(0, 0, 40, 240);			//画矩形
	LCD_Write_Line(0, 32, 40);					//画横线
	LCD_WR_string_16x16(0, ShuJu_16x16_addr_x, ShuJu_16x16_addr_y, 2, (Uchar8 *)&ShuJu_code_16[0][0]);			 //显示“数据”
	LCD_WR_string_16x16(0, CheShi_16x16_addr_x, CheShi_16x16_addr_y, 2, (Uchar8 *)&CheShi_code_16[0][0]);			 //显示“测试”
	LCD_WR_string_16x16(0, XiTong_16x16_addr_x, XiTong_16x16_addr_y, 2, (Uchar8 *)&XiTong_code_16[0][0]);			 //显示“系统”
	
	if(Cursor == 0)
	{
		//数据界面项目
		LCD_WR_string_16x16(0, SaveState_16x16_addr_x, SaveState_16x16_addr_y, 5, (Uchar8 *)&SaveNum_code_16[0][0]);			 //显示“存储状态”
		LCD_WR_string_16x16(0, SaveState_16x16_addr_x + 11, SaveState_16x16_addr_y, 2, (Uchar8 *)&State_code_16[0][0]);			 //显示“已用”
		LCD_WR_string_16x16(0, SaveState_16x16_addr_x + 17, SaveState_16x16_addr_y, 2, (Uchar8 *)&State_code_16[2][0]);			 //显示“条”
		
        LCD_WR_string_16x16(0, SaveState_16x16_addr_x + 21, SaveState_16x16_addr_y, 2, (Uchar8 *)&State_code_16[4][0]);			 //显示“还剩”
		LCD_WR_string_16x16(0, SaveState_16x16_addr_x + 27, SaveState_16x16_addr_y, 1, (Uchar8 *)&State_code_16[6][0]);			 //显示“条”
        
        LCD_WR_string_16x16(0, DanQian_16x16_addr_x, DanQian_16x16_addr_y, 3, (Uchar8 *)&DanQian_code_16[0][0]);			 //显示“当前”
		LCD_WR_string_16x16(0, LiShi_16x16_addr_x, LiShi_16x16_addr_y, 3, (Uchar8 *)&LiShi_code_16[0][0]);			 //显示“历史”
		LCD_WR_string_16x16(0, FanHui_16x16_addr_x, FanHui_16x16_addr_y, 2, (Uchar8 *)&FanHui_code_16[0][0]);			 //显示“返回”
	}
	else if(Cursor == 1)
	{
	 	//测试设置界面项目
		LCD_WR_string_16x16(0, CSTongDao_16x16_addr_x, CSTongDao_16x16_addr_y, 5, (Uchar8 *)&CSTongDao_code_16[0][0]);			 //显示“测试通道”
		LCD_WR_string_16x16(0, HVCe_16x16_addr_x, HVCe_16x16_addr_y, 4, (Uchar8 *)&HVCe_code_16[0][0]);			 			//显示“高压侧”
		LCD_WR_string_16x16(0, HV_FenJie_16x16_addr_x, HV_FenJie_16x16_addr_y, 3, (Uchar8 *)&FenJie_code_16[0][0]);			 //显示“分接”
		LCD_WR_string_16x16(0, HV_CSDianLiu_16x16_addr_x, HV_CSDianLiu_16x16_addr_y, 5, (Uchar8 *)&CSDianLiu_code_16[0][0]);		//显示“测试电流”
		LCD_WR_string_16x16(0, LVCe_16x16_addr_x, LVCe_16x16_addr_y, 4, (Uchar8 *)&LVCe_code_16[0][0]);			 			//显示“低压侧”
		LCD_WR_string_16x16(0, LV_FenJie_16x16_addr_x, LV_FenJie_16x16_addr_y, 3, (Uchar8 *)&FenJie_code_16[0][0]);			 //显示“分接”
		LCD_WR_string_16x16(0, LV_CSDianLiu_16x16_addr_x, LV_CSDianLiu_16x16_addr_y, 5, (Uchar8 *)&CSDianLiu_code_16[0][0]);		//显示“测试电流”
		LCD_WR_string_16x16(0, ZZTiaoJian_16x16_addr_x, ZZTiaoJian_16x16_addr_y, 5, (Uchar8 *)&ZZTiaoJian_code_16[0][0]);			//显示“终止条件”
		LCD_WR_string_16x16(0, Che_16x16_addr_x, CSCheShi_16x16_addr_y, 1, (Uchar8 *)&Che_code_16[0][0]);			 	//显示“测”
		LCD_WR_string_16x16(0, (Che_16x16_addr_x + 2), CSCheShi_16x16_addr_y, 1, (Uchar8 *)&Kong_code_16[0][0]);		//显示“”
		LCD_WR_string_16x16(0, Shi_16x16_addr_x, CSCheShi_16x16_addr_y, 1, (Uchar8 *)&Shi_code_16[0][0]);			 	//显示“试”
		LCD_WR_string_16x16(0, Fan_16x16_addr_x, CSFanHui_16x16_addr_y, 1, (Uchar8 *)&Fan_code_16[0][0]);			 	//显示“返”
		LCD_WR_string_16x16(0, (Fan_16x16_addr_x + 2), CSFanHui_16x16_addr_y, 1, (Uchar8 *)&Kong_code_16[0][0]);		//显示“”
		LCD_WR_string_16x16(0, Hui_16x16_addr_x, CSFanHui_16x16_addr_y, 1, (Uchar8 *)&Hui_code_16[0][0]);			 	//显示“回”
	}
	else 
	{
	 	//系统设置界面项目
		LCD_WR_string_16x16(0, DateTime_16x16_addr_x, DateTime_16x16_addr_y, 5, (Uchar8 *)&DateTime_code_16[0][0]);			 //显示“日期时间”
        WR_Date(1, (DateTime_16x16_addr_x + 11), DateTime_16x16_addr_y, (Uchar8 *)&Time_Data.YE);							 //显示16*8的时间
        
        LCD_WR_string_16x16(0, CHECK_16x16_addr_x, CHECK_16x16_addr_y, 5, (Uchar8 *)&CHECK_code_16[0][0]);			 			//显示“精度校准”
	    LCD_WR_string_16x16(0, (CHECK_16x16_addr_x + 11), CHECK_16x16_addr_y, 6, (Uchar8 *)&PutMiMa_code_16[0][0]);			 			//显示“精度校准”
        
        LCD_WR_string_16x16(0, Auto_16x16_addr_x, Auto_16x16_addr_y, 5, (Uchar8 *)&Auto_code_16[0][0]);			 			//显示“自动参数”
        LCD_WR_string_16x16(0, (Auto_16x16_addr_x + 11), Auto_16x16_addr_y, 6, (Uchar8 *)&ResistanceChange_code_16[0][0]);			 			//显示“电阻变化率”
        LCD_WR_string_16x16(0, (Auto_16x16_addr_x + 26), Auto_16x16_addr_y, 5, (Uchar8 *)&TimeDistance_code_16[0][0]);			 			//显示“时间间隔”
        
        LCD_WR_string_16x16(0, CheShiRenYuan_16x16_addr_x, CheShiRenYuan_16x16_addr_y, 5, (Uchar8 *)&CheShiRenYuan_code_16[0][0]);			 //显示“测试人员”

		LCD_WR_string_16x16(0, CheShiAddress_16x16_addr_x, CheShiAddress_16x16_addr_y, 5, (Uchar8 *)&CheShiAddress_code_16[0][0]);		//显示“测试地点”
		LCD_WR_string_16x16(0, XTFan_16x16_addr_x, XTFanHui_16x16_addr_y, 1, (Uchar8 *)&Fan_code_16[0][0]);			 	//显示“返”
		LCD_WR_string_16x16(0, (XTFan_16x16_addr_x + 2), XTFanHui_16x16_addr_y, 1, (Uchar8 *)&Kong_code_16[0][0]);		//显示“”
		LCD_WR_string_16x16(0, (XTFan_16x16_addr_x + 4), XTFanHui_16x16_addr_y, 1, (Uchar8 *)&Kong_code_16[0][0]);		//显示“”
		LCD_WR_string_16x16(0, XTHui_16x16_addr_x, XTFanHui_16x16_addr_y, 1, (Uchar8 *)&Hui_code_16[0][0]);			 	//显示“回”
	}
	WR_Date(1, Time16_addr_x, Time16_addr_y, (Uchar8 *)&Time_Data.YE);							 //显示16*8的时间
	WR_temperature(1, Temper_num);								 //显示16*8的温度
}

/*********************************************************************************************************
** 函数名称:void Test_DisSetUp_Data(void)
** 输 入: 
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 显示设置项的内容
********************************************************************************************************/
void Data_Disp(void)
{
	Uchar8 m, temp_y;
	if(Parameter_Setup.Hv_tap_num == 0)  Parameter_Setup.Hv_tap_num = 1;
	if(Parameter_Setup.Lv_tap_num == 0)  Parameter_Setup.Lv_tap_num = 1;

    for(m = 0; m < 10; m++)
    {
        num_buf[0] = EquipmentName_buf[m]; 
        if(num_buf[0] > 35)  num_buf[0] = 65;      //为空格 
        LCD_WR_string_16x8(0, (SheBeiBianHao_16x16_addr_x + 12 + m), SheBeiBianHao_16x16_addr_y, 1,(Uchar8 *)&num_buf[0]);			 //显示“设备编号”
    }
    
    for(m = 0; m < Parameter_Setup.Hv_tap_num; m++)
    {
		Account_resistance(Hv_Data_buf[m][0]);
		LCD_WR_string_8x8(0, Data_0_addr_x1, (Data_0_addr_y1 + m * 9), 9, (Uchar8 *)&Disp_buf[0]);						 //显示第一列

		Account_resistance(Hv_Data_buf[m][1]);
		LCD_WR_string_8x8(0, Data_0_addr_x2, (Data_0_addr_y1 + m * 9), 9, (Uchar8 *)&Disp_buf[0]);						 //显示第二列

		Account_resistance(Hv_Data_buf[m][2]);
		LCD_WR_string_8x8(0, Data_0_addr_x3, (Data_0_addr_y1 + m * 9), 9, (Uchar8 *)&Disp_buf[0]);						 //显示第三列

		if((Hv_Data_buf[m][0] != 0xffffffff) && (Hv_Data_buf[m][1] != 0xffffffff) && (Hv_Data_buf[m][2]!= 0xffffffff))
        {
            Hv_Data_buf[m][3] = Account_rate(Hv_Data_buf[m][0], Hv_Data_buf[m][1], Hv_Data_buf[m][2]);
    		LCD_WR_string_8x8(0, Data_0_addr_x4, (Data_0_addr_y1 + m * 9), 5, (Uchar8 *)&Disp_buf[0]);						 //显示比例
        }
    }
    for(m = 0; m < Parameter_Setup.Lv_tap_num; m++)
    {
        if(Parameter_Setup.Hv_tap_num < 19)											//计算低压侧的数据显示位置,中间空了一行
    	{
    		temp_y = ((Parameter_Setup.Hv_tap_num + m + 2) * 9) + Data_0_addr_y1;
    	}
    	else 
    	{
    		temp_y = ((Parameter_Setup.Hv_tap_num + m + 1) * 9) + Data_0_addr_y1;
    	}

		Account_resistance(Lv_Data_buf[m][0]);
		LCD_WR_string_8x8(0, Data_0_addr_x1, temp_y, 9, (Uchar8 *)&Disp_buf[0]);						 //显示第一列

		Account_resistance(Lv_Data_buf[m][1]);
		LCD_WR_string_8x8(0, Data_0_addr_x2, temp_y, 9, (Uchar8 *)&Disp_buf[0]);						 //显示第二列

		Account_resistance(Lv_Data_buf[m][2]);
		LCD_WR_string_8x8(0, Data_0_addr_x3, temp_y, 9, (Uchar8 *)&Disp_buf[0]);						 //显示第三列
		
        if((Lv_Data_buf[m][0] != 0xffffffff) && (Lv_Data_buf[m][1] != 0xffffffff) && (Lv_Data_buf[m][2] != 0xffffffff))
        {
    		Lv_Data_buf[m][3] = Account_rate(Lv_Data_buf[m][0], Lv_Data_buf[m][1], Lv_Data_buf[m][2]);
    		LCD_WR_string_8x8(0, Data_0_addr_x4, temp_y, 5, (Uchar8 *)&Disp_buf[0]);						 //显示比例
        }
	}
      	//高压侧“单通道,三通道”
	LCD_WR_string_16x16(0, (DataHVCe_16x16_addr_x + 8), DataHVCe_16x16_addr_y, 3, (Uchar8 *)&SetupTongDao_code_16[Parameter_Setup.Hv_Channels][0]);			 //选择显示高压侧的“单通道,三通道”
	//高压侧“测试电流”
	Account_num(2, Parameter_Setup.Hv_Ampen);
	num_buf[2] = CHAR_A;
	LCD_WR_string_16x8(0, (DataHVCe_16x16_addr_x + 15), DataHVCe_16x16_addr_y, 3,(Uchar8 *)&num_buf[0]);			 //显示“测试电流值”
	//低压侧“单通道,三通道”
	LCD_WR_string_16x16(0, (DataLVCe_16x16_addr_x + 8), DataLVCe_16x16_addr_y, 3, (Uchar8 *)&SetupTongDao_code_16[Parameter_Setup.Lv_Channels][0]);			 //选择显示低压侧“单通道,三通道”
	//低压侧“测试电流”
	Account_num(2, Parameter_Setup.Lv_Ampen);
	num_buf[2] = CHAR_A;
	LCD_WR_string_16x8(0, (DataLVCe_16x16_addr_x + 15), DataLVCe_16x16_addr_y, 3,(Uchar8 *)&num_buf[0]);			 //显示“测试电流值”

	WR_Date(0, Time8_addr_x, Time8_addr_y, (Uchar8 *)&Parameter_Setup.Time_Data.YE);							 //显示8*8的时间
	WR_temperature(0, Parameter_Setup.Temper_num);								 //显示8*8的温度
}    
/*********************************************************************************************************
** 函数名称:void Test_DisSetUp_Data(void)
** 输 入: 
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 显示设置项的内容
********************************************************************************************************/
void Data_Modify(Uchar8 T_tpey, Uchar8 temp_Data, Uchar8 temp_Data2, Ushort16 T_Cursor)
{
	Uchar8 temp_x, temp_y, temp_v, Account_y;
	temp_v = (T_Cursor& 0x8000) >> 8;			//记算是 HV还是LV;
	temp_x = (T_Cursor >> 8) & 0x7f;			//记算X的位置
	temp_y = T_Cursor  & 0x00ff;			//记算y的位置

	if(temp_x > 19)		  temp_x = 19;
	if(temp_y > 2)		  temp_y = 2;
        

    switch(temp_Data)
    {
        case 0:         //设备编号
            num_buf[0] = EquipmentName_buf[(temp_Data2 - 1)]; 
            if(num_buf[0] > 35)  num_buf[0] = 65;      //为空格 
            LCD_WR_string_16x8(T_tpey, (SheBeiBianHao_16x16_addr_x + 11 + temp_Data2), SheBeiBianHao_16x16_addr_y, 1,(Uchar8 *)&num_buf[0]);			 //显示“设备编号”
            break;
        default:
        	if(temp_v == 0x80)					//表示高压侧
        	{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -