📄 hx8312.c
字号:
/*=======================================*/
/* Main IC: LDS191 VER.B */
/* 8080 MPU 8-bit Parallel 128*160 Dots */
/* CGS172B01 FPC V.01
// MCU AT89C2051
/* 2006/3/2 Written by daizhenggen
/*=======================================*/
#include<REG51.H>
#include<INTRINS.H>
#include<ABSACC.H>
#include<MATH.H>
#include<stdio.h>
//#include<image.h>
//#define unchar unsigned char
//#define unint unsigned int
//#include <main bird.h>
//=======================================
//sbit DS = P3^0;
//sbit RES = P3^7; //P3^0
sbit WRB = P3^5; //P3^3
sbit A0 = P3^6; //P3^4
sbit CS = P3^7; //P3^1 LCM
sbit AUTOB = P3^0;
sbit STEPB = P3^1;
//sbit BankPort0=P1^0;
//sbit BankPort1=P1^1;
//sbit BankPort2=P1^2;
sbit ChipSelect=P3^4;
sbit CSROM1= P1^4; //P3^1 LCM
sbit CSROM2 = P1^5;
sbit A16 = P1^0;
sbit A17 = P1^1;
sbit A18 = P1^2;
#define Uchar unsigned char
#define Uint unsigned int
#define Ulong unsigned long
//=======================================
//=======================================
//================================
void Initial_HX8312(void);
void WriteRegister(unsigned int RegisterValue);
void WriteCOM(char,char);
void WriteDAT(char,char);
void addr(void);
void Pattern0(void);
void Pattern1(void);
void Pattern2(void);
void Pattern3(void);
void Pattern4(void);
void Pattern5(void);
void Pattern6(void);
void Pattern7(void);
void Pattern8(void);
void Pattern9(void);
void Pattern10(void);
void showrom1PIC();
void showrom2PIC();
void selectDISROM(void);
void press(void);
void delayms(int);
main()
{
// RES=0;
// delayms(2);
/// RES=1;
/// delayms(2);
Initial_HX8312(); // Main Initial
IT0 =0;//下降沿触发
EX0=1; // 允许中断0
EA=1; // 设定中断优先级
while(1)
{
Pattern0(); // Display All Red
delayms(100);
press();
Pattern1(); //Display All Green
delayms(100);
press();
Pattern2(); //Display All Blude
delayms(100);
press();
Pattern9();
delayms(100);
press();
// Pattern4(); // Display horizontal
// press();
// delayms(100);
// Pattern5(); //Display vertical
// press();
// delayms(100);
//
Pattern6();
delayms(100);
press();
Pattern7();
delayms(100);
press();
Pattern10();
delayms(100);
press();
// Pattern8();
// delayms(100);
// press();
Pattern3(); // Display 16TH Gray
delayms(100);
press();
showrom1PIC();
showrom2PIC();
}
}
void Initial_HX8312(void)
{
//*******************************Start Initial Sequence******************************//
// WriteRegister(0x00,0x00,0x01); // Start internal OSC.
WriteCOM(0x00,0x00);
WriteDAT(0x00,0x01); //start oscillation
// WriteRegister(0x01,0x01,0x00); // set SS and SM bit
WriteCOM(0x00,0x01);
WriteDAT(0x01,0x00);
// WriteRegister(0x02,0x07,0x00); // set 1 line inversion
WriteCOM(0x00,0x02);
WriteDAT(0x07,0x00);
// WriteRegister(0x03,0x10,0x30); // set GRAM write direction and BGR=1.
WriteCOM(0x00,0x03);
WriteDAT(0x10,0x30);
// WriteRegister(0x04,0x00,0x00); // Resize register
WriteCOM(0x00,0x04);
WriteDAT(0x00,0x00);
// WriteRegister(0x08,0x02,0x02); // set the back porch and front porch
WriteCOM(0x00,0x08);
WriteDAT(0x02,0x02);
// WriteRegister(0x09,0x00,0x00); // set non-display area refresh cycle ISC[3:0]
WriteCOM(0x00,0x09);
WriteDAT(0x00,0x00);
// WriteRegister(0x0A,0x00,0x00); // FMARK function
WriteCOM(0x00,0x0a);
WriteDAT(0x00,0x00);
// WriteRegister(0x0C,0x00,0x00); // RGB interface setting
WriteCOM(0x00,0x0c);
WriteDAT(0x00,0x00);
// WriteRegister(0x0D,0x00,0x00);// Frame marker Position
WriteCOM(0x00,0x0d);
WriteDAT(0x00,0x00);
// WriteRegister(0x0F,0x00,0x00); // RGB interface polarity
WriteCOM(0x00,0x0f);
WriteDAT(0x00,0x00);
//**********************************Power On Sequence******************************//
// WriteRegister(0x10,0x00,0x00); // SAP, BT[3:0], AP, DSTB, SLP, STB
WriteCOM(0x00,0x10);
WriteDAT(0x00,0x00);
// WriteRegister(0x11,0x00,0x07); // DC1[2:0], DC0[2:0], VC[2:0]
WriteCOM(0x00,0x11);
WriteDAT(0x00,0x07);
// WriteRegister(0x12,0x00,0x00); // VREG1OUT voltage
WriteCOM(0x00,0x12);
WriteDAT(0x00,0x00);
// WriteRegister(0x13,0x00,0x00); // VDV[4:0] for VCOM amplitude
WriteCOM(0x00,0x13);
WriteDAT(0x00,0x00);
delayms(1);
// WriteRegister(0x10,0x17,0xB0);// SAP, BT[3:0], AP, DSTB, SLP, STB
WriteCOM(0x00,0x10);
WriteDAT(0x17,0xB0);
// WriteRegister(0x11,0x00,0x07);// DC1[2:0], DC0[2:0], VC[2:0]
WriteCOM(0x00,0x11);
WriteDAT(0x00,0x07);
delayms(1);
// WriteRegister(0x12,0x01,0x1A);
WriteCOM(0x00,0x12);
WriteDAT(0x01,0x1A);
// WriteRegister(0x13,0x1A,0x00);
WriteCOM(0x00,0x13);
WriteDAT(0x1A,0x00);
// WriteRegister(0x29,0x00,0x0C);
WriteCOM(0x00,0x29);
WriteDAT(0x00,0x0C);
delayms(1);
// WriteRegister(0x20,0x00,0x00);
WriteCOM(0x00,0x20);
WriteDAT(0x00,0x00);
// WriteRegister(0x21,0x00,0x00);
WriteCOM(0x00,0x21);
WriteDAT(0x00,0x00);
//*****************************************Adjust the Gamma curve*********************************//
// WriteRegister(0x30,0x00,0x00);
WriteCOM(0x00,0x30);
WriteDAT(0x00,0x00);
// WriteRegister(0x31,0x05,0x05);
WriteCOM(0x00,0x31);
WriteDAT(0x05,0x05);
// WriteRegister(0x32,0x00,0x04);
WriteCOM(0x00,0x32);
WriteDAT(0x00,0x04);
// WriteRegister(0x35,0x00,0x06);
WriteCOM(0x00,0x35);
WriteDAT(0x00,0x06);
// WriteRegister(0x36,0x07,0x07);
WriteCOM(0x00,0x36);
WriteDAT(0x07,0x07);
// WriteRegister(0x37,0x01,0x05);
WriteCOM(0x00,0x37);
WriteDAT(0x01,0x05);
//WriteRegister(0x38,0x00,0x02);
WriteCOM(0x00,0x38);
WriteDAT(0x00,0x02);
// WriteRegister(0x39,0x07,0x07);
WriteCOM(0x00,0x39);
WriteDAT(0x07,0x07);
//WriteRegister(0x3c,0x07,0x04);
WriteCOM(0x00,0x3c);
WriteDAT(0x07,0x04);
// WriteRegister(0x3d,0x08,0x07);
WriteCOM(0x00,0x3d);
WriteDAT(0x08,0x07);
//*************************partial Display Contronl****************************
// WriteRegister(0x60,0x27,0x00);
WriteCOM(0x00,0x60);
WriteDAT(0x27,0x00);
// WriteRegister(0x61,0x00,0x01);
WriteCOM(0x00,0x61);
WriteDAT(0x00,0x01);
// WriteRegister(0x80,0x00,0x00);
WriteCOM(0x00,0x80);
WriteDAT(0x00,0x00);
// WriteRegister(0x81,0x00,0x00);
WriteCOM(0x00,0x81);
WriteDAT(0x00,0x00);
// WriteRegister(0x82,0x00,0x00);
WriteCOM(0x00,0x82);
WriteDAT(0x00,0x00);
// WriteRegister(0x83,0x00,0x00);
WriteCOM(0x00,0x83);
WriteDAT(0x00,0x00);
// WriteRegister(0x84,0x00,0x00);
WriteCOM(0x00,0x84);
WriteDAT(0x00,0x00);
// WriteRegister(0x85,0x00,0x00);
WriteCOM(0x00,0x85);
WriteDAT(0x00,0x00);
// WriteRegister(0x90,0x00,0x10);
WriteCOM(0x00,0x90);
WriteDAT(0x00,0x10);
// WriteRegister(0x92,0x00,0x00);
WriteCOM(0x00,0x92);
WriteDAT(0x00,0x00);
// WriteRegister(0x93,0x00,0x03);
WriteCOM(0x00,0x93);
WriteDAT(0x00,0x03);
// WriteRegister(0x95,0x01,0x10);
WriteCOM(0x00,0x95);
WriteDAT(0x01,0x10);
// WriteRegister(0x97,0x00,0x00);
WriteCOM(0x00,0x97);
WriteDAT(0x00,0x00);
// WriteRegister(0x98,0x00,0x00);
WriteCOM(0x00,0x98);
WriteDAT(0x00,0x00);
// WriteRegister(0x07,0x01,0x73);
WriteCOM(0x00,0x07);
WriteDAT(0x01,0x73);
//********************************************************************************
}
//**************************************************************************************
void addr(void)
{
//WriteRegister(0x50,0x00,0x00); //Horizontal RAM Address Position start
WriteCOM(0x00,0x50);
WriteDAT(0x00,0x00);
// WriteRegister(0x51,0x00,0xef); //Horizontal RAM Address Position end
WriteCOM(0x00,0x51);
WriteDAT(0x00,0xef);
//WriteRegister(0x52,0x00,0x00); //Vertical RAM Address Position start
WriteCOM(0x00,0x52);
WriteDAT(0x00,0x00);
//WriteRegister(0x53,0x01,0x3f); //Vertical RAM Address Position end
WriteCOM(0x00,0x53);
WriteDAT(0x01,0x3f);
//writec(0x22);//WRITE DATA TO GRAM
WriteCOM(0x00,0x22);
}
void WriteRegister(unsigned int RegisterValue)
{
A0=0;
CS=0;
// RDB=1;
P1=RegisterValue>>8;
WRB=0;
WRB=1;
CS=1;
CS=0;
P1=RegisterValue;
WRB=0;
WRB=1;
CS=1;
}
void WriteCOM(char DH,char DL)
{
CS=0;
//RDB=1;
A0=0;
P1=DH;
WRB=0;
WRB=1;
CS=1;
CS=0;
P1=DL;
WRB=0;
WRB=1;
CS=1;
}
void WriteDAT(char DH,char DL)
{
{
CS=0;
//RDB=1;
A0=1;
P1=DH;
WRB=0;
WRB=1;
CS=1;
CS=0;
P1=DL;
WRB=0;
WRB=1;
CS=1;
}
}
/*void WriteRegister(unsigned int RegisterValue)
{
A0=0;
CS=0;
//RDB=1;
WRB=1;
P1=RegisterValue>>8;
P1=RegisterValue;
WRB=0;
WRB=1;
CS=1;
CS=0;
P1=RegisterValue;
WRB=0;
WRB=1;
CS=1;
}
void WriteCOM(char DH,char DL)
{ CS=0;
//RDB=1;
A0=0;
P1=DH;
WRB=0;
WRB=1;
CS=1;
CS=0;
P1=DL;
WRB=0;
WRB=1;
CS=1;
}
void WriteDAT(char DH,char DL)
{
CS=0;
//RDB=1;
A0=1;
P1=DH;
WRB=0;
WRB=1;
CS=1;
CS=0;
P1=DL;
WRB=0;
WRB=1;
CS=1;
}
*/
void Pattern0() // Display All Red
{
unsigned int i,j;
addr();
for(i=0;i<320;i++)
{
for (j=0;j<240;j++)
{
WriteDAT(0xf8,0x00);
}
}
}
void Pattern1() //Display All Green
{
unsigned int i,j;
addr();
for(i=0;i<320;i++)
{
for (j=0;j<240;j++)
{
WriteDAT(0x07,0xe0);
}
}
}
void Pattern2() //Display All Blude
{
unsigned int i,j;
addr();
for(i=0;i<320;i++)
{
for (j=0;j<240;j++)
{
WriteDAT(0x00,0x1f);
}
}
}
void Pattern3() //Display 16TH Gray
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -