📄 12864.c
字号:
#include<regx51.h>
#define uchar unsigned char
#define uint unsigned int
sbit cs2=P2^1;
sbit cs1=P2^0;
sbit di=P2^2;
sbit rw=P2^3;
sbit en=P2^4;
uchar code xiao1[]={
/*-- 文字: 郑 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x91,0x96,0x90,0xF8,0x94,0x93,0x90,0x90,0x00,0xFE,0x02,0x62,0x9A,0x06,0x00,
0x20,0x20,0x10,0x0C,0x03,0x02,0x04,0x18,0x00,0x00,0xFF,0x08,0x08,0x10,0x0F,0x00,
/*-- 文字: 州 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0xE0,0x00,0x00,0xFF,0x20,0xC0,0x00,0xFE,0x10,0x60,0x80,0x00,0xFF,0x00,0x00,
0x01,0x80,0x60,0x18,0x07,0x00,0x00,0x00,0x7F,0x00,0x00,0x01,0x00,0xFF,0x00,0x00,
/*-- 文字: 轻 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xC4,0xB4,0x8F,0xF4,0x84,0x84,0x04,0x82,0x42,0x22,0x12,0x2A,0x46,0xC2,0x00,0x00,
0x08,0x08,0x08,0xFF,0x04,0x44,0x41,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x00,
/*-- 文字: 工 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
/*-- 文字: 业 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x10,0x60,0x80,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x80,0x60,0x38,0x10,0x00,
0x20,0x20,0x20,0x23,0x21,0x3F,0x20,0x20,0x20,0x3F,0x22,0x21,0x20,0x30,0x20,0x00,
/*-- 文字: 学 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,
/*-- 文字: 院 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,
0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00
};
uchar code ming[]={
/*-- 文字: 吕 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x3F,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x3F,0x00,0x00,0x00,0x00,
0x00,0x00,0x7F,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,0x00,
/*-- 文字: 效 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x08,0xC8,0x39,0x0E,0x18,0xA8,0x48,0x40,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x00,
0x40,0x41,0x21,0x12,0x0C,0x0A,0x51,0x40,0x20,0x20,0x13,0x0C,0x33,0x60,0x20,0x00,
/*-- 文字: 军 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x18,0x26,0x22,0xA2,0x72,0x2E,0xAA,0x22,0x22,0x22,0x32,0x22,0x0A,0x06,0x00,
0x00,0x10,0x10,0x12,0x13,0x12,0x12,0xFF,0x12,0x12,0x12,0x13,0x12,0x18,0x10,0x00};
void delay(uint ms)
{
while(--ms) ;
}
void write_com(uchar com)
{
// check_busy();
di=0;
rw=0;
en=0;
P0=com;
en=1;
// delay(10);
en=0;
}
void write_data(uchar date)
{
di=1;
rw=0;
en=0;
P0=date;
en=1;
// delay(10);
en=0;
}
void clear_lcd() //清屏
{
uchar i,j;
cs1=0;
cs2=0;
write_com(0x3f);
write_com(0xc0);
for(i=0;i<8;i++)
{
write_com(0xb8+i);
write_com(0x40);
for(j=0;j<64;j++)
write_data(0);
}
}
void init_lcd()
{
write_com(0x3f); //开显示
write_com(0xc0); //设置显示的开始坐标,从屏幕左边0点开始显示
write_com(0xb8); //设置页数,x坐标
write_com(0x40); //设置y坐标
clear_lcd();
}
/*--------------全屏显示图片(宽*高=128*64)----------------*/
void display_picture(uchar code *img)
{
uchar i,j;
for(j=0;j<8;j++)
{
cs1=0;cs2=1;
write_com(0x3f);
write_com(0xb8+j);
write_com(0xc0);
write_com(0x40);
for(i=0;i<64;i++)
write_data(img[j*128+i]);
cs1=1;cs2=0;
write_com(0x3f);
write_com(0xb8+j);
write_com(0xc0);
write_com(0x40);
for(i=64;i<128;i++)
write_data(img[j*128+i]);
}
}
/*---指定位置(x,y)显示row_xl行(每行row_yl个)汉字(大小8xl*yl)---*/
void display(uchar x,uchar y,uchar xl,uchar yl,uchar row_xl,uchar row_yl,uchar code *chn)
{
uchar i,j,k,l,a;
write_com(0x3f);
for(l=0;l<row_xl;l++)
{
for(k=0;k<row_yl;k++)
{
for(j=0;j<xl;j++)
{
write_com(0xb8+x+l*xl+j);
write_com(0xc0);
write_com(0x40+y+k*yl);
a=l*xl*yl*row_yl+k*xl*yl+j*yl;
for(i=0;i<yl;i++)
write_data(chn[a+i]);
}
}
}
}
void write_one(uchar x,uchar y,uchar *hanzi) //对LCD在指定位置写入单个汉字
{ //16*16
uchar i;
if(y < 4) //posy < 4 在左半部写
{
cs1=0;
cs2=1;
write_com(0xb8+2*x); //x页数
write_com(0x40+16*y); //y坐标
for(i = 0; i < 16; i++)
{
write_data(hanzi[i]);
}
write_com(0xb8+2*x+1);
write_com(0x40+16*y);
for(i = 16; i < 32; i++)
{
write_data(hanzi[i]);
}
}
else //否则在右半部写
{
cs1=1;
cs2=0;
write_com(0xb8+x*2);
write_com(0x40+16*(y-4));
for(i = 0; i < 16; i++)
{
write_data(hanzi[i]);
}
write_com(0xb8+2*x+1);
write_com(0x40+16*(y-4));
for(i = 16; i < 32; i++)
{
write_data(hanzi[i]);
}
}
}
//row行col列写入n个汉字
void write_string(uchar row,uchar col,uchar n,uchar *str)
{
uchar i;
for(i = 0 ; i < n; i++)
{
if( col > 7)
{
row++;
col = col - 8;
}
write_one(row,col,str+i*32);
col++;
}
}
void main()
{
init_lcd();
cs1=1;
cs2=0;
display(5,2,2,16,1,3,ming);
write_string(0,0,7,xiao1);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -