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

📄 lcd_screen.c

📁 1、arm7芯片2148驱动大液晶 2、ym320240的液晶驱动 3、I2c通信at24c256 4、各种字符的显示
💻 C
📖 第 1 页 / 共 5 页
字号:
                        else 
                        { 
                            T_Select = 1;
                        }   
                        if(T_Select > 10)
                        {
                            T_Select = 0;
    			            Code_Vaule = 0;				//没有进入设置值
    					    change_data = 1;
                        }
                        else
                        {
                            Setup_Vaule = EquipmentName_buf[(T_Select - 1)];
                            Bak_Setup_Vaule = Setup_Vaule;
                            change_data = 2;
                        }
                        break;
                    case 1:
    					temp_Project = 25;
                        Screen_num = 5;         //显示提示界面
                        break;
                    default:
                        Screen_num = 4;         //显示测试界面
                        change_data = 4;        //计算光标位置
                        break;
                }
			    break;
            case 3:     //取消键
                if(Code_Vaule == 1)
                {
					EquipmentName_buf[(T_Select - 1)]= Bak_Setup_Vaule;
					change_data = 1;
                    Code_Vaule = 0;
                    T_Select = 0;
                }
                break;
		}
            
        if(change_data != 0)               //计算光标
        {
            if((temp_Project > 1) && (temp_Project < (Parameter_Setup.Hv_tap_num + 2)))
            {
                Cursor_data &= 0x0000;
                Cursor_data |= 0x8000;
                Cursor_data |= ((temp_Project - 2) << 8);
                Cursor_data |= temp_Vaule;
            }
            else if(temp_Project > (Parameter_Setup.Hv_tap_num + 1))
            {
                Cursor_data &= 0x0000;
                Cursor_data |= ((temp_Project - Parameter_Setup.Hv_tap_num - 2) << 8);
                Cursor_data |= temp_Vaule; 
            }
            if(change_data == 4)
            {
                change_data = 0;
                Cursor_num = Cursor_data; 
           		temp_Project = 25;
            }
        }

		if(change_data == 1)
		{
			change_data = 0;
		    Data_Disp();		 //重新显示设置值
            Dis_Lcd_Data(0);                 //重新画一次
		    Data_Project(1, temp_Project, T_Select, Cursor_data);		 //显示选中的项目
		}
		else if(change_data == 2)
		{
            change_data = 0;
		    Data_Disp();		 //重新显示设置值
            Dis_Lcd_Data(0);                 //重新画一次
			Data_Modify(1, temp_Project, T_Select, Cursor_data);		//选中修改的值
		}
	}
}

/*********************************************************************************************************
** 函数名称:void Dis_Lcd_Start(void)
** 输 入: 
			T_Type显示类型			0表示8*8的字体,1表示16*8的字体
			Date_time显示的温度.
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void Deal_Lcd_HisData(void)
{
	Uchar8 temp_Project, change_data;
	change_data = 0;

	Data_Disp();		 //显示设置值
    Dis_Lcd_Data(1);                 //重新画一次

    temp_Project = 0;
    LCD_WR_string_16x16(1, FanHuiScreen_16x16_addr_x, FanHuiScreen_16x16_addr_y, 4, (Uchar8 *)&HisDeal_code_16[0][0]);			 //显示“返回”

    while((Screen_num == 6) && (temp_Project != 5))
	{
		Key_Code = Key_Num(Key_Normal_code);
		switch(Key_Code)
		{
			case 6:				//表示向上键
			case 8:				//表示左移键
				if(temp_Project == 0)        temp_Project = 1;
				else if(temp_Project == 1)    temp_Project = 0;
				change_data = 1;
				break;
			case 4:				//表示向下键
			case 2:				//表示右移键
				if(temp_Project == 0)        temp_Project = 1;
				else if(temp_Project == 1)    temp_Project = 0;
				change_data = 1;
				break;
			case 7:							//表示按确定键
                switch(temp_Project)
                {
                    case 0:       //表示返回
                        Screen_num = 0;        //显示历史索引界面
    					temp_Project = 5;
                        break;
                    default:
                        Screen_num = 7;         //删除界面
    					temp_Project = 5;
                        break;
                }
			    break;
		}
		if(change_data == 1)
		{
			change_data = 0;
		    Data_Disp();		 //重新显示设置值
            Dis_Lcd_Data(1);                 //重新画一次
            if(temp_Project == 0)   
            {
                LCD_WR_string_16x16(1, FanHuiScreen_16x16_addr_x, FanHuiScreen_16x16_addr_y, 4, (Uchar8 *)&HisDeal_code_16[0][0]);			 //显示“返回主界面”
		    }
            else 
            {
                LCD_WR_string_16x16(1, FanHuiScreen_16x16_addr_x + 8, FanHuiScreen_16x16_addr_y, 4, (Uchar8 *)&HisDeal_code_16[4][0]);			 //显示“返回主界面”
		    }
        }
	}
}

/*********************************************************************************************************
** 函数名称:void Dis_Lcd_Start(void)
** 输 入: 
			T_Type显示类型			0表示8*8的字体,1表示16*8的字体
			Date_time显示的温度.
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void Dis_Lcd_Data(Uchar8 Dis_s)	
{
	Uchar8 m, T_Len, temp_buf[26];
	LCD_WR_string_16x16(0, SheBeiBianHao_16x16_addr_x, SheBeiBianHao_16x16_addr_y, 5, (Uchar8 *)&SheBeiBianHao_code_16[0][0]);			 //显示“设备编号”
	if(Dis_s == 0)       //显示当前数据
    {
        LCD_WR_string_16x16(0, FanHuiScreen_16x16_addr_x, FanHuiScreen_16x16_addr_y, 8, (Uchar8 *)&FanHuiScreen_code_16[0][0]);			 //显示“返回主界面”
    }
    else               //显示历史数据
    {
        LCD_WR_string_16x16(0, FanHuiScreen_16x16_addr_x, FanHuiScreen_16x16_addr_y, 4, (Uchar8 *)&HisDeal_code_16[0][0]);			 //显示“返回主界面”
        LCD_WR_string_16x16(0, FanHuiScreen_16x16_addr_x + 8, FanHuiScreen_16x16_addr_y, 4, (Uchar8 *)&HisDeal_code_16[4][0]);			 //显示“返回主界面”
    }

	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;

    if(Parameter_Setup.Hv_tap_num >= 19)
	{
		Parameter_Setup.Hv_tap_num = 19;
		Parameter_Setup.Lv_tap_num = 1;
	}
	else if(Parameter_Setup.Hv_tap_num == 18)
	{
		Parameter_Setup.Lv_tap_num = 1;
	}
	else 
	{
		if(Parameter_Setup.Lv_tap_num > (19 - Parameter_Setup.Hv_tap_num))
		{
			Parameter_Setup.Lv_tap_num = 19 - Parameter_Setup.Hv_tap_num;
		}
	} 	  	

	if(Parameter_Setup.Hv_tap_num == 19)
	{
		T_Len = (Parameter_Setup.Hv_tap_num + Parameter_Setup.Lv_tap_num + 2) * 9;
	}
	else
	{
		T_Len = (Parameter_Setup.Hv_tap_num + Parameter_Setup.Lv_tap_num + 3) * 9;
	}
	  
	LCD_Write_ROW_Left(0, 15, T_Len);				 //画左边的线
	LCD_Write_ROW_Left(3, 15, T_Len);				 //画左边的线
	LCD_Write_ROW_Left(13, 15, T_Len);				 //画左边的线
	LCD_Write_ROW_Left(23, 15, T_Len);				 //画左边的线
	LCD_Write_ROW_Left(33, 15, T_Len);				 //画左边的线
	LCD_Write_ROW_Right(39, 15, T_Len);				 //画右边的线

	temp_buf[0] = CHAR_H;						     //写“H”
	temp_buf[1] = CHAR_v;							 //写“v”

	temp_buf[2] = CHAR_L;						     //写“H”
	temp_buf[3] = CHAR_v;							 //写“v”

	temp_buf[5] = CHAR_R; 							 //写“R”
	temp_buf[6] = CHAR_a; 							 //写“a”
	temp_buf[7] = CHAR_b; 							 //写“b”
	temp_buf[8] = CHAR_R; 							 //写“R”
	temp_buf[9] = CHAR_b; 							 //写“b”
	temp_buf[10] = CHAR_c;							 //写“c”
	temp_buf[11] = CHAR_R; 							 //写“R”
	temp_buf[12] = CHAR_c; 							 //写“c”
	temp_buf[13] = CHAR_a;							 //写“a”

	temp_buf[14] = CHAR_R; 							 //写“R”
	temp_buf[15] = CHAR_a; 							 //写“a”
	temp_buf[16] = CHAR_o; 							 //写“o”
	temp_buf[17] = CHAR_R; 							 //写“R”
	temp_buf[18] = CHAR_b; 							 //写“b”
	temp_buf[19] = CHAR_o;							 //写“o”
	temp_buf[20] = CHAR_R; 							 //写“R”
	temp_buf[21] = CHAR_c; 							//写“c”
	temp_buf[22] = CHAR_o;							//写“o”

	temp_buf[23] = CHAR_E;							//写“E”
	temp_buf[24] = 65; 								//写“ ”
	temp_buf[25] = 72;								//写“%”
	if(Parameter_Setup.Hv_Channels == 0)							//单通道
	{
		LCD_WR_string_8x8(0, Data_0_addr_x11, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[5]);			 			//显示“Rab”
		LCD_WR_string_8x8(0, Data_0_addr_x21, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[8]);			 			//显示“Rbc”
		LCD_WR_string_8x8(0, Data_0_addr_x31, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[11]);			 			//显示“Rca”
	}
	else 									   //三通道
	{
		LCD_WR_string_8x8(0, Data_0_addr_x11, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[14]);			 			//显示“Ra0”
		LCD_WR_string_8x8(0, Data_0_addr_x21, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[17]);			 			//显示“Rbo”
		LCD_WR_string_8x8(0, Data_0_addr_x31, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[20]);			 			//显示“Rco”
	}
	LCD_WR_string_8x8(0, Hv_8x8_addr_x, Data_0_addr_y0, 2, temp_buf);										 	//显示“Hv”
	LCD_WR_string_8x8(0, Data_0_addr_x41, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[23]);			 			//显示“E %”

	for(m = 0; m < (Parameter_Setup.Hv_tap_num + 2); m++)			//画高压侧的横线
	{
		LCD_Write_Line(0, ((m * 9) + 15), 40);					//画横线
		Account_num(2, m);										//计算分接数
		if((m > 0) && (m < (Parameter_Setup.Hv_tap_num + 1))) 
		{
			LCD_WR_string_8x8(0, 1, ((m * 9) + 17), 2, num_buf);
		}
	}

	if(Parameter_Setup.Hv_tap_num < 19)
	{
		for(m = 2; m < (Parameter_Setup.Lv_tap_num + 4); m++)
		{
			
			LCD_Write_Line(0, ((m + Parameter_Setup.Hv_tap_num) * 9) + 15, 40);					//画横线
			Account_num(2, (m - 2));						  //计算分接数
			if((m > 2) && (m < (Parameter_Setup.Lv_tap_num + 3))) 
			{
				LCD_WR_string_8x8(0, 1, ((m + Parameter_Setup.Hv_tap_num) * 9) + 17, 2, num_buf);
			}
		}
		if(Parameter_Setup.Lv_Channels == 0)						//单通道
		{
			LCD_WR_string_8x8(0, Data_0_addr_x11, ((Parameter_Setup.Hv_tap_num + 2) * 9) + 16, 3, (Uchar8 *)&temp_buf[5]);			 			//显示“Rab”
			LCD_WR_string_8x8(0, Data_0_addr_x21, ((Parameter_Setup.Hv_tap_num + 2) * 9) + 16, 3, (Uchar8 *)&temp_buf[8]);			 			//显示“Rbc”
			LCD_WR_string_8x8(0, Data_0_addr_x31, ((Parameter_Setup.Hv_tap_num + 2) * 9) + 16, 3, (Uchar8 *)&temp_buf[11]);			 			//显示“Rca”
		}

⌨️ 快捷键说明

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