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

📄 lcd12864.c

📁 lcd1286显示模块 EWB Quartus2编译 电子综合设计试验箱程序
💻 C
字号:
#include "LCD12864.h"

void LCDStatusLeft(void) //判断左边屏幕的状态
{
    while((LCD1_RS&0x80)|(LCD1_RS&0x10));//等待LCD完成复位并且空闲
}


void LCDStatusRight(void) //判断右边屏幕的状态
{
    while((LCD2_RS&0x80)|(LCD2_RS&0x10));//等待LCD完成复位并且空闲
}


void LCD12864WriteCmdLeft(unsigned char cmd)
{
    LCDStatusLeft();
	LCD1_ORG=cmd;
}
void LCD12864WriteCmdRight(unsigned char cmd)
{
    LCDStatusRight();
	LCD2_ORG=cmd;
}

void LCD12864WriteDataLeft(unsigned char lcddata)
{
    LCDStatusLeft();
	LCD1_WD=lcddata;
}
void LCD12864WriteDataRight(unsigned char lcddata)
{
    LCDStatusRight();
	LCD2_WD=lcddata;
}

void LCD12864Init(void)  //LCD初始化
{
    	/*
		delay(100);
		CS2=1; CS1=0;
		delay(100);
		write_cmd(DISP_OFF);
		write_cmd(PAGE);
		write_cmd(START_LINE);
		write_cmd(COL);
		write_cmd(DISP_ON);
		CS2=0; CS1=1;
		delay(100);
		write_cmd(DISP_OFF);
		write_cmd(PAGE);
		write_cmd(START_LINE);
		write_cmd(COL);
		write_cmd(DISP_ON);*/
		//左半屏幕
	    LCD12864WriteCmdLeft(DISP_OFF);
		LCD12864WriteCmdLeft(PAGE);
		LCD12864WriteCmdLeft(START_LINE);
		LCD12864WriteCmdLeft(COL);
		LCD12864WriteCmdLeft(DISP_ON);
	    //右半屏幕
		LCD12864WriteCmdRight(DISP_OFF);
		LCD12864WriteCmdRight(PAGE);
		LCD12864WriteCmdRight(START_LINE);
		LCD12864WriteCmdRight(COL);
		LCD12864WriteCmdRight(DISP_ON);

}



void LCD12864Cls(void)    //清屏函数
{
        /*
		uchar j,k;
        CS2=1;CS1=0;
        for(k=0;k<8;k++)
        {
                write_cmd(PAGE+k);
        	    write_cmd(COL);       //列地址0
	            for(j=0;j<64;j++)     //列地址自动加一
	                    write_data(0x00);
         }
	     CS2=0;CS1=1;
	     for(k=0;k<8;k++)
	     {
	            write_cmd(PAGE+k);
	            write_cmd(COL);           //列地址0
	            for(j=0;j<64;j++)         //列地址自动加一
		                write_data(0x00);
        }*/
    unsigned char j,k;
	for(k=0;k<8;k++)
	{
	     LCD12864WriteCmdLeft(PAGE+k);
         LCD12864WriteCmdLeft(COL);       //列地址0
	     for(j=0;j<64;j++)     //列地址自动加一
	         LCD12864WriteDataLeft(0x00);   
	}


	for(k=0;k<8;k++)
	{
	     LCD12864WriteCmdRight(PAGE+k);
         LCD12864WriteCmdRight(COL);       //列地址0
	     for(j=0;j<64;j++)     //列地址自动加一
	         LCD12864WriteDataRight(0x00);   
	}

}



/**************************************************************************************************
*
*显示12*16点阵的汉字函数
*函数声明:void LCDDisplayChinese(uchar page,uchar col,uchar code *str,uchar n);
*函数参数:page为页地址(0-7),col为列地址(0-127),str为数组名,n为要显示第n个汉字点阵
*函数作用:
*
**************************************************************************************************/
void LCDDisplayChinese(unsigned char page,unsigned char col,unsigned char code *str,unsigned char n)
{
      unsigned char i,j;
	  unsigned char num;
	  if(col<=52)
	  {
			for(j=0;j<2;j++)
	        {
		          LCD12864WriteCmdLeft(PAGE+page+j);LCD12864WriteCmdLeft(COL+col);
		          for(i=0;i<12;i++)
		               LCD12864WriteDataLeft(str[n*24+12*j+i]);
	        }
	  }
	  else if(col>=64)
	  {
		    col=col-64;
			for(j=0;j<2;j++)
	        {
		          LCD12864WriteCmdRight(PAGE+page+j); LCD12864WriteCmdRight(COL+col);
		          for(i=0;i<12;i++)
		                 LCD12864WriteDataRight(str[n*24+12*j+i]);
	        }
	  }

	  
	  else if(col>52&&col<64)    //处理跨屏幕的汉字书写的函数
	  {
	      num=64-col;										  
		  for(j=0;j<2;j++)
		  {
		          LCD12864WriteCmdLeft(PAGE+page+j); LCD12864WriteCmdLeft(COL+col);
		          for(i=0;i<num;i++)
		                 LCD12864WriteDataLeft(str[n*24+12*j+i]);  
		  }
		  col=0;
		  for(j=0;j<2;j++)
		  {
		          LCD12864WriteCmdRight(PAGE+page+j);LCD12864WriteCmdRight(COL+col);
		          for(i=num;i<12;i++)
		                LCD12864WriteDataRight(str[n*24+12*j+i]);  
		  }


	  }

}

⌨️ 快捷键说明

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