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

📄 12864带字库汉字显示程序.c

📁 花钱购买的C51学习板里的源码
💻 C
字号:
/****************************************************************************
* 程序名称:12864带字库汉字显示程序

******************************************************************************/

#include <reg52.h>
#include <intrins.h>
//------------定义接口-------------//
sbit RS = P2^5;
sbit RW = P2^6;
sbit E = P2^7;
sbit RES = P2^1;
#define Lcd_Bus P0 // P0 接 LCM

#define FIRST_ADDR 0  //定义字符/汉字显示起始位置

unsigned char code BMP1[]={
/*-- 调入了一幅图像
/*-- 宽度x高度=128x64 --*/
/*--总共52行数据,每行16个数据--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x01,0x01,0x00,0x02,0x18,0x00,0x01,0xC0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0xB0,0x80,0x03,0x0C,0x00,0x00,0xE0,0x00,0x70,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x01,0xD8,0x80,0x03,0x0C,0x00,0x10,0x60,0x00,0xF9,0x80,0x00,0x3F,0xC0,0x00,
      0x00,0x03,0xD5,0x80,0x03,0x0F,0xC0,0x17,0xDF,0x00,0xF1,0xE0,0x00,0xF8,0x60,0x00,
      0x00,0x07,0x55,0x00,0x07,0x7C,0xE0,0x1E,0x0F,0x01,0x33,0x30,0x00,0x37,0x60,0x00,
      0x00,0x07,0xFD,0x20,0x0F,0x67,0xE0,0x10,0x7C,0x01,0x22,0x18,0x02,0x1B,0x60,0x00,
      0x00,0x03,0xFD,0xE0,0x7E,0xDA,0x00,0x37,0xA0,0x01,0x64,0xEC,0x03,0x1B,0x60,0x00,
      0x00,0x03,0xDF,0x80,0x3A,0xBB,0x00,0x33,0xE0,0x01,0xEF,0xC7,0x01,0xDF,0x60,0x00,
      0x00,0x06,0xB6,0x80,0x13,0x37,0x80,0x26,0x40,0x03,0x7B,0x03,0x81,0x77,0x60,0x00,
      0x00,0x0F,0xFC,0x80,0x06,0x1E,0x00,0x0F,0x40,0x03,0xDC,0x70,0x01,0x3F,0x60,0x00,
      0x00,0x1F,0xFF,0x80,0x3E,0x3F,0x00,0x07,0xC0,0x03,0x1F,0xB0,0x03,0x2D,0xE0,0x00,
      0x00,0x1A,0x79,0x80,0x3A,0x36,0x00,0x01,0xFE,0x02,0xD6,0xB0,0x03,0xFC,0x60,0x00,
      0x00,0x02,0x5B,0xC0,0x32,0x0C,0x00,0x1F,0x80,0x0F,0x94,0x60,0x03,0x0C,0x60,0x00,
      0x00,0x02,0x5F,0x70,0x0E,0x1F,0xC0,0xF9,0xC0,0x06,0x30,0xC0,0x03,0x03,0xE0,0x00,
      0x00,0x02,0x50,0x3C,0x06,0x7D,0xE0,0x23,0x38,0x01,0xF3,0xF8,0x01,0x01,0xE0,0x00,
      0x00,0x02,0x00,0x0C,0x02,0x00,0x00,0x06,0x1C,0x00,0x67,0x98,0x00,0x00,0xE0,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x0C,0x00,0x20,0x00,0x00,0x00,0x40,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x03,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x01,0x02,0x08,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x01,0x02,0x08,0x00,0x81,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x01,0xC7,0x1C,0xF0,0x02,0x08,0xAA,0xAA,0x80,0xF0,0xED,0x9E,0xEC,0x03,0x9E,0x00,
      0x01,0x22,0x08,0x48,0x02,0x08,0xAA,0xAA,0x80,0xA9,0x24,0x90,0x48,0x04,0x89,0x00,
      0x01,0x22,0x08,0x48,0x04,0x10,0x71,0xC7,0x00,0xA9,0x04,0x8C,0x50,0x04,0x09,0x00,
      0x01,0x22,0x08,0x48,0x04,0x10,0x51,0x45,0x00,0xA9,0x04,0x82,0x30,0x04,0x09,0x00,
      0x03,0xB1,0x86,0x70,0x84,0x10,0x51,0x45,0x10,0xA8,0xE3,0xDE,0x21,0x03,0x9D,0x80,
      0x00,0x00,0x00,0x40,0x08,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
      0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x20,0x3F,0xE1,0x08,0x02,0x83,0xFF,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x22,0x00,0x41,0x08,0x02,0x42,0x01,0x22,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
      0x03,0xFF,0x00,0x87,0xBF,0x02,0x02,0xFD,0x22,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x02,0x22,0x03,0x01,0x08,0x7F,0xF2,0x01,0x22,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x03,0xFE,0x02,0x21,0x08,0x02,0x03,0xFF,0x7B,0xA0,0x10,0x00,0x0F,0x00,0x00,0x00,
      0x02,0x22,0x7F,0xF1,0xBE,0x07,0x02,0x51,0x26,0xA0,0x0C,0x00,0x0B,0x00,0x02,0x00,
      0x02,0x22,0x02,0x07,0x22,0x0A,0x82,0x55,0x22,0xA0,0x1C,0x00,0x2A,0x00,0x33,0x00,
      0x03,0xFE,0x02,0x01,0x14,0x12,0x42,0x95,0x22,0xE0,0x36,0x00,0x6E,0x00,0x33,0x00,
      0x02,0x20,0x02,0x01,0x08,0x62,0x33,0x1D,0x3A,0x90,0x2F,0x00,0x2F,0x80,0x3B,0xC0,
      0x00,0x21,0x02,0x01,0x14,0x02,0x02,0x01,0x62,0x10,0x39,0x00,0xF9,0xC0,0xE3,0x00,
      0x00,0x1F,0x0E,0x07,0x63,0x02,0x03,0xFF,0x03,0xF0,0x3D,0x00,0xC7,0x00,0xB3,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x00,0x9E,0x00,0xD2,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3D,0x01,0x94,0x00,0xAB,0xC0,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3D,0x01,0x07,0x00,0x7E,0xC0,
      0x00,0x00,0x04,0x40,0x88,0x08,0x20,0x01,0x02,0x40,0x31,0x00,0x1B,0x01,0xC4,0x80,
      0x00,0x00,0x02,0x80,0x88,0x09,0xF1,0xFF,0x92,0x20,0x3D,0x00,0x26,0x00,0x07,0x80,
      0x03,0xE2,0x0F,0xF0,0x88,0x3F,0x20,0x44,0x12,0x00,0x13,0x00,0x22,0x00,0x04,0x00,
      0x02,0x06,0x09,0x10,0xFF,0x89,0x20,0x44,0x3F,0xF8,0x00,0x00,0x1E,0x00,0x00,0x00,
      0x02,0x02,0x0F,0xF0,0x80,0x09,0x20,0x44,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
      0x03,0xC2,0x09,0x10,0x80,0x1D,0x23,0xFF,0x87,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x22,0x0F,0xF0,0xFC,0x1B,0x20,0x44,0x05,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x22,0x01,0x00,0x84,0x29,0x20,0x44,0x09,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
      0x02,0x22,0x3F,0xF8,0x84,0x29,0x28,0x44,0x08,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
      0x01,0xC7,0x01,0x01,0x04,0x0A,0x28,0x84,0x13,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x01,0x02,0x04,0x0C,0x3B,0x04,0x2C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
}; 

/*------------------检查忙位-----------------------------*/
void chk_busy()
{ RS=0;
   RW=1;
   E=1;
   Lcd_Bus=0xff;
   while((Lcd_Bus&0x80)==0x80);
   E=0;
}


/*------------------延时子程序-----------------------------*/
void delay(unsigned int t)
{ unsigned int i,j;
   for(i=0;i<t;i++)
      for(j=0;j<10;j++)
         ;
}

/*------------------写命令到LCD------------------------------*/
void write_com(unsigned char cmdcode)
{
chk_busy();
RS=0;
RW=0;
E=1;
Lcd_Bus=cmdcode;
delay(5);//------------------在数据写入的时候加入适当的延时
E=0;
delay(5);
}

/*-------------------写数据到LCD----------------------------*/
void write_data(unsigned char Dispdata)
{
chk_busy();
RS=1;
RW=0;
E=1;
Lcd_Bus=Dispdata;
delay(5);//------------------在数据写入的时候加入适当的延时
E=0;
delay(5);
}
/*------------------初始化LCD屏--------------------------*/
void lcdreset()
{ delay(2000);
   write_com(0x30);
   delay(10);             //选择基本指令集
   write_com(0x30);       //选择8bit数据流
   delay(5);
   write_com(0x0c);       //开显示(无游标、不反白)
   delay(10);
   write_com(0x01);       //清除显示,并且设定地址指针为00H
   delay(500);
   write_com(0x06);       //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
   delay(0);
}

/*------------------显示字符串--------------------------*/
void hzkdis(unsigned char code *s)
{ while(*s>0)
   { write_data(*s);
      s++;
      delay(50);
   }
}
/*------------------首屏显示--------------------------*/
void ceshi()
{write_com(0x01);//清除显示,并且设定地址指针为00H
delay(5);

write_com(0x80);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)
hzkdis("芯园电子工作室");

write_com(0x90);//第二行(如果是地址是:90H,即LCD的第二行的第一个位置显示)
hzkdis("--微控实验网--");

write_com(0x88);//第三行(如果是地址是:88H,即LCD的第二行的第一个位置显示)
hzkdis("LCD12864点阵液晶");

write_com(0x9A);//第四行(如果是地址是:98H,即LCD的第二行的第一个位置显示)
hzkdis("测试程序");



}
/*------------------显示图片---------------------------*/
void Disp_Img(unsigned char code *img)
{ unsigned int j=0;
   unsigned char x,y,i;
       for(i=0;i<9;i+=8)
       for(y=0;y<32;y++)
         for(x=0;x<8;x++)
         { write_com(0x36);//功能设置---8BIT控制界面,扩充指令集
            write_com(y+0x80);        //行地址
            write_com(x+0x80+i);     //列地址
            write_com(0x30);
            write_data(img[j++]);
            write_data(img[j++]);
         }   
           
}
/*------------------清整个GDRAM空间----------------------------*/
void clrgdram()
{ unsigned char x,y;
        for(y=0;y<64;y++)
         for(x=0;x<16;x++)
         { write_com(0x34);
            write_com(y+0x80);        //行地址
            write_com(x+0x80);     //列地址
            write_com(0x30);
            write_data(0x00);
            write_data(0x00);
           }
   }

/*------------------显示边框-------------------------------*/
void Frame()
{
unsigned char x,y;
        for(x=0;x<9;x+=8)
          for(y=0;y<32;y++)
           { write_com(0x36);
            write_com(y+0x80);      //行地址
            write_com(x+0x80);        //列地址
            write_com(0x30);
            write_data(0x80);
            write_data(0x00);
           
            write_com(0x36);
            write_com(y+0x80);      //行地址
            write_com(x+0x87);        //列地址
            write_com(0x30);
            write_data(0x00);
            write_data(0x01);
            
            }
      for(y=0;y<2;y++)
         for(x=0;x<8;x++)
           {write_com(0x36);
            write_com(y*31+0x80);      //行地址
            write_com(x+0x80+8*y);     //列地址
            write_com(0x30);
            write_data(0xff);
            write_data(0xff);
           }
         write_com(0x34);
         write_com(0x36);
 }
           
/*------------------清屏命令--------------------------*/ 
void clrscreen()
{ 
   write_com(0x01);
   delay(10);
   }
   
/*------------------勉励词--------------------------*/
void chi_display()
{ write_com(0x30);
   clrscreen(); 
   write_com(0x80+FIRST_ADDR);
   hzkdis("应当细心地观察");
   write_com(0x90+FIRST_ADDR);
   hzkdis("为的是理解;");
   write_com(0x88+FIRST_ADDR);
   hzkdis("应当努力地理解");
   write_com(0x98+FIRST_ADDR);
   hzkdis("为的是行动.");
   write_com(0xb3+FIRST_ADDR);
   hzkdis("罗曼罗兰");
   write_com(0xaa+FIRST_ADDR);
   hzkdis("(欧)");
}

main()
{ unsigned char i; 
   while(1)
   { 
     RW=0;
      lcdreset();                    //初始化LCD屏                      
      ceshi();                      //显示测试字样
     delay(500);
    
      clrgdram();
     clrscreen();                  //清屏

     Disp_Img(BMP1);               //调入一幅图画                  
      delay(20000);            
     
      Frame();                     //显示边框
      delay(20000);
      
     chi_display();             //显示唐诗
      clrgdram();

      for(i=0;i<8;i++)        //字符循环左移
     {write_com(0x18); 
        delay(2000);} 
          
       chi_display(); 
      delay(3000);   
     write_com(0x36);        
      write_com(0x04);          //第一行反白显示
      delay(10000);
      write_com(0x04);          //第一行恢复正常
      delay(10000);
       write_com(0x05);          //第二行反白显示
      delay(20000);
      write_com(0x05);          //第二行恢复正常
      delay(20000);
          
      write_com(0x03);         //垂直滚动屏幕的内容
      write_com(0x60);
      delay(20000); 
      
   }
}

⌨️ 快捷键说明

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