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

📄 lcd12864.h

📁 nRF401的串口通信程序,KEIL环境,C51程序.
💻 H
字号:
 //液晶宏定义
#define Disp_On  0x3f      // 显示开指令 00111111//
#define Disp_Off 0x3e      // 显示关指令 00111110//
#define Col_Add  0x40      // 定位到第0列指令  01000000//
#define Page_Add 0xb8      // 定位到第0页指令  10111000//
#define Start_Line 0xc0    // 定位从DDROM中的第0行开始往屏幕上显示 11000000//

//液晶引脚定义
//sbit RST = P2^2;    // 复位端 //
sbit E   = P2^7;    // 使能端 //
sbit RW  = P2^5;    // 读写控制端 //
sbit RS  = P2^3;    // 数据或指令寄存器选择端 //
sbit CS1 = P2^6;    // 左屏使能 低电平选择前面64列//
sbit CS2 = P2^4;    // 右屏使能 //

/* 延时t毫秒 */
void delay(unsigned int t)
{
	unsigned i;
	while(t--)
	{
		/* 对于11.0592M时钟,约延时1ms */
		for (i=0;i<125;i++)
		{}
	}
} 
/*-------------------------写命令到LCD------------------------------*/
//相当于初始化,即从哪行哪列开始显示
void write_command(unsigned char cmdcode)
 {
     RS = 0; //DI(RS) 为低电平时数据 D0~D7 将送入寄存器执行
     RW = 0;		//读写选择,高电平(读),低电平(写)
     P0 = cmdcode;
     delay(0);
     E = 1;			//E高电平有效,下降沿锁定数据
     delay(0);
     E = 0;
 }

/*-------------------------写数据到LCD----------------------------*/

void write_data(unsigned char Dispdata)
 {
     RS = 1;  //DI(RS) 为高电平时数据 D0~D7 将送入显示 RAM
     RW = 0;
     P0 = Dispdata;
     delay(0);
     E = 1;
     delay(0);
     E = 0;
 }

/*------------------------清显示屏--------------------------------*/

 void Clr_Scr(void)
 {
  unsigned char j,k;
  CS2=1;CS1=0;             // 清左半屏 //
   
       write_command(Page_Add+0);
       write_command(Col_Add+0);
       for(k=0;k<8;k++)               // 清左上半屏 //
          {
			   write_command(Page_Add+k);
               for(j=0;j<64;j++)
	           write_data(0x00);
          }
      
  
  CS2=0;CS1=1;                     // 清右半屏 //
   
        write_command(Page_Add+0);
        write_command(Col_Add+0);
        for(k=0;k<8;k++)               // 清右上半屏 //
          {
		  write_command(Page_Add+k);
               for(j=0;j<64;j++)
	                write_data(0x00);
           }
      
} 
 /*---------------------指定位置显示字母 8 * 8-----------------------*/

void zf_disp8(unsigned char pag,unsigned char col, unsigned char code *zk)
 {
  unsigned char j=0,i=0;
  if(col<128)
  {	  
       if((col&0x40) == 0)	//判断cor是否大于64
	   {
	         CS2=1;CS1=0;	//小于64写左边部分
             for(j=0;j<1;j++)
             {
                   write_command(Page_Add+pag+j);
                   write_command(Col_Add+col);
                   for(i=0;i<8;i++) 
	               write_data(zk[8*j+i]);
			 }
       }
	   else
	   {
	         CS2=0;CS1=1;	//大于64写右边部分
             for(j=0;j<1;j++)
             {
                   write_command(Page_Add+pag+j);
                   write_command(Col_Add+(col%64));
                   for(i=0;i<8;i++) 
	               write_data(zk[8*j+i]);
			 }	   
	   }
   }
 } 
/*------------------显示12864图片---------------------------*/
void Disp_Img(unsigned char code *img)
{
     unsigned char j,k;
     for(k=0;k<8;k++)
     {
          CS2=1;
	      CS1=0;
          delay(10);
          write_command(Page_Add+k);     //选择页 页++	64行分成了8页
          write_command(Col_Add+0);	     //从第0列开始
          for(j=0;j<64;j++) 			 //左半边 64 列
	           write_data(img[k*128+j]); // 左半边 k 页每行的数		 为什么是 K*128,k*16就行了啊?因为每一页有8行 8*16=128; write_data(img[k*16*8+j])
          CS2=0;
	      CS1=1;
          delay(10);
          write_command(Page_Add+k);	 //选择页  
          write_command(Col_Add+0);		 //从第0列开始
          for(j=64;j<128;j++) 			 //右半边 64 列
	           write_data(img[k*128+j]); //	 右半边 k 页每行的数
     }
}
/*------------------初始化LCD屏--------------------------*/
void init_lcd()
 {
      //RST=0;
      //delay(100);
      //RST=1;
      delay(100);

      CS2=1;
      CS1=1;

      delay(100);
      write_command(Disp_Off);	   //P0=00111110	关显示
      write_command(Page_Add+0);   //P0=10111000    设置初始页地址	000	   :有8页
      write_command(Start_Line+0); //P0=11000000    设置显示起始行  00000  :有64行
      write_command(Col_Add+0);	   //P0=01000000    设置显示起始列	00000  :有64列
      write_command(Disp_On);	   //P0=00111111    开显示
}

⌨️ 快捷键说明

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