📄 init_lcd.c
字号:
#include "LCDConf.h"
#include "LCD_0.h"
#include "44BLIB.h"
#include "44B.h"
#define U16 unsigned short
#define rPDATC (*(volatile unsigned *)0x1d20014)
#define SET_LCD_RESET(x) (x ? (rPDATC |=(1<<7)) : (rPDATC&= ~(1<<7)))
//#define BL_PWM_EN(x) (x ? (rPDATD |= (1<<6)) : (rPDATD &= ~(1<<6))) //GPD6
#define BL_EN(x) (x ? (rPDATD |= (1<<6)) : (rPDATD &= ~(1<<6))) //GPD5
void NT3912_INIT(void);
void GUI_LCD_OFF(void);
void RAM_ADDRESS(void);
void display_red(void);
void display_blue(void);
void display_green(void);
void disp_ColorBarH(void) ;
void disp_Gray_Step(void);
void red_frame_main(void) ;
void backlight(unsigned char level);
//#define ID_read(port) (*((volatile mvUint16 *) (port)))
void NT3912_INIT(void) //HX8309
{
int i;
SET_LCD_RESET(0);
Delay(2000);
SET_LCD_RESET(1);
Delay(2000);
//-----------Power_Setting_Function_1---------// Turn off all power
Init_data(0x0000,0x0001); //oscillator start
Delay(20);
Init_data(0x0007,0x0001);
Init_data(0x0018,0x0001);
Delay(100);
//-----------Power_Setting_Function_2----------// Power On Vcom
Init_data(0x0010,0x14B0);
Init_data(0x0011,0x0007);
Init_data(0x0012,0x1111);
Delay(40);
Init_data(0x0013,0x891b);
Delay(40);
Init_data(0x0014,0x8000);
Delay(40);
Init_data(0x0012,0x1133);
Delay(40);
//----------Initializing_Function_1---------------//
Init_data(0x0001,0x0100); // SM=0b, SS =1b
Init_data(0x0002,0x0400); // FLD1~0=01b, B/C=1b, EOR=1b.
Init_data(0x0003,0x1030); // HWM = 0, BGR = 1, I/D1~0=11b.
//Init_data(0x0004,0x0000);
Init_data(0x0004,0x0000);
Init_data(0x0008,0x0708);
Init_data(0x0009,0x0001);
Init_data(0x000C,0x0001);
//Init_data(0x000F,0x0000);
//------------Gamma control -----------//
Init_data(0x0030,0x0601); //Gamma control 1
Init_data(0x0031,0x0507); //Gamma control 2
Init_data(0x0032,0x0006); //Gamma control 3
Init_data(0x0033,0x0701); //Gamma control 4
Init_data(0x0034,0x0105); //Gamma control 5
Init_data(0x0035,0x0004); //Gamma control 6
Init_data(0x0036,0x0605); //Gamma control 7
Init_data(0x0037,0x0402); //Gamma control 8
Init_data(0x0038,0x0700); //Gamma control 8
Init_data(0x0039,0x0602); //Gamma control 8
Init_data(0x003A,0x0100); //Gamma control 9
Delay(100);
// ------- Base image display control instruction -----//
Init_data(0x0070,0x1B00);
Init_data(0x0071,0x0001);
Init_data(0x007A,0x00db);
// ------- Panel interface control instruction --------//
Init_data(0x0090,0x0000);
Init_data(0x0091,0x0100);
Init_data(0x0092,0x0001);
Init_data(0x0093,0x0110);
Init_data(0x0094,0x0100);
Init_data(0x0095,0x0000);
Init_data(0x0098,0x0000);
Init_data(0x0099,0x050A);
Init_data(0x009A,0x050A);
Init_data(0x009B,0x0000);
Init_data(0x009C,0x0000);
Delay(100);
Init_data(0x0007,0x0001); // Display control
Delay(100);
Init_data(0x0007,0x0233);
Delay(1000);
for(i=0;i<176*220;i++)
Init_data(0x0022,0xff00);
backlight(30);
}
void GUI_LCD_OFF(void){
//int i;
//rTCON= 0x0;
//rINTCON=0x7;
//rINTMSK=0x07ffffff;
rINTMSK=BIT_GLOBAL;
rTCON= 0x00000000;
Init_data(0x0050,0x0000);
Init_data(0x0051,0x00AF);
Init_data(0x0052,0x0000);
Init_data(0x0053,0x00DB);
Init_data(0x0020,0x0000);
Init_data(0x0021,0x0000);
disp_ColorBarH();
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
display_red();
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
display_green();
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
display_blue();
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
disp_Gray_Step();
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
red_frame_main();
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
display_id(80,62,lcd_ic_id());
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
//Init_data(0x0021,0x00);
//for(i=0;i<176*220;i++);
//Init_data(0x0022,0xff00);
//BL_PWM_EN(0);
backlight(16);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
Delay(5000);
//OSTimeDlyHMSM(0,1,0,0);
Init_data(0x0007,0x0132);
Delay(1000);
Init_data(0x0007,0x0122);
Delay(1000);
Init_data(0x0007,0x0100);
Init_data(0x0010,0x0000);
Init_data(0x0011,0x0000);
Init_data(0x0012,0x0000);
Init_data(0x0013,0x0000);
Init_data(0x0018,0x0000);
BL_EN(0);
Delay(100);
rCLKSLOW=0x0;
while(1);
}
void RAM_ADDRESS(void)
{
Init_data(0x0050,0x0000);
Init_data(0x0051,0x00AF);
Init_data(0x0052,0x0000);
Init_data(0x0053,0x00DB);
Init_data(0x0020,0x0000);
Init_data(0x0021,0x0000);
//writec(0x0022);
//Delay(10);
}
void display_red(void)
{
int i,j;
RAM_ADDRESS();
for(i=0;i<220;i++) //176RGB x 220_dot
{
for(j=0;j<176;j++)
{
Init_data4(0x0022,0xF800);//RAM data write
}
}
Init_data(0x0007,0x0233);
}
void display_green(void)
{
int i,j;
RAM_ADDRESS();
for(i=0;i<220;i++) //176RGB x 220_dot
{
for(j=0;j<176;j++)
{
Init_data4(0x0022,0x07E0);
}
}
}
void display_blue(void)
{
int i,j;
RAM_ADDRESS();
for(i=0;i<220;i++) //176RGB x 220_dot
{
for(j=0;j<176;j++)
{
Init_data4(0x0022,0x001F);
}
}
}
void disp_ColorBarH(void) //横Bar
{
unsigned int i,j,k,l;
i=j=k=l=0;
Init_data(0x0050,0x0000);
Init_data(0x0051,0x00AF);
Init_data(0x0052,0x0000);
Init_data(0x0053,0x00DB);
Init_data(0x0020,0x0000);
Init_data(0x0021,0x0000);
// RAM_ADDRESS();
for(i=0;i<220;i++)
{
if(k==28)
{
l++;
k=0;
}
k++;
for(j=0;j<176;j++)
{
switch(l)
{
case(0):Init_data4(0x0022,0xFFFF);break;
case(1):Init_data4(0x0022,0xF800);break;
case(2):Init_data4(0x0022,0x07E0);break;
case(3):Init_data4(0x0022,0x001F);break;
case(4):Init_data4(0x0022,0xBDF7);break;
case(5):Init_data4(0x0022,0xFFE0);break;
case(6):Init_data4(0x0022,0x07FF);break;
case(7):Init_data4(0x0022,0xF81F); break;
default: break;
}
}
}
Init_data(0x0007,0x0233);
}
void disp_Gray_Step(void) //灰阶
{
unsigned char i,j,k,m;
unsigned int Gray_Step[32]={0x0000,0x0841,0x1082,0x18c3,0x2104,0x2945,0x3186,0x39c7,
0x4208,0x4a49,0x528a,0x5acb,0x630c,0x6b4d,0x738e,0x7bcf,
0x8430,0x8c71,0x94b2,0x9cf3,0xa534,0xad75,0xb5b6,0xbdf7,
0xc638,0xce79,0xd6ba,0xdefb,0xe73c,0xef7d,0xf7be,0xffff};
i=j=k=m=0;
RAM_ADDRESS();
//writec(0x0022);
for(i=0;i<110;i++)
{
m=28;
for(j=0;j<176;j++){
k++;
Init_data4(0x0022,Gray_Step[m]);
if(k==22){
k=0;
m-=4;
}
}
}
for(i=110;i<220;i++)
{
m=0;
for(j=0;j<176;j++){
k++;
Init_data4(0x0022,Gray_Step[m]);
if(k==16){
k=0;
m+=3;
}
}
}
}
void red_frame_main(void)
{
unsigned int i,j;
i=j=0;
RAM_ADDRESS();
for(i=0;i<220;i++)
{ if((i==0)||(i==219))
{
for(j=0;j<176;j++)
{
Init_data4(0x0022,0xF800);
}
}
else
{
for(j=0;j<176;j++)
{
if((j==0)||(j==175))
{Init_data4(0x0022,0xF800);
}
else
Init_data4(0x0022,0x0000);
}
}
}
}
void backlight(unsigned char level)
{
unsigned char i;
BL_EN(0);
Delay(500);
for(i=0 ; i<level ; i++)
{
BL_EN(0);;
Delay(2);//
BL_EN(1);
Delay(300);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -