📄 sc52x+
字号:
//
/***************************************************/
#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 WM=P1^0; //数码管使能
sbit DM2=P1^1; //数码管使能
sbit LSD=P1^2; //流水灯管使能
sbit DZ=P1^3; //点阵使能
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 delay(uint time)
{
uint i,j;
for(i=0;i<time;i++)
for(j=0;j<250;j++);
}
void LCD_commandWrite_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;
}
//TFT初始化设置
//////////////////////////////////////////////////////////////////////////////////////////////
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 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);
}
//主函数
/*****************************************************************
*****************************************************************
*****************************************************************/
main()
{
P0=0XFF;
WM=DM2=LSD=DZ=0;
lcd_initial();
while(1)
{
write_command(0x2C);
// Disp_gradscal(); //灰阶
// delay(500);
dsp_single_colour(0x84,0x10);//灰色
delay(500);
dsp_single_colour(0xff,0xff);//白色
delay(500);
dsp_single_colour(0x00,0x00);//黑色
delay(500);
dsp_single_colour(0xf8,0x00);//红色
delay(500);
dsp_single_colour(0x07,0xe0);//绿色
delay(500);
dsp_single_colour(0x00,0x1f);//蓝色
delay(500);
dsp_single_colour(0x07,0xff);//青
delay(500);
dsp_single_colour(0xff,0xe0);//黄
delay(500);
dsp_single_colour(0x7b,0xef);//紫
delay(500);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -