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

📄 lcd5.c

📁 lcd 液晶屏驱动
💻 C
字号:
#include <reg52.h>
#include <string.h>
#include <intrins.h>
#define uchar unsigned char
sbit Lcd_Rs=P3^0;
sbit Lcd_Rw=P3^1;
sbit Lcd_E=P3^2;
//extern variable declaration
//***********************************************************************************//
//extern unsigned char data KeyValue,Re_Point,PointBuf,T0_Exit;
//extern unsigned char idata Re_Buf[40];
//extern bit Bit_Exit,Bit_Call,Bit_Ring,Bit_Break,Bit_Time;
//extern bit Re_End,Se_End,Bit_Skip,HandFree,Bit_Menu;
//===================================================================================//
//short delay when delay <256 us
//***********************************************************************************//
void ShortDelay(unsigned char Delay_Set)
{
  unsigned char data i;
  for (i=0;i<Delay_Set;i++)
    {
      _nop_();
    }
}
//===================================================================================//
//***********************************************************************************//
//long delay when delay <65535 us
//***********************************************************************************//
void LongDelay(unsigned int Delay_Set)
{
  unsigned int data i;
  for (i=0;i<Delay_Set;i++)
    {
      _nop_();
    }
}
//===================================================================================//
//Lcd sub program area
//***********************************************************************************//
//lcd write sub program
//write a byte to lcd p0
//***********************************************************************************//
void Lcd_WByte(bit LcdStatu,unsigned char LcdBuf)
{
   Lcd_Rs=LcdStatu;                                    //if write data
   Lcd_Rw=0;                                           //lcdstatu=1;else lcdstatu=0;
   ShortDelay(4);                                      //>1.5us
   P1=LcdBuf;
   ShortDelay(4);
   Lcd_E=1;
   ShortDelay(6);                                      //>1.5us
   Lcd_E=0;
   Lcd_Rs=0;
   if ((LcdBuf==0x01)&&(!LcdStatu))
     {
      LongDelay(5000);
     }
   else
      ShortDelay(150);
}
//===================================================================================//


//***********************************************************************************//
//lcd read sub program
//read a byte to p0 and return them
//***********************************************************************************//
unsigned char  Lcd_RByte(bit LcdStatu)
{
   unsigned char data LcdBuf;

   P1=0xFF;
   Lcd_Rs=LcdStatu;                                    //if write data
   Lcd_Rw=1;                                           //lcdstatu=1;else lcdstatu=0;
   ShortDelay(3);
   Lcd_E=1;
   ShortDelay(3);                                      //>1.5us
   LcdBuf=P0;
   ShortDelay(8);                                      //>1.5us
   Lcd_E=0;
   Lcd_Rs=0;
   ShortDelay(150);
   return LcdBuf;
}
//===================================================================================//


//***********************************************************************************//
//lcd initial
//used only in main body begin
//***********************************************************************************//
void Lcd_Init()
{
   LongDelay(50000);                                   //延时〉40ms
   LongDelay(50000);
   Lcd_WByte(0,0X30);
   LongDelay(5000);

   Lcd_WByte(0,0x0c);                                    //延时〉4.1ms
   Lcd_WByte(0,0X3b);                                  //功能设置   >100US
 LongDelay(5000);                               //功能设置   >72US
   Lcd_WByte(0,0X01);
     ShortDelay(200);
  // Lcd_WByte(0,0X0C);                                  //开启屏幕显示  >72US
  // Lcd_WByte(0,0X01);                                  //清除屏幕    >4.6MS
   Lcd_WByte(0,0X06);
      LongDelay(5000);
      Lcd_WByte(0,0X30);             //        扩充指令
   LongDelay(5000);
   Lcd_WByte(0,0X32);
      LongDelay(5000);
     Lcd_WByte(0,0X36);
         LongDelay(5000);
       // Lcd_WByte(0,0X03);
   LongDelay(5000);
     // Lcd_WByte(0,0X80);
      //   LongDelay(5000);
    //  Lcd_WByte(0,0X80);
       //  LongDelay(5000);

      //  Lcd_WByte(0,0X30);
 //  LongDelay(5000);
  //  Lcd_WByte(0,0X40);
   //LongDelay(5000);
    //     Lcd_WByte(0,0X02);
     //  LongDelay(5000);
}

uchar code bmp[1024]={0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x30,0x00,
0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x50,0x00,0x40,0x00,0x00,0x00,0x30,0x00,
0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x50,0x00,0x40,0x00,0x00,0x00,0x28,0x00,
0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x50,0x00,0x40,0x00,0x00,0x00,0x28,0x00,
0x00,0x00,0x00,0x06,0x00,0x20,0x00,0x00,0x50,0x00,0x40,0x00,0x00,0x00,0x18,0x00,
0x00,0x00,0x00,0x06,0x00,0x20,0x00,0xC0,0x50,0x00,0x60,0x00,0x00,0x00,0x14,0x00,
0x00,0x18,0x00,0x06,0x00,0x30,0x03,0x40,0x50,0x00,0x60,0x00,0x00,0x00,0x14,0x00,
0x00,0x18,0x00,0x06,0x00,0x30,0x04,0x40,0x90,0x00,0x60,0x1F,0xC0,0x00,0x12,0x00,
0x00,0x18,0x00,0x06,0x00,0x30,0x04,0x40,0x90,0x00,0x60,0x20,0x40,0x00,0x12,0x00,
0x00,0x18,0x00,0x06,0x00,0x30,0x08,0x40,0x90,0x00,0x60,0x20,0x40,0x00,0x12,0x00,
0x00,0x18,0x00,0x06,0x00,0x28,0x08,0x40,0x90,0x00,0x60,0x40,0x40,0x00,0x12,0x00,
0x00,0x18,0x00,0x06,0x00,0x28,0x08,0x40,0x90,0x00,0xA0,0x40,0x40,0x00,0x11,0x00,
0x08,0x18,0x00,0x06,0x00,0x28,0x08,0x40,0x90,0x00,0x90,0x40,0x40,0x00,0x11,0x00,
0x08,0x18,0x00,0x06,0x00,0x28,0x08,0x41,0x10,0x00,0x90,0x40,0x20,0x00,0x31,0x00,
0x08,0x14,0x00,0x06,0x00,0x28,0x08,0x41,0x10,0x00,0x90,0x40,0x20,0x01,0xC1,0x00,
0x08,0x14,0x00,0x06,0x00,0x24,0x08,0x41,0x10,0x00,0x90,0x80,0x20,0x06,0x01,0x01,
0x08,0x14,0x00,0x06,0x00,0x24,0x08,0x41,0x10,0x00,0x90,0x80,0x20,0x08,0x01,0x01,
0x08,0x14,0x00,0x06,0x00,0x24,0x08,0x41,0x08,0x01,0x11,0x00,0x20,0x10,0x01,0x02,
0x08,0x14,0x00,0x05,0x00,0x24,0x08,0x41,0x08,0x01,0x11,0x00,0x20,0x10,0x00,0x84,
0x08,0x12,0x00,0x05,0x00,0x24,0x08,0x21,0x08,0x01,0x09,0x00,0x20,0x20,0x00,0x84,
0x08,0x12,0x00,0x05,0x00,0x22,0x08,0x21,0x08,0x01,0x09,0x00,0x20,0x20,0x00,0x84,
0x08,0x09,0x00,0x05,0x00,0x22,0x08,0x21,0x04,0x02,0x08,0x80,0x20,0x40,0x00,0x84,
0x08,0x09,0x00,0x05,0x00,0x22,0x08,0x21,0x04,0x02,0x04,0x80,0x20,0x40,0x00,0x84,
0x08,0x09,0x00,0x04,0x80,0x42,0x08,0x21,0x04,0x02,0x04,0x80,0x20,0x80,0x00,0x84,
0x08,0x09,0x00,0x04,0x80,0x42,0x08,0x21,0x04,0x02,0x04,0x80,0x11,0x00,0x01,0x04,
0x08,0x08,0x80,0x04,0x80,0x41,0x08,0x21,0x02,0x04,0x02,0x80,0x11,0x00,0x01,0x04,
0x04,0x08,0x80,0x04,0x80,0x41,0x08,0x21,0x02,0x04,0x02,0x80,0x11,0x00,0x01,0x04,
0x04,0x08,0x80,0x04,0x40,0x41,0x10,0x21,0x02,0x04,0x02,0x80,0x11,0x00,0x01,0x02,
0x04,0x08,0x80,0x04,0x40,0x40,0x90,0x21,0x02,0x04,0x01,0x80,0x11,0x00,0x01,0x02,
0x04,0x08,0x80,0x04,0x20,0x80,0x90,0x21,0x02,0x08,0x01,0x00,0x11,0x00,0x01,0x02,
0x04,0x08,0x80,0x04,0x20,0x80,0xD0,0x21,0x02,0x08,0x01,0x00,0x12,0x00,0x02,0x02,
0x02,0x08,0x40,0x08,0x27,0x80,0x60,0x21,0x01,0x10,0x01,0x00,0x0A,0x00,0x02,0x02};
uchar flash1[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x03,0xE0,
0x03,0xE0,0x03,0xC0,0x03,0xE0,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
uchar flash2[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x10,0x10,0x00,0x00,0x90,
0x00,0x00,0x02,0x00,0x10,0x20,0x00,0x04,0x00,0xC0,0x04,0x00,0x00,0x00,0x00,0x00};





main()
 {uchar i,j;
  uchar temp=0;
   Lcd_Init();
   
 while (1)
 {
   for (i=0;i<16;i++)
   {
    Lcd_WByte(0,0xc0+i);
     ShortDelay(100);
       Lcd_WByte(0,0X80);
        ShortDelay(100);
       Lcd_WByte(1,flash1[i]);
         ShortDelay(100);
       Lcd_WByte(1,flash1[i+1]);
         ShortDelay(100);
   }
  LongDelay(5000);  LongDelay(5000); LongDelay(5000);  LongDelay(5000);  LongDelay(5000);
  LongDelay(5000); LongDelay(5000);   LongDelay(5000);  LongDelay(5000);  LongDelay(5000);
  LongDelay(5000);  LongDelay(5000);  LongDelay(5000);  LongDelay(5000); LongDelay(5000);

 for (i=0;i<16;i++)
   {
    Lcd_WByte(0,0xc0+i);
     ShortDelay(100);
       Lcd_WByte(0,0X80);
        ShortDelay(100);
       Lcd_WByte(1,flash2[i]);
         ShortDelay(100);
       Lcd_WByte(1,flash2[i+1]);
         ShortDelay(100);
   }
   
  LongDelay(5000);  LongDelay(5000); LongDelay(5000);  LongDelay(5000);  LongDelay(5000);
  LongDelay(5000); LongDelay(5000);   LongDelay(5000);  LongDelay(5000);  LongDelay(5000);
  LongDelay(5000);  LongDelay(5000);  LongDelay(5000);  LongDelay(5000); LongDelay(5000);

 }  
 /*for (j=0;j<32;j++)
 {
 Lcd_WByte(0,0xc0+j);
     ShortDelay(50);
       Lcd_WByte(0,0X80);
        ShortDelay(50);
  for (i=0;i<16;i++)
   {
     Lcd_WByte(1,bmp[i+j*16]);
   ShortDelay(50);
   }
  }   */


 //Lcd_WByte(1,0X00);
  ss: goto ss;




 }


⌨️ 快捷键说明

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