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

📄 disp12864.c

📁 液晶显示器12864程序
💻 C
字号:
#include<reg52.h>
sbit BUT=P3^0;

sbit CS2= P2^3;
sbit CS1= P2^4;
sbit RS= P2^5;
sbit RW= P2^6;
sbit E=  P2^7;
sbit BUSY= P0^7;

#define DATALINE P0

delay()
{
unsigned char i=5;
while(i--);
}
void delay1(unsigned int i){
 while(i--);
}

void Busy(bit j)
{
 RS=0;
 RW=0;
 CS1=j;CS2=~j;
 E=1;
 DATALINE=0XFF;  
 RW=1;

 while(DATALINE==0x80){delay();}     //注意此处

}


void write_cmd(unsigned char i,bit j){
Busy(j);
RS=0;RW=0;CS1=j;CS2=~j;
E=1;
DATALINE=i;
delay();
E=0; 
}

void write_data(unsigned char i,bit j){
Busy(j);
RS=1;RW=0;CS1=j;CS2=~j;
E=1;
DATALINE=i;
delay();
E=0;

}


void CLR_lcd(void){

  unsigned char i,j;        
  for(i=0;i<8;i++)        
  {
   write_cmd(0xb8+i,1);
   write_cmd(0xb8+i,0);
   write_cmd(0x40,1);
   write_cmd(0x40,0);
   for(j=0;j<64;j++)               //L R 清屏顺序
    { 
     write_data(0x00,0);     
    }
	for(j=0;j<64;j++)
	{
	 write_data(0x00,1);
    }
  }
}



void Write_Char1(unsigned char i[]){
    unsigned char j; 
    write_cmd(0xb8,1);
	write_cmd(0x40,1);
	for(j=0;j<8;j++)
	{
	  write_data(i[j],1);
	}

    write_cmd(0xb8+1,1);
	write_cmd(0x40,1);
	for(j=8;j<15;j++)
    {     
     write_data(i[j],1);
    } 
}
unsigned char code Bmp1[]=
{
/*------------------------------------------------------------------------------
  源文件 / 文字 : 5
  字宽*字高     : 8*16
------------------------------------------------------------------------------*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00
};
unsigned char code Bmp2[]=
{
/*------------------------------------------------------------------------------
  源文件 / 文字 : 
  字宽*字高(像素):16*16
------------------------------------------------------------------------------*/
0x20,0x20,0x22,0x22,0xFE,0x21,0x21,0x20,0x20,0xFF,0x20,0x22,0xAC,0x20,0x20,0x00,
0x04,0x04,0x42,0x82,0x7F,0x01,0x01,0x10,0x10,0x08,0x07,0x1A,0x21,0x40,0xF0,0x00
};
unsigned char code Bmp3[]=
{
/*------------------------------------------------------------------------------
  源文件 / 文字 : 
  宽×高(像素): 16×16
------------------------------------------------------------------------------*/
0x00,0x40,0xB2,0x96,0x9A,0x92,0xF6,0x9A,0x93,0x91,0x99,0x97,0x91,0x90,0x30,0x00,
0x40,0x20,0xA0,0x90,0x4C,0x47,0x2A,0x2A,0x12,0x1A,0x26,0x22,0x40,0xC0,0x40,0x00
};
unsigned char code Bmp4[]=
{
/*------------------------------------------------------------------------------
  源文件 / 文字 : 
  宽×高(像素): 16×16
------------------------------------------------------------------------------*/
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
};
unsigned char code Bmp5[]=
{
/*------------------------------------------------------------------------------
  源文件 / 文字 : 
  宽×高(像素): 16×16
------------------------------------------------------------------------------*/
0x00,0x18,0x0A,0xAA,0xAA,0xAA,0x0A,0xFE,0x0A,0xAA,0xAA,0xAA,0x0A,0x18,0x08,0x00,
0x00,0x00,0x42,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0xFE,0x00,0x00,0x00
};


void Write_Char2(unsigned char i[],bit k,unsigned char m,unsigned char n){
    unsigned char j; 
    write_cmd(0xb8|m,k);
	write_cmd(0x40|n,k);
	for(j=0;j<16;j++)
	{
	  write_data(i[j],k);
	}

    write_cmd(0xb9+m,k);    //write_cmd(0xb8+1|m,k);未成功
	write_cmd(0x40|n,k);
	for(j=16;j<32;j++)
    {     
     write_data(i[j],k);
    } 
}


void LCD_Initial(void){
 write_cmd(0x3e,1);
 write_cmd(0x3e,0);
 write_cmd(0x3f,1);
 write_cmd(0x3f,0);
 write_cmd(0xc0,1);
 write_cmd(0xc0,0);
 CLR_lcd();      

}



main()
{ 
  unsigned char i; 
  LCD_Initial();

  Write_Char2(Bmp2,0,1,0);

 for(i=0;i<4;i++)
 {
  while(BUT); 
  if(i==0)Write_Char2(Bmp3,0,1,16);
  if(i==1)Write_Char2(Bmp4,0,1,32);
  if(i==2)Write_Char2(Bmp5,0,1,48);
  while(!BUT);
   
 }
  CLR_lcd();
  while(1);
}

⌨️ 快捷键说明

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