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

📄 lgdp4522(4).c

📁 驱动IC-LG4524的驱动程序。该程序能点亮TFT2。2的LCM
💻 C
字号:
//====================================================
#include<absacc.h>
#include <reg52.h>
#include <intrins.h>
//8-BIT
//LGDP4522
//8080 interface
//176*220
//MADE BY ChenXiang
//====================================================

#define  D_PORT  P1
//#define  D_PORT1  P2
#define X_add 176
#define Y_add 220
#define uchar unsigned char
#define uint unsigned int
typedef unsigned char byte;
typedef unsigned int word;

byte code BMP[];


sbit		CS = P3^5;
sbit		REST = P3^4;
sbit		DC = P3^2;
sbit		Wr = P3^1;
sbit		Rd = P3^0;
sbit            step= P2^0;
//====================================================
void display_griphic(byte griphic[]);
void pause();


void pause()
{
 	while(!step);
}


void delay(uint t)
{
	uchar t1;
	while(t--)
	for(t1=16;t1>0;t1--)
	{;}  //0.1ms
}
//========================================
wr_com_m(unsigned char com)
{
	       /* CS = 0;
                D_PORT=com;
              	DC = 0;
     	        Wr = 0;
		Wr = 1;
                Wr = 0;
		Wr = 1;
		CS = 1;*/

                DC =0;
             	CS =0;
                Rd =1;
                Rd =1;
                Wr =1;
                Wr =1;
                Wr =0;
                Wr =1;
                D_PORT=com;
                Wr =0;
                Wr =0;
                Wr =1;
                Wr =1;
}
//-------------------------------------------------
wr_dat_m(unsigned char  dat)
{
                /*CS = 0;
		D_PORT = dat;
		DC = 1;
		Wr = 0;
		Wr = 1;
		CS = 1;  */

               /* CS=0;
                DC=1;
                //CS=0;
                Rd=1;
                D_PORT=dat;
                Wr=0;
                Wr=1;
                CS=1;  */

                DC=1;DC=1;
        	CS=0;CS=0;
	        Rd=1;Rd=1;

	        D_PORT=dat;

          	Wr=0;Wr=0;
            	Wr=1;Wr=1;
          	CS=1;CS=1;
}
//********************************************************//


//====================================================
void dis_line(unsigned int dat1,dat)
{
	int i,j;
         wr_com_m(0x22);
         for(i=0;i<176;i++)     //display line
           for(j=0;j<220;j++)
        	{
		      wr_dat_m(dat1);
                      wr_dat_m(dat);
                    	//wr_dat_m(dat2);
             	}

 }
//===========================================

void dis_bar()
{
	int i,j,k;

   wr_com_m(0x22);

    for(k=0;i<4;i++)
	{
     	          for(i=0;i<44;i++)     //display line
           	{
	                 for(j=0;j<220;j++)
        		{
		            	//wr_dat_m(0x00,0xf8);
                    	wr_dat_m(0xf8);
                        wr_dat_m(0x00);
             	}
	           	}
                  for(i=0;i<44;i++)     //display line
           	{
	         	for(j=0;j<220;j++)
        		{
		            	//wr_dat_m(0x00,0x07);
                    	wr_dat_m(0x07);
                        wr_dat_m(0xe0);
             	}
	           	}
		  for(i=0;i<44;i++)     //display line
           	{
	         	for(j=0;j<220;j++)
        		{
		            	//wr_dat_m(0x00,0x00);
                        wr_dat_m(0x00);
                        wr_dat_m(0x1f);
             	}
	           	}
		  for(i=0;i<44;i++)     //display line
           	{
	         	for(j=0;j<220;j++)
        		{
		            	//wr_dat_m(0x00,0xff);
                    	wr_dat_m(0xff);
                        wr_dat_m(0xff);
             	}
	           	}




	}
        }
//====================================================================
void lcd_ini_m(void)
{
    wr_com_m(0x07);     //LG
    wr_dat_m(0x00);
    wr_dat_m(0x00);

    wr_com_m(0x12);
    wr_dat_m(0x07);
    wr_dat_m(0x00);

    wr_com_m(0x13);
    wr_dat_m(0x00);
    wr_dat_m(0x00);

    wr_com_m(0x14);
    wr_dat_m(0x03);
    wr_dat_m(0x31);

    delay(100);

    wr_com_m(0x60);
    wr_dat_m(0x20);
    wr_dat_m(0x00);

    wr_com_m(0x60);
    wr_dat_m(0x00);
    wr_dat_m(0x00);

    wr_com_m(0x11);
    wr_dat_m(0x00);
    wr_dat_m(0x01);

    wr_com_m(0x12);
    wr_dat_m(0x00);
    wr_dat_m(0x0A);

    wr_com_m(0x13);
    wr_dat_m(0x0C);
    wr_dat_m(0x55);

    wr_com_m(0x10);
    wr_dat_m(0x04);
    wr_dat_m(0x44);

    delay(400);

    wr_com_m(0x12);
    wr_dat_m(0x00);
    wr_dat_m(0x1d);

    delay(500);

    wr_com_m(0x13);
    wr_dat_m(0x0D);
    wr_dat_m(0x57);

    wr_com_m(0x10);
    wr_dat_m(0x04);
    wr_dat_m(0x40);

    delay(500);

    wr_com_m(0x01);
    wr_dat_m(0x01);
    wr_dat_m(0x1B);

    wr_com_m(0x02);
    wr_dat_m(0x07);
    wr_dat_m(0x00);

    wr_com_m(0x03);
    wr_dat_m(0x10);
    wr_dat_m(0x30);

    wr_com_m(0x08);
    wr_dat_m(0x05);
    wr_dat_m(0x04);

    wr_com_m(0x09);
    wr_dat_m(0x00);
    wr_dat_m(0x00);

    wr_com_m(0x0B); //FRAME CONTROL
    wr_dat_m(0x0D);
    wr_dat_m(0x2D);

    wr_com_m(0x21);
    wr_dat_m(0x00);
    wr_dat_m(0x00);

    wr_com_m(0x30);
    wr_dat_m(0x00);
    wr_dat_m(0x00);

    wr_com_m(0x31);
    wr_dat_m(0x07);
    wr_dat_m(0x07);

    wr_com_m(0x32);
    wr_dat_m(0x05);
    wr_dat_m(0x07);

    wr_com_m(0x33);
    wr_dat_m(0x00);
    wr_dat_m(0x03);

    wr_com_m(0x34);
    wr_dat_m(0x00);
    wr_dat_m(0x02);

    wr_com_m(0x35);
    wr_dat_m(0x00);
    wr_dat_m(0x02);

    wr_com_m(0x36);
    wr_dat_m(0x07);
    wr_dat_m(0x07);

    wr_com_m(0x37);
    wr_dat_m(0x03);
    wr_dat_m(0x00);

    wr_com_m(0x38);
    wr_dat_m(0x0A);
    wr_dat_m(0x01);

    wr_com_m(0x39);
    wr_dat_m(0x01);
    wr_dat_m(0x0A);

    wr_com_m(0x42);
    wr_dat_m(0xDB);
    wr_dat_m(0x00);

    wr_com_m(0x44);
    wr_dat_m(0xAF);
    wr_dat_m(0x00);

    wr_com_m(0x45);
    wr_dat_m(0xDB);
    wr_dat_m(0x00);

    delay(200);

    wr_com_m(0x10);
    wr_dat_m(0x44);
    wr_dat_m(0x40);

    wr_com_m(0x07);
    wr_dat_m(0x00);
    wr_dat_m(0x05);

    delay(400);

    wr_com_m(0x07);
    wr_dat_m(0x00);
    wr_dat_m(0x25);

    wr_com_m(0x07);
    wr_dat_m(0x00);
    wr_dat_m(0x27);

    delay(400);

    wr_com_m(0x07);
    wr_dat_m(0x00);
    wr_dat_m(0x37);

}
//====================================================

//====================================================

void main(void)
{
      REST = 0;
      delay(50);
      REST = 1;
      delay(50);
	lcd_ini_m();
	while(1)
       {


	       display_griphic(BMP);
               delay(10);
               pause();
               dis_line(0xF8,0x00);
               delay(10);
               pause();
               dis_line(0x07,0xe0);
	       delay(10);
               pause();
               dis_line(0x00,0x1f);
	       delay(10);
               pause();
               dis_line(0xbd,0x1f);
	       delay(10);
               pause();
               dis_line(0x00,0x00);
	       delay(10);
               pause();
               dis_line(0xFF,0xFF);
	       delay(10);
               pause();
               dis_bar();
	       delay(10);

                      }
 }
void display_griphic(byte griphic[])
     {
    word i,j,k;
    wr_com_m(0x22);
    for(i=0;i<X_add;i++)
       for(j=0;j<Y_add;j++)
          {j++;
          for(k=0;k<2;k++)
           {
           wr_dat_m(*griphic++);
           wr_dat_m(*griphic);
           griphic++;
           }
          }
    }


⌨️ 快捷键说明

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