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

📄 lcd.c

📁 12864点阵液晶显示读写驱动代码
💻 C
📖 第 1 页 / 共 2 页
字号:
					if(j==line)
					{	
						h = ARRAY8_SmallNumb[k][g];
						h = h | 0x01;
					}
					else
						h = ARRAY8_SmallNumb[k+1][g];	
					WriteData(h);	
				}	
			}
			else
			{

				if(j==line)
				{
					for(h=0;h<8;h++)
					{
						WriteData(0x01);
					}
				}
				else
				{
					for(h=0;h<8;h++)
					{
						WriteData(0x00);
					}	
				}
			}			
		}
	}	
}
/************************************************************************
**************************LCD 测试结果显示******************************/
void ShowBigNumber(unsigned int number)
{
	unsigned char j,k,m,n;
	unsigned char g;
	ShowLCDData(1,32,6,0x00,20);
	ShowLCDData(1,32,5,0x00,20);
	NumbTo8421(number);
	for(j=5;j<7;j++)
	{
		SelectScreen(1);	
		SetColumn(52);
		SetLine(j);
		n = 0;
		for(m=0;m<4;m++)
		{
			if(m==1)
			{
				SelectScreen(2);	
				SetColumn(0);
				SetLine(j);					
			}
			k = Dis_Value[m].U *2;
			if(k != 0)
				n=1;		
			if( m < 2 && n==0 && k==0)
			{
				for(g=0;g<12;g++)
				{
					WriteData(0x00);
				}			
			}
			else
			{
				if(j==5)
				{
					for(g=0;g<12;g++)
							WriteData(ARRAY16_BigNumb[k][g]);		
				}
				else
				{
					for(g=0;g<12;g++)
							WriteData(ARRAY16_BigNumb[k+1][g]);		
				}
			}
			if(m==2)
			{
				if(j==5)
				{
					for(g=0;g<12;g++)
							WriteData(ARRAY16_BigNumb[20][g]);			
				}
				else
				{
					for(g=0;g<12;g++)
							WriteData(ARRAY16_BigNumb[21][g]);			
				}	
			}
		}
	}	
}

/************************************************************************
****************LCD 显示*********************************************/
void ShowLCDData(unsigned char scre,unsigned char col,unsigned char lin,unsigned char dat,unsigned char quan)
{
	unsigned char i;
	SelectScreen(scre);	
	SetColumn(col);
	SetLine(lin);
	for(i=0;i<quan;i++)
	{
		WriteData(dat);
	}
}

/************************************************************************
****************LCD 日期显示*********************************************/
void ShowYearM_D(unsigned char year,unsigned char month,unsigned char day,unsigned char t)
{																//t=0  都正显  t=1 year反显 t=2 month反显 t=4 day反显
	unsigned char i;
	i = t;
	i &= 0x01;
	ShowYearM_DFunction(year,16,i);
	t >>=1;
	i = t;
	i &= 0x01;
	ShowYearM_DFunction(month,36,i);
	t >>=1;
	i = t;
	i &= 0x01;
	ShowYearM_DFunction(day,56,i);
	ShowXGorMH(24,0);
	ShowXGorMH(44,0);
}
/************************************************************************
****************LCD 日期显示子程序*********************************************/
void ShowYearM_DFunction(unsigned char ymd,unsigned char col,unsigned char t)
{												//t=0  正显  t=1 反显
	unsigned char h,i,j,k,m;
	SelectScreen(2);	
	for(i=0;i<2;i++)
	{
		j	 = ymd;
		j	&= 0x0f;
		j	 = j*2;
		for(k=2;k<4;k++)
		{
			SetColumn(col);
			SetLine(k);	
			for(m=0;m<8;m++)
			{
				if(k==2)
					h = ARRAY8_SmallNumb[j][m];
				else
					h = ARRAY8_SmallNumb[j+1][m];
				if(t!=0)
					h = ~h;
				WriteData(h);
			}
					
		}
		ymd >>= 4;
		col	  = col-8;
	}
}

/************************************************************************
****************LCD 斜杠显示子程序*********************************************/
void ShowXGorMH(unsigned char col,unsigned char xgmh)
{									//xgmh=0:斜杠 2:冒号
	unsigned char i,k;
	SelectScreen(2);
	for(i=2;i<4;i++)
	{
		SetColumn(col);
		SetLine(i);	
		for(k=0;k<4;k++)
		{
			WriteData(XieG_MaoH[xgmh][k]);	
		}
		xgmh++;
	}
}

/************************************************************************
****************菜单显示*************************************************/
void ShowMenu(unsigned char menu,unsigned char t)
{											//t=0  正显  t=1 反显  menu 0=打印 2=返回 
	unsigned char i,j,k,m;
	i = menu;
	SelectScreen(MenuFace2[i][0]);
	menu = menu*2;
	for(k=0;k<2;k++)
	{
		SetColumn(MenuFace2[i][1]);
		SetLine(k);	
		for(m=0;m<28;m++)
		{
			if(t==0)
				WriteData(ARRAY8_Menu[menu][m]);
			else
			{
				j = ~ARRAY8_Menu[menu][m];
				WriteData(j);
			}
		}
		menu++;					
	}
}
/************************************************************************
**************************提示语句返回函数************************************/
void PrompFaceBack(void)
{
	if(PrompDelay >=100)
	{	
		Flag.Promp_Delay_CON	= 0;
		PrompDelay		= 0;
		if(Flag.Samp_Y_N_CON)
		{
			ClearShowArea();
			ShowBigNumber(Samp_abs);
		}
		else
		{
			ClearShowArea();		
			PromptScreen(0,6);
		}
	}

}
/************************************************************************
**************************定时日期界面************************************/
void TimeLapseDate(unsigned char yea_min,unsigned char mon_sec,unsigned char date)
{//t=0  都正显  t=1 分反显 t=2 秒反显
	yea_min = yea_min+yea_min/10*0x06;
	mon_sec = mon_sec+mon_sec/10*0x06;
	ShowYearM_D(yea_min,mon_sec,date,0);
	ShowLCDData(2,44,2,0x00,20);
	ShowLCDData(2,44,3,0x00,20);
	ShowXGorMH(24,2);	


}
/************************************************************************
**************************定时时间处理及显示*****************************/
void  ShowLapseTime(unsigned char i,unsigned h)
{								//i:测试项目号,h:第几次定时 0 :第一次 1:第二次
	LapseSecond = Item_Time[i][h];
	if(LapseSecond >=60)
	{
		LapseMinute=LapseSecond/60;	
		LapseSecond=0;
	}
	else
		LapseMinute=0;	
	TimeLapseDate(LapseMinute,LapseSecond,0);
}
/************************************************************************
**************************提示语句函数**********************************/
void PromptScreen(unsigned char head,unsigned char length)
{											//head: 提示语句首字的地址, length:提示语句的字数
	unsigned char i,j,k;
	unsigned char col_;
	ClearShowArea();	
	SelectScreen(1);
	col_ = 36;
	for(i=0;i<length;i++)
	{		
		if(i==2)
		{	
			SelectScreen(2);
			col_=0;
		}
		for(j=0;j<2;j++)
		{
			SetColumn(col_);
			SetLine(j+5);	
			for(k=0;k<14;k++)
				WriteData(Prompt_Screen[2*i+j+head][k]);		
		}		
		col_ += 14;	
	}
	if(length<6)									//显示提示语句时  清除其他显示
	{
		k = 6-length;
		k = k*14;
		col_ = 56-k;
		ShowLCDData(2,col_,5,0x00,k);
		ShowLCDData(2,col_,6,0x00,k);
	}
}
/************************************************************************
****************测试完成************************************************/
void ShowOK(void)
{
	unsigned char j,k;
	SelectScreen(2);
	for(j=0;j<2;j++)
	{
		SetColumn(8);
		SetLine(j+2);	
		for(k=0;k<16;k++)
			WriteData(OK_Array[j][k]);		
	}
	ShowLCDData(2,24,2,0x00,20);
	ShowLCDData(2,24,3,0x00,20);	
}
/************************************************************************
**************************"放弃本次测试?"**********************************/
void PromptFQBCCS(void)
{
	unsigned char i,j,k;
	unsigned char col_;
	ClearShowArea();
	SelectScreen(1);
	col_ = 36;
	for(i=0;i<6;i++)					//"放弃本次测试"
	{		
		if(i==2)
		{	
			SelectScreen(2);
			col_=0;
		}
		for(j=0;j<2;j++)
		{
			SetColumn(col_);
			SetLine(j+4);	
			for(k=0;k<14;k++)
			{
				if(j)
					WriteData(Prompt_FQBCCS[2*i+j][k]);	
				else
					WriteData(Prompt_FQBCCS[2*i+j][k]+1);	
			}
		}		
		col_ += 14;	
	}
	SelectScreen(2);
	for(j=0;j<2;j++)
	{
		SetColumn(56);
		SetLine(j+4);	
		for(k=0;k<7;k++)
		{
			WriteData(WenH_Array[j][k]);		
		}
	}
}
/************************************************************************
****************"是""否"选择程序*********************************************/
void SelectYorN(bit i)
{										//i=0 是  i!=0否
	unsigned char j,k,m;
	SelectScreen(1);
	for(j=0;j<2;j++)
	{
		SetColumn(50);
		SetLine(j+6);	
		for(k=0;k<14;k++)
		{
			m = Y_N_Array[j][k];		
			if(i)
				m = ~m;
			WriteData( m);	
		}
	}
	SelectScreen(2);
	for(j=0;j<2;j++)
	{
		SetColumn(28);
		SetLine(j+6);	
		for(k=0;k<14;k++)
		{
			m = Y_N_Array[j+2][k];		
			if(i==0)				
				m = ~m;
			WriteData( m);	
		}
	}
}
/************************************************************************
****************页码显示*********************************************/
void ShowPage(unsigned char i)
{
	unsigned char j;
	SelectScreen(2);
	SetColumn(58);
	SetLine(7);
	for(j=0;j<4;j++)
		WriteData(Page_Number[i][j]);	
}
/************************************************************************
****************中文菜单显示*********************************************/
void ShowFaceNO1(void)
{
	
}
/************************************************************************
****************毫秒延时程序*********************************************/
void Delay(unsigned int Ms)
{
 	unsigned char us,usn;
	while(Ms)
	{
		usn	= 2;
		while(usn) 
		{
			us	= 0xF6;
			while(us)
				{--us;}
			--usn;
		}
		--Ms;
	}
}

⌨️ 快捷键说明

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