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

📄 12864lcd (st7920).c.bak

📁 C51_LCD 12864_图形液晶 串口模式12864
💻 BAK
📖 第 1 页 / 共 2 页
字号:
0x00,0x0F,0x80,0x00,0xE1,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7F,0xE0,0x00,0x07,0x9E,0x00,0x7F,0xC0,0x60,0x0F,0xC0,0x0F,0x00,0x00,0x00,
0x00,0xE0,0x7C,0x00,0x03,0xF7,0xC7,0xE0,0xFF,0xE0,0x3F,0xFF,0xFC,0x00,0x00,0x00,
0x01,0xC0,0x0F,0x00,0x03,0xBD,0xFE,0xFC,0x00,0x00,0xF0,0x1F,0xF0,0x00,0xC6,0x00,
};

/********************************************************
*                                                       *                                                 
* 延时t毫秒                                             *
* 11.0592MHz时钟,延时约1ms                             *        
*                                                       *
********************************************************/
void delay(uint t)
{                           
   uchar k;
   while(t--)
   {
     for(k=0; k<125; k++)
     { }
   }
}

/*********************************************************
*                                                        *
* 延时函数 200us                                         *
*                                                        *
*********************************************************/
void delay_lcd(int ms)
{
  uchar t;
  while(ms--)
  {
    for(t=0; t<20; t++) ;
  }
}

/*********************************************************
*                                                        *
* 发送一个字节                                           *
*                                                        *
*********************************************************/
void sendbyte(uchar bbyte) 
{
  uchar i;
  for(i=0;i<8;i++)
  {
   SID=bbyte&0x80; //取出最高位
   SCLK=1;
   _nop_();
   _nop_();
   SCLK=0;
   bbyte<<=1; //左移
  }  
}

/*********************************************************
*                                                        *
* 写指令或数据函数                                       *
*                                                        *
*********************************************************/
void write(bit start, uchar ddata) 
{
  uchar start_data,Hdata,Ldata;

  if(start==0)                   //11111,(0),(0),0
   start_data=0xf8;	             //写指令
   else                          //11111,(0),(1),0
   start_data=0xfa;              //写数据
  
  Hdata=ddata&0xf0;		         //取高四位
  Ldata=(ddata<<4)&0xf0;         //取低四位
  sendbyte(start_data);	         //发送起始信号
  delay_lcd(1);                   //延时
  sendbyte(Hdata);	             //发送高四位
  delay_lcd(1);                   //延时
  sendbyte(Ldata);		         //发送低四位
  delay_lcd(1);                   //延时
}

/*********************************************************
*                                                        *
* 初始化LCD                                              *
*                                                        *
*********************************************************/
void lcdinit()	 
{
  delay_lcd(10);      //延时等待LCM进入工作状态
  PSB=0; ;   	      //串口驱动模式

  RESET=0; 
  delay_lcd(5);
  RESET=1;           //复位LCD

  CS=1;              //片选 高电平有效

  write(0,0x30);     //基本指令操作
  write(0,0x0c);     //显示打开,光标关,反白关
  write(0,0x01);     //清屏,将DDRAM的地址计数器归零
  write(0,0x06);  
}

/*********************************************************
*                                                        *
* 图形显示                                               *
*                                                        *
*********************************************************/
void photodisplay(uchar *bmp)	
{ 
  uchar i,j;
  write(0,0x34);        //写数据时,关闭图形显示
  for(i=0;i<32;i++)
  {
    write(0,0x80+i);    //先写入水平坐标值
    write(0,0x80);      //写入垂直坐标值
    for(j=0;j<16;j++)   //再写入两个8位元的数据
    write(1,*bmp++);    
    delay_lcd(1);
  }

  for(i=0;i<32;i++)
  { 
    write(0,0x80+i);
    write(0,0x88);
    for(j=0;j<16;j++)
	write(1,*bmp++);
	delay_lcd(1);
  }
  write(0,0x36);       //写完数据,开图形显示 
}


/*********************************************************
*                                                        *
* 主函数                                                 *
*                                                        *
*********************************************************/
void main()
{
   uchar i;
   lcdinit();                  //初始化LCD
   
   while(1)
   {
     photodisplay(Photo1);     //显示图片1
     delay(5000);
     
     write(0,0x30);          //基本指令操作
     write(0,0x01);          //清屏 

     photodisplay(Photo2);     //显示图片2
     delay(5000);

     write(0,0x30);          //基本指令操作
     write(0,0x01);          //清屏 
     
     write(0,0x80); 
     for(i=0;i<16;i++) write(1,DIS1[i]);
     write(0,0x90); 
     for(i=0;i<16;i++) write(1,DIS2[i]);
     write(0,0x88); 
     for(i=0;i<16;i++) write(1,DIS3[i]);
     write(0,0x98); 
     for(i=0;i<16;i++) write(1,DIS4[i]);
     delay(5000);
     write(0,0x01);          //清屏 
   }
}
/*********************************************************/

⌨️ 快捷键说明

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