📄 图形方式显示汉字.c
字号:
#include"stdio.h"
#include"reg52.h"
#include"stdlib.h"
#include"intrins.h"
#include"absacc.h"
unsigned char xdata lcddata _at_ 0xB000;
unsigned char xdata lcdcomm _at_ 0xB001;
unsigned char code cctab[]={
0X02,0x04,0x08,0x3F,0x20,0x20,0x20,0x20,//;白
0X3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x00,
0X00,0x00,0x08,0xFC,0x08,0x08,0x08,0x08,
0XF8,0x08,0x08,0x08,0x08,0xF8,0x08,0x00,
0X00,0x1F,0x10,0x10,0x10,0x10,0x10,0x1F,//;日
0X10,0x10,0x10,0x10,0x10,0x1F,0x10,0x00,
0X10,0xF8,0x10,0x10,0x10,0x10,0x10,0xF0,
0X10,0x10,0x10,0x10,0x10,0xF0,0x10,0x00,
0X08,0x08,0x08,0x17,0x10,0x30,0x50,0x90,//;依
0X11,0x12,0x14,0x10,0x10,0x10,0x10,0x10,
0X40,0x20,0x24,0xFE,0x40,0x40,0xA0,0xA4,
0XA8,0x90,0x90,0x88,0x8E,0xA4,0xC0,0x80,
0X01,0x01,0x01,0x01,0x41,0x41,0x41,0x41,//;山
0X41,0x41,0x41,0x41,0x41,0x7F,0x40,0x00,
0X00,0x00,0x00,0x00,0x04,0x04,0x04,0x04,
0X04,0x04,0x04,0x04,0x04,0xFC,0x04,0x00,
0X00,0x1F,0x10,0x10,0x1F,0x11,0x10,0x10,//;尽
0X10,0x16,0x21,0x40,0x86,0x01,0x00,0x00,
0X08,0xFC,0x08,0x08,0xF8,0x08,0x80,0x80,
0X40,0x20,0x90,0x0E,0x04,0x80,0xC0,0x40,
0X04,0x04,0x3F,0x04,0x04,0xFF,0x01,0x1F,//;黄
0X11,0x1F,0x11,0x1F,0x10,0x04,0x18,0x60,
0X40,0x50,0xF8,0x40,0x44,0xFE,0x10,0xF8,
0X10,0xF0,0x10,0xF0,0x00,0x60,0x18,0x04,
0X40,0x3F,0x10,0x00,0x80,0x67,0x24,0x0C,//;河
0X14,0x24,0xE7,0x24,0x20,0x20,0x20,0x20,
0X04,0xFE,0x08,0x08,0x48,0xE8,0x48,0x48,
0X48,0x48,0xC8,0x48,0x08,0x08,0x28,0x10,
0X04,0x02,0x01,0x01,0x01,0x02,0x02,0x02,//;入
0X04,0x04,0x08,0x08,0x10,0x20,0x40,0x80,
0X00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,
0X40,0x40,0x20,0x20,0x10,0x10,0x0E,0x04,
0X02,0x42,0x33,0x14,0x8B,0x62,0x22,0x0A,//;海
0X1F,0x24,0xE4,0x24,0x27,0x20,0x20,0x20,
0X00,0x08,0xFC,0x00,0xF8,0x88,0x48,0x08,
0XFE,0x88,0x48,0x08,0xFC,0x08,0x28,0x10,
0X00,0x40,0x37,0x10,0x80,0x61,0x27,0x08,//;流
0X11,0x21,0xE1,0x21,0x21,0x21,0x22,0x24,
0X80,0x48,0xFC,0x40,0x90,0x08,0xFC,0x04,
0X50,0x50,0x50,0x50,0x52,0x52,0x4E,0x40,
0X28,0x28,0x44,0x92,0x10,0x29,0x46,0x82,//;欲
0X7C,0x44,0x44,0x44,0x44,0x7C,0x45,0x02,
0X40,0x40,0x40,0x7C,0x84,0x28,0x20,0x20,
0X20,0x20,0x50,0x50,0x90,0x88,0x0E,0x04,
0X02,0x01,0x7F,0x40,0x84,0x0C,0x12,0x02,//;穷
0X3F,0x02,0x02,0x04,0x04,0x08,0x10,0x20,
0X00,0x00,0xFE,0x02,0x44,0x30,0x10,0x08,
0XFC,0x08,0x08,0x08,0x08,0x88,0x50,0x20,
0X00,0x00,0x3F,0x01,0x01,0x01,0x01,0xFF,//;千
0X01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0X20,0xF0,0x00,0x00,0x00,0x00,0x04,0xFE,
0X00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0X00,0x3F,0x21,0x21,0x3F,0x21,0x21,0x21,//;里
0X3F,0x01,0x01,0x7F,0x01,0x01,0xFF,0x00,
0X08,0xFC,0x08,0x08,0xF8,0x08,0x08,0x08,
0XF8,0x00,0x08,0xFC,0x00,0x04,0xFE,0x00,
0X00,0x1F,0x10,0x10,0x10,0x1F,0x10,0x10,//;目
0X10,0x1F,0x10,0x10,0x10,0x1F,0x10,0x00,
0X10,0xF8,0x10,0x10,0x10,0xF0,0x10,0x10,
0X10,0xF0,0x10,0x10,0x10,0xF0,0x10,0x00,
0X00,0xFF,0x01,0x3F,0x21,0x21,0x3F,0x21,//;更
0X21,0x3F,0x29,0x05,0x02,0x05,0x18,0xE0,
0X04,0xFE,0x08,0xFC,0x08,0x08,0xF8,0x08,
0X08,0xF8,0x08,0x00,0x00,0x80,0x70,0x0E,
0X01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//;上
0X01,0x01,0x01,0x01,0x01,0x01,0xFF,0x00,
0X00,0x00,0x00,0x00,0x10,0xF8,0x00,0x00,
0X00,0x00,0x00,0x00,0x00,0x04,0xFE,0x00,
0X00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,//;一
0X00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0X00,0x00,0x00,0x00,0x00,0x00,0x04,0xFE,
0X00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0X00,0x1F,0x10,0x10,0x1F,0x10,0x10,0x17,//;层
0X10,0x10,0x1F,0x11,0x22,0x24,0x4F,0x80,
0X04,0xFE,0x04,0x04,0xFC,0x00,0x10,0xF8,
0X00,0x04,0xFE,0x00,0x10,0x08,0xFC,0x04,
0X10,0x12,0x11,0x10,0xFF,0x11,0x3A,0x34,//;楼
0X50,0x5F,0x91,0x12,0x11,0x10,0x11,0x16,
0X40,0x48,0x50,0x44,0xFE,0x50,0x4C,0x44,
0X80,0xFE,0x08,0x08,0xB0,0x40,0xB0,0x08
};
void st1busycheck()//判断液晶读写状态
{
unsigned char commbyte;
commbyte=lcdcomm&0x03;
while(commbyte!=0x03)
{
;
}
}
void writedata(unsigned char databyte)//向液晶写数据
{
st1busycheck();
lcddata=databyte;
}
void writecommand0(unsigned char comm)//无参数指令入口
{
st1busycheck();
lcdcomm=comm;
}
void writecommand1(unsigned char dat2,comm)//单字节参数指令入口
{
writedata(dat2);
st1busycheck();
lcdcomm=comm;
}
void writecommand2(unsigned char dat1,dat2,comm)//双字节参数指令入口
{
writedata(dat1);
writedata(dat2);
st1busycheck();
lcdcomm=comm;
}
void putchinesetext(unsigned char x,y,cod)//图形方式显示
{
unsigned int j,count;
unsigned char dat1,dat2;
j=y*0x20+x;
dat1=j%256;
dat2=j/256+0x08;
for(count=0;count<16;count++)
{
writecommand2(dat1,dat2,0x24);
dat2=cctab[cod];
writecommand1(dat2,0xc0);
dat2=cctab[cod+0x10];
writecommand1(dat2,0xc0);
j=j+32;
dat1=j%256;
dat2=j/256+0x08;
cod++;
}
}
void lcdclear()//清屏
{
unsigned int lcdclear;
writecommand2(0x00,0x00,0x24);
writecommand0(0xb0);
lcdclear=1024;
while(lcdclear<8193)
{
writedata(0x00);
lcdclear++;
}
writecommand0(0xb2);
}
void lcdstart()
{
writecommand2(0x00,0x00,0x40);//文本区首地址
writecommand2(0x20,0x00,0x41);//文本区宽度
writecommand2(0x00,0x08,0x42);//图形区首地址
writecommand2(0x20,0x00,0x43);//图形区宽度
writecommand0(0xa7);//字体形状8*7
writecommand0(0x80);//文本、图形显示方式“或”关系
writecommand0(0x9c);//启用光标、文本、图形显示
writecommand0(0x05);
}
void main()
{
lcdstart();
lcdclear();
putchinesetext(0x00,0x00,0x00);//白
putchinesetext(0x02,0x00,0x20);//日
putchinesetext(0x04,0x00,0x40);//依
putchinesetext(0x06,0x00,0x60);//山
putchinesetext(0x08,0x00,0x80);//尽
putchinesetext(0x00,0x10,0xa0);//黄
putchinesetext(0x02,0x10,0xc0);//河
putchinesetext(0x04,0x10,0xe0);//入
putchinesetext(0x06,0x10,0x100);//海
putchinesetext(0x08,0x10,0x120);//流
putchinesetext(0x00,0x20,0x140);//欲
putchinesetext(0x02,0x20,0x160);//穷
putchinesetext(0x04,0x20,0x180);//千
putchinesetext(0x06,0x20,0x1a0);//里
putchinesetext(0x08,0x20,0x1c0);//路
putchinesetext(0x00,0x30,0x1e0);//欲
putchinesetext(0x02,0x30,0x200);//穷
putchinesetext(0x04,0x30,0x220);//千
putchinesetext(0x06,0x30,0x240);//里
putchinesetext(0x08,0x30,0x260);//路
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -