📄 176220-29test.c
字号:
#include <reg51.h>
#include <absacc.h>
#define Uchar unsigned char
int Multiple_Test=0;
#define DataBus_Low8bit P0
#define DataBus_How8bit P2
sbit bl_main=P1^3;
sbit sub_cs=P3^5;
sbit main_cs=P3^4;
sbit rst=P3^3;
sbit rs=P3^2;
sbit wrb=P3^0;
sbit e_rd=P3^1;
//
sbit KEY=P1^7;
sbit upctra=P1^6;
sbit downctra=P1^5;
sbit BL_EN=P3^6;
sbit A2=P1^2;
sbit A1=P1^1;
sbit A0=P1^0;
/*************************function defined declaring**************************/
void Delayus(int value);
void Delayms(int value);
void WaitKey(void); /*wait to press key for the programm continuing */
void SubLCD_TEST(void);
void Bypass_InitLCD_SUB_Ssd1788z(void);
void LCDREG_SUB(char cmd_sub); /*向从屏驱动IC写命令*/
void LCDDATA_SUB(char dat_sub);
void Sub_Lcd_char(int i);
void Sub_Lcd(char data1 , char data2);
//
void LCD_HardwareReset(void); /*hardware reset*/
void MainLCD_Init(void); /*Initialize Main LCD driver IC*/
void MainLCD_WCom(char cmd1); /*write instruction to Main LCD's driver IC */
void MainLCD_WData(char data1,char data2); /*write data to GGRAM of Main LCD's driver IC*/
void MainLCD_DisplaySingleColor(char data1,char data2); /*write single color to defined area*/
void MainLCD_DisplaySingle(char data1,char data2);
void MainLCD_GradualColor(char gradual_color[]); /*write gradual color*/
void MainLCD_DisplayPicture(char PIC[]); /*write image data to GGRAM*/
void frame(void);
void ReadEPROM(void);
void Sub_Lcd(char data1 , char data2);
/****************************************************************************************/
void main(void)
{
short i;
LCD_HardwareReset();
sub_cs=1;
while(1)
{
MainLCD_Init();
MainLCD_DisplaySingleColor(0xf8,0x00);
WaitKey();
MainLCD_DisplaySingleColor(0x07,0xe0);
WaitKey();
MainLCD_DisplaySingleColor(0x00,0x1f);
WaitKey();
MainLCD_DisplaySingleColor(0xff,0xff);
WaitKey();
MainLCD_DisplaySingleColor(0x00 ,0x00);
}
}
******************************************************************************************/
void LCD_HardwareReset(void)
{
rst=0;
Delayms(20);
rst=1;
Delayms(20);
}
void Delayus(int value)
{
while(value)
{
value--; /*delay 1us*/
}
}
void Delayms(int value)
{
while(value)
{
Delayus(99); /*delay 1ms*/
value--;
}
}
void WaitKey(void)
{
KEY=1;
upctra=1;
downctra=1;
Delayms(300);
while(KEY)
{
if(!upctra)
{
;
}
if(!downctra)
{
;
}
}
}
/*主屏显示单色 */ /*2byte = 1pixel, RGBRGB... */
void MainLCD_DisplaySingleColor(char data1,char data2)
{
int i,j;
for(i=0;i<220;i++)
{
for(j=0;j<176;j++)
{
MainLCD_WData(data1,data2);
}
}
}
void MainLCD_DisplaySingle(char data1,char data2)
{
int i,j;
for(i=0;i<220;i++)
{
for(j=0;j<44;j++)
{
MainLCD_WData(data1,data2);
}
}
}
void MainLCD_Init(void) //Initialize Driver IC: HITACHI HCD66773
{
unsigned int i;
Delayms( 250 );
MainLCD_WCom(0x99); // soft reset
Delayms( 250);
MainLCD_WCom(0x96); // Turns Vosc ON
Delayms( 250);
MainLCD_WCom(0x6F); // GATE SCAN
MainLCD_WData(0x08,0x00); //SET GATE SCAN MODE
MainLCD_WData(0x00,0x00); //
MainLCD_WData(0xDB,0x00);
MainLCD_WCom(0xCA); // SET DISPLAY
MainLCD_WData(0x00,0x00); //SET THE DISPLAY CONDITION
MainLCD_WData(0x49,0x00); //
MainLCD_WData(0x00,0x00);
MainLCD_WData(0x44,0x00); //48
MainLCD_WData(0xDB,0x00); //P5
MainLCD_WData(0x00,0x00); //
MainLCD_WData(0x02,0x00); //02
MainLCD_WData(0x01,0x00); //01
MainLCD_WData(0x00,0x00); //P9
MainLCD_WCom(0xA1); // SET DISPLAY TIMING
MainLCD_WData(0x00,0x00); //????
MainLCD_WData(0x46,0x00); //
MainLCD_WData(0x00,0x00);
MainLCD_WData(0x40,0x00);
MainLCD_WData(0x0c,0x00);
MainLCD_WData(0x13,0x00); //
MainLCD_WData(0x09,0x00);
MainLCD_WCom(0xBC); // SET DATA
MainLCD_WData(0x00,0x00); //ROW AND COLUMN SCAN DIRECTION
MainLCD_WCom(0xAB);
MainLCD_WData(0x00,0x00);
MainLCD_WCom(0x31); // display data interface
MainLCD_WData(0x10,0x00); // 16bit
MainLCD_WData(0x00,0x00); //
MainLCD_WCom(0x8b); // COLMOD
MainLCD_WData(0x00,0x00); //00
MainLCD_WData(0x44,0x00); //01
MainLCD_WData(0x77,0x00); //01
MainLCD_WData(0x74,0x00); //22
MainLCD_WCom(0x20); // SET ELECTRONIC CONTROL need adjust????
MainLCD_WData(0x0b,0x00); //VDDHS 0b
MainLCD_WData(0x10,0x00); //25 //VCOMH 12
MainLCD_WData(0x0f,0x00); //VCOMW 18 change shandong
MainLCD_WData(0x12,0x00); //VONREG 09
MainLCD_WData(0x0d,0x00); //VOFREG 0c
MainLCD_WData(0x0a,0x00); //VddRH 0e
MainLCD_WData(0x04,0x00); //VddRL 2c
MainLCD_WData(0x00,0x00); //VLDO 07
Delayms( 250 );
MainLCD_WCom(0x22); // SET ELECTRONIC CONTROL
MainLCD_WData(0x32,0x00); //33
MainLCD_WData(0x00,0x00); //44
MainLCD_WData(0x44,0x00); //33
MainLCD_WData(0x44,0x00); //44
MainLCD_WData(0x44,0x00); //aa
MainLCD_WData(0x44,0x00); //5a
Delayms( 250);
MainLCD_WCom(0x21); // SET POWER CONTROL
MainLCD_WData(0x10,0x00); // 10
MainLCD_WData(0x11,0x00); // 11
MainLCD_WData(0x0e,0x00); // on booster circuit 0f
MainLCD_WData(0x1f,0x00); // p4 1f
MainLCD_WData(0xaD,0x00); // p5 ??00 2d
MainLCD_WData(0xa0,0x00); // p6 00
MainLCD_WData(0x44,0x00); // p7 44
MainLCD_WData(0xFF,0x00); // p8 ff
MainLCD_WData(0x03,0x00); // p9 ff
MainLCD_WData(0xFF,0x00); // pa ff
MainLCD_WData(0x03,0x00); // pb 03
MainLCD_WData(0x11,0x00); // pc 11
MainLCD_WData(0x44,0x00); // pd 44
Delayms( 250 ); // WAIT 50MS
MainLCD_WCom(0x23); // SET partial POWER CONTROL
MainLCD_WData(0x01,0x00); //
MainLCD_WData(0x44,0x00); //
MainLCD_WData(0x1f,0x00); // ????? on booster circuit
MainLCD_WData(0xad,0x00); // p4
MainLCD_WData(0xa0,0x00); // p5 ??00 2d
MainLCD_WData(0x11,0x00); // p6
MainLCD_WData(0x44,0x00); // p7
Delayms( 250 ); // WAIT 50MS
MainLCD_WCom(0x94); // SLEEP OUT
Delayms( 250);
MainLCD_WCom(0x8c); // ACDRIVE
MainLCD_WData(0x00,0x00); //
MainLCD_WData(0x00,0x00); //
MainLCD_WCom(0x92); // Start oscillation
MainLCD_WCom(0x15); // START ADDRESS
MainLCD_WData(0x00,0x00); //START COLUMN
MainLCD_WData(0x00,0x00); //START ROW
MainLCD_WCom(0x75); // END ADDRESS
MainLCD_WData(0xAF,0x00); //END COLUMN
MainLCD_WData(0xDB,0x00); //END ROW
MainLCD_WCom(0xAF); // Display ON
Delayms( 250);
MainLCD_WCom(0x5c);
}
void MainLCD_WCom(Uchar cmd1)
{
e_rd=1;
rs=0;
wrb=1;
sub_cs=1;
main_cs=0;
// DataBus_Low8bit=cmd2;
DataBus_How8bit=cmd1;
wrb=0;
;
wrb=1;
main_cs=1;
}
void MainLCD_WData(Uchar data1,Uchar data2)
{
e_rd=1;
rs=1;
wrb=1;
sub_cs=1;
main_cs=0;
DataBus_Low8bit=data2;
DataBus_How8bit=data1;
wrb=0;
;
wrb=1;
main_cs=1;
}