📄 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: */
/* 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 + -