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

📄 lcd.c.bak

📁 24位AD压力实验板 protell99se打开
💻 BAK
📖 第 1 页 / 共 2 页
字号:
#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 + -