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

📄 st7637.c

📁 16*2,COG方式,ST7637演示程序
💻 C
字号:
//**************************************************************
//*****		CSTN TEST PROGRAM                       ********
//*****   8080   16bit                              ********
//*****	  CGS150AI00	IC ST7637                      ********
//*****		DISPLAY DOTS 128*128                    ********
//*****       ********
//**************************************************************
#include <reg51.h>
#include<INTRINS.H>
#include<ABSACC.H>
#include<MATH.H>
#include<stdio.h>
//#include <gImage.h>  
 
 
sbit    CS	=	P1^4;
sbit    RES	=	P1^5;
sbit    RS	=	P1^6;
sbit    RW	=	P1^7;      
//sbit    E	=	P3^7;      
//sbit    MPU =   P3^0;     // 68/80 Interface Type Selection  
//sbit   AUTOB = P3^1;   
//sbit   STEPB = P3^2; 
sbit ChipSelect=P3^3;
sbit CSROM1= P3^0;

sbit A16    = P1^0;
sbit A17    = P1^1;
sbit A18    = P1^2;


//void colourlevel();
void  initST7637();
void delay(unsigned int tt);
void delayms(unsigned int tt1);
void writeCOM(unsigned char a,unsigned char b);
void writeDAT(unsigned char dh,unsigned char dl);
//void pic0();
//void pic1();
void showcolor65k(unsigned char d1,unsigned char d2);
void colorbar65k();
void showgray65k();
//void Pattern1();
//void Pattern2();
void Pattern3();
void Pattern4();
void showrom1PIC();
//void press(void);	

main()

{
  
 // MPU=1;
 
  initST7637();
  while(1)
  {


//    pic1();
//    delay(60000);
//    delay(60000);

    showcolor65k(0xf8,0x00);     //Display All  Red
	delay(60000);
	delay(60000);

    showcolor65k(0x07,0xe0);     //Display  All  Green
	delay(60000);
	delay(60000);

    showcolor65k(0x00,0x1f);     //Display  All  Blude
	delay(60000);
	delay(60000);

	colorbar65k();              //color bar
	delay(60000);
	delay(60000);

	
	showcolor65k(0xff,0xff);     //Display  All  on
	delay(60000);
	delay(60000);

	Pattern4();                 //Display  All  off
	delay(60000);
	delay(60000);
	

	showcolor65k(0x00,0x00);     //Display  All  off
	delay(60000);
	delay(60000);


//	Pattern3();                 //Display  snow
//	delay(60000);
//	delay(60000);
	
 //   Pattern1();                //Display  vertical 
//	delay(60000);
//	delay(60000);

//	Pattern2();                 //Display  horizontal 
//	delay(60000);
//	delay(60000);

//	pic0();
//    delay(60000);
//    delay(60000);

	showgray65k();               //Display 16TH Gray
	delay(60000);
	delay(60000);

	showrom1PIC();


    }
}


void delay(unsigned int tt)
{
 while(tt>0)
 {
  tt--;
   }
}

void delayms(unsigned int tt1)
{int i,j;
 for(i=0;i<tt1;i++)
  {for(j=0;j<165;)
    { j++;}
    }
  
}


void writeCOM(unsigned char a,unsigned char b)
{
     RS=0;
	  //E=1;
      
      CS=0;
      P2=a;
      P0=b;  //P0
      RW=0;
      RW=1;
      CS=1;
}


void writeDAT(unsigned char dh,unsigned char dl)
{
      RS=1;
	  //E=1;
      
      CS=0;
      P2=dh;
      P0=dl;  //P0
      RW=0;
      RW=1;
      CS=1;
}

void  initST7637()
  {


    RES=0;
    delayms(20);
    RES=1;
    delayms(10);
	writeCOM(0x00,0x28); //display off
/**************************disable autoread*****************************/
    writeCOM(0x00,0xd7); //auto load set
	writeDAT(0x00,0x9f);  //auto load disable

	writeCOM(0x00,0xe0); //EE Read/write mode
	writeDAT(0x00,0x00);  //set read mode
    delayms(10);
	writeCOM(0x00,0xe3); //read active
    delayms(20);
	writeCOM(0x00,0xe1);  //cancel control

/************************Vop setting***********/
	writeCOM(0x00,0xc0);  //set Vop 
    writeDAT(0x00,0x2f);
    writeDAT(0x00,0x01);
    
/*************************set register************************/

	writeCOM(0x00,0xc3);  //bias select
    writeDAT(0x00,0x00);  //1/12 bias 
    writeCOM(0x00,0xc4);  //setting booster times
    writeDAT(0x00,0x07);  //booster X8
    
	writeCOM(0x00,0xcb);   //vg with booster X2 control
    writeDAT(0x00,0x01);   //vg from Vdd2
   

	writeCOM(0x00,0xb7);  //Glass Com/Seg scanf  Direction
    writeDAT(0x00,0x00);

	writeCOM(0x00,0x36);  //memory access control
    writeDAT(0x00,0xc0);

	writeCOM(0x00,0xb5);  //N-line Set
    writeDAT(0x00,0x02);

	writeCOM(0x00,0xd0);  //Analog circuit setting
    writeDAT(0x00,0x1d);

	writeCOM(0x00,0xeb);  //high power mode
    writeDAT(0x00,0x02);
	writeDAT(0x00,0x01);

	writeCOM(0x00,0x25);  //Contrast Set
    writeDAT(0x00,0x35);  //0~127 step

    writeCOM(0x00,0x3a);  //color mode=65K
    writeDAT(0x00,0x05);

	writeCOM(0x00,0xb0);  //duty=132
    writeDAT(0x00,0x83);

	writeCOM(0x00,0xc5);  //BOOSTER Efficiency
    writeDAT(0x00,0x02);  //00->level 1 , 01 level2
    
	writeCOM(0x00,0x20);  //display inversion off
/*****************set gamma*****************/
    writeCOM(0x00,0xf9);
	writeDAT(0x00,0x00);  //
    writeDAT(0x00,0x02);
    writeDAT(0x00,0x04);
    writeDAT(0x00,0x06);
    writeDAT(0x00,0x08);
    writeDAT(0x00,0x0a);
    writeDAT(0x00,0x0c);
    writeDAT(0x00,0x0e);
    writeDAT(0x00,0x10);
    writeDAT(0x00,0x12);
    writeDAT(0x00,0x14);
    writeDAT(0x00,0x16);
    writeDAT(0x00,0x18);
    writeDAT(0x00,0x1a);
    writeDAT(0x00,0x1c);
    writeDAT(0x00,0x1e);


    writeCOM(0x00,0xf0);  //Frame frequency in temp
	writeDAT(0x00,0x02);
	writeDAT(0x00,0x05);
	writeDAT(0x00,0x0d);
	writeDAT(0x00,0x19);

	writeCOM(0x00,0xf7);  //Temp Sensitivity Setting
	writeDAT(0x00,0x06);

	writeCOM(0x00,0xf4);  //TC Curve=0.06%
	writeDAT(0x00,0xff);
	writeDAT(0x00,0x8f);
	writeDAT(0x00,0x55);
	writeDAT(0x00,0x33);
	writeDAT(0x00,0x71);
	writeDAT(0x00,0x54);
	writeDAT(0x00,0x66);
	writeDAT(0x00,0x77);

	writeCOM(0x00,0x11);  //Sleep Out
	 

/***********set column row****************/
    writeCOM(0x00,0x2a);  //column
	writeDAT(0x00,0x00);  //
    writeDAT(0x00,0x7f);
	writeCOM(0x00,0x2b);  //page
    writeDAT(0x00,0x00);
    writeDAT(0x00,0x7f);

    writeCOM(0x00,0x29);  //display on
}


void showcolor65k(unsigned char d1,unsigned char d2)
{
  unsigned int c,s;
    writeCOM(0x00,0x2a);  //column
	writeDAT(0x00,0x00);  //
    writeDAT(0x00,0x7f);
	writeCOM(0x00,0x2b);  //page
    writeDAT(0x00,0x00);
    writeDAT(0x00,0x7f);
        writeCOM(0x00,0x2c);
  for(c=0;c<128;c++)    
	  for(s=0;s<128;s++)  
	  {
          writeDAT(d1,d2);
	  }
}

void colorbar65k()
{ unsigned int i=0,n=0,r=0,t=0,l=0;
    writeCOM(0x00,0x2a);  //column
	writeDAT(0x00,0x00);  //
    writeDAT(0x00,0x7f);
	writeCOM(0x00,0x2b);  //page
    writeDAT(0x00,0x00);
    writeDAT(0x00,0x7f);
        writeCOM(0x00,0x2c);

  for(r=0;r<128;r++)
        {
             for(i=0;i<21;i++)
         	 {
                writeDAT(0xf8,0x00);    //R
		 }
             for(i=0;i<21;i++)
		 {
                writeDAT(0x07,0xe0);   //G
		 }
             for(i=0;i<21;i++)
		 {
                writeDAT(0x00,0x1f);  //B
		 }
		     for(i=0;i<21;i++)
		 {
                writeDAT(0xff,0xe0);  //RG
		 }
		     for(i=0;i<21;i++)
		 {
                writeDAT(0xf8,0x1f);  //RB    
		 }
		     for(i=0;i<23;i++)
		 {
                writeDAT(0x07,0xff);  //GB
		 }
      }

}


 
/*void pic0()
{
 unsigned int i,n,y=0;
        write(0,0x2a);
        write(1,0x00);
        write(1,0x7f);     
        write(0,0x2b);
        write(1,0x00);
        write(1,0x7f);
        write(0,0x2c); 
        
     for(n=0;n<128;n++)
         for(i=0;i<256;i++)               
             write(1,show0[y++]);
 }*/

/*

void pic1()
{
 unsigned int i,n,y=0;
        write(0,0x2a);
        write(1,0x00);
        write(1,0x7f);     
        write(0,0x2b);
        write(1,0x00);
        write(1,0x7f);
        write(0,0x2c);

	 for(n=0;n<4;n++)
         for(i=0;i<128;i++)
        {
                write(1,0xFF);
                write(1,0xFF);
		 }	
        
     for(n=0;n<120;n++)
         for(i=0;i<256;i++)
             write(1,show1[y++]);

     for(n=0;n<4;n++)
         for(i=0;i<128;i++)
        {
                write(1,0x00);
                write(1,0x1f);
		 }		          
			 
}

*/

void showgray65k()
{ 
    unsigned char i,r;
    writeCOM(0x00,0x2a);  //column
	writeDAT(0x00,0x00);  //
    writeDAT(0x00,0x7f);
	writeCOM(0x00,0x2b);  //page
    writeDAT(0x00,0x00);
    writeDAT(0x00,0x7f);
    writeCOM(0x00,0x2c);
  for(r=0;r<64;r++)
  {
             for(i=0;i<8;i++)
         	 {
                writeDAT(0x00,0x00);   //1
		     }
             for(i=8;i<16;i++)
		        {
                writeDAT(0x10,0x82);    //2
		        }
             for(i=16;i<24;i++)
		 {
                writeDAT(0x21,0x04);    //3
		 }
		     for(i=24;i<32;i++)
		 {
                writeDAT(0x31,0x86);    //4
		 }
		    
		     for(i=32;i<40;i++)
		 {
                writeDAT(0x42,0x08);   //5
		 }

		    for(i=40;i<48;i++)
		 {
                writeDAT(0x52,0x8a);   //6
		 }
		    for(i=48;i<56;i++)
		 {
                writeDAT(0x63,0x0c);    //7
		 }
		    for(i=56;i<64;i++)
		 {
                writeDAT(0x73,0x8e);    //8
		 }
		    for(i=64;i<72;i++)
		 {
                writeDAT(0x7b,0xcf);    //9
		 }

		    for(i=72;i<80;i++)
		 {
                writeDAT(0x94,0x92);          //10   
		 }

		    for(i=80;i<88;i++)
		 {
                writeDAT(0xa5,0x14);   //11
		 }
		    for(i=88;i<96;i++)
		 {
                writeDAT(0xb5,0x96);    //12
		 }
            for(i=96;i<104;i++)
		 {
                writeDAT(0xc6,0x18);   //13
		 }
		    for(i=104;i<112;i++)
		 {
                writeDAT(0xd6,0x9a);    //14    
		 }
		    for(i=112;i<120;i++)
		 {
                writeDAT(0xe7,0x1c);    //15
		 }
		    for(i=120;i<128;i++)
		 {
                writeDAT(0xff,0xff);     //16
		 }
	}

    for(r=64;r<128;r++)

	  {
	        for(i=0;i<64;i++)
         	 {
				writeDAT(0xff,0xff);

			  }
            for(i=64;i<128;i++)
         	 {
                writeDAT(0x00,0x00);
			 }
      }
        
}
 

/*void Pattern1()		//vertical				
{
	unsigned char i,j;
    write(0,0x2a);  //column
	write(1,0x00);  //
    write(1,0x7f);
	write(0,0x2b);  //page
    write(1,0x00);
    write(1,0x7f);
        write(0,0x2c);
   for(i=0;i<128;i++)
	{
		for (j=0;j<64;j++)         
		{
			write(1,0xff);
            write(1,0xff);
			write(1,0x00);
            write(1,0x00);
		}
	}

}


void Pattern2()		//horizontal				
{
	unsigned char i,j;
    write(0,0x2a);  //column
	write(1,0x00);  //
    write(1,0x7f);
	write(0,0x2b);  //page
    write(1,0x00);
    write(1,0x7f);
        write(0,0x2c);
   for(i=0;i<64;i++)
	{
		for (j=0;j<128;j++)         
		{
			write(1,0xff);
            write(1,0xff);
			
		}
		for (j=0;j<128;j++)         
		{
			
			write(1,0x00);
            write(1,0x00);
		}
	}

}*/

void Pattern3()		//snow				
{
	unsigned char i,j;
    writeCOM(0x00,0x2a);  //column
	writeDAT(0x00,0x00);  //
    writeDAT(0x00,0x7f);
	writeCOM(0x00,0x2b);  //page
    writeDAT(0x00,0x00);
    writeDAT(0x00,0x7f);
        writeCOM(0x00,0x2c);
   for(i=0;i<64;i++)
	{
		for (j=0;j<64;j++)         
		{
			writeDAT(0xff,0xff);
			writeDAT(0x00,0x00);
		}
		for (j=0;j<64;j++) 
        
		{

			writeDAT(0x00,0x00);
			writeDAT(0xff,0xff);
			
		}
	}

}

void Pattern4()		//all off				
{
	unsigned char i,j;
    writeCOM(0x00,0x2a);  //column
	writeDAT(0x00,0x00);  //
    writeDAT(0x00,0x7f);
	writeCOM(0x00,0x2b);  //page
    writeDAT(0x00,0x00);
    writeDAT(0x00,0x7f);
        writeCOM(0x00,0x2c);

	for(j=0;j<1;j++)
	{
		for(i=0;i<128;i++)
		{		
			writeDAT(0xff,0xff);		
		}		
	}

    for(i=1;i<127;i++)
	{
		for (j=0;j<1;j++)
		{
            writeDAT(0xf8,0x00);    //R

		}
		for (j=1;j<127;j++)
		{
			writeDAT(0x00,0x00);       //all off
		
		}

		for (j=127;j<128;j++)
		{

		    writeDAT(0x00,0x1f);    //B
		
		}
        
    }


	for(j=127;j<128;j++)
	{
		for(i=0;i<128;i++)
		{		
			writeDAT(0xff,0xff);		
		}		
	}

}

/*void press(void)                 // STEP or AUTO Status  
{
  	
      while(STEPB==1&AUTOB==0)
     {
			
			delay(50);
      }

	 
      if(STEPB==0)
      {	
      	delay(50);
      	while(STEPB==0)
      	{
      		delay(40);
      	}
      	delay(50);
      	
      	
      		
      }
      else if(AUTOB==1)
      {
      		delay(700);
      }
  
	delay(50);

        
}*/



void showrom1PIC()
{
unsigned char i,j,k,n,m,r=0;
unsigned int s=0;



 for(k=0;k<6;k++)
 {   

 



  writeCOM(0x00,0x2a);
        writeDAT(0x00,0x00);
        writeDAT(0x00,0x7f);     
        writeCOM(0x00,0x2b);
        writeDAT(0x00,0x00);
        writeDAT(0x00,0x7f);
        writeCOM(0x00,0x2c);



for(i=0;i<128;i++)
	{
		for (j=0;j<128;j++)
        {   ChipSelect=0;
		  if(s==0xffff)
		     {
                s=0;
				r=r+1;

             }
		P1=0xff&r;
         CSROM1=0;

		if(s==0)
          { m=XBYTE[s];
           n=XBYTE[s+1];
           s=s+1;
           }
         else
          { m=XBYTE[s+1];
           n=XBYTE[s+2];
           s=s+2;
           }

		   CSROM1=1;

           ChipSelect=1;

		   writeDAT(m,n);

		//  if(p>66535)
		  //{BankPort0=1;BankPort1=0;BankPort2=0;}



         }
    }


	delay(60000);
	delay(60000);


  }

}

⌨️ 快捷键说明

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