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

📄 s6d0118 f.c

📁 s6d0118 c program test r g b white grp
💻 C
字号:
/****************************************************************************
 Controller IC:S6D0128,CMO 2.0 TFT
 Paraller type:8 bit-8080 interface
 
 Resolutions:  176*220 pixels
 P0       : DB0---DB7===>D10-D17
 P1       : P1.4 P1.3 P1.2 P1.1 P1.0
	        RES  CS1   RS  /WR    RD

 Modified date: 2006.09.13
****************************************************************************/
#include <reg52.h>
#include<intrins.h>

#define DisplayCol  220   //160
#define DisplaySeg  176   //128

#define DataPort  P1
//#define ContPort  P1
/*
//  8080- system  interface
                             //Res  /CS  RS  /WR  /RD    
#define cwrite		 0xf1    // 1	0   0    0    1      
#define cwrite_set	 0xf3    // 1	0   0    1    1      
#define dwrite		 0xf5    // 1	0   1    0    1      
#define dwrite_set	 0xf7    // 1	0   1    1    1      
*/
sbit _RST = P3^0;
sbit _CS1 = P3^5;
sbit  RS  = P3^4;  //
sbit _WR  = P3^3;
sbit _RD  = P3^1;  //

//define control key
sbit	STOP = P2^7;
sbit	CONU = P2^5;
sbit	COND = P2^6;

sbit  PA0=P3^0;
sbit  PA1=P3^1;
sbit  PA2=P3^2;
sbit  FlashChip1Select=P3^6;   //flash memory chip 1
sbit  LBLPowerOn=P3^2;         //backlight DC/DC on 

unsigned int xdata *ptr;

//unsigned char contrast=114;
int Rate=1,contrast=1, frequency=6300;
unsigned char KeyValue;
long time ;
int cycle;
int stand=1000;

void delay(unsigned int param)
{
   int i;
   for(;param>0;param--)
	for(i=0;i<960;i++);
}


void LCD_Index(unsigned char index)
{
	_nop_();
    RS=0;_RD=1;
    P0=index;
    _WR=0;
   delay(0);
   _WR=1;
} 

void LCD_DataWrite(unsigned int set_db)
{
	_nop_();
    RS=1;_RD=1;
    P0=set_db>>8;
    _WR=0;
    delay(0);
    _WR=1;

    _nop_();
    RS=1;_RD=1;
    P0=set_db;
    _WR=0;
    delay(0);
    _WR=1;
} 


void LCD_CmdWrite(unsigned char index,unsigned int set_db)
{

    //INDEX Register set
    _nop_();
    RS=0;_RD=1;
    P0=index;
    _WR=0;
    delay(0);
    _WR=1;

    _nop_();
    RS=1;_RD=1;
    P0=set_db>>8;
    _WR=0;
    delay(0);
    _WR=1;

    _nop_();
    RS=1;_RD=1;
    P0=set_db;
    _WR=0;
    delay(0);
    _WR=1;	
}

void LCD_Reset(void)
{
    _CS1=0;
    _RST=1;
    delay(10);
	_RST=0;
	delay(60);
	_RST=1;
	delay(10);
}

void Power_set(void)    //Power setting
{
   //LCD_CmdWrite(0xb4,0x0010); //MTPSEL OFF
   //LCD_CmdWrite(0x12,0x00b3); //
   LCD_CmdWrite(0x11,0x3c03); //power control:PON=0,,PON1=0,AON=0
   LCD_CmdWrite(0x14,0x0020); //power control 
   //LCD_CmdWrite(0x0b,0x0000); //Frame cycle control

   LCD_CmdWrite(0x10,0x1300); //power control 
   delay(50);

   LCD_CmdWrite(0x13,0x0040); //power control :PON=1,PON1=0,AON=0
   delay(20);
    LCD_CmdWrite(0x13,0x0060); //power control :PON=1,PON1=1,AON=0
   delay(50);
    LCD_CmdWrite(0x13,0x0070); //power control :PON=1,PON1=1,AON=1
   delay(40);
}


void LCD_Initial1(void)       //initial code 1
{
    LCD_CmdWrite(0x01,0x011b);//Driver Output Control
	                          //0000 0xxx 000x xxxx---0000 0001 0001 1101
                              //SM=0,GS=0,SS=1,NL[4:0]=1 0101---176*220 pixels

	LCD_CmdWrite(0x02,0x0700);//LCD-Driving Waveform Control
	                          //0000 xxxx 00xx xxxx---0000 0100 0000 0000
                              //FLD[1:0]=01,B/C=0,EOR=0,NW[5:0]=000000

	LCD_CmdWrite(0x03,0x1030);//Entry Mode

    LCD_CmdWrite(0x08,0x0202);//display control---blink control 
    LCD_CmdWrite(0x0b,0x0000);
    LCD_CmdWrite(0x0c,0x0000);//display interface selection:16-bit RGB 
}

void Gamma_Control(void)    //Gamma control
{
   //MP[5:0]([2:0]):gamma adjustment register for positive polarity output
    
    LCD_CmdWrite(0x30,0x0302);   //Gamma Control
	LCD_CmdWrite(0x31,0x0303);   //Gamma Control
	LCD_CmdWrite(0x32,0x0203);   //Gamma Control
	LCD_CmdWrite(0x33,0x0303);   //Gamma Control

	LCD_CmdWrite(0x34,0x0302);   //Gamma Control
	LCD_CmdWrite(0x35,0x0303);   //Gamma Control
	LCD_CmdWrite(0x36,0x0203);   //Gamma Control
	LCD_CmdWrite(0x37,0x0303);   //Gamma Control

	LCD_CmdWrite(0x38,0x0000);   //Gamma Control
	LCD_CmdWrite(0x39,0x0000);   //Gamma Control
}


void LCD_Initial2(void)       //initial code 2
{
    LCD_CmdWrite(0x40,0x0000);//Gate Scan Position

	LCD_CmdWrite(0x42,0xdb00);//Screen Driving Position
	LCD_CmdWrite(0x43,0x0000);//Screen Driving Position
	LCD_CmdWrite(0x44,0xaf00);//Horzontal RAM Address Position:176
	LCD_CmdWrite(0x45,0xdb00);//Vertical Address Position:220

    //LCD_CmdWrite(0x61,0x0018);//Oscillator control
	//LCD_CmdWrite(0x69,0x0000);//DC-DC control 
	//LCD_CmdWrite(0x70,0x0000);//source period setting
	//LCD_CmdWrite(0x71,0x0000);//gate period setting 
}


void Display_ON(void)  //display on 
{
   LCD_CmdWrite(0x07,0x0014); //GON=0,DTE=0,D[1:0]=01
   delay(2);
   LCD_CmdWrite(0x07,0x0016); //GON=1,DTE=0,D[1:0]=01
   delay(40);
   LCD_CmdWrite(0x07,0x0017); //GON=1,DTE=0,D[1:0]=11
   delay(40);
  
   //display on status
   LCD_CmdWrite(0x21,0x0000); //0000 0000 0000 0000
   LCD_Index(0x22);
}

void Display_Off(void)  //display off
{
   LCD_CmdWrite(0x07,0x0016); 
   delay(40);
   LCD_CmdWrite(0x07,0x0000); 
}

void Power_Off(void)  //Power off 
{
   LCD_CmdWrite(0x07,0x0016); 
   delay(40);
   LCD_CmdWrite(0x07,0x0000); 

   LCD_CmdWrite(0x10,0x0000); 
   LCD_CmdWrite(0x14,0x0000); 
   LCD_CmdWrite(0x11,0x0000); 
   LCD_CmdWrite(0x13,0x0060); 
   delay(10);

   LCD_CmdWrite(0x13,0x0040); 
   delay(10);
   
   LCD_CmdWrite(0x13,0x0000);

}


void WriteBmp(unsigned char pages)
{ 
    unsigned char page,seg;
	unsigned int pointer;

	FlashChip1Select= 0;//chip selected
    pointer= 0;

    LCD_CmdWrite(0x21,0x0000); //0000 0000 0000 0000
    LCD_Index(0x22);

	switch(pages)
	{
		case 0 :PA0 = 0;PA1 = 0;PA2 = 0;break;
		case 1 :PA0 = 1;PA1 = 0;PA2 = 0;break;
		case 2 :PA0 = 0;PA1 = 1;PA2 = 0;break;
		case 3 :PA0 = 1;PA1 = 1;PA2 = 0;break;
		case 4 :PA0 = 0;PA1 = 0;PA2 = 1;break;
		case 5 :PA0 = 1;PA1 = 0;PA2 = 1;break;
		case 6 :PA0 = 0;PA1 = 1;PA2 = 1;break;
		case 7 :PA0 = 1;PA1 = 1;PA2 = 1;break;
	}
		  
   for(page=0;page<DisplayCol;page++)
   {
	  for(seg=0;seg<DisplaySeg;seg++)
	  {  
	    LCD_DataWrite(ptr[pointer++]);
	  }	       
   } 
   FlashChip1Select=1;                                                                                                                                                                
 }

void Checker(unsigned int param1,unsigned int param2) //Full on,off,checkerboard,bar
{
	unsigned char page,seg;

    LCD_CmdWrite(0x21,0x0000); //0000 0000 0000 0000
    LCD_Index(0x22);

	for(page=0;page<DisplayCol;page++)
	{
		for(seg=0;seg<DisplaySeg;seg++)
		{
		   if(seg%2) LCD_DataWrite(param1);
             else LCD_DataWrite(param2);    
		}
	}
}

void WriteBoundary(void)  //write boundary
{
    
    unsigned char page,seg;

	LCD_CmdWrite(0x21,0x0000); //
    LCD_Index(0x22);
 
	for(page=0;page<DisplayCol;page++)
	{
		for(seg=0;seg<DisplaySeg;seg++)
		 {
		
			 if (seg==0||seg==(DisplaySeg-1)) LCD_DataWrite(0xffff);
               else if (page==0) LCD_DataWrite(0xffff);
                else if (page==(DisplayCol-1)) LCD_DataWrite(0xffff);  //
                 else LCD_DataWrite(0x0000);
		 }
    }
}

void test(void)  //test
{
    
    unsigned char page,seg;
 
	for(page=0;page<DisplayCol;page++)
	{
		for(seg=0;seg<DisplaySeg;seg++)
		 {
                 if (page<3) 
				   {
				     LCD_DataWrite(0xffff);
					 delay(10);
				   }
                 else 
				     LCD_DataWrite(0x0000);
		 }
    }
}

void WriteGrid1(void)
{
    unsigned char col,seg;

	LCD_CmdWrite(0x21,0x0000); //
    LCD_Index(0x22);

	for(col=0;col<DisplayCol;col++)
		{
		for(seg=0;seg<DisplaySeg;seg++)
			{
			 switch((col/16+seg/16)%3)
             {
               case 0: LCD_DataWrite(0x001f);break;  //red
               case 1: LCD_DataWrite(0x07e0);break;  //green
               case 2: LCD_DataWrite(0xf800);break;  //blue
              }
			}
		}
}

void WriteBar1(void)
{
	unsigned char col,seg;

	LCD_CmdWrite(0x21,0x0000); //0000 0000 0000 0000
    LCD_Index(0x22);

	for(col=0;col<DisplayCol;col++)
		{
		for(seg=0;seg<DisplaySeg;seg++)
			{
			 switch((col/16+col/16)%3)
             {
               case 0: LCD_DataWrite(0x001f);break;  //red
               case 1: LCD_DataWrite(0x07e0);break;  //green
               case 2: LCD_DataWrite(0xf800);break;  //blue
              }
			}
		}
}


 void main(void)
{   

   unsigned int step=0;
   
   delay(10); 
   LCD_Reset(); 
   Power_set();
   LCD_Initial1();
   Gamma_Control();
   LCD_Initial2();
   Display_ON();

	for(step=0;step<8;step++)	
	{
		switch(step)
		{
			case 0: Checker(0xffff,0xffff);break;  //all on 
			case 1: Checker(0x0000,0x0000);break;  //all off 
			case 2: Checker(0x07e0,0x07e0);break;  //green
            case 3: Checker(0x001f,0x001f);break;  //red 
			case 4: Checker(0xf800,0xf800);break;  //blue
            case 5: WriteGrid1(); break;           //Gird
			case 6: WriteBar1(); break;            //bar
			//case 7: WriteBmp(0); break;            //bitbmp
			//case 8: test();break;                  //
			case 7: WriteBoundary(); Power_Off(); break;//boundary
 	    }
	   delay(200);
   }
}

⌨️ 快捷键说明

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