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

📄 lcd_app.c

📁 基于ATmega64单片机以及vs1003的SD卡方案的MP3播放源代码
💻 C
字号:
/*****************************************************/
/*            File name : LCD_APP.c                                              */
/* Description : application code of LCD_ASCII,LCD_GBK & ICON */
/* Platform     : AVRStudio4.13 + WinAVR20070525  for AVR     */
/* Author       : Michael Zhang - 章其波                            */
/* Email         : sudazqb@163.com                                          */
/* MSN          : zhangqibo_1985@hotmail.com                          */
/* Date          : 2007-2-2                                                    */
/* NOT FOR COMMERCIAL USE,     ALL RIGHT RESERVED!         */
/*****************************************************/
/* Change Log:                                                                      */
/*                   20071109: add a faster display function for 3310 */
/*                   20071021: add 6*12 tag display                         */
/*                   20070202: original version                                 */
/*****************************************************/

#include"LCD_APP.h"
#include<avr/pgmspace.h>
#include"ICON.h"

void Print_ICON_12(unsigned int x,unsigned int y,unsigned char ch)
{
	unsigned char i,j;
	unsigned char temp;
	for(i=0;i<12;i++)
	{
		temp = pgm_read_byte(&ICON[ch][i]);
		for(j=0;j<8;j++)
		{
			if(temp&(1<<j))OnePixel(x+i,y+j,1);
			else OnePixel(x+i,y+j,0);
		}
	}
	for(i=0;i<12;i++)
	{
		temp = pgm_read_byte(&ICON[ch][i+12]);
		for(j=0;j<4;j++)
		{
			if(temp&(1<<j))OnePixel(x+i,y+j+8,1);
			else OnePixel(x+i,y+j+8,0);
		}
	}
}

void Print_ICON1_12(unsigned int x,unsigned int y,unsigned char ch)
{
	unsigned char i,j;
	unsigned char temp;
	for(i=0;i<6;i++)
	{
		temp = pgm_read_byte(&ICON1[ch][i]);
		for(j=0;j<8;j++)
		{
			if(temp&(1<<j))OnePixel(x+i,y+j,1);
			else OnePixel(x+i,y+j,0);
		}
	}
	for(i=0;i<6;i++)
	{
		temp = pgm_read_byte(&ICON1[ch][i+6]);
		for(j=0;j<4;j++)
		{
			if(temp&(1<<j))OnePixel(x+i,y+j+8,1);
			else OnePixel(x+i,y+j+8,0);
		}
	}
}

unsigned char LCD_print12_P(unsigned int x,unsigned int y,const char *str)
{
	unsigned int tempX = x,tempY = y;
	unsigned int temp;
	while((temp = pgm_read_byte(str))!=0)
	{
		if(temp == '\n')
		{
			if((MAX_X - tempX)<6)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			else if((MAX_Y - tempY)<24)return 1;
			else 
			{
				tempX = 0;
				tempY += 12;
			}
			str ++;
		}
		else if(temp<0x20)
		{
			if((MAX_X - tempX)<6)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			Dis_Ascii_12(tempX,tempY,0x20);
			str ++;
			tempX += 6;

		}
		else if(temp<0x80)
		{
			if((MAX_X - tempX)<6)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			Dis_Ascii_12(tempX,tempY,temp);
			str ++;
			tempX += 6;
		}
		else
		{
			if((MAX_X - tempX)<12)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			temp += (pgm_read_byte(++str))<<8;
			Dis_GBK12(tempX,tempY,(unsigned char *)(&temp));
			str ++;
			tempX += 12;
		}
	}
	return 0;
}

unsigned char LCD_print12_fast(unsigned int x,unsigned int y,unsigned char *str)
{
	unsigned int tempX = x,tempY = y;
	while(*str)
	{
		if(*str == '\n')
		{
			if((MAX_X - tempX)<6)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			else if((MAX_Y - tempY)<24)return 1;
			else 
			{
				tempX = 0;
				tempY += 12;
			}
			str ++;
		}
		else if(*str<0x20)
		{
			if((MAX_X - tempX)<6)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			Dis_Ascii_12_fast(tempX,tempY,0x20);
			str ++;
			tempX += 6;

		}
		else if(*str<0x80)
		{
			if((MAX_X - tempX)<6)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			Dis_Ascii_12_fast(tempX,tempY,*str);
			str ++;
			tempX += 6;
		}
		else
		{
			if((MAX_X - tempX)<12)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			Dis_GBK12_fast(tempX,tempY,str);
			str += 2;
			tempX += 12;
		}
	}
	return 0;
}

unsigned char LCD_print12(unsigned int x,unsigned int y,unsigned char *str)
{
	unsigned int tempX = x,tempY = y;
	while(*str)
	{
		if(*str == '\n')
		{
			if((MAX_X - tempX)<6)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			else if((MAX_Y - tempY)<24)return 1;
			else 
			{
				tempX = 0;
				tempY += 12;
			}
			str ++;
		}
		else if(*str<0x20)
		{
			if((MAX_X - tempX)<6)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			Dis_Ascii_12(tempX,tempY,0x20);
			str ++;
			tempX += 6;

		}
		else if(*str<0x80)
		{
			if((MAX_X - tempX)<6)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			Dis_Ascii_12(tempX,tempY,*str);
			str ++;
			tempX += 6;
		}
		else
		{
			if((MAX_X - tempX)<12)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			Dis_GBK12(tempX,tempY,str);
			str += 2;
			tempX += 12;
		}
	}
	return 0;
}

unsigned char LCD_print16_P(unsigned int x,unsigned int y,const char *str)
{
	unsigned int tempX = x,tempY = y;
	unsigned int temp;
	while((temp = pgm_read_byte(str))!=0)
	{		
		if(temp == '\n')
		{
			if((MAX_X - tempX)<8)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			else if((MAX_Y - tempY)<32)return 1;
			else 
			{
				tempX = 0;
				tempY += 16;
			}
			str ++;
		}
		else if(temp<0x20)
		{
			if((MAX_X - tempX)<8)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			Dis_Ascii_16(tempX,tempY,0x20);
			str ++;
			tempX += 8;
		}
		else if(temp<0x80)
		{
			if((MAX_X - tempX)<8)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			Dis_Ascii_16(tempX,tempY,temp);
			str ++;
			tempX += 8;
		}
		else
		{
			if((MAX_X - tempX)<16)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			temp += (pgm_read_byte(++str))<<8;
			Dis_GBK16(tempX,tempY,(unsigned char *)(&temp));
			str ++;
			tempX += 16;
		}
	}
	return 0;
}

unsigned char LCD_print16(unsigned int x,unsigned int y,unsigned char *str)
{
	unsigned int tempX = x,tempY = y;
	while(*str)
	{	
		if(*str == '\n')
		{
			if((MAX_X - tempX)<8)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			else if((MAX_Y - tempY)<32)return 1;
			else 
			{
				tempX = 0;
				tempY += 16;
			}
			str ++;
		}
		else if(*str<0x20)
		{
			if((MAX_X - tempX)<8)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			Dis_Ascii_16(tempX,tempY,0x20);
			str ++;
			tempX += 8;
		}
		else if(*str<0x80)
		{
			if((MAX_X - tempX)<8)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			Dis_Ascii_16(tempX,tempY,*str);
			str ++;
			tempX += 8;
		}
		else
		{
			if((MAX_X - tempX)<16)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			Dis_GBK16(tempX,tempY,str);
			str += 2;
			tempX += 16;
		}
	}
	return 0;
}

unsigned char LCD_print_unicode12(unsigned int x,unsigned int y,unsigned int *str)
{
	unsigned int tempX = x,tempY = y;
	unsigned int temp;
	while(*str)
	{
		if(*str == '\n')
		{
			if((MAX_X - tempX)<6)
			{
				tempX = 0;
				if((MAX_Y - tempY)<12)return 1;
				else tempY += 12;
			}
			else if((MAX_Y - tempY)<24)return 1;
			else 
			{
				tempX = 0;
				tempY += 12;
			}
			str ++;
		}
		else if(*str<0x20)
		{
			if((MAX_X - tempX)<6)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			Dis_Ascii_12(tempX,tempY,0x20);
			str ++;
			tempX += 6;

		}
		else if(*str<0x80)
		{
			if((MAX_X - tempX)<6)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			Dis_Ascii_12(tempX,tempY,*str);
			str ++;
			tempX += 6;
		}
		else if(*str<0x4e00)
		{
			if((MAX_X - tempX)<12)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			Dis_GBK12(tempX,tempY,"■");
			str ++;
			tempX += 12;

		}
		else if(*str<0x9fa6)
		{
			temp = *str;
			if((MAX_X - tempX)<12)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			if(Unicode_to_GBK((unsigned char *)&temp))return 1;
			Dis_GBK12(tempX,tempY,(unsigned char *)&temp);
			str ++;
			tempX += 12;
		}
		else 
		{
			if((MAX_X - tempX)<12)
			{
				tempX = 0;
				if((MAX_Y - tempY)<24)return 1;
				else tempY += 12;
			}
			Dis_GBK12(tempX,tempY,"■");
			str ++;
			tempX += 12;
		}
	}
	return 0;
}
unsigned char LCD_print_unicode16(unsigned int x,unsigned int y,unsigned int *str)
{
	unsigned int tempX = x,tempY = y;
	unsigned int temp;
	while(*str)
	{		if(*str == '\n')
		{
			if((MAX_X - tempX)<8)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			else if((MAX_Y - tempY)<32)return 1;
			else 
			{
				tempX = 0;
				tempY += 16;
			}
			str ++;
		}
		else if(*str<0x20)
		{
			if((MAX_X - tempX)<8)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			Dis_Ascii_16(tempX,tempY,0x20);
			str ++;
			tempX += 8;
		}
		else if(*str<0x80)
		{
			if((MAX_X - tempX)<8)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			Dis_Ascii_16(tempX,tempY,*str);
			str ++;
			tempX += 8;
		}
		else if(*str < 0x4e00)
		{
			if((MAX_X - tempX)<16)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			Dis_GBK16(tempX,tempY,"■");
			str ++;
			tempX += 16;
		}
		else if(*str < 0x9fa6)
		{
			temp = *str;
			if((MAX_X - tempX)<16)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			if(Unicode_to_GBK((unsigned char *)&temp))return 1;
			Dis_GBK16(tempX,tempY,(unsigned char *)&temp);
			str ++;
			tempX += 16;
		}
		else
		{
			if((MAX_X - tempX)<16)
			{
				tempX = 0;
				if((MAX_Y - tempY)<32)return 1;
				else tempY += 16;
			}
			Dis_GBK16(tempX,tempY,"■");
			str ++;
			tempX += 16;
		}
	}
	return 0;
}

⌨️ 快捷键说明

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