📄 t28hjs03f.c
字号:
//T28HJS03F
//240x320 dots
//Main LCD IC 61503U data bus=16bit
//Programed by xiehuangsheng
/*===========================================================================*/
#include <reg51.h>
#include <absacc.h>
#define HIGH 1
#define LOW 0
#define COM_8255 XBYTE[0x8003]
#define PA_8255 XBYTE[0x8000]
#define PB_8255 XBYTE[0x8001]
#define PC_8255 XBYTE[0x8002]
/*===========================================================================
BASIC TYPE REDEFINITIONS FOR C51
===========================================================================*/
typedef unsigned char U8;
typedef signed char I8;
typedef unsigned int U16;
typedef signed int I16;
typedef unsigned long U32;
typedef long I32;
/*===========================================================================*/
//define MAIN LCD MODEL and contrast
/*===========================================================================*/
U16 MainLcdWidth=176;
U16 MainLcdHeight=220;
/*===========================================================================*/
//I/O Configuration
sbit P17_CTR = P1^7; //FLASH CONTROL PIN
sbit P16_CTR = P1^6; //DSP RS PIN
sbit P11_CTR = P1^1; //BYPASS PIN
sbit KeyIn = P1^4; //STEP KEY PIN
sbit BL_CTR = P3^5; //BACK LIGHT CONTROL PIN
sbit REC_CTR = P3^0; //REC CONTROL PIN
sbit SPK_CTR = P3^1; //SPK CONTROL PIN
sbit MOT_CTR = P1^5; //MOT CONTROL PIN
sbit P10_CTR = P1^0; //P1.0 CONTROL PIN
sbit P12_CTR = P1^2; //P1.2 CONTROL PIN
sbit P13_CTR = P1^3; //P1.3 CONTROL PIN
sbit P32_CTR = P3^2; //P3.2 CONTROL PIN
sbit P33_CTR = P3^3; //P3.3 CONTROL PIN
sbit P34_CTR = P3^4; //P3.4 CONTROL PIN
sbit key_inc =P1^1; //contrast+
sbit key_dec =P1^6; //contrast-
sbit VOTP_G_D =P1^7; //Voltage of OTP Input
sbit key_burn =P3^5;
/*===========================================================================*/
//Miscellaneous function
void keypress(void);
void Delay_us(U8 value);
void Delay_ms(U16 value);
void LCD_HardwareReset(void);
/*===========================================================================*/
//About LCD Configuration function
void InitLCD_MAIN_T28HJS03F_16bit(void);
void MAIN_LCD_ALL_WIN_16bit(void);
void MainLcdWrite_Comm(U8 cmd1);
void MainLcdWrite_Data(U8 dat2, dat1);
/*===========================================================================*/
//About LCD_Display function
void MainLcdDrawColor_16bit( U8 c2 , U8 c1 );
void MainLcdDisplayPic_16bit( U8 MAIN_PIC[] );
/*===========================================================================*/
/*===========================================================================*/
// FOR T28HJS03F
void InitLCD_MAIN_T28HJS03F_16bit(void) /*Initialize LCD Driver IC: */
{
MainLcdWrite_Comm(0x00);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x0a4);
MainLcdWrite_Data(0x00,0x01);
Delay_ms(20);
MainLcdWrite_Comm(0x07);
MainLcdWrite_Data(0x00,0x01);
Delay_ms(20);
MainLcdWrite_Comm(0x17);
MainLcdWrite_Data(0x00,0x01);
Delay_ms(200);
MainLcdWrite_Comm(0x10);
MainLcdWrite_Data(0x12,0x0b0);
Delay_ms(20);
MainLcdWrite_Comm(0x11);
MainLcdWrite_Data(0x00,0x07);
MainLcdWrite_Comm(0x12);
MainLcdWrite_Data(0x01,0x3e);
Delay_ms(20);
MainLcdWrite_Comm(0x13);
MainLcdWrite_Data(0x13,0x00);
Delay_ms(20);
MainLcdWrite_Comm(0x01);
MainLcdWrite_Data(0x01,0x00);
Delay_ms(20);
MainLcdWrite_Comm(0x02);
MainLcdWrite_Data(0x07,0x00);
MainLcdWrite_Comm(0x03);
MainLcdWrite_Data(0x12,0x30);
MainLcdWrite_Comm(0x08);
MainLcdWrite_Data(0x02,0x07);
MainLcdWrite_Comm(0x29);
MainLcdWrite_Data(0x00,0x06);
MainLcdWrite_Comm(0x2a);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x30);
MainLcdWrite_Data(0x07,0x07);
MainLcdWrite_Comm(0x31);
MainLcdWrite_Data(0x04,0x07);
MainLcdWrite_Comm(0x32);
MainLcdWrite_Data(0x02,0x03);
MainLcdWrite_Comm(0x33);
MainLcdWrite_Data(0x03,0x03);
MainLcdWrite_Comm(0x34);
MainLcdWrite_Data(0x03,0x03);
MainLcdWrite_Comm(0x35);
MainLcdWrite_Data(0x02,0x02);
MainLcdWrite_Comm(0x36);
MainLcdWrite_Data(0x00,0x1f);
MainLcdWrite_Comm(0x37);
MainLcdWrite_Data(0x07,0x07);
MainLcdWrite_Comm(0x38);
MainLcdWrite_Data(0x04,0x07);
MainLcdWrite_Comm(0x39);
MainLcdWrite_Data(0x02,0x03);
MainLcdWrite_Comm(0x3a);
MainLcdWrite_Data(0x03,0x03);
MainLcdWrite_Comm(0x3b);
MainLcdWrite_Data(0x03,0x03);
MainLcdWrite_Comm(0x3c);
MainLcdWrite_Data(0x02,0x02);
MainLcdWrite_Comm(0x3d);
MainLcdWrite_Data(0x00,0x1f);
Delay_ms(20);
MainLcdWrite_Comm(0x50);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x51);
MainLcdWrite_Data(0x00,0x0ef);
MainLcdWrite_Comm(0x52);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x53);
MainLcdWrite_Data(0x01,0x3f);
MainLcdWrite_Comm(0x20);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x21);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x60);
MainLcdWrite_Data(0x27,0x00);
MainLcdWrite_Comm(0x61);
MainLcdWrite_Data(0x00,0x01);
MainLcdWrite_Comm(0x6a);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x90);
MainLcdWrite_Data(0x00,0x10);
MainLcdWrite_Comm(0x92);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x93);
MainLcdWrite_Data(0x00,0x00);
Delay_ms(50);
MainLcdWrite_Comm(0x07);
MainLcdWrite_Data(0x00,0x21);
Delay_ms(10);
MainLcdWrite_Comm(0x07);
MainLcdWrite_Data(0x00,0x61);
Delay_ms(10);
MainLcdWrite_Comm(0x07);
MainLcdWrite_Data(0x01,0x73);
Delay_ms(50);
MainLcdWrite_Comm(0x20);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x21);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x22);
}
void MAIN_LCD_ALL_WIN_16bit(void)
{
MainLcdWrite_Comm(0x50);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x51);
MainLcdWrite_Data(0x00,0x0ef);
MainLcdWrite_Comm(0x52);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x53);
MainLcdWrite_Data(0x01,0x3f);
MainLcdWrite_Comm(0x20);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x21);
MainLcdWrite_Data(0x00,0x00);
MainLcdWrite_Comm(0x22);
}
/*===========================================================================*/
void MainLcdWrite_Comm(U8 cmd1)
{
//*******first byte*****************************************************************//
PA_8255=0x00;
PC_8255=cmd1;
PB_8255=0x1E; //RS=0
PB_8255=0x16; //cs=0
PB_8255=0x14; //wr=0
PB_8255=0x14; //delay
PB_8255=0x16; //wr=1
PB_8255=0x1E; //cs=1
PB_8255=0x1F; //RS=1
}
/*===========================================================================*/
void MainLcdWrite_Data(U8 dat2, dat1)
{
//*******2 byte*****************************************************************//
PA_8255=dat2;
PC_8255=dat1;
PB_8255=0x1F; //RS=1
PB_8255=0x17; //cs=0
PB_8255=0x15; //wr=0
PB_8255=0x15; //delay
PB_8255=0x17; //wr=1
PB_8255=0x1F; //cs=1
PB_8255=0x1F; //RS=1
}
/*===========================================================================*/
/*===========================================================================*/
void MainLcdDrawColor_16bit( U8 c2 , U8 c1 )
{
U16 i;
MAIN_LCD_ALL_WIN_16bit();
for(i=0;i<240*160;i++)
{
MainLcdWrite_Data( c2,c1 );
}
for(i=0;i<240*160;i++)
{
MainLcdWrite_Data( c2,c1 );
}
}
/*===========================================================================*/
void MainLcdDisplayPic_16bit( U8 MAIN_PIC[] )
{
U16 i;
U8 *address;
address=&MAIN_PIC[0];
MAIN_LCD_ALL_WIN_16bit();
for(i=0;i<240*160;i++)
{
U8 c2,c1;
c2=*address;
address++;
c1=*address;
MainLcdWrite_Data( c2,c1 );
address++;
}
}
/*===========================================================================*/
/*===========================================================================*/
void Delay_us(U8 value)
{
while(--value) /*delay 1us*/
;
}
/*===========================================================================*/
void Delay_ms(U16 value)
{
U16 i;
U16 j;
for(i=0;i<value;i++)
{
for(j=0;j<250;j++) /*delay 1ms*/ /*change (125)12mhz to (250)24mhz*/
;
}
}
/*===========================================================================*/
void LCD_HardwareReset(void)
{
COM_8255=0x80; /*8255 ALL OUTPUT*/
PB_8255=0xFF; /*8255 PORT B=FF */
PB_8255 &= 0xEF; /*8255 PORT B=EF RESET=L */
Delay_ms(30);
PB_8255 |= 0xFF; /*8255 PORT B=FF RESET=H */
Delay_ms(10);
}
/*===========================================================================*/
/*===========================================================================*/
void keypress(void)
{
while(KeyIn==1)
{;}
Delay_ms(5);
}
//pic data for 240x320//
U8 code MAIN_PIC[] =
{
};
/*===========================================================================*/
/*===========================================================================*/
void main(void)
{
while(1)
{
/***********************************
I/O SETUP
************************************/
REC_CTR = 0;
SPK_CTR = 0;
MOT_CTR = 0; //P15
P17_CTR = 1; //OTP V off
BL_CTR = 1;
P13_CTR = 1;
P10_CTR = 1;
P12_CTR = 1;
/***********************************
Reset LCD
************************************/
LCD_HardwareReset();
/***********************************
Init LCD
************************************/
InitLCD_MAIN_T28HJS03F_16bit();
//keypress();
/***********************************
LCD Panel Test
************************************/
MainLcdDrawColor_16bit(0x00,0x00); // black
Delay_ms(3000);
//keypress();
MainLcdDrawColor_16bit(0xFF,0xFF); // white
Delay_ms(3000);
//keypress();
MainLcdDrawColor_16bit(0x00,0x1F); // blue
Delay_ms(3000);
//keypress();
MainLcdDrawColor_16bit(0x07,0xe0); // green
Delay_ms(3000);
//keypress();
MainLcdDrawColor_16bit(0xf8,0x00); // red
Delay_ms(3000);
//keypress();
MainLcdDisplayPic_16bit(MAIN_PIC); //DISPLAY MAIN LCD PIC
Delay_ms(3000);
//keypress();
MainLcdDisplayPic_16bit(MAIN_PIC); //DISPLAY MAIN LCD PIC
Delay_ms(3000);
keypress();
}
}
/*===========================================================================*/
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -