#include "compiler_defs.h"
#include "C8051F580_defs.h" // SFR declarations
#include "systemcofig.h"
//#include "F580_FlashPrimitives.h"
//#include<at89x51.h>
//#define RS P3_2
//#define nCSB P3_4
//#define nRESB P3_3
//#define nWRB P3_1
//SBIT (LCD_DC, SFR_P2, 0); //LGO
SBIT (LCD_CSD, SFR_P2, 2); //LGO
SBIT (LCD_RST, SFR_P2, 3); //LGO
SBIT (LCD_SCK, SFR_P0, 1);
SBIT (LCD_MOS, SFR_P0, 2);
unsigned char a;
unsigned int pic;
bit delayflag=0;
//*********************************************
void Initial(void);
void writelcm(unsigned int x,bit R);
void Write_Command(unsigned char Data);
void Write_Data(unsigned char Data);
void Field(void);
void fill(unsigned char dat1,unsigned char dat2);
void AddressSlect(unsigned char Add);
void Delay(unsigned int Data);
void dummy();
//******************************************
//******************************************
void Delay(unsigned int Data)
{
unsigned char temp;
for(; Data>0; Data--)
{
for(temp=0; temp<0xff; temp++);
}
}
void uDelay(unsigned char l)
{
while(l--);
}
void Delay1(unsigned char n)
{
unsigned char i,j,k;
for(k=0;k<n;k++)
{
for(i=0;i<131;i++)
{
for(j=0;j<15;j++)
{
uDelay(203);
}
}
}
}
void Write_Command(unsigned char Data)
{
xdata U8 i;
// LCD_DC=0;
LCD_CSD=0;
LCD_SCK=0;
LCD_MOS=0;
LCD_SCK=1;
for(i=0;i<8;i++)
{
LCD_SCK=0;
if(Data & 0x80)LCD_MOS=1;
else LCD_MOS=0;
LCD_SCK=1;
Data<<=1;
}
LCD_CSD=1;
// LCD_DC=1;
}
//***********************************
void Write_Data(unsigned char Data)
{
xdata U8 i;
// LCD_DC=1;
LCD_CSD=0;
LCD_SCK=0;
LCD_MOS=1;
LCD_SCK=1;
for(i=0;i<8;i++)
{
LCD_SCK=0;
if(Data & 0x80)LCD_MOS=1;
else LCD_MOS=0;
LCD_SCK=1;
Data<<=1;
}
LCD_CSD=1;
// LCD_DC=1;
}
//***********************************
void Initial(void)
{
// unsigned int x,y;
//SSD1322IC
Write_Command(0xFD); /*SET COMMAND LOCK*/
Write_Data(0x12); /* UNLOCK */
Write_Command(0xAE); /*DISPLAY OFF*/
Write_Command(0xB3);/*DISPLAYDIVIDE CLOCKRADIO/OSCILLATAR FREQUANCY*/
Write_Data(0x91);
Write_Command(0xCA); /*multiplex ratio*/
Write_Data(0x3F); /*duty = 1/64*/
Write_Command(0xA2); /*set offset*/
Write_Data(0x00);
Write_Command(0xA1); /*start line*/
Write_Data(0x00);
Write_Command(0xA0); /*set remap*/
Write_Data(0x14);
Write_Data(0x11);
Write_Command(0xB5); //GPIO
Write_Command(0x00);
Write_Command(0xAB); /*funtion selection*/
Write_Data(0x01); /* selection external vdd */
Write_Command(0xB4); /* */
Write_Data(0xA0);
Write_Data(0xfd);
Write_Command(0xC1); /*set contrast current */
Write_Data(0x9f);
Write_Command(0xC7); /*master contrast current control*/
Write_Data(0x0f);
Write_Command(0xB9); //GRAY TABLE
Write_Command(0xB1); /*SET PHASE LENGTH*/
Write_Data(0xE2);
Write_Command(0xD1); /**/
Write_Data(0x82);
Write_Data(0x20);
Write_Command(0xBB); /*SET PRE-CHANGE VOLTAGE*/
Write_Data(0x1F);
Write_Command(0xB6); /*SET SECOND PRE-CHARGE PERIOD*/
Write_Data(0x08);
Write_Command(0xBE); /* SET VCOMH */
Write_Data(0x07);
Write_Command(0xA6); /*normal display*/
// clear();
Write_Command(0xAF); /*display ON*/
}
void fill(unsigned char dat1,unsigned char dat2)
{
unsigned char x,y;
Write_Command(0x15); /*SET SECOND PRE-CHARGE PERIOD*/
Write_Data(0x00);
Write_Data(0x77);
Write_Command(0x75); /*SET SECOND PRE-CHARGE PERIOD*/
Write_Data(0x00);
Write_Data(0x7f);
Write_Command(0x5c);
for(y=0;y<128;y++)
{
for(x=0;x<120;x++)
Write_Data(dat1);
Write_Data(dat2);
}
Delay1(1);
}
void showframe(void)
{
unsigned char x,y;
Write_Command(0x15);
Write_Data(0x1c);
Write_Data(0x5b);
Write_Command(0x75);
Write_Data(0x00);
Write_Data(0x3F);
Write_Command(0x5C);
for(x=0;x<64;x++)
{
Write_Data(0xFF);
Write_Data(0xFF);
}
for(y=0;y<62;y++)
{
Write_Data(0xf0);
Write_Data(0x00);
for(x=0;x<62;x++)
{
Write_Data(0x00);
Write_Data(0x00);
}
Write_Data(0x00);
Write_Data(0x0f);
}
for(x=0;x<64;x++)
{
Write_Data(0xFF);
Write_Data(0xFF);
}
Delay1(1);
}
void ver()
{
unsigned char x,y;
Write_Command(0x15);
Write_Data(0x1c);
Write_Data(0x5b);
Write_Command(0x75);
Write_Data(0x00);
Write_Data(0x3F);
Write_Command(0x5C);
for(y=0;y<64;y++)
{
for(x=0;x<64;x++)
{
Write_Data(0xf0);
Write_Data(0xf0);
}
}
Delay1(1);
}
void hor()
{
unsigned char x,y;
Write_Command(0x15);
Write_Data(0x1c);
Write_Data(0x5b);
Write_Command(0x75);
Write_Data(0x00);
Write_Data(0x3F);
Write_Command(0x5C);
for(y=0;y<32;y++)
{
for(x=0;x<64;x++)
{
Write_Data(0xff);
Write_Data(0xff);
}
for(x=0;x<64;x++)
{
Write_Data(0x00);
Write_Data(0x00);
}
}
Delay1(1);
}
void snow()
{
unsigned char x,y;
Write_Command(0x15);
Write_Data(0x1c);
Write_Data(0x5b);
Write_Command(0x75);
Write_Data(0x00);
Write_Data(0x3F);
Write_Command(0x5C);
for(y=0;y<32;y++)
{
for(x=0;x<64;x++)
{
Write_Data(0xf0);
Write_Data(0xf0);
}
for(x=0;x<64;x++)
{
Write_Data(0x0f);
Write_Data(0x0f);
}
}
Delay1(1);
}
void clear()
{
unsigned char x,y;
Write_Command(0x15);
Write_Data(0x00);
Write_Data(0x77);
Write_Command(0x75);
Write_Data(0x00);
Write_Data(0x7f);
Write_Command(0x5C);
for(y=0;y<128;y++)
{
for(x=0;x<120;x++)
{
Write_Data(0x00);
Write_Data(0x00);
}
}
}
void Set_Column_Address(unsigned char a, unsigned char b)
{
Write_Command(0x15);
Write_Data(a); /* Default => 0x00*/
Write_Data(b); /* Default => 0x77*/
}
void Set_Row_Address(unsigned char a, unsigned char b)
{
Write_Command(0x75);
Write_Data(a); /* Default => 0x00 */
Write_Data(b); /* Default => 0x7F */
}
void Fill_Block(unsigned char Data, unsigned char a, unsigned char b, unsigned char c,
unsigned char d)
{
unsigned char i,j;
Set_Column_Address(0x1C+a,0x1C+b);
Set_Row_Address(c,d);
Write_Command(0x5C);
for(i=0;i<(d-c+1);i++)
{
for(j=0;j<(b-a+1);j++)
{
Write_Data(Data);
Write_Data(Data);
}
}
}
void Grayscale()
{
/* Level 16 => Column 1~16 */
Fill_Block(0xFF,0x00,0x03,0x00,0x3f);
/* Level 15 => Column 17~32*/
Fill_Block(0xEE,0x04,0x07,0x00,0x3f);
/* Level 14 => Column 33~48*/
Fill_Block(0xDD,0x08,0x0B,0x00,0x3f);
/* Level 13 => Column 49~64*/
Fill_Block(0xCC,0x0C,0x0F,0x00,0x3f);
/* Level 12 => Column 65~80*/
Fill_Block(0xBB,0x10,0x13,0x00,0x3f);
/* Level 11 => Column 81~96*/
Fill_Block(0xAA,0x14,0x17,0x00,0x3f);
/* Level 10 => Column 97~112*/
Fill_Block(0x99,0x18,0x1B,0x00,0x3f);
/* Level 9 => Column 113~128*/
Fill_Block(0x88,0x1C,0x1F,0x00,0x3f);
/* Level 8 => Column 129~144*/
Fill_Block(0x77,0x20,0x23,0x00,0x3f);
/* Level 7 => Column 145~160*/
Fill_Block(0x66,0x24,0x27,0x00,0x3f);
/* Level 6 => Column 161~176*/
Fill_Block(0x55,0x28,0x2B,0x00,0x3f);
/* Level 5 => Column 177~192*/
Fill_Block(0x44,0x2C,0x2F,0x00,0x3f);
/* Level 4 => Column 193~208*/
Fill_Block(0x33,0x30,0x33,0x00,0x3f);
/* Level 3 => Column 209~224*/
Fill_Block(0x22,0x34,0x37,0x00,0x3f);
/* Level 2 => Column 225~240*/
Fill_Block(0x11,0x38,0x3B,0x00,0x3f);
/* Level 1 => Column 241~256*/
Fill_Block(0x00,0x3C,0x3f,0x00,0x3f);
Delay1(1);
}
void main(void)
{
system_Init();
LCD_RST=0;
Delay(800);
LCD_RST=1;
Initial();
while(1)
{
fill(0xff,0xff);
Delay(5000);
// Write_Command(0xA5);
// Delay(800);
// Write_Command(0xA6);
// Delay(800);
// Write_Data();
clear();
Grayscale();
Delay(5000);
clear();
snow();
Delay(5000);
clear();
showframe();
Delay(5000);
clear();
hor();
Delay(5000);
clear();
ver();
Delay(5000);
clear();
}
}
- 1
- 2
前往页