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

📄 lcd12864._h

📁 12864液晶显示程序 带中文字库 可以画图 写汉字
💻 _H
字号:

/************************串行工作**************************/

#define CS_H   PORTC|=(1<<0)
#define CS_L   PORTC&=~(1<<0)
#define STD_H  PORTC|=(1<<2)
#define STD_L  PORTC&=~(1<<2)
#define SCLK_H PORTC|=(1<<4)
#define SCLK_L PORTC&=~(1<<4)

//	显示用指针变量
 char *line1;
 char *line2;
 char *line3;
 char *line4;




 /*****************************************
液晶初始化程序

*****************************************/
void lcd12864_init(void)
{
	DDRC=0XFF;
	PORTC=0X00;      //IO端口初始化	
	DDRG|=BIT(2);
	//PORTG=0XFF;
	PORTG &=~(1<<2);  //串行
	delay_ms(6);

	write_com(0X30);        //基本指令动作
	write_com(0X01);	    //清屏,地址指针指向00H
	delay_ms(6);
	write_com(0X0C);        //开显示,关游标  
	delay_ms(5);
}
 
 
void clear_dis(void)
 {
   write_com(0x30);
   write_com(0X01);	 //清屏,地址指针指向00H
   delay_ms(10);
 }
 
 
/*****************************************
液晶发送子程序(串行)

*****************************************/
void write_byte(unsigned char word)
{
	unsigned char i;
	for(i=0;i<8;i++)
	   {
	    SCLK_L;
		if(word & 0x80)  STD_H;
		 else            STD_L;
		word<<=1;
		SCLK_H;
		SCLK_L;
	   }
}
/*****************************************
液晶写控制字程序

*****************************************/
void write_com(unsigned char com)
{
	CS_H;
	delay_ms(1);
	write_byte(0XF8);
	write_byte(com & 0XF0);
	write_byte((com<<4) & 0XF0);
	CS_L;
}
/*****************************************
液晶写数据字程序

*****************************************/
void write_data(unsigned char data)
{
	CS_H;
	delay_ms(1);
	write_byte(0XFA);
	write_byte(data&0XF0);
	write_byte((data<<4)&0XF0);
	CS_L;
}

//指定位置写文字
void lcd_writexy(unsigned char x,unsigned char y,unsigned char *str)
{
  switch(x)
    {
	 case 1: write_com(0x80+y);break;
	 case 2: write_com(0x90+y);break;
	 case 3: write_com(0x88+y);break;
	 case 4: write_com(0x98+y);break;
	}

  while( *str!=0x00 )
	{
		write_data(*str);
		*str++;
	}
}

/*****************************************
液晶整行显示函数程序

*****************************************/
void display(void)
{
	write_com(0x80);
	while( *line1!=0x00 )
	{
		write_data(*line1);
		line1++;
	}

	write_com(0x90);
	while( *line2!=0x00 )
	{
		write_data(*line2);
		line2++;
	}

	write_com(0x88);
	while( *line3!=0x00 )
	{
		write_data(*line3);
		line3++;
	}

	write_com(0x98);
	while( *line4!=0x00 )
	{
		write_data(*line4);
		line4++;
	}
	line1 = "";
    line2 = "";
    line3 = "";
    line4 = "";
}


/*****************************************
液晶画图清屏程序

*****************************************/
void clear_disp_pic(void)
{
  unsigned char i,j=0; 
  for(j=0;j<32;j++)
  {
    for(i=0;i<16;i++)
    {
      write_com(0X34);//选择四位数据接口,扩充指令操作
      write_com(0x80+j);//四行
      write_com(0x80+i);//十六列
      write_com(0X30);
      write_data(0x00);
      write_data(0x00);
    }
  }
}
/*****************************************
液晶显示图形程序

*****************************************/
void disp_pic(const unsigned char *img )
{
  unsigned char i,j;  
  for(j=0;j<32;j++)
  {
    for(i=0;i<8;i++)
    {
      write_com(0x34);//扩充指令集
      write_com(0X80+j);//列号
      write_com(0X80+i);//行号
      write_com(0x30);//基本指令集
      write_data(img[j*16+i*2]);
      write_data(img[j*16+i*2+1]);
    }
  }
  for(j=32;j<64;j++)
  {
    for(i=0;i<8;i++)
    {
	  write_com(0x34);
      write_com(0X80+j-32);
      write_com(0X88+i);
      write_com(0x30);
      write_data(img[j*16+i*2]);
      write_data(img[j*16+i*2+1]);
	}
  }
  write_com(0x36);//8位数据 扩充指令集 绘图开
  delay_ms(500);
}


/******************************************************************************************
* 函数名称    :con_disp
* 功能描述    :当ee=0xff时,在x0,y0处反白显示x个字.
                当ee=0x00时,在x0,y0处取消反白显示x个字. 
******************************************************************************************/
void con_disp(unsigned char ee ,unsigned char x0,unsigned char y0,unsigned char x)
{
  	unsigned char i,j;
  	for(j=0;j<16;j++)
  	{
    	for(i=0;i<x;i++)
    	{
      	write_com(0x34);
      	write_com(y0+j);
      	write_com(x0+i);
      	write_com(0x30);
      	write_data(ee);
      	write_data(ee);
    	}
  	}
  	write_com(0x36);
}




/*-----------------------------------------------------------------------
延时函数
8M
-----------------------------------------------------------------------*/
void delay_1us(void)                 //1us延时函数
  {
   asm("nop");
  }

void delay_us(unsigned int n)       //N us延时函数
  {
   unsigned int i=0;
   for (i=0;i<n;i++)
   delay_1us();
  }
  
void delay_1ms(void)                 //1ms延时函数
  {
   unsigned int i;
   for (i=0;i<1140;i++);
  }
  
void delay_ms(unsigned int n)       //N ms延时函数
  {
   unsigned int i=0;
   for (i=0;i<n;i++)
   delay_1ms();
  }

⌨️ 快捷键说明

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