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

📄 自己写 ok.txt

📁 液晶LMG-SSC12A64 (总线方式) 带电路图仿真
💻 TXT
字号:

#includereg51.h
#includeintrins.h
#includeabsacc.h

#define write_cmd_addr_0 XBYTE[0x8fff]	   写指令地址左
#define read_state_addr_0 XBYTE[0xafff]    读状态地址左
#define write_data_addr_0 XBYTE[0x9fff]    写数据地址左
#define read_data_addr_0 XBYTE[0xbfff]     读数据地址左

#define write_cmd_addr_1 XBYTE[0x4fff]	   写指令地址右
#define read_state_addr_1 XBYTE[0x6fff]    读状态地址右
#define write_data_addr_1 XBYTE[0x5fff]    写数据地址右
#define read_data_addr_1 XBYTE[0x7fff]     读数据地址右

#define Col_Add 0x40列地址
#define Page_Add 0xb8行地址
#define Start_line 0xc0起始行




函数声明

void init(void);   初始化函数
void delay_ms(unsigned int n);    毫秒级延时
void delay_10us(unsigned char n);   微秒级延时
void busy_check(bit sel);   忙标志判断
void write_cmd(unsigned char command, bit sel);   写命令  sel表示选左右屏  command 命令字
void write_data(unsigned char mydata, bit sel);   写数据  sel表示左右屏   
 mydata数据  若用data则与关键字data重合,编译不通过
void clear_screen(void);   清屏
void Chinese_disp(unsigned char y,unsigned char x,unsigned char n,bit sel);   显示Chinese_character里的一个汉字
void display(void);  调用Chinese_disp函数组成显示





字模,此字体下对应的
点阵为:宽x高=16x16


unsigned char code Chinese_character[][32]=
{

	{
		0x80,0xC0,0xF0,0xFF,0x0F,0x02,0xFE,0xFE,0x92,0x93,0x91,0x93,0x92,0xFE,0xFE,0x00,
    0x00,0x00,0x7F,0x7F,0x40,0x60,0x31,0x1D,0x0F,0x03,0x3F,0x7F,0x40,0x41,0x79,0x78    倪 0
	},

	{
		0x00,0x10,0x10,0x10,0x11,0x11,0x91,0x91,0xF9,0xFD,0x17,0x13,0x11,0x10,0x10,0x10,
    0x40,0x40,0x40,0x7E,0x7E,0x42,0x7E,0x7F,0x43,0x7E,0x7E,0x42,0x7E,0x7E,0x40,0x40    孟 1
	},

	{
		0x40,0x40,0x60,0x20,0x30,0x38,0x2C,0xE7,0xE7,0x2C,0x28,0x38,0x30,0x60,0x60,0x20,
   0x00,0x40,0x61,0x3D,0x1D,0x49,0xC1,0xFF,0x7F,0x05,0x0D,0x39,0x39,0x11,0x01,0x00     余  2
	},

	{
	 	0x20,0x30,0xBC,0xEF,0x73,0x10,0x80,0xC2,0x72,0x3E,0x0E,0x42,0xC2,0xFE,0x7E,0x00,
    0x22,0x23,0x23,0x32,0x12,0x12,0x00,0x7F,0x7F,0x21,0x21,0x21,0x21,0x7F,0x7F,0x00    绍  3
	},

	{
	 0x00,0x82,0x8E,0xBC,0xB8,0x92,0x8E,0xBC,0xB8,0x90,0xC0,0xF0,0xBE,0x9E,0x84,0x80,
   0x40,0x60,0x30,0x18,0x1E,0x0E,0x04,0x00,0x00,0x02,0x06,0x1C,0x78,0x70,0x20,0x00     兴 4
	},

	{
	 	0x08,0x08,0x08,0x08,0x78,0xF8,0x89,0x0F,0x0E,0x88,0xF8,0x78,0x08,0x08,0x08,0x08,
    0x40,0x40,0x40,0x60,0x20,0x31,0x1B,0x0E,0x0E,0x1B,0x11,0x30,0x60,0x60,0x20,0x20     文 5
	},

	{
		0x44,0x44,0xFC,0xFC,0x44,0x44,0xFE,0xFE,0x92,0xFE,0xFE,0x92,0x92,0xFE,0xFE,0x00,
    0x10,0x10,0x1F,0x0F,0x48,0x48,0x45,0x45,0x44,0x7F,0x7F,0x44,0x44,0x45,0x45,0x40     理 6
	},

	{
		0x40,0x70,0x30,0x12,0x5E,0x5C,0x54,0x51,0x5F,0xDE,0xD4,0x58,0x5F,0x77,0x32,0x10,
    0x00,0x02,0x02,0x02,0x02,0x02,0x42,0xC2,0xFF,0x7F,0x02,0x02,0x02,0x02,0x02,0x02     学 7
	},

	{
		0xFE,0xFE,0x32,0x7A,0xCE,0x8E,0x2C,0x24,0x25,0x27,0x26,0x24,0x24,0x2C,0x0C,0x04,
    0xFF,0xFF,0x02,0x06,0x87,0xC3,0x71,0x3F,0x0F,0x01,0x7F,0xFF,0x81,0x81,0xF1,0xF1     院  8
	},

	{
 		0x00,0x00,0x00,0xF8,0xF8,0x48,0x4C,0x4F,0x4B,0x4A,0x48,0x48,0xF8,0xF8,0x00,0x00,
     0x00,0x00,0x00,0xFF,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFF,0xFF,0x00,0x00    自   9
	},

	{
	 	0x20,0x24,0x24,0xE4,0xE4,0x24,0x24,0x24,0x30,0x10,0xFF,0xFF,0x10,0xF0,0xF0,0x00,
    0x08,0x1C,0x1F,0x0B,0x0C,0x0D,0x4F,0x6E,0x34,0x1C,0x0F,0x23,0x60,0x7F,0x3F,0x00     动    10
	},

	{

    0x80,0xC0,0x60,0xF8,0xFF,0x07,0x02,0x00,0xFF,0xFF,0xE0,0x70,0x3C,0x1C,0x08,0x00,
    0x00,0x00,0x00,0x7F,0x7F,0x04,0x06,0x03,0x3F,0x7F,0x40,0x40,0x40,0x78,0x78,0x00     化     11

	},

	{
		0x00,0xE0,0xF0,0x18,0x08,0x18,0xF0,0xE0,0x00,0x00,0xF8,0xF8,0x88,0x88,0x88,0x08,
0x08,0x00,0x00,0x10,0x10,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x30,0x20           12
	},

	{
		0x30,0x1F,0x0F,0x00,0x00,0x19,0x39,0x21,0x20,0x31,0x1F,0x0E,0x00,0x00,0x20,0x20,
    0x3F,0x3F,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00    051     13
	},

	{
    	--  文字 行  --
		0x10,0x08,0x84,0xC6,0x73,0x22,0x40,0x44,0x44,0x44,0xC4,0x44,0x44,0x44,0x40,0x00,
		0x02,0x01,0x00,0xFF,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00行,14
	},

	{
		--  文字 胜  --
		0x00,0x00,0xFE,0x12,0x12,0xFE,0x20,0x1C,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,0x00,
		0x40,0x30,0x0F,0x21,0x41,0x3F,0x20,0x21,0x21,0x21,0x3F,0x21,0x21,0x21,0x20,0x00胜,15
	},

	{
		--  文字 于  --
		0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x00,
		0x00,0x00,0x00,0x00,0x20,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00于,16
	},

	{
    	--  文字 言  --
		0x00,0x04,0x04,0xA4,0xA4,0xA4,0xA5,0xA6,0xA4,0xA4,0xA4,0xA4,0x04,0x04,0x04,0x00,
		0x00,0x00,0x00,0xFC,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFC,0x00,0x00,0x00,0x00言,17
	}
};

   显示8x8字符


unsigned char tanhao[]=
{
	--  文字 !  --
	0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00!,18
};






   检测忙状态


void busy_check(bit sel)   sel表示选左右屏   01表示左右 
{
	unsigned char busy;
	if(sel)       根据选择的左右屏读状态
   {
	  while(busy&0x80)
	  {busy=read_state_addr_1;}    
   }
  else
  	{while(busy&0x80)
	   {busy=read_state_addr_0;}
  		}
}



写命令


void write_cmd(unsigned char command, bit sel)
{  if(sel)
	{
	 busy_check(1);                先要等不忙了再写命令
	 write_cmd_addr_1=command;    
  }
  else
  	{  busy_check(0);
	     write_cmd_addr_0=command;
  		}
}



  写数据



void write_data(unsigned char mydata,bit sel)     
{if(sel)
	{busy_check(1);
	write_data_addr_1=mydata;    先要等不忙了再写数据
  }
  else
  	{busy_check(0);
	   write_data_addr_0=mydata;
  		}
}



  清屏



void clear_screen(void)
{
	unsigned char i;
  unsigned char k;
	write_cmd(Col_Add,0);      定位左屏启始为第0列  
	  for(i=0;i8;i++)
	 {
	 	 write_cmd(Page_Add+i,0);   定位第i页
		 for(k=0;k64;k++)
		 	{write_data(0x00,0);}    写数据0x00,即空白
	 }


	 write_cmd(Col_Add,1);     定位右屏启始为第0列  
	  for(i=0;i8;i++)      
	 {
	 	 write_cmd(Page_Add+i,1);     定位第i页
		 for(k=0;k64;k++)
		 	{write_data(0x00,1);}     写数据0x00,即空白
	 } 

}



  显示汉字



 y表示启始页码,x表示启始列,n表示数组Chinese_character代号,sel表左右屏   
void Chinese_disp(unsigned char y,unsigned char x,unsigned char n,bit sel)
{   unsigned char xx,i;
    unsigned char j;
    

	if (sel)
	{
	  for(i=0;i2;i++)
	  {  write_cmd(Page_Add+y+i,1);
		   write_cmd(Col_Add+x,1);
		    for(j=0;j16;j++)
		    {  write_data(Chinese_character[n][16i+j],1);   }
	  }
  }
  else
  {
  	    for(i=0;i2;i++)
	     { sel=0;
	     	 write_cmd(Page_Add+y+i,0);
		     write_cmd(Col_Add+x,0);
	     	 for(j=0;j16;j++)     写了一个数据,x自动回加1
	   	   {
	   	   	 xx=x+j;
	   	   	 
	   	   	 
	   	   	 切记此处用==,若用=就成了赋值语句了,谨记
	   	   	 
	   	   	 
	   	   	 if(xx==64)    判断是否超过64列
	   	   	 {
	   	   	 	sel=1;
	   	   	 
	   	   	 	write_cmd(Page_Add+y+i,1);
		        write_cmd(Col_Add,1);

		        }
		       else

		       {write_data(Chinese_character[n][16i+j],sel);}       

	   	   }
        }
   }
  }




显示叹号'!'


void tanhao_disp(unsigned char pag,unsigned char col,unsigned char chinese2)
{
	unsigned char i=0;
	unsigned char j=0;
	for(i=0;i2;i++)
	{
		write_cmd_2(Page_Add+pag+i);
		write_cmd_2(Col_Add+col);
		for(j=0;j8;j++)
			write_data_2(chinese2[8i+j]);

	}

}

void display(void)
{
	Chinese_disp(0,16,3,0);
  Chinese_disp(0,32,4,0);
  Chinese_disp(0,48,5,0);
  Chinese_disp(0,0,6,1);
  Chinese_disp(0,16,7,1);
  Chinese_disp(0,32,8,1);
   Chinese_disp(2,40,0,0);
    Chinese_disp(2,56,1,0);
     Chinese_disp(2,8,2,1);



	unsigned char i;
	for(i=Start_line;i0xff;i++)
 	{
		Chinese_disp(0,16,0);
		Chinese_disp_1(0,32,1);
	 	Chinese_disp_1(0,48,2);
		tanhao_disp(6,32,tanhao);
		write_cmd_1(i);
		write_cmd_2(i);
		delay(3000);

	}
	delay(60000);


}

void delay_10us(unsigned char n)     微秒级延时
{do
	{_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();

		}while(--n);
	}

void delay_ms(unsigned int n)    毫秒级延时
{
	do delay_10us(131);
	while(--n);
	}

void init(void)   12864初始化
{
	delay_ms(200);   延时,给12864时间接受数据
	write_cmd(0xc0,0);    设定左屏start_line
	delay_ms(5);
	write_cmd(0x3f,0);    开显示,0x3f开,0x3e关

  delay_ms(200);    与左屏一样对右屏
	write_cmd(0xc0,1);
	delay_ms(5);
	write_cmd(0x3f,1);

	}
主程序
void main(void)
{    init();
 	   clear_screen();
	   _nop_();
		 display();
     while(1);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -