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

📄 lcd128x64.c

📁 128*64液晶显示的编程方式
💻 C
📖 第 1 页 / 共 3 页
字号:
  delay(0);
  E = 1;
  delay(0);
  E = 0;

  tmpin = P0;

  return tmpin;
 }



/*-------------------------显示边框-------------------------------*/

void frame()
 {
  unsigned char i;
  CS2=1;
  CS1=1;
  write_command(Page_Add+0);     // 设置页地址 //
  write_command(Col_Add+0);      // 设置列地址 //
  for(i=0;i<64;i++) write_data(0x01);      
  write_command(Page_Add+7);
  write_command(Col_Add+0);
  for(i=0;i<64;i++) write_data(0x80);
  for(i=0;i<8;i++)
   {
    CS2=0;
    CS1=1;
    write_command(Page_Add+i);
    write_command(Col_Add+63);
    write_data(0xff);
    CS2=1;
    CS1=0;
    write_command(Page_Add+i);
    write_command(Col_Add+0);
    write_data(0xff);
   }
 }

/*------------------------清显示屏--------------------------------*/
void Clr_Scr()
 {
  unsigned char j,k;
  CS2=1;CS1=0;             // 清左半屏 //
   {
    write_command(Page_Add+0);
    write_command(Col_Add+0);
    for(k=0;k<4;k++)               // 清左上半屏 //
     {
      for(j=0;j<64;j++)
	  write_data(0x00);
     }
    for(k=0;k<4;k++)               // 清左下半屏 //
     {
      write_command(Page_Add+4);
      for(j=0;j<64;j++)
	  write_data(0x00);
     }
   }
  CS2=0;CS1=1;                     // 清右半屏 //
   {
    write_command(Page_Add+0);
    write_command(Col_Add+0);
    for(k=0;k<4;k++)               // 清右上半屏 //
     {
      for(j=0;j<64;j++)
	  write_data(0x00);
     }
    for(k=0;k<4;k++)               // 清右下半屏 //
     {
	  write_command(Page_Add+4);
      for(j=0;j<64;j++)
	  write_data(0x00);
     }
   }
 }
/*------------------显示12864图片---------------------------*/
void Disp_Img(unsigned char code *img)
 {
  unsigned char j,k;
  for(k=0;k<8;k++)
   {
    CS2=1;
	CS1=0;
	delay(10);
    write_command(Page_Add+k);
    write_command(Col_Add+0);
    for(j=0;j<64;j++) 
	 write_data(img[k*128+j]);
    CS2=0;
	CS1=1;
    delay(10);
    write_command(Page_Add+k);
    write_command(Col_Add+0);
    for(j=64;j<128;j++) 
	 write_data(img[k*128+j]);
   }
 }

/*------------------显示横---------------------------*/
void Disp_H_Line()
 {
  unsigned char i,j;
  CS2=1;
  CS1=1;
  write_command(Disp_On);
  write_command(Page_Add);
  write_command(Start_Line);
  write_command(Col_Add);

  for(j=0;j<8;j++)
   {
    write_command(Page_Add+j);
    write_command(Col_Add+0);
// write_com(Start_Line+0);
    for(i=0;i<64;i++)
	 write_data(0x55);
   }
 }


/*------------------显示列-----------------------------*/
void Disp_V_Line()
 {
  unsigned char i,j;
  write_command(Disp_On);
  write_command(Page_Add);
  write_command(Start_Line);
  write_command(Col_Add);

  for(j=0;j<8;j++)
   {
    write_command(Page_Add+j);
    write_command(Col_Add+0);
    write_command(Start_Line+0);
    for(i=0;i<32;i++)
     {
      write_data(0x00);
      write_data(0xff);
     }
   }
 }

/*------------------棋盘-----------------------------*/
void Disp_Cross_Line(unsigned char mode)
 {
  unsigned char i,j;
  unsigned char data1,data2;
  if(mode==0) {data1=0xaa;data2=0x55;}
  else if(mode==1) {data1=0x55;data2=0xaa;}
  else return;
  CS2=1;CS1=1;
  write_command(Disp_On);
  write_command(Page_Add);
  write_command(Start_Line);
  write_command(Col_Add);
  for(j=0;j<8;j++)
   {
    write_command(Page_Add+j);
    write_command(Col_Add+0);
    write_command(Start_Line+0);
    for(i=0;i<32;i++)
	 {
      write_data(data1);
      write_data(data2);
     }
   }
 }
/*---------------------指定位置显示数字8*16-----------------------*/

void sz_disp16(unsigned char pag,unsigned char col, unsigned char code *szk)
 {
  unsigned char j=0,i=0;
  for(j=0;j<2;j++)
   {
    write_command(Page_Add+pag+j);
    write_command(Col_Add+col);
    for(i=0;i<8;i++) 
	 write_data(szk[8*j+i]);
   }
 }

/*---------------------指定位置显示汉字16*16-----------------------*/

void hz_disp16(unsigned char pag,unsigned char col, unsigned char code *hzk)
 {
  unsigned char j=0,i=0;
  for(j=0;j<2;j++)
   {
    write_command(Page_Add+pag+j);
    write_command(Col_Add+col);
    for(i=0;i<16;i++) 
	 write_data(hzk[16*j+i]);
   }
 }


/*------------------初始化LCD屏--------------------------*/
void init_lcd()
 {
  RST=0;
  delay(100);
  RST=1;
  delay(100);

  CS2=1;
  CS1=1;

  delay(100);
  write_command(Disp_Off);
  write_command(Page_Add+0);
  write_command(Start_Line+0);
  write_command(Col_Add+0);
  write_command(Disp_On);
 }


/*-------------------------- 开机信息显示------------------------*/
void StartMsg(void)
 {
  Clr_Scr();         // 先清屏 //
  CS2=1;CS1=0;
  hz_disp16(0,32,huan);      //  欢
  delay(2000);
  hz_disp16(0,48,ying);      //  迎
  delay(2000);
  CS2=0;CS1=1;
  hz_disp16(0,0,shi1);       //  使
  delay(2000);
  hz_disp16(0,16,yong);      //  用
  delay(2000);
  CS2=1;CS1=0;
  hz_disp16(2,32,shu);       //  数
  delay(2000);
  hz_disp16(2,48,ma);        //  码
  delay(2000);
  CS2=0;CS1=1;
  hz_disp16(2,0,shi);        //  时
  delay(2000);
  hz_disp16(2,16,zhong);     //  钟
  delay(2000);

  CS2=1;CS1=0;
  hz_disp16(5,16,zhi);       //  制
  delay(2000);
  hz_disp16(5,32,zuo);       //  作
  delay(2000);
  hz_disp16(5,48,maohao);    //  :
  delay(2000);
  CS2=0;CS1=1;
  hz_disp16(5,0,liu);       //  刘
  delay(2000);
  hz_disp16(5,16,bing);      //  兵
  delay(2000);
  hz_disp16(5,32,gantanhao);     //  !
  delay(2000);
 }
/*------------------------时钟固定汉字显示-----------------------*/
void ClockMsg(void)
 {
  Clr_Scr();         // 先清屏 //
  
  CS2=1;CS1=0;       // 左屏
  hz_disp16(1,32,xing);       //  星
  hz_disp16(1,48,qi);       //  期
  sz_disp16(3,0,shuzi[2]);       //  2
  sz_disp16(3,8,shuzi[0]);       //  0
  hz_disp16(3,32,nian);     //  年
  hz_disp16(5,48,shi2);     //  时

  CS2=0;CS1=1;       // 右屏
  hz_disp16(3,0,yue);      //  月
  hz_disp16(3,32,ri);      //  日
  hz_disp16(5,16,fen);      //  分
  hz_disp16(5,48,miao);     //  秒
 }


/*-----------------------时钟部分---------------------------*/

///////////////////////////////////////////////
///// 函数名:   写入字节子函数          //////
///// 函数功能: 写入一个字节到对应地址  //////
///// 函数参数: 有(写入的字节内容)      //////
///// 返回值:   无                      //////
///////////////////////////////////////////////

void InputByte(unsigned char dat) 
 { 
  unsigned char i;
  ACC = dat;
  for(i=8; i>0; i--)
   {
    IO = ACC0;      
    CLK = 1;          //下降沿写入数据//
    CLK = 0;
    ACC = ACC >> 1; 
   } 
 }

/************************************************************************************///*时钟部分*/↓
///////////////////////////////////////////////
///// 函数名:   读出字节子函数          //////
///// 函数功能: 从对应地址读出一个字节  //////
///// 函数参数: 无                      //////
///// 返回值:   有(读出的字节内容)      //////
///////////////////////////////////////////////

OutputByte(void) 
 { 
  unsigned char i;
  for(i=8; i>0; i--)
   {
    ACC = ACC >>1; 
    ACC7 = IO;
    CLK = 1;           //上升沿读出数据//
    CLK = 0;
   } 
  return(ACC); 
 }
/*************************************************************************************************/ 
/////////////////////////////////////////////

⌨️ 快捷键说明

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