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

📄 text1.c

📁 此程序是我用AT89S52单片机来控制显示屏FYD12864,采用C语言编写的可以显示图形,我调试了一周,在此和大家一起分享
💻 C
字号:
  #include "main.h"
  #include <reg52.h>

 #define LCD_Data P0
sbit	LCD_RS		=P1^2;
sbit	LCD_E		=P1^0;
sbit	LCD_WR		=P1^1;

void WriteLCD(unsigned char StartAddressY,unsigned char StartAddressX,unsigned char *tab,unsigned char biaozhi);


 extern  unsigned char code picture[]={ 
0x00,0x8C,0x10,0x10,0x20,0x20,0x19,0x04,0x12,0x02,0xC0,0x02,0x11,0x00,0x00,0x00,
0x00,0x40,0x18,0x20,0x5C,0x62,0x22,0x5C,0x40,0x24,0x10,0x90,0x21,0x02,0x04,0x04,
0x00,0x00,0x00,0x00,0x02,0x10,0x00,0x00,0x00,0x00,0x40,0x18,0x20,0x5C,0x62,0x22,
0x5C,0x40,0x24,0x10,0x90,0x21,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x08,0xD4,0x32,0x12,0x8A,0x89,0x09,0x05,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
0x08,0x08,0x08,0x10,0xF0,0x18,0x08,0x08,0x10,0x20,0x20,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x30,0x40,0xB8,0xC4,0x44,0xB9,0x80,0x48,0x20,0x20,0x4B,
0x0C,0xF8,0x09,0x08,0x08,0x88,0x78,0x00,0x00,0x00,0x20,0x28,0xA8,0xA8,0xA8,0xF8,
0xA8,0xA8,0xA8,0x28,0x20,0x00,0x00,0x08,0x08,0x08,0x08,0xC8,0x48,0x28,0x18,0x08,
0x00,0x00,0x00,0xE0,0xF0,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xC0,0x3C,0x83,0x80,0x80,0x99,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,
0x00,0x02,0x0C,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x02,0x02,0x0E,0xF1,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,
0x20,0x00,0x00,0xA1,0xA0,0x90,0x90,0x8B,0x84,0x8A,0x91,0x90,0xA0,0xA0,0x00,0xA0,
0x28,0x2F,0x2A,0x2A,0x3F,0x2A,0xAA,0x2F,0xA8,0x20,0x00,0x00,0x80,0x80,0xA0,0x20,
0xBF,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x9B,0x9B,0x80,0x80,0x80,0x80,0x80,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x87,0x08,0x16,0x10,0x2C,0x21,0x21,
0x22,0x9C,0x80,0x80,0x80,0x80,0x00,0x01,0x08,0x08,0x08,0x08,0x00,0x07,0x04,0x06,
0x00,0x80,0x60,0x1E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x85,0x41,0x41,0x02,0x00,0x20,0x00,0x20,0x2E,0xAA,0xEA,0xBF,0x2A,0xAF,0x6A,
0x2A,0x2E,0x20,0x00,0xE0,0x1B,0x80,0x7E,0xEA,0xAA,0xEA,0x3F,0xC2,0x23,0x9A,0x00,
0x00,0xFF,0x24,0xFF,0x00,0xFF,0x08,0x0F,0x08,0x08,0x8F,0x00,0x00,0x00,0x00,0x00,
0x00,0xFC,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x88,0x45,
0x27,0x12,0x02,0x20,0x05,0x05,0x05,0x03,0x03,0x03,0x03,0x43,0x00,0x00,0x00,0x08,
0x08,0x08,0x08,0x0C,0x0A,0x09,0x10,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x24,0x03,0x00,0x02,0x00,0x78,0x80,0x00,0x20,0x02,0x82,0x42,
0x42,0x42,0x81,0x01,0x01,0x02,0x02,0x00,0x40,0x01,0x02,0x01,0x00,0x01,0xC0,0x22,
0x21,0x20,0x41,0x83,0x00,0x03,0x00,0x02,0x23,0x00,0x03,0x02,0x02,0x02,0x02,0xC3,
0x20,0x20,0x20,0x40,0x82,0x02,0x03,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x38,0x47,
0xF0,0x04,0x03,0x02,0x02,0x04,0x05,0x05,0x06,0x02,0x0A,0x0A,0x0A,0x0A,0x04,0x04,
0x14,0x14,0x14,0x14,0x1B,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFE,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x10,0x09,0x04,0x24,0x08,0x00,
0x11,0x01,0x00,0x03,0x04,0x04,0x02,0x00,0x01,0x0A,0x02,0x02,0x04,0x00,0x00,0x00,
0x08,0x00,0x00,0x01,0x02,0x02,0x01,0x00,0x20,0x05,0x01,0x01,0x02,0x00,0x20,0x00,
0x00,0x08,0x00,0x00,0x01,0x02,0x02,0x01,0x00,0x20,0x05,0x01,0x01,0x02,0x00,0x20,
0x00,0x00,0x00,0x00,0x1F,0x38,0x30,0x28,0x30,0x20,0x10,0x00,0x20,0x0C,0x10,0x30,
0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x01,0x02,0x04,0x18,
0x24,0x14,0x24,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};


  unsigned char LCDBusyWait()							//等待LCD就绪
{
	unsigned char Status;
	LCD_RS=0;
	LCD_WR=1;
	LCD_Data=0xFF;
	LCD_E=1;
	Status=LCD_Data;
	LCD_E=0;
	while(Status & 0x80)
	{
		
		LCD_E=1;
		Status=LCD_Data;
		LCD_E=0;
	}
	LCD_WR=0;
	return Status;
}

void WriteLCD_Data(unsigned char Data)			//向LCD写入一个字节的数据
{
	LCDBusyWait();
	LCD_RS=1;
	LCD_Data=Data;
	LCD_E=1;
	LCD_E=0;
}

void WriteLCD_Command(unsigned char Command)	//向LCD写入一个字节的命令
{
	LCDBusyWait();
	LCD_RS=0;
	LCD_Data=Command;
	LCD_E=1;
	LCD_E=0;
}


void WriteLCD(unsigned char StartAddressY,unsigned char StartAddressX,unsigned char *tab,unsigned char biaozhi)

{  unsigned char a;
   unsigned char b;
  
  
  for(a=0;a<32;a++)
    { 
	  if( biaozhi==0)
	   {      	   
			    	WriteLCD_Command(StartAddressY);
				    StartAddressY+=1;	
			        WriteLCD_Command(StartAddressX);
				   for(b=0;b<16;b++)
				       {
					     WriteLCD_Data(*(tab++));
						 }
		}
	  else
	    {		
		            WriteLCD_Command(StartAddressY);
				    StartAddressY+=1;	
			        WriteLCD_Command(StartAddressX);
				     for(b=0;b<16;b++)
				       {
					     WriteLCD_Data(*(tab++));
					    }
		  			
		
		}



	  }
  }

	void DISPInitial()
{
	unsigned int i;
	unsigned char j;
	WriteLCD_Command(0x30);	  //功能设置---8BIT控制界面,基本指令集
	WriteLCD_Command(0x0C);	  //显示打开,光标关,反白显示关
	WriteLCD_Command(0x01);	  //清除屏幕显示,将DDRAM的地址计数器归零
	
	
	
	WriteLCD_Command(0x32);	  //功能设置  绘图显示ON
       for(i=0;i<10;i++)
		 for(j=0;j<4;j++); 			//延时两秒
	WriteLCD_Command(0x36);	  //功能设置  绘图显示ON
	  for(i=0;i<10;i++)
		 for(j=0;j<4;j++); 			//延时两秒
}

void DisplayLCD()
{
	
	
	WriteLCD_Command(0x0C);			   			//关闭游标的闪烁

	WriteLCD(0x80,0x80,picture,0);
	WriteLCD(0x80,0x88,picture,1);
}


	void main(void)
{
	void WriteLCD(unsigned char StartAddressY,unsigned char StartAddressX,unsigned char *tab,unsigned char biaozhi);
	DISPInitial();


	while(1)
	{

		DisplayLCD();
	}	

}

⌨️ 快捷键说明

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