📄 menu.c
字号:
//===========================================================================================================
//12864液晶模块显示程序 v1.0 for 数控直流恒流源
//2005年9月7日
//void LCD_Ini() //LCD初始化程序
//void LCD_Set_Ini() //LCD设定初始化程序,光标闪烁
//void LCD_Set_Shift() //LCD光标移动
//void LCD_Set_Num() //LCD选定数字加减
//void LCD_Cursor_Flash() //LCD光标闪烁
//void LCD_Set_Finish() //LCD设定结束,去光标
//void LCD_AD_Num() //LCD显示测量值
//void LCD_Warning() //LCD显示报警
//
//===========================================================================================================
volatile unsigned int *P_Watchdog_Clear=(unsigned int*)(0x7012);
extern LCD_CLEAR();
extern LCD_INPUT();
extern INPUT_ALL_SCREEN();
extern LCD_MOVE();
extern LCD_MOVE_DELAY();
extern LCD_Clr_half();
unsigned int* Num_Input(unsigned int);
extern unsigned int set_sign;
extern unsigned int set_value;
extern unsigned int set_bit;
extern flag;
extern AD_DATA;
const unsigned char LCD_Gide[]=
{
//128X16 数控直流恒流源
0x0000,0x0000,0x0010,0x92D6,0x7CFF,0xFF7C,0x56D2,0xF0FF,
0x1F12,0xF0F0,0x1000,0x0808,0x08FF,0xFFC8,0x4898,0xD868,
0x2A2E,0x6CD8,0xD808,0x0000,0x0404,0xF4F4,0x949C,0x9F97,
0x9494,0xF4F4,0x0404,0x0000,0x1070,0x6187,0xE664,0x4464,
0x755F,0x4E64,0xE4C4,0x0404,0x0070,0x70FF,0xFF38,0x32F2,
0xF292,0x9292,0x92F2,0xF202,0x0000,0x1070,0x6187,0xE664,
0x4464,0x755F,0x4E64,0xE4C4,0x0404,0x0010,0x3127,0xE6E0,
0xFEFE,0xF2FA,0x5E56,0x5252,0xF2F2,0x0200,0x0000,0x0000,
0x0000,0x0000,0x0042,0x426A,0x2E3F,0x1B3E,0x2642,0x6033,
0x1F3F,0x7360,0x2000,0x0242,0xC3FF,0x7F00,0x4042,0x4242,
0x7E7E,0x4242,0x4240,0x0040,0x4040,0x7F7F,0x4A4A,0x4A4A,
0x4A4A,0x7F7F,0x4040,0x4000,0x0404,0xFCFF,0x4370,0x3F0F,
0x007F,0x7F3F,0x7F40,0x7070,0x0000,0x007F,0x7F20,0x2027,
0x2724,0x2424,0x2427,0x2720,0x2000,0x0404,0xFCFF,0x4370,
0x3F0F,0x007F,0x7F3F,0x7F40,0x7070,0x0004,0xFCFF,0x4370,
0x3F2F,0x315D,0xCDFF,0x7F05,0x0D39,0x3000,0x0000,0x0000
};
const unsigned char LCD_Set_Line[]=
{
//63X16 设定电流:
0x0008,0x3000,0x0080,0x7808,0x0878,0x8080,0x8000,0xE020,
0x2020,0x2020,0x3820,0x2020,0x2020,0xE000,0xC040,0x4040,
0x40F8,0x4040,0x4040,0xC000,0x0000,0x4890,0x3000,0x1090,
0x5038,0x1050,0x9010,0x1000,0x0000,0x0000,0x0000,0x0001,
0x01FF,0x40A1,0x8246,0x2A12,0x2A46,0x8280,0x0080,0x403D,
0x4181,0x81FF,0x8989,0x8981,0x8080,0x003F,0x1212,0x1212,
0x7F92,0x9292,0x929F,0x8060,0x0008,0xF804,0x827D,0x0101,
0xFD01,0x017D,0x83C0,0x0000,0x0063,0x6300,0x0000,0x0101
};
const unsigned char LCD_Real_Line[]=
{
//63X16 实测电流:
0x7010,0x1050,0x9010,0x18D0,0x1010,0x1010,0x7000,0x4890,
0x3000,0xF010,0xD010,0xF000,0xE000,0xF800,0xC040,0x4040,
0x40F8,0x4040,0x4040,0xC000,0x0000,0x4890,0x3000,0x1090,
0x5038,0x1050,0x9010,0x1000,0x0000,0x0000,0x0000,0x0088,
0x8889,0x4A4C,0x2918,0x0F18,0x2848,0x8888,0x0008,0xF904,
0x824F,0x201F,0x20CF,0x004F,0x807F,0x003F,0x1212,0x1212,
0x7F92,0x9292,0x929F,0x8060,0x0008,0xF804,0x827D,0x0101,
0xFD01,0x017D,0x83C0,0x0000,0x0063,0x6300,0x0000,0x0101
};
const unsigned char LCD_Show_Warning[]=
{
//128X32 电压超范围!请减小
// 负载电阻或设定电流
0x00C0,0x4040,0x4040,0xF840,0x4040,0x40C0,0x0000,0x0000,
0xF808,0x0808,0x0808,0xF808,0x0808,0x0800,0x0000,0x2020,
0xF820,0x2808,0xF808,0x8808,0xF800,0x0010,0x5090,0x3810,
0x9090,0x9090,0xB890,0x1010,0x00F8,0x0848,0x4848,0x48F8,
0x4848,0x4848,0x08F8,0x0000,0x0000,0xE000,0x0000,0x0000,
0x0000,0x0000,0x0080,0x88B0,0x0010,0x5050,0x50F8,0x5050,
0x5010,0x0008,0x1030,0x00E0,0x20A0,0xA0A0,0xF820,0x3020,
0x0000,0x0000,0x8000,0x00F8,0x0000,0x8000,0x0000,0x0000,
0x003F,0x1212,0x1212,0x7F92,0x9292,0x929F,0x8060,0x00E0,
0x1F80,0x8282,0x8282,0xFF82,0x8A92,0xB280,0x00C1,0x3D21,
0x7F89,0x8A81,0xBEA2,0xA2A3,0xBE80,0x0009,0xFA08,0x0500,
0x7F80,0x8488,0x8887,0x8060,0x00FF,0x8084,0x8585,0x85FF,
0x8595,0xA59C,0x80FF,0x0000,0x0000,0x3700,0x0000,0x0000,
0x0000,0x0000,0x0000,0x00FF,0x4021,0xFD25,0x253D,0x25A5,
0xFD01,0x0004,0x7C82,0x413F,0x003E,0x925E,0x213E,0x48E6,
0x0004,0x0201,0x0140,0x807F,0x0000,0x0001,0x0306,0x0000,
0x0080,0x40A0,0x9098,0x9090,0xD0B0,0x9080,0x0000,0x0080,
0xA0A0,0xF8A0,0xA0A0,0x80F8,0x8088,0xB080,0x00C0,0x4040,
0x4040,0xF840,0x4040,0x40C0,0x0000,0x00F0,0x1090,0x7010,
0x00F0,0x9090,0x90F0,0x0000,0x0020,0x2020,0x2020,0x2020,
0xF820,0x2830,0x2020,0x0000,0x0830,0x0000,0x8078,0x0808,
0x7880,0x8080,0x00E0,0x2020,0x2020,0x2038,0x2020,0x2020,
0x20E0,0x00C0,0x4040,0x4040,0xF840,0x4040,0x40C0,0x0000,
0x0048,0x9030,0x0010,0x9050,0x3810,0x5090,0x1010,0x0000,
0x0000,0x809F,0x8040,0x201E,0x2040,0xC09F,0x0000,0x002A,
0x2E2B,0xFE2A,0xAA42,0x2017,0x3846,0x80C0,0x003F,0x1212,
0x1212,0x7F92,0x9292,0x929F,0x8060,0x00FF,0x1020,0x114E,
0x407F,0x4444,0x447F,0x4040,0x0040,0x5F49,0x4929,0xAFA0,
0x4F30,0x4C83,0x8060,0x0001,0x01FF,0x40A1,0x8246,0x2A12,
0x2A46,0x8280,0x0080,0x403D,0x4181,0x81FF,0x8989,0x8981,
0x8080,0x003F,0x1212,0x1212,0x7F92,0x9292,0x929F,0x8060,
0x0008,0xF804,0x827D,0x0101,0xFD01,0x017D,0x83C0,0x0000
};
const unsigned char LCD_1[]=
{
//8X16 1
0x0000,0x8040,0xE000,0x0000,0x0000,0x0000,0x7F00,0x0000
};
const unsigned char LCD_2[]=
{
//8X16 2
0x00C0,0x2020,0x2020,0xC000,0x0040,0x6050,0x4844,0x4300
};
const unsigned char LCD_3[]=
{
//8X16 3
0x00C0,0x2020,0x2020,0xC000,0x0030,0x4042,0x4242,0x3D00
};
const unsigned char LCD_4[]=
{
//8X16 4
0x0000,0x0080,0x40E0,0x0000,0x1814,0x1310,0x107F,0x1000
};
const unsigned char LCD_5[]=
{
//8X16 5
0x0080,0x6020,0x2020,0x2000,0x0033,0x4141,0x4161,0x1E00
};
const unsigned char LCD_6[]=
{
//8X16 6
0x0080,0x4020,0x2020,0x4000,0x003F,0x4442,0x4242,0x3C00
};
const unsigned char LCD_7[]=
{
//8X16 7
0x0020,0x2020,0x20A0,0x6000,0x0000,0x0070,0x0E01,0x0000
};
const unsigned char LCD_8[]=
{
//8X16 8
0x00C0,0x2020,0x2020,0xC000,0x003D,0x4242,0x4242,0x3D00
};
const unsigned char LCD_9[]=
{
//8X16 9
0x00C0,0x2020,0x2020,0xC000,0x0023,0x4444,0x4422,0x1F00
};
const unsigned char LCD_0[]=
{
//8X16 0
0x00C0,0x2020,0x2020,0xC000,0x003F,0x4040,0x4040,0x3F00
};
const unsigned char cursor[]=
{
//1X16 光标
0xFCFF
};
const unsigned char blank[]=
{
//1X16
0x0000
};
const unsigned char minus[]=
{
//8X16
0x0000,0x0000,0x0000,0x0000,0x0001,0x0101,0x0101,0x0101
};
const unsigned char minus_blank[]=
{
//8X16
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
};
const unsigned char mA[]=
{
//16X16
0x0000,0x0000,0x0000,0x0000,0x0000,0x8070,0xC000,0x0000,
0x417F,0x4101,0x7F41,0x017E,0x4078,0x4704,0x054E,0x7040
};
void Menu_Ini()
{
LCD_CLEAR();
// LCD_MOVE_DELAY();
LCD_INPUT(0,0,0,128,16,LCD_Gide);
LCD_INPUT(0,2,5,63,16,LCD_Set_Line);
LCD_INPUT(0,4,5,63,16,LCD_Real_Line);
LCD_INPUT(0,2,79,8,16,LCD_0);
LCD_INPUT(0,2,87,8,16,LCD_0);
LCD_INPUT(0,2,95,8,16,LCD_0);
LCD_INPUT(0,2,103,8,16,LCD_0);
LCD_INPUT(0,2,112,16,16,mA);
LCD_INPUT(0,4,112,16,16,mA);
}
void LCD_Set_Ini() //LCD设定初始化程序,光标闪烁
{
if(set_sign==1)LCD_INPUT(0,2,70,8,16,minus);
else LCD_INPUT(0,2,70,8,16,minus_blank);
LCD_INPUT(0,2,110,1,16,cursor);
}
void LCD_Set_Shift() //LCD光标移动
{
switch(set_bit)
{
case 0: LCD_INPUT(0,2,78,1,16,blank);
LCD_INPUT(0,2,102,1,16,blank);
LCD_INPUT(0,2,110,1,16,cursor);break;
case 1: LCD_INPUT(0,2,110,1,16,blank);
LCD_INPUT(0,2,94,1,16,blank);
LCD_INPUT(0,2,102,1,16,cursor);break;
case 2: LCD_INPUT(0,2,102,1,16,blank);
LCD_INPUT(0,2,86,1,16,blank);
LCD_INPUT(0,2,94,1,16,cursor);break;
case 3: LCD_INPUT(0,2,94,1,16,blank);
LCD_INPUT(0,2,78,1,16,blank);
LCD_INPUT(0,2,86,1,16,cursor);break;
case 4: LCD_INPUT(0,2,86,1,16,blank);
LCD_INPUT(0,2,110,1,16,blank);
LCD_INPUT(0,2,78,1,16,cursor);break;
}
}
void LCD_Set_Num() //LCD选定数字加减
{
unsigned int i,m;
unsigned int *Addr;
if(set_sign==1)LCD_INPUT(0,2,70,8,16,minus);
else LCD_INPUT(0,2,70,8,16,minus_blank);
i=set_value/10000;
m=set_value-i*10000;
i=(unsigned int)(m/1000);
Addr=(unsigned int*)Num_Input(i);
LCD_INPUT(0,2,79,8,16,Addr);
m=m-i*1000;
i=m/100;
Addr=(unsigned int*) Num_Input(i);
LCD_INPUT(0,2,87,8,16,Addr);
m=m-i*100;
i=m/10;
Addr=(unsigned int*) Num_Input(i);
LCD_INPUT(0,2,95,8,16,Addr);
i=m-i*10;
Addr=(unsigned int*) Num_Input(i);
LCD_INPUT(0,2,103,8,16,Addr);
// LCD_INPUT(0,2,110,16,16,mA);
}
void LCD_Set_Finish() //LCD设定结束,去光标
{
switch(set_bit)
{
case 0:LCD_INPUT(0,2,110,1,16,blank);break;
case 1:LCD_INPUT(0,2,102,1,16,blank);break;
case 2:LCD_INPUT(0,2,94,1,16,blank);break;
case 3:LCD_INPUT(0,2,86,1,16,blank);break;
case 4:LCD_INPUT(0,2,78,1,16,blank);break;
}
}
void LCD_Cursor_Flash()
{
if(flag)
{
switch(set_bit)
{
case 0:LCD_INPUT(0,2,110,1,16,blank);break;
case 1:LCD_INPUT(0,2,102,1,16,blank);break;
case 2:LCD_INPUT(0,2,94,1,16,blank);break;
case 3:LCD_INPUT(0,2,86,1,16,blank);break;
case 4:LCD_INPUT(0,2,78,1,16,blank);break;
}
}
else
{
switch(set_bit)
{
case 0:LCD_INPUT(0,2,110,1,16,cursor);break;
case 1:LCD_INPUT(0,2,102,1,16,cursor);break;
case 2:LCD_INPUT(0,2,94,1,16,cursor);break;
case 3:LCD_INPUT(0,2,86,1,16,cursor);break;
case 4:LCD_INPUT(0,2,78,1,16,cursor);break;
}
}
}
void LCD_AD_Num() //LCD显示测量值
{
unsigned int i,m;
unsigned int *Addr;
if(set_sign==1)LCD_INPUT(0,2,70,8,16,minus);
else LCD_INPUT(0,2,70,8,16,minus_blank);
i=AD_DATA/10000;
m=AD_DATA-i*10000;
i=(unsigned int)(m/1000);
Addr=(unsigned int*)Num_Input(i);
LCD_INPUT(0,4,79,8,16,Addr);
m=m-i*1000;
i=m/100;
Addr=(unsigned int*) Num_Input(i);
LCD_INPUT(0,4,87,8,16,Addr);
m=m-i*100;
i=m/10;
Addr=(unsigned int*) Num_Input(i);
LCD_INPUT(0,4,95,8,16,Addr);
i=m-i*10;
Addr=(unsigned int*) Num_Input(i);
LCD_INPUT(0,4,103,8,16,Addr);
LCD_INPUT(0,4,112,16,16,mA);
}
unsigned int* Num_Input(unsigned int i)
{
unsigned int *_tmp;
switch(i)
{
case 0:_tmp=(unsigned int*)LCD_0;break;
case 1:_tmp=(unsigned int*)LCD_1;break;
case 2:_tmp=(unsigned int*)LCD_2;break;
case 3:_tmp=(unsigned int*)LCD_3;break;
case 4:_tmp=(unsigned int*)LCD_4;break;
case 5:_tmp=(unsigned int*)LCD_5;break;
case 6:_tmp=(unsigned int*)LCD_6;break;
case 7:_tmp=(unsigned int*)LCD_7;break;
case 8:_tmp=(unsigned int*)LCD_8;break;
case 9:_tmp=(unsigned int*)LCD_9;break;
default:break;
}
return _tmp;
}
void LCD_Warning() //LCD显示报警
{
LCD_INPUT(0,1,4,128,32,LCD_Show_Warning);
}
void LCD_Warning_Clr()
{
LCD_Clr_half();
LCD_INPUT(0,4,5,63,16,LCD_Real_Line);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -