📄 lcd_app.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: */
/* 20081002: for LPC2132 mp3 board. do not need modify */
/* 20071208: modify codes for ARM platform (AT91SAM7S256) */
/* 20071109: add a faster display function for 3310 */
/* 20071021: add 6*12 tag display */
/* 20070202: original version */
/*****************************************************/
#include"LCD_APP.h"
#include"ICON.h"
void Print_ICON_12(uint16 x,uint16 y,uint8 ch)
{
uint8 i,j;
uint8 temp;
for(i=0;i<12;i++)
{
temp = 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 = 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(uint16 x,uint16 y,uint8 ch)
{
uint8 i,j;
uint8 temp;
for(i=0;i<6;i++)
{
temp =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 = 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);
}
}
}
uint8 LCD_print12_P(uint16 x,uint16 y,uint8 *str)
{
uint16 tempX = x,tempY = y;
uint16 temp;
while(temp = *str)
{
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 += (*(++str))<<8;
Dis_GBK12(tempX,tempY,(uint8 *)(&temp));
str ++;
tempX += 12;
}
}
return 0;
}
uint8 LCD_print12_fast(uint16 x,uint16 y,uint8 *str)
{
uint16 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;
}
uint8 LCD_print12(uint16 x,uint16 y,uint8 *str)
{
uint16 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;
}
uint8 LCD_print16_P(uint16 x,uint16 y,uint8 *str)
{
uint16 tempX = x,tempY = y;
uint16 temp;
while(temp = *str)
{
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 += *(++str)<<8;
Dis_GBK16(tempX,tempY,(uint8 *)(&temp));
str ++;
tempX += 16;
}
}
return 0;
}
uint8 LCD_print16(uint16 x,uint16 y,uint8 *str)
{
uint16 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;
}
uint8 LCD_print_unicode12(uint16 x,uint16 y,uint16 *str)
{
uint16 tempX = x,tempY = y;
uint16 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((uint8 *)&temp))return 1;
Dis_GBK12(tempX,tempY,(uint8 *)&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;
}
uint8 LCD_print_unicode16(uint16 x,uint16 y,uint16 *str)
{
uint16 tempX = x,tempY = y;
uint16 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((uint8 *)&temp))return 1;
Dis_GBK16(tempX,tempY,(uint8 *)&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 + -