📄 test.c
字号:
/****************************************************************************
* 公司名称:Jade *
* 模块名称:test.C *
* 模块功能:RGB TEST *
* 创建人员:Mark *
* 创建日期: *
****************************************************************************/
#include<c8051F020.h>
void Delay(unsigned int t);
void OSCILLATOR_Init (void);
void PORT_Init (void);
void writec(unsigned int cmd);
void writed(unsigned int dat);
void rgb_scan(unsigned int dat);
void hardware_reset(void);
#define uint8 unsigned int
#define uint16 unsigned int
#define RGB_BUFH P2
#define RGB_BUFL P0
sbit nRST =P3^5;
sbit SCL =P3^0;
sbit SDA =P3^1;
sbit nCS =P3^3;
sbit DE =P1^0;
sbit PK =P1^1;
sbit HS =P1^2;
sbit VS =P1^3;
//=============================================
void OSCILLATOR_Init (void)
{
WDTCN = 0x0de; // Disable watchdog timer
WDTCN = 0x0ad;
OSCICN = 0x17; // Configure internal oscillator for
// its maximum frequency (16Mhz)
}
//=============================================
void PORT_Init (void)
{
P1MDIN = 0x0ff; // P1 is digital
P1MDOUT = 0x0ff; // P1 is push-pull
P0MDOUT = 0x0ff; // P0 is push-pull
P2MDOUT = 0x0ff; // P2 is push-pull
P3MDOUT = 0x0FF; // P3 is push-pull
XBR2 = 0x0C0; // Enable crossbar and DISable
// weak pull-ups
}
//=============================================
//Din is used as SDA.
void writec(uint8 cmd)
{
uint8 i;
SCL = 1;
SDA = 1;
nCS = 0;
SCL = 0;
SDA = 0;
SCL = 1;
for (i = 0; i < 8; i++)
{
SCL = 0;
if (((cmd << i) & 0x80) == 0x80){SDA = 1;}
else{SDA = 0;}
SCL = 1;
}
nCS=1;
}
void writed(uint8 dat)
{
uint8 i;
SCL = 1;
SDA = 1;
nCS = 0;
SCL = 0;
SDA = 1;
SCL = 1;
for (i = 0; i < 8; i++)
{
SCL = 0;
if (((dat << i) & 0x80) == 0x80){SDA = 1;}
else{SDA = 0;}
SCL = 1;
}
nCS=1;
}
void rgb_scan(uint16 dat)
{
uint16 i,j;
DE = 0;
PK = 1;
VS = 1;
HS = 1;
PK = 0;
PK = 1;
VS = 0;
PK = 0;
PK = 1;
HS = 0;
PK = 0;
PK = 1;
HS = 1;
PK = 0;
PK = 1;
VS = 1;
PK = 0;
PK = 1;
for (i = 0; i < 640; i++)
{
HS = 0;
PK = 0;
PK = 1;
HS = 1;
PK = 0;
PK = 1;
DE = 1;
PK = 0;
PK = 1;
for (j = 0; j < 480; j++)
{
RGB_BUFH=dat>>8;
RGB_BUFL=dat;
PK = 0;
PK = 1;
}
DE = 0;
PK = 0;
PK = 1;
}
}
void Delay(unsigned int t)
{
unsigned int n,m;
for(n=0;n<t;n++)
for(m=0;m<900;m++)
;
}
void hardware_reset(void)
{
P2 = 0XFF;
P0 = 0XFF;
P1 = 0XFF;
P3 = 0XFF;
nRST = 0;
Delay(1);
nRST = 1;
Delay(30);
}
void lcd_initial(void)
{
writec(0x01);//Software reset
Delay(10);
writec(0x11);//Sleep_Out:
Delay(120);
writec(0x36);
writed(0x80);//Memory Data Access Control
writec(0x3A);
writed(0x50);//Set 65k
writec(0xB2);
writed(0x34);
writed(0x03);//Set fame rate( In Partial / 8 color mode)
writec(0xC0);
writed(0x01);//OP current optimize.
writec(0xC2);
writed(0x07);//Set OP Bias Current
writec(0xC5);
writed(0xBD);//Set VCOMH
writec(0xC6);
writed(0xa4);//Set VCOMAC
writec(0xBB);//LTPS timing midification
writed(0x02);
writed(0x28);
writed(0x00);
writed(0x14);
writed(0x06);
writed(0x12);
writed(0x19);
writed(0x12);
writed(0x2c);
writed(0x12);
writec(0xE6);
writed(0x02);//Gamma Correction Characteristics Setting
writec(0xE0);//Gamma setting ( negative frame)
writed(0x03);
writed(0x09);
writed(0x0A);
writed(0x36);
writed(0x1E);
writed(0x00);
writed(0x17);
writed(0x05);
writed(0x10);
writed(0x11);
writed(0x0D);
writed(0x0D);
writed(0x00);
writed(0x04);
writed(0x14);
writed(0x14);
writec(0xE1);//Gamma setting
writed(0x00);
writed(0x1E);
writed(0x36);
writed(0x0A);
writed(0x09);
writed(0x03);
writed(0x05);
writed(0x17);
writed(0x14);
writed(0x14);
writed(0x04);
writed(0x00);
writed(0x0D);
writed(0x0D);
writed(0x11);
writed(0x10);
writec(0xE2);//Gamma setting
writed(0x03);
writed(0x04);
writed(0x07);
writed(0x3A);
writed(0x32);
writed(0x00);
writed(0x16);
writed(0x05);
writed(0x0E);
writed(0x11);
writed(0x0C);
writed(0x0C);
writed(0x01);
writed(0x05);
writed(0x13);
writed(0x12);
writec(0xE3);//Gamma setting ( negative frame)
writed(0x00);
writed(0x32);
writed(0x3A);
writed(0x07);
writed(0x04);
writed(0x03);
writed(0x05);
writed(0x16);
writed(0x12);
writed(0x13);
writed(0x05);
writed(0x01);
writed(0x0c);
writed(0x0c);
writed(0x11);
writed(0x0e);
writec(0xE4);//Gamma setting
writed(0x03);
writed(0x0D);
writed(0x12);
writed(0x35);
writed(0x07);
writed(0x00);
writed(0x0e);
writed(0x0f);
writed(0x12);
writed(0x0f);
writed(0x0c);
writed(0x0b);
writed(0x01);
writed(0x05);
writed(0x18);
writec(0xE5);//Gamma setting
writed(0x00);
writed(0x07);
writed(0x35);
writed(0x12);
writed(0x0d);
writed(0x03);
writed(0x0f);
writed(0x0e);
writed(0x1b);
writed(0x18);
writed(0x05);
writed(0x01);
writed(0x0b);
writed(0x0c);
writed(0x0F);
writed(0x12);
writec(0x2A);//Column Address Set
writed(0x00);
writed(0x00);
writed(0x01);
writed(0xDF);
writec(0x2B);//Row Address Set
writed(0x00);
writed(0x00);
writed(0x02);
writed(0x7F);
writec(0x29);//Display_on
}
//Set RCM[1:0]=10
void main(void)
{
OSCILLATOR_Init ();
PORT_Init ();
hardware_reset();
lcd_initial();
while(1)
{
repeat:
rgb_scan(0xf800);
goto repeat;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -