📄 lcd.c.bak
字号:
#include <msp430x14x.h>
#include"lcd.h"
// 全局变量F
unsigned char DisplayData[7]; // 分离出数字存入的数组
unsigned char ZeroFlag = 0; // 清零标志
unsigned char InterfaceIndex = 1; // 界面索引
unsigned char P_RangeFlag = 0; // 压力模块量程的识别
long SecondZero = 0;
// LED字库
static unsigned char Number[14][2] = {{0x0F, 0x0A}, // 0
{0x00, 0x0A}, // 1
{0x0B, 0x0C}, // 2
{0x09, 0x0E}, // 3
{0x04, 0x0E}, // 4
{0x0D, 0x06}, // 5
{0x0F, 0x06}, // 6
{0x08, 0x0A}, // 7
{0x0F, 0x0E}, // 8
{0x0D, 0x0E}, // 9
{0x00, 0x00}, // null 10
{0x00, 0x04}, // - 11
{0x01, 0x00}, // 下划线 12
{0x01, 0x04}, // 下划线带减号 13
};
static unsigned char Number1_3[14][2] = {{0x05, 0x0F}, // 0
{0x00, 0x06}, // 1
{0x06, 0x0B}, // 2
{0x02, 0x0F}, // 3
{0x03, 0x06}, // 4
{0x03, 0x0D}, // 5
{0x07, 0x0D}, // 6
{0x00, 0x07}, // 7
{0x07, 0x0F}, // 8
{0x03, 0x0F}, // 9
{0x00, 0x00}, // null 10
{0x02, 0x00}, // - 11
{0x00, 0x08}, // 下划线 12
{0x02, 0x08}, // 下划线带减号 13
};
static unsigned char Number4_6[11][2] = {{0x0F, 0x05}, // 0
{0x06, 0x00}, // 1
{0x0B, 0x06}, // 2
{0x0F, 0x02}, // 3
{0x06, 0x03}, // 4
{0x0D, 0x03}, // 5
{0x0D, 0x07}, // 6
{0x07, 0x00}, // 7
{0x0F, 0x07}, // 8
{0x0F, 0x03}, // 9
{0x00, 0x00}, // null 10
};
static unsigned char Number13_16[14][2] = {{0x0A, 0x0F}, // 0
{0x00, 0x06}, // 1
{0x06, 0x0D}, // 2
{0x04, 0x0F}, // 3
{0x0C, 0x06}, // 4
{0x0C, 0x0B}, // 5
{0x0E, 0x0B}, // 6
{0x00, 0x0E}, // 7
{0x0E, 0x0F}, // 8
{0x0C, 0x0F}, // 9
{0x00, 0x00}, // null 10
{0x04, 0x00}, // - 11
{0x00, 0x01}, // 下划线 12
{0x04, 0x01}, // 下划线带减号 13
};
/******************************************************************
*函数描述:液晶显示用的延时
*局部变量:
*返回变量:
******************************************************************/
void Delay_lcd(void)
{
_NOP(); // Required only for C-spy
_NOP(); // Required only for C-spy
_NOP(); // Required only for C-spy
}
/******************************************************************
*函数描述:清LCD RAM
*局部变量:
*返回变量:
******************************************************************/
void ClearRAM(unsigned char s)
{
unsigned char i = 0;
CS1_1();
// CS2_1();
switch(s)
{
case UP:
Delay_lcd();
CS1_0();i = 16; // 开片选
break;
case DOWN:
Delay_lcd();
CS2_0(); i = 22;
break;
case ALL:
Delay_lcd();
CS1_0();CS2_0();
i = 22;
break;
default:
return;
}
Delay_lcd();
// 发送写数据模式101
CLK_0();
Delay_lcd();
DI_1(); // 1
Delay_lcd();
CLK_1();
Delay_lcd();
CLK_0();
Delay_lcd();
DI_0(); // 0
Delay_lcd();
CLK_1();
Delay_lcd();
CLK_0();
Delay_lcd();
DI_1(); // 1
Delay_lcd();
CLK_1();
for(s = 6; s > 0; s--)
{
_NOP(); _NOP();
CLK_0();
Delay_lcd();
DI_0();
Delay_lcd();
CLK_1();
}
for(; i > 0; i--)
{
for(s = 4; s > 0; s--)
{
_NOP(); _NOP();
CLK_0();
Delay_lcd();
DI_0();
Delay_lcd();
CLK_1();
}
}
CS1_1();CS2_1()
}
/******************************************************************
*函数描述:写数据, CLK上升沿有效
s 选择上两行、下两行、全部
RAM_Addr RAM地址
data 数据
*局部变量:
*返回变量:
******************************************************************/
void WriteData(unsigned char s, unsigned char RAM_Addr, unsigned char d)
{
CS1_1();//CS2_1();
switch(s)
{
case UP:
Delay_lcd();
CS1_0();
break;
case DOWN:
Delay_lcd();
CS2_0();
break;
case ALL:
Delay_lcd();
CS1_0();CS2_0();
break;
default:
return;
}
Delay_lcd();
// 发送写数据模式101
CLK_0();
Delay_lcd();
DI_1();
Delay_lcd();
CLK_1();
Delay_lcd();
CLK_0();
Delay_lcd();
DI_0(); // 0
Delay_lcd();
CLK_1();
Delay_lcd();
CLK_0();
Delay_lcd();
DI_1(); // 1
Delay_lcd();
CLK_1();
// 发送RAM地址
RAM_Addr <<= 2;
for(s = 6; s > 0; s--)
{
CLK_0();
if(RAM_Addr & 0x80)
{ DI_1();}
else
{ DI_0();}
Delay_lcd();
RAM_Addr <<= 1;
CLK_1(); // 上升沿
Delay_lcd();
}
// 发送数据
for(s = 4; s > 0; s--)
{
CLK_0();
if(d & 0x01)
{DI_1();}
else
{DI_0();}
Delay_lcd();
d >>= 1;
CLK_1(); // 上升沿
Delay_lcd();
}
CS1_1();CS2_1()
}
/******************************************************************
*函数描述:写命令,先发送控制字,在发命令
*局部变量:S 选择上两行、下两行、全部
Command 命令
*返回变量:
******************************************************************/
void WriteCommand(unsigned char s, unsigned char Command)
{
CS1_1();//CS2_1()
switch(s)
{
case UP:
Delay_lcd();
CS1_0();
break;
case DOWN:
Delay_lcd();
CS2_0();
break;
case ALL:
Delay_lcd();
CS1_0();CS2_0();
break;
default:
return;
}
Delay_lcd();
// 发送模式100
CLK_0();
Delay_lcd();
DI_1(); // 1
Delay_lcd();
CLK_1();
Delay_lcd();
CLK_0();
Delay_lcd();
DI_0(); // 0
Delay_lcd();
CLK_1();
Delay_lcd();
CLK_0();
Delay_lcd();
DI_0(); // 0
Delay_lcd();
CLK_1();
// 发送数据
Delay_lcd();
for(s = 9; s > 0; s--)
{
CLK_0();
if(Command & 0x80)
{
DI_1();
}
else
{
DI_0();
}
Delay_lcd();
Command <<= 1;
CLK_1();
Delay_lcd();
}
CS1_1();CS2_1()
}
/******************************************************************
*函数描述:显示数字,不带小数点
*局部变量: i : 显示数字位置 num : 显示的数字
radixPoint : 0不显示小数点 1显示小数点
*返回变量:
******************************************************************/
void DisplayNum(unsigned char i, unsigned char num, unsigned char radixPoint,unsigned char flag_null)
{
switch(i)
{
case 7:
WriteData(UP, 0, Number[num][0]);
if(radixPoint)
WriteData(UP, 1, Number[num][1] | 0x01);
else
WriteData(UP, 1, Number[num][1]);
break;
case 8:
WriteData(UP, 2, Number[num][0]);
if(radixPoint)
WriteData(UP, 3, Number[num][1] | 0x01);
else
WriteData(UP, 3, Number[num][1]);
break;
case 9:
WriteData(UP, 4, Number[num][0]);
if(radixPoint)
WriteData(UP, 5, Number[num][1] | 0x01);
else
WriteData(UP, 5, Number[num][1]);
break;
case 10:
WriteData(UP, 6, Number[num][0]);
if(radixPoint)
WriteData(UP, 7, Number[num][1] | 0x01);
else
WriteData(UP, 7, Number[num][1]);
break;
case 11:
WriteData(UP, 8, Number[num][0]);
if(radixPoint)
WriteData(UP, 9, Number[num][1] | 0x01);
else
WriteData(UP, 9, Number[num][1]);
break;
case 12:
WriteData(UP, 10, Number[num][0]);
if(radixPoint)
WriteData(UP, 11, Number[num][1] | 0x01);
else
WriteData(UP, 11, Number[num][1]);
break;
case 1:
if(flag_null==0x00)
{
WriteData(DOWN, 0, Number1_3[num][0]);
WriteData(DOWN, 1, Number1_3[num][1]);
}
else
{
WriteData(DOWN, 0, Number1_3[10][0]);
WriteData(DOWN, 1, Number1_3[10][1]);
}
break;
case 2:
if(flag_null==0x00)
{
WriteData(DOWN, 2, Number1_3[num][0]);
WriteData(DOWN, 3, Number1_3[num][1]);
}
else
{
WriteData(DOWN, 2, Number1_3[10][0]);
WriteData(DOWN, 3, Number1_3[10][1]);
}
break;
case 3:
if(flag_null==0x00)
{
WriteData(DOWN, 4, Number1_3[num][0]);
WriteData(DOWN, 5, Number1_3[num][1]);
}
else
{
WriteData(DOWN, 4, Number1_3[10][0]);
WriteData(DOWN, 5, Number1_3[10][1]);
}
break;
case 4:
if(flag_null==0x00)
{
WriteData(DOWN, 20, Number4_6[num][0]);
WriteData(DOWN, 21, Number4_6[num][1]);
}
else
{
WriteData(DOWN, 20, Number1_3[10][0]);
WriteData(DOWN, 21, Number1_3[10][1]);
}
break;
case 5:
if(flag_null==0x00)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -