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

📄 led.c

📁 一个使用ARM7控制16*32点阵LED的程序,主控芯片为2131
💻 C
📖 第 1 页 / 共 4 页
字号:
void LS154ON_H(uint16 row)
{
	IO1CLR=(0xFF<<16);   
	IO1SET |= (row<<16);            //使用P1.16-P1.20做154译码
	LS154_0N;
	Delay1ms(1);
}
 /********************************************************************************************************
** 函数名称 :LEDPrintOneChinese()
** 函数功能 :显示一个汉字
** 入口参数 :
** 出口参数 :无
********************************************************************************************************/
void LEDPrintOneChinese(uint8 col,uint8 *s)
{
	int16 data;
	int8 dat1,dat2,row;
	LS138ON(col);
	for(row=0;row<16;row++)
	{
		dat1=*s;
		s++;
		dat2=*s;
		s++;
		data=(dat2<<8)+dat1;
		LS154_0FF;
		LEDPrintOneROW_16(data);
		LS154ON(row);
		LEDFangdian_16();
	}
}

/********************************************************************************************************
** 函数名称 :void LEDPrintchinese(uint8 *s)
** 函数功能 :显示一组汉字
** 入口参数 :str为显示汉字的个数,*s为字库指针
** 出口参数 :无
********************************************************************************************************/
void LEDPrintchinese(uint8 str,uint8 *s)
{
	uint16 i;
	uint8  key;
	for(;str>0;)
	{
		if(str!=1)                                    //显示的字数为偶数个时
		{
			for(i=0;i<500;i++)                       //每两个字显示100次后再显示后面两个字
			{
				LEDPrintOneChinese(0,s);
				LEDPrintOneChinese(1,(s+32));
				key=key_jiance();
					if(key==1) break;
			}
		}
		else
		{
			for(i=0;i<500;i++)                       //显示最后一个字
				LEDPrintOneChinese(0,s);
				key=key_jiance();
					if(key==1) break;
		}
		s = s + 64;
		str -= 2;	
		key=key_jiance();
			if(key==1) break;							
	}
}
 /********************************************************************************************************
** 函数名称 :LEDPrintOneChinese()
** 函数功能 :横向显示一个汉字
** 入口参数 :
** 出口参数 :无
********************************************************************************************************/
void LEDPrintOneChinese_H(uint8 col,uint8 *s)
{
	int16 data;
	int8 dat1,dat2,row;
	LS138ON(col);
	for(row=0;row<16;row++)
	{
		dat1=*s;
		s++;
		dat2=*(s+15);
		data=(dat2<<8)+dat1;
		LS154_0FF;
		LEDPrintOneROW_16(data);
		LS154ON_H(row);
		LEDFangdian_16();
	}
}
/********************************************************************************************************
** 函数名称 :void LEDPrintchinese(uint8 *s)
** 函数功能 :横向显示一组汉字
** 入口参数 :str为显示汉字的个数,*s为字库指针
** 出口参数 :无
********************************************************************************************************/
void LEDPrintchinese_H(uint8 str,uint8 *s)
{
	uint16 i;
	uint8  key;
	for(;str>0;)
	{
		if(str!=1)                                    //显示的字数为偶数个时
		{
			for(i=0;i<500;i++)                       //每两个字显示100次后再显示后面两个字
			{
				LEDPrintOneChinese_H(1,s);
				LEDPrintOneChinese_H(0,(s+32));
				key=key_jiance();
					if(key==1) break;
			}
		}
		else
		{
			for(i=0;i<500;i++)                       //显示最后一个字
				LEDPrintOneChinese_H(1,s);
				key=key_jiance();
					if(key==1) break;
		}
		s = s + 64;
		str -= 2;	
		key=key_jiance();
			if(key==1) break;							
	}
}
/********************************************************************************************************
** 函数名称 :LEDPrintOneROW_8(uint8 data)
** 函数功能 :送出一行数据(8位)供377锁存的函数  data为8为的列信号  
** 入口参数 :
** 出口参数 :无
********************************************************************************************************/
void LEDPrintOneROW_8(uint8 data)
{
 	NOP();
 	IO0SET |= data;
 	CP_ON;
 	NOP();
 	CP_OFF;
 	IO0CLR  = 0xFF;
 }

/********************************************************************************************************
** 函数名称 :void LEDFangdian_16()
** 函数功能 :送出一行数据(8位)供377锁存的函数  data为8为的列信号  
** 入口参数 :
** 出口参数 :无
********************************************************************************************************/
void LEDFangdian_16( void )
{
 	NOP();
 	IO0CLR  = 0xFF;
 	CP_ON;
 	NOP();
 	CP_OFF;
 	
 }


 
/********************************************************************************************************
** 函数名称 : void LEDPrintOneChar(uint8 x,uint8 y,uint8 *s)
** 函数功能 :显示一个字符的函数
** 入口参数 :x:行标,y:列标,char1:字符
** 出口参数 :无
********************************************************************************************************/
 void LEDPrintOneChar(uint8 x,uint8 y,uint8 char1)
 {
 	uint16 char2,ptr;
 	uint8 row,char3;//*ZIMUptr;
 	ptr=(char1 & 0x7f)-0x20;
	ptr=ptr*16;          //寻找字符在字库中的起始指针
	//*ZIMUptr =Char[ptr];
 	//x=x*8;  //显示起始的行
 	LS138ON(y/2);             //138片选        
 	if((y%2)==0)             //偶数位置显示字母,起始位置为0,认为是偶数
 	{
 		for(row=0;row<16;row++)
 		{
			LS154_0FF;
			char3=Char[ptr++];
			LEDPrintOneROW_8(char3);
			LS154ON(row);
 		}
 	}
 	else
 	{
  		for(row=0;row<16;row++)
 		{
			LS154_0FF;
			char2=Char[ptr++]<<8;
			LEDPrintOneROW_16(char2);
			LS154ON(row);
 		}
 	}
 	
 	LEDFangdian_16();
 	//LEDFangdian_16();
 	/*
 	for(row=0;row<8;row++)
 		{
			LS154_0FF;
			char2=Char[ptr]+(Char[(8+ptr)]<<8);
			LEDPrintOneROW_16(char2);
			LS154ON((x+row));
			ptr++;
 		}*/

 }
 
/********************************************************************************************************
** 函数名称 :void LEDPrintChar(uint8 x,uint8 y,uint8 *s)
** 函数功能 :显示一串字符的函数
** 入口参数 :x:行标,y:列标,*s:字符指针
** 出口参数 :无
********************************************************************************************************/
void LEDPrintChar(uint8 x,uint8 y,uint8 *s)
{
	uint8 i,l=0,key;
	uint16 j;
	while(s[l]>0x10){l++;};
	x=0;

	for(;l>0;)
	{
		if(l>3)
		{
		for(j=0;j<250;j++)
		{
			for(i=0;i<4;i++)
			{	
				LEDPrintOneChar(0,i,s[i]);
				key=key_jiance();
					if(key==1) break;				
			}
		}
		}	
		else
		{
		for(j=0;j<250;j++)
		{

			for(i=0;i<l;i++)
			{	

				LEDPrintOneChar(0,i,s[i]);
				key=key_jiance();
					if(key==1) break;
			}
		}		
		}
		key=key_jiance();
			if(key==1) break;
	
		s +=4;
		l -=4;
		y=0;
		key=key_jiance();
		if(key==1) break;
	}
	/*	
	for(;l>0;)
	{
		for(j=0;j<500;j++)
		{
			for(i=0;i<4;i++)
			{	
				LEDPrintOneChar(0,i,s[i]);
				key=key_jiance();
					if(key==1) break;				
			}
		}
		key=key_jiance();
			if(key==1) break;
	
		s +=4;
		l -=4;
		y=0;
		key=key_jiance();
		if(key==1) break;
	}
*/
}

/********************************************************************************************************
** 函数名称 : void LEDPrintOneChar_H(uint8 x,uint8 y,uint8 *s)
** 函数功能 :横向显示一个字符的函数
** 入口参数 :x:行标,y:列标,char1:字符
** 出口参数 :无
********************************************************************************************************/
 void LEDPrintOneChar_H(uint8 x,uint8 y,uint8 char1)
 {
 	uint16 char3,ptr;
 	uint8 row;//*ZIMUptr;
 	ptr=(char1 & 0x7f)-0x20;
	ptr=ptr*16;          //寻找字符在字库中的起始指针
	//*ZIMUptr =Char[ptr];
 	//x=x*8;  //显示起始的行
 	if(y<2)
 	LS138ON((y/2+1));             //138片选        
 	else
 	LS138ON((y/2-1));
 	if((y%2)==0)             //偶数位置显示字母,起始位置为0,认为是偶数
 	{
 		for(row=0;row<8;row++)
 		{
			LS154_0FF;
			char3=Char_H[ptr]+(Char_H[(ptr+8)]<<8);
			LEDPrintOneROW_16(char3);
			LS154ON_H(row);
			ptr++;
 		}
 	}
 	else
 	{
  		for(row=8;row<16;row++)
 		{
			LS154_0FF;
			char3=Char_H[ptr]+(Char_H[(ptr+8)]<<8);
			LEDPrintOneROW_16(char3);
			LS154ON_H(row);
			ptr++;
 		}
 	}
 	
 	LEDFangdian_16();
 	//LEDFangdian_16();
 	/*
 	for(row=0;row<8;row++)
 		{
			LS154_0FF;
			char2=Char[ptr]+(Char[(8+ptr)]<<8);
			LEDPrintOneROW_16(char2);
			LS154ON((x+row));
			ptr++;
 		}*/

 }
 
/********************************************************************************************************
** 函数名称 :void LEDPrintChar(uint8 x,uint8 y,uint8 *s)
** 函数功能 :横向显示一串字符的函数
** 入口参数 :x:行标,y:列标,*s:字符指针
** 出口参数 :无
********************************************************************************************************/
void LEDPrintChar_H(uint8 x,uint8 y,uint8 *s)
{
	uint8 i,l=0,key;
	uint16 j;
	while(s[l]>0x10){l++;};
	x=0;

	for(;l>0;)
	{
		if(l>3)
		{
		for(j=0;j<500;j++)
		{
			for(i=0;i<4;i++)
			{	
				LEDPrintOneChar_H(0,i,s[i]);
				key=key_jiance();
					if(key==1) break;				
			}
		}
		}	
		else
		{
		for(j=0;j<500;j++)
		{

			for(i=0;i<l;i++)
			{	

				LEDPrintOneChar_H(0,i,s[i]);
				key=key_jiance();
					if(key==1) break;
			}
		}		
		}
		key=key_jiance();
			if(key==1) break;
	
		s +=4;
		l -=4;
		y=0;
		key=key_jiance();
		if(key==1) break;
	}
}


/********************************************************************************************************
** 函数名称 : void LEDPrintTime(void)
** 函数功能 :显示时间的函数
** 入口参数 :
** 出口参数 :无
********************************************************************************************************/
void LEDPrintTime( void )
{
	uint8 i;
	//LEDPrintOneChar(0,0,Time[8]);    //显示星期
			for(i=0;i<4;i++)
			{	
				LEDPrintOneChar(0,i,Time[i]);
			}
	//LEDPrintOneChar(0,0,Time[9]);     //显示小时	
	//LEDPrintOneChar(0,1,Time[10]);  

	//LEDPrintOneChar(0,2,Time[11]);    //显示分钟	
	//LEDPrintOneChar(0,3,Time[12]);  
	
	//LEDPrintOneChar(1,2,Time[13]);    //显示秒钟	
	//LEDPrintOneChar(1,3,Time[14]);  


}

⌨️ 快捷键说明

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