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

📄 sc52x+

📁 SC52X开发板1.8寸SPI彩屏
💻
📖 第 1 页 / 共 2 页
字号:

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

#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int

sbit cs        =P0^3;
sbit rs        =P0^0;
sbit sda       =P0^1;
sbit scl       =P0^2;
sbit reset     =P1^7; 

sbit aa=P1^0;
sbit bb=P1^1;
sbit cc=P1^2;
sbit dd=P1^3;

sbit ConAdd    =P3^1;
sbit ConSub    =P3^0;
sbit PAUSE     =P3^3;

sbit Type      =P3^5; //0-成品检测,1-半成品检测
sbit Mtp       =P3^2;  //MTP Burn


uchar code map1[];
uchar code map2[];

uchar bdata bitdata;
sbit bit7=bitdata^7;
sbit bit6=bitdata^6;
sbit bit5=bitdata^5;
sbit bit4=bitdata^4;
sbit bit3=bitdata^3;
sbit bit2=bitdata^2;
sbit bit1=bitdata^1;
sbit bit0=bitdata^0;

void  OTP_Program();
void  delay(uint t);
void  Contrast_Adjust();
uchar code Zk_ASCII8X16[];

void Display_Desc();
void Output_Pixel(uint x,uint y);
void Display_ASCII8X16(uint x0,uint y0,uchar *s);
void Test_FinshGoods();
void Test_HalfFinshGoods();
void EEPROM_ERASE();
void EEPROM_Writing();

void delay(uint time)
{
 uint i,j;
  for(i=0;i<time;i++)
   for(j=0;j<250;j++);
}

void Pause() interrupt 2
{
    delay(100);
    while(!PAUSE);
    delay(100);
    while(PAUSE);
    delay(100);
    while(!PAUSE);
    delay(100);
}



void LCD_CtrlWrite_IC(uchar c)
{
bitdata=c;
cs=0;
rs=0;
sda=bit7;scl=0;scl=1;
sda=bit6;scl=0;scl=1;
sda=bit5;scl=0;scl=1;
sda=bit4;scl=0;scl=1;
sda=bit3;scl=0;scl=1;
sda=bit2;scl=0;scl=1;
sda=bit1;scl=0;scl=1;
sda=bit0;scl=0;scl=1;
cs=1;


}
void  LCD_DataWrite_IC(uchar d)  
{

bitdata=d;
cs=0;
rs=1;
sda=bit7;scl=0;scl=1;
sda=bit6;scl=0;scl=1;
sda=bit5;scl=0;scl=1;
sda=bit4;scl=0;scl=1;
sda=bit3;scl=0;scl=1;
sda=bit2;scl=0;scl=1;
sda=bit1;scl=0;scl=1;
sda=bit0;scl=0;scl=1;
cs=1;
}

void LCD_DataWrite(uchar LCD_DataH,uchar LCD_DataL)
{
LCD_DataWrite_IC(LCD_DataH);
LCD_DataWrite_IC(LCD_DataL);
}


void  write_command(uchar c)
{
bitdata=c;
cs=0;
rs=0;
sda=bit7;scl=0;scl=1;
sda=bit6;scl=0;scl=1;
sda=bit5;scl=0;scl=1;
sda=bit4;scl=0;scl=1;
sda=bit3;scl=0;scl=1;
sda=bit2;scl=0;scl=1;
sda=bit1;scl=0;scl=1;
sda=bit0;scl=0;scl=1;
cs=1;      
}

void  write_data(uchar d)
{
bitdata=d;
cs=0;
rs=1;
sda=bit7;scl=0;scl=1;
sda=bit6;scl=0;scl=1;
sda=bit5;scl=0;scl=1;
sda=bit4;scl=0;scl=1;
sda=bit3;scl=0;scl=1;
sda=bit2;scl=0;scl=1;
sda=bit1;scl=0;scl=1;
sda=bit0;scl=0;scl=1;
cs=1;
}

//////////////////////////////////////////////////////////////////////////////////////////////

void lcd_initial()
{

   reset=0;
   delay(100);
   reset=1;
   delay(100);

//------------------------------------------------------------------//  
//-------------------Software Reset-------------------------------//

write_command(0x11);//Sleep exit 
delay (120);
 
//ST7735R Frame Rate  帧速率设置
write_command(0xB1); //正常模式全色彩
write_data(0x02); write_data(0x2C); write_data(0x2D); 
write_command(0xB2);//在待机模式
write_data(0x02); write_data(0x2C); write_data(0x2D); 
write_command(0xB3);//在部分模式全彩 
write_data(0x02); write_data(0x2C); write_data(0x2D); 
write_data(0x02); write_data(0x2C); write_data(0x2D); 

write_command(0xB4); //Column inversion  显示逆控制 
write_data(0x07); 
 
//ST7735R Power Sequence
write_command(0xC0);//功率控制1
write_data(0xA2); write_data(0x02); write_data(0x84); 
write_command(0xC1); write_data(0xC5); //功率控制2
write_command(0xC2); //功率控制3 (正常模式/全彩)
write_data(0x06); write_data(0x00); 
write_command(0xC3);//控制功率4在空闲模式
write_data(0x8A); write_data(0x2A); 
write_command(0xC4);//功率控制5在部分模式/全彩
write_data(0x8A); write_data(0xEE); 
 
write_command(0xC5); //VCOM 控制11
write_data(0x0E); 
 
write_command(0x36); //MX, MY, RGB mode 
write_data(0xC8); 

//ST7735R Gamma Sequence +伽码校正特性设置
write_command(0xe0); 
write_data(0x0f); write_data(0x1a); 
write_data(0x0f); write_data(0x18); 
write_data(0x2f); write_data(0x28); 
write_data(0x20); write_data(0x22); 
write_data(0x1f); write_data(0x1b); 
write_data(0x23); write_data(0x37); write_data(0x00); 

write_data(0x07); 
write_data(0x02); write_data(0x10); 
write_command(0xe1);//-伽码校正特性设置 
write_data(0x0f); write_data(0x1b); 
write_data(0x0f); write_data(0x17); 
write_data(0x33); write_data(0x2c); 
write_data(0x29); write_data(0x2e); 
write_data(0x30); write_data(0x30); 
write_data(0x39); write_data(0x3f); 
write_data(0x00); write_data(0x07); 
write_data(0x03); write_data(0x10);  

write_command(0x2a);//列地址设置
write_data(0x00);write_data(0x00);
write_data(0x00);write_data(0x7f);
write_command(0x2b);//行地址设置
write_data(0x00);write_data(0x00);
write_data(0x00);write_data(0x9f);

write_command(0xF0); //Enable test command  使能测试命令
write_data(0x01); 
write_command(0xF6); //Disable ram power save mode 
write_data(0x00); 
 
write_command(0x3A); //65k mode 接口像素格式
write_data(0x05);  //18-bit/pixel
 

	write_command(0x29);//Display on
}



void  RamAdressSet() //存储器地址设置
{
   write_command(0x2A);
   write_data(0x00);
   write_data(0x00);
   write_data(0x00);
   write_data(0x7f);
  
   write_command(0x2B);
   write_data(0x00);
   write_data(0x00);
   write_data(0x00);
   write_data(0x9f);		  
}


void dsp_single_colour(DH,DL)	  //刷屏函数
{
 uchar i,j;
 //RamAdressSet();
 for (i=0;i<160;i++)
    for (j=0;j<128;j++)
        LCD_DataWrite(DH,DL);
}

void Display_Desc()		       //显示字符函数
{ 
  
	
     Display_ASCII8X16(20,52,"WELCOME TO");
	 delay(100);
	 Display_ASCII8X16(5,65,"http//;sochange.");
	 delay(100);
	 Display_ASCII8X16(5,80,"taotao.com");

}

void Output_Pixel(uint x,uint y)  //显示屏输出设置函数             
{
    LCD_CtrlWrite_IC(0x2A);  //Column Address Set 列地址设置       ****
	LCD_DataWrite_IC(x);//xsh 
	LCD_DataWrite_IC(x);//xsl 	
	LCD_CtrlWrite_IC(0x2B);//Row Address Set  行地址设置           ****
	LCD_DataWrite_IC(y);//ysl 
	LCD_DataWrite_IC(y);//ysl 
	LCD_CtrlWrite_IC(0x2c);	//存储器写寄存器
	LCD_DataWrite(0xf8,0x00);
    RamAdressSet();

} 



void Display_ASCII8X16(uint x0,uint y0,uchar *s) //8x16字符显示驱动函数
{
	int i,j,k,x,y,xx;
	
	unsigned char qm;
	
	long int ulOffset;
	
	char  ywbuf[50],temp[2];

	for(i = 0; i<strlen((char*)s);i++)
	{
		if(((unsigned char)(*(s+i))) >= 128)
		{
			temp[0] = *(s+i);
			temp[1] = '\0';
			return;
		}
		
		else
		{
			qm = *(s+i);

			ulOffset = (long int)(qm) * 16;
			
            for (j = 0; j < 16; j ++)
            {
				ywbuf[j]=Zk_ASCII8X16[ulOffset+j];
           	}
             
            for(y = 0;y < 16;y++)
            {
	          	for(x=0;x<8;x++) 
	           	{
                	k=x % 8;
                	
				  	if(ywbuf[y]&(0x80 >> k))
				   	{
				  		xx=x0+x+i*8;
				    	Output_Pixel(xx,y+y0);
				  	}
			   	}
           }

		}
	}     	
}



main()
{

⌨️ 快捷键说明

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