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

📄 9220.c

📁 LCD模块IC是ILI9325在C51单片机的驱动程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/**************************************************************************
Controller IC:9220
Paraller type:16 bit-8080 interface
Resolutions:  176*220 pixels
  P1         : DB0---DB7===>D0-D7
  P2         : DB0---DB7===>D10-D17
  P3         : P3.0 P3.1  P3.2 P3.3  P3.4  P3.5
	        cs  reset  rs   wr    rd   setp
Modified date: 2007.09.24
***************************************************************************/

#include <reg52.h>
#include<intrins.h>
#include "image1.c"                                     // 图片文件

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

#define DisplayCol      320                               //列数
#define DisplaySeg      240                              //行数
#define interface       16                                 //8位还是16位

#define Port1           P1                                //数据口1
#define Port2           P2                                //数据口2

#define black           0xffff
#define white           0x0000
#define red             0xf800
#define green           0x07e0
#define blue            0x001f
#define red_green       0xffe0
#define green_blue      0x07ff
#define blue_red        0xf81f
#define red_green_blue  0x8410

/****************接口定义**********************/

sbit cs= P3^0;
sbit reset= P3^1;
sbit rs= P3^2;
sbit wr= P3^3;
sbit rd= P3^4;
sbit setp= P3^5;
unsigned int page,seg;

/*****************函数声明***********************/

void Initst();                                                 //初始化函数
void c_d_before();                                             //写数据前的命令子程序
void display_gray();                                           //灰度显示程序
void display_picture();                                        //图像显示程序
void delay(unsigned int param);                                //廷时子程序
void Data_Write(unsigned int a);                               //位写数据程序
void Command_Write(unsigned int a);                            //写命令程序
void control_out(unsigned int a,unsigned int b);            //初始子程序
void colour_display(unsigned int param1,unsigned int param2);  //各种颜色显示程序
/*
void displaye_colour_bar();                                   //彩条显示程序
void display_block();                                         //彩块显示程序
void display_snow();                                          //显示雪花程序
void display_h_l();                                           //水平线显示程序
void display_v_l();                                           //垂直线显示程序
*/


/****************主函数*************************/

 void main(void)
{
   unsigned int step=0;
   Initst();
   while(1)
      {
	for(step=1;step<9;step++)
	{
		switch(step)
		{
                	case 8:display_picture() ;
                        while(setp){;};
                        break;
			case 4:colour_display(white,white);  //white colour yollow boder
                        while(setp){;};
                        break;
			case 2:colour_display(green,green);          //green colour red boder
                        while(setp){;};
                        break;
                        case 1:colour_display(red,red);           //red colour blue boder
                        while(setp){;};
                        break;
			case 3:colour_display(blue,blue);          //blue colour green boder
                        while(setp){;};
                        break;
                        case 5:colour_display(black,black);         //black colour white boder
                        while(setp){;};
                        break;
                        case 6:colour_display(black,white);         //black colour white boder
                        while(setp){;};
                        break;
                       // case 6:displaye_colour_bar();               //colour bar
                      //  while(setp){;};
                      //  break;
                       // case 7:display_block();                     //colour block
                       // while(setp){;};
                       // break;
                        //case 8:display_snow();                     //colour block
                        //while(setp){;};
                        //break;
                       // case 9:display_h_l();                       //colour block
                        //while(setp){;};
                        //break;
                        //case 10:display_v_l();                     //colour block
                        //while(setp){;};
                       // break;
                        case 7:display_gray();                     //colour block
                        while(setp){;};
                        break;
 	    }
        }
    }
 }

/****************延时子程序***************************/

void delay(unsigned int param)
{
   int i;
   for(;param>0;param--)
   for(i=1000;i>0;i--);
}
/*************写数据的子程序*********************/

void Data_Write(unsigned int a)
{
  if(interface==8)
    {
     cs=0;
     rs=1;
     rd=1;
     wr=0;
     Port1=(a>>8);
     wr=1;
     cs=1;


     cs=0;
     rd=1;
     wr=0;
     Port1=a;
     wr=1;
     cs=1;
     rs=1;
    }
  else
    {
     cs=0;
     rs=1;
     rd=1;
     wr=0;
     Port2=(a>>8);
     Port1=a;
     wr=1;
     cs=1;
     rs=1;
    }
  }
/*************写命令的子程序*********************/

void Command_Write(unsigned int a)
{
  if(interface==8)
    {
     cs=0;
     rs=0;
     rd=1;
     wr=0;
     Port1=(a>>8);
     wr=1;
     cs=1;
     rs=1;

     cs=0;
     rs=0;
     rd=1;
     cs=0;
     wr=0;
     Port1=a;
     wr=1;
     cs=1;
    }
  else
    {
     cs=0;
     rs=0;
     rd=1;
     cs=0;
     wr=0;
     Port2=(a>>8);
     Port1=a;
     wr=1;
     rs=1;
     cs=1;

    }
  }
/*************初始子程序*********************/

void control_out(unsigned int a,unsigned                             int b)
{
 Command_Write(a);
 Data_Write(b);
 }


/***显示特殊颜色子程序,param1为主颜色,param2为边框颜色***/

void colour_display(unsigned int param1,unsigned int param2)                              
{

   c_d_before();


   for(seg=0;seg<DisplaySeg;seg++)
   Data_Write(param1);

   Data_Write(param1);
   for(seg=0;seg<(DisplaySeg-2);seg++)
   Data_Write(param2);
   Data_Write(param1);

   for(page=0;page<(DisplayCol-4);page++)
      {
       Data_Write(param1);
       Data_Write(param2);
       for(seg=0;seg<(DisplaySeg-4);seg++)
                                        Data_Write(param1);
       Data_Write(param2);
       Data_Write(param1);
      }

   Data_Write(param1);
   for(seg=0;seg<(DisplaySeg-2);seg++)
   Data_Write(param2);
   Data_Write(param1);

   for(seg=0;seg<DisplaySeg;seg++)
   Data_Write(param1);


}


/***************显示彩色条子程序******************/
/*
void displaye_colour_bar()
{
      unsigned char i,m,k;
      m=DisplayCol/7;
      i=DisplayCol-m*7;
       if(i>0)
        {k=1;}
      else
        {k=0;}
      c_d_before();


	for(page=0;page<(m+k);page++)
	for(seg=0;seg<DisplaySeg;seg++)
           {
            Data_Write(red);           //red
            i--;
            if(i>0)
              {k=1;}
            else
              {k=0;}
	    }

        for(page=0;page<32;page++)
	for(seg=0;seg<DisplaySeg;seg++)
           {
	    Data_Write(red_green);          //red+green
            i--;
            if(i>0)
              {k=1;}
            else
              {k=0;}
	    }

        for(page=0;page<32;page++)
	for(seg=0;seg<DisplaySeg;seg++)
           {
	    Data_Write(green);             //green
            i--;
            if(i>0)
              {k=1;}
            else
              {k=0;}
	    }

        for(page=0;page<31;page++)
	for(seg=0;seg<DisplaySeg;seg++)
           {
	    Data_Write(green_blue);         //green+blue
            i--;
            if(i>0)
              {k=1;}
            else
              {k=0;}
	    }

        for(page=0;page<31;page++)
	for(seg=0;seg<DisplaySeg;seg++)
           {
	    Data_Write(blue);               //blue
            i--;
            if(i>0)
              {k=1;}
            else
              {k=0;}
	    }

        for(page=0;page<31;page++)
	for(seg=0;seg<DisplaySeg;seg++)
           {
	    Data_Write(blue_red);            //blue+red
            i--;
            if(i>0)
              {k=1;}
            else
              {k=0;}
	    }


        for(page=0;page<31;page++)
	for(seg=0;seg<DisplaySeg;seg++)
           {
	    Data_Write(red_green_blue);           // blue+red+green
            i--;
            if(i>0)
              {k=1;}
            else
              {k=0;}
	    }



  }
 */

/*********************显示彩色块子程序**************************/
/*
void display_block()
{     unsigned int i,k,c,cc,r,rr;
      int c_l,r_l;
      unsigned int x,x1,x2,x3,x4,x5,x6;
      x=0;
      x1=blue;
      x2=green_blue;
      x3=green;
      x4=red_green;
      x5=red;
      x6=blue_red;
      c=DisplayCol/12;
      r=DisplaySeg/6;
      c_l=(int)(DisplayCol-c*12);
      if(c_l>0)
        {cc=1;}
      else
        {cc=0;}

        c_d_before();
        for(i=0;i<12;i++)
           {
	    for(page=0;page<(c+cc);page++)
               {
                  r_l=(int)(DisplaySeg-r*6);
                  if(r_l>0)
                    {rr=1;}
                    else
                   {rr=0;}
                 for(seg=0;seg<(r+rr);seg++)  //1
                     Data_Write(x1);
                     r_l--;
                     if(r_l>0)
                        {rr=1;}
                     else
                        {rr=0;}

                 for(seg=0;seg<(r+rr);seg++)
	             Data_Write(x2);       //2
                     r_l--;
                     if(r_l>0)
                        {rr=1;}
                     else
                        {rr=0;}

                 for(seg=0;seg<(r+rr);seg++)
	             Data_Write(x3);       //3
                     r_l--;
                     if(r_l>0)
                        {rr=1;}
                     else
                        {rr=0;}

                 for(seg=0;seg<(r+rr);seg++)
	             Data_Write(x4);       //4
                     r_l--;
                     if(r_l>0)
                        {rr=1;}
                     else
                        {rr=0;}

⌨️ 快捷键说明

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