예제 #1
0
//显示鼠标的坐标值
//x,y:在LCD上显示的坐标位置
//pos:坐标值
void Mouse_Show_Pos(u16 x,u16 y,short pos)
{
	if(pos<0)
	{			  
		LCD_ShowChar(x,y,'-',16,0);		//显示负号
		pos=-pos;						//转为正数
	}else LCD_ShowChar(x,y,' ',16,0);	//去掉负号
	LCD_ShowNum(x+8,y,pos,5,16);		//显示值				  
}
예제 #2
0
//显示曲目索引
//index:当前索引
//total:总文件数
void audio_index_show(u16 index,u16 total)
{
	//显示当前曲目的索引,及总曲目数
	LCD_ShowxNum(60+0,230,index,3,16,0X80);		//索引
	LCD_ShowChar(60+24,230,'/',16,0);
	LCD_ShowxNum(60+32,230,total,3,16,0X80); 	//总曲目				  	  
}
예제 #3
0
/******************************************************************
函数名		  LCD_ShowNum
作者:		Anti_CDQ
日期:		2017-09-10
功能:		显示单个整形变量的各位值,如果位数比len小,则靠右显示,不足余下的位为空格不显示
输入参数:	x,y :起点坐标	 
			len :指定显示数字的位数
			charColor:字体颜色
			bkColor:背景颜色
返回值:	无
修改记录:	无
******************************************************************/  			 
void LCD_ShowNum(uint16_t x,uint16_t y,u32 num,uint8_t len, uint16_t charColor, uint16_t bkColor)
{         	
	uint8_t i,temp[10];
	uint8_t j = len - 1;	/* 实际要显示的位数 */
	uint8_t k = len - 1;
	u32 ttt = num;

	if(len >= 11)	/* j=0表示显示1位,j=9表示显示10位,仅支持显示10位 */
	{
		j = 9;
		k = 9;
	}
	
	for(i=0;i<10;i++)	/* 清空位缓存 */
	{
		temp[i] = 0;
	}
	
	for(i=0;i<10;i++)	/* 将数据以十进制按位拆分,temp[0]为个位 */
	{
		temp[i] = ttt%10;
		ttt = ttt/10;
	}
	
	for(i=9;i<10;i--)
	{
		if( temp[i] != 0 )	/* 从高位开始剔除0,用于有效位 */
		{
			if(j > i)	/* 若实际有效位数小于想要显示的位数,则以有效位数为准 */
			{	
				j = i;
				for(i=0;i<k-j;i++)	/* 保证从最高位开始,不不显示的位数为空 */
					LCD_ShowChar(x+6*i,y,' ',bkColor,bkColor);
			}
			break;
		}
		if(i == 0)	/* 若该数为零,则显示 1位 */
			j = 0;
	}
	
	k = x + (len-j-1)*6; /* 计算显示的最高位的位置 */
	for(i=j;i<10;i--)
	{
		LCD_ShowChar(k,y,temp[i]+'0',charColor,bkColor);
		k += 6;
	}
} 
예제 #4
0
파일: LCD.c 프로젝트: LouizLai/mg
void LCD_Update(enum Button dir){
	switch (dir)
	{
		case Left: LCD_gotoXY(abs((--colNow)%16), rowNow);break;
		case Right: LCD_gotoXY(abs((++colNow)%16), rowNow); break;
		//case UpDown: LCD_gotoXY(colNow, rowNow==0?1:0); break;
		case Enter: LCD_ShowChar();break;
		default: break;
	}
예제 #5
0
/**********************************************************
 ÏÔʾ×Ö·û´®×Óº¯Êý

 x,y:Æðµã×ø±ê  
 *p:×Ö·û´®ÆðʼµØÖ·

**********************************************************/
void LCD_ShowString(uchar x,uchar y,uint For_color,uint Bk_color,char *p)
{         
   while(*p!='\0')
   {       
     LCD_ShowChar(x,y,For_color,Bk_color,*p);
     x+=8;
     p++;
   }
}
예제 #6
0
//显示数字,高位为0,则不显示
//x,y :起点坐标	 
//len :数字的位数
//size:字体大小
//color:颜色 
//num:数值(0~4294967295);	 
void LCD_ShowNum(uint16_t x,uint16_t y,uint32_t num,uint8_t len,uint8_t size)
{         	
	uint8_t t,temp;
	uint8_t enshow=0;						   
	for(t=0;t<len;t++)
	{
		temp=(num/LCD_Pow(10,len-t-1))%10;
		if(enshow==0&&t<(len-1))
		{
			if(temp==0)
			{
				LCD_ShowChar(x+(size/2)*t,y,' ',size,0);
				continue;
			}else enshow=1; 
		 	 
		}
	 	LCD_ShowChar(x+(size/2)*t,y,temp+'0',size,0); 
	}
} 
예제 #7
0
//显示播放时间,比特率 信息  
//totsec;音频文件总时间长度
//cursec:当前播放时间
//bitrate:比特率(位速)
void audio_msg_show(u32 totsec,u32 cursec,u32 bitrate)
{	
	static u16 playtime=0XFFFF;//播放时间标记	      
	if(playtime!=cursec)					//需要更新显示时间
	{
		playtime=cursec;
		//显示播放时间			 
		LCD_ShowxNum(60,210,playtime/60,2,16,0X80);		//分钟
		LCD_ShowChar(60+16,210,':',16,0);
		LCD_ShowxNum(60+24,210,playtime%60,2,16,0X80);	//秒钟		
 		LCD_ShowChar(60+40,210,'/',16,0); 	    	 
		//显示总时间    	   
 		LCD_ShowxNum(60+48,210,totsec/60,2,16,0X80);	//分钟
		LCD_ShowChar(60+64,210,':',16,0);
		LCD_ShowxNum(60+72,210,totsec%60,2,16,0X80);	//秒钟	  		    
		//显示位率			   
   		LCD_ShowxNum(60+110,210,bitrate/1000,4,16,0X80);//显示位率	 
		LCD_ShowString(60+110+32,210,200,16,16,"Kbps");	 
	} 		 
}
예제 #8
0
/******************************************************************
函数名:  LCD_ShowString
作者:    Anti_CDQ
日期:    2017-09-10
功能:    显示单行英文字符串
输入参数:x,y :起点坐标	 
			size:字体大小
			*p:字符串起始地址
			mode:模式	0,填充模式;1,叠加模式
返回值:  无
修改记录:无
******************************************************************/  	  
void LCD_ShowString(uint16_t x, uint16_t y, char *p, uint16_t charColor, uint16_t bkColor)
{         
    while((*p<='z')&&(*p>=' '))//判断是不是非法字符!
    {   
		if(x>(lcddev.width-1)||y>(lcddev.height-1)) 
			return;
        LCD_ShowChar(x,y,*p,charColor,bkColor);
		x+=6;
        p++;
    }  
}
예제 #9
0
void LCD_ShowString(uint8_t x,uint16_t y,__I uint8_t *p)
{         
    while(*p!='\0')
    {       
        if(x>MAX_CHAR_POSX){x=0;y+=16;}
        if(y>MAX_CHAR_POSY){y=x=0;LCD_Clear(WHITE);}
        LCD_ShowChar(x,y,*p,16,0);
        x+=8;
        p++;
    }  
}
예제 #10
0
//显示字符串
//x,y:起点坐标
//width,height:区域大小  
//size:字体大小
//*p:字符串起始地址		  
void LCD_ShowString(uint16_t x,uint16_t y,uint16_t width,uint16_t height,uint8_t size,uint8_t *p)
{         
	uint8_t x0=x;
	width+=x;
	height+=y;
    while((*p<='~')&&(*p>=' '))//判断是不是非法字符!
    {       
        if(x>=width){x=x0;y+=size;}
        if(y>=height)break;//退出
        LCD_ShowChar(x,y,*p,size,1);
        x+=size/2;
        p++;
    }  
}
예제 #11
0
파일: text.c 프로젝트: matao1314/STM32MEDIA
//在指定位置开始显示一个字符串	    
//支持自动换行
//(x,y):起始坐标
//width,height:区域
//str  :字符串
//size :字体大小
//mode:0,非叠加方式;1,叠加方式    	   		   
void Show_Str(u16 x,u16 y,u16 width,u16 height,u8*str,u8 size,u8 mode)
{					
	u16 x0=x;
	u16 y0=y;							  	  
    u8 bHz=0;     //字符或者中文  	    				    				  	  
    while(*str!=0)//数据未结束
    { 
        if(!bHz)
        {
	        if(*str>0x80)bHz=1;//中文 
	        else              //字符
	        {      
                if(x>(x0+width-size/2))//换行
				{				   
					y+=size;
					x=x0;	   
				}							    
		        if(y>(y0+height-size))break;//越界返回      
		        if(*str==13)//换行符号
		        {         
		            y+=size;
					x=x0;
		            str++; 
		        }  
		        else LCD_ShowChar(x,y,*str,size,mode);//有效部分写入 
				str++; 
		        x+=size/2; //字符,为全字的一半 
	        }
        }else//中文 
        {     
            bHz=0;//有汉字库    
            if(x>(x0+width-size))//换行
			{	    
				y+=size;
				x=x0;		  
			}
	        if(y>(y0+height-size))break;//越界返回  						     
	        Show_Font(x,y,str,size,mode); //显示这个汉字,空心显示 
	        str+=2; 
	        x+=size;//下一个汉字偏移	    
        }						 
    }   
}  			 		 
예제 #12
0
/**********************************************************

 卡信息显示子函数

**********************************************************/
void   card_info(void)
{
   unsigned char  by;
   unsigned int   c_size, c_size_mult, read_bl_len;
   unsigned long  drive_size;
   unsigned long  size_mb;

   LCD_ShowString(12,40,colors[0],colors[7],"INIT SUCCESS");
   LCD_ShowString(2,60,colors[0],colors[7],"TYPE:");
   if(card_type)
   {LCD_ShowString(52,60,colors[2],colors[7],"SD");
    ChineseChar(68,60,1,colors[2],colors[7],1);	//卡
   }
   else
   { LCD_ShowString(52,60,colors[2],colors[7],"MMC");
     ChineseChar(76,60,1,colors[2],colors[7],1);	//卡
   }
   
   Read_CID_MMC(data_temp);

   LCD_ShowString(2,76,colors[0],colors[7],"NAME:");
   LCD_ShowChar(50,76,colors[2],colors[7],data_temp[3]);
   LCD_ShowChar(58,76,colors[2],colors[7],data_temp[4]);
   LCD_ShowChar(66,76,colors[2],colors[7],data_temp[5]);
   LCD_ShowChar(74,76,colors[2],colors[7],data_temp[6]);
   LCD_ShowChar(82,76,colors[2],colors[7],data_temp[7]);
     
   Read_CSD_MMC(data_temp);

   c_size=data_temp[6] & 0x03; //bits 1..0
   c_size<<=10;
   c_size+=(unsigned int)data_temp[7]<<2;
   c_size+=data_temp[8]>>6;

   by= data_temp[5] & 0x0F;
   read_bl_len=1;
   read_bl_len<<=by;	        //2^by
   by=data_temp[9] & 0x03;      //获取multiply
   by<<=1;
   by+=data_temp[10] >> 7;

   c_size_mult=1;
   c_size_mult<<=(2+by);	  //2^(c_size_mult+2)

   drive_size=(ulong)(c_size+1) * (ulong)c_size_mult * (ulong)read_bl_len;

   size_mb= drive_size>>20;    //1024*1024=1048576=2^20; 
   LCD_ShowString(2,92,colors[0],colors[7],"SIZE:");
   LCD_ShowChar(52,92,colors[2],colors[7],size_mb/1000|0x30); 
   LCD_ShowChar(60,92,colors[2],colors[7],size_mb%1000/100|0x30);
   LCD_ShowChar(68,92,colors[2],colors[7],size_mb%100/10|0x30); 
   LCD_ShowChar(76,92,colors[2],colors[7],size_mb%10|0x30); 
   LCD_ShowChar(84,92,colors[2],colors[7],'M');
   LCD_ShowChar(92,92,colors[2],colors[7],'B');
}
예제 #13
0
/**********************************************************

  BPB信息显示子函数

**********************************************************/
void  BPB_INFO(void)
{
   data_change2(BPBbytesPerSec);  //每个扇区的字节数
   LCD_ShowString(2,24,colors[0],colors[7],"BPBbytesPerSec");
   LCD_ShowChar( 2,40,colors[2],colors[7],data_temp[0]);
   LCD_ShowChar(10,40,colors[2],colors[7],data_temp[1]);
   LCD_ShowChar(18,40,colors[2],colors[7],data_temp[2]);

   data_change2(BPBSecPerClust);  //每个簇的扇区数
   LCD_ShowString(2,56,colors[0],colors[7],"BPBSecPerClust");
   LCD_ShowChar( 2,72,colors[2],colors[7],data_temp[0]);
   LCD_ShowChar(10,72,colors[2],colors[7],data_temp[1]);
   LCD_ShowChar(18,72,colors[2],colors[7],data_temp[2]);

   data_change2(BPBRevdFATSec);	  //保留扇区数
   LCD_ShowString(2,88,colors[0],colors[7],"BPBRevdFATSec");
   LCD_ShowChar( 2,104,colors[2],colors[7],data_temp[0]);
   LCD_ShowChar(10,104,colors[2],colors[7],data_temp[1]);
   LCD_ShowChar(18,104,colors[2],colors[7],data_temp[2]);

/* data_change2(BPBhiddsector);	  //隐藏扇区数
   LCD_ShowString(2,120,colors[0],"BPBhiddsector");
   LCD_ShowChar( 2,136,colors[2],data_temp[0]);
   LCD_ShowChar(10,136,colors[2],data_temp[1]);
   LCD_ShowChar(18,136,colors[2],data_temp[2]);	*/

   data_change1(BPBFATPerSec16);  //每个FAT的扇区数
   LCD_ShowString(2,120,colors[0],colors[7],"BPBFATPerSec");
   LCD_ShowChar( 2,136,colors[2],colors[7],data_temp[0]);
   LCD_ShowChar(10,136,colors[2],colors[7],data_temp[1]);
   LCD_ShowChar(18,136,colors[2],colors[7],data_temp[2]);
   LCD_ShowChar(26,136,colors[2],colors[7],data_temp[3]);
   LCD_ShowChar(34,136,colors[2],colors[7],data_temp[4]);
}
예제 #14
0
void DispOne(u16 x,u16 y,u8 num,u8 mode)//Block Display A Char
{
	x*=8;
	y*=16;
	LCD_ShowChar(x,y,num,mode);
}
예제 #15
0
파일: eelib_port.c 프로젝트: xuzhuoyi/eelib
int EELib_LCD_ShowChar(uint16_t x, uint16_t y, uint8_t Char, uint8_t Size, uint8_t Mode, uint16_t PointColor)
{
	POINT_COLOR = PointColor;
	LCD_ShowChar(x, y, Char, Size, Mode);
}