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

📄 12864.c

📁 89C51系列CPU编程器接收CPU程序
💻 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 + -