//------------------------------------------------- // Shenzhen TOPWAY Technology Co.,Ltd. // LCD Module: LM6093ACW // Display Size: 128 x 64 // Driver/Controller: ST75161 // by: likeke // Date: 2020-05-14 // System; AT89S52 (12MHz) // REV:new // note: //------------------------------------------------- #include #include #include #define uchar unsigned char // 0~255 #define uint unsigned int // 0~65535 //----------------------------------- // ????? 4-SPI mode sbit _CS = P3^4; sbit RS = P3^6; sbit SID = P1^7; sbit SCLK = P1^6; sbit _RST = P3^5; uchar bdata transdata; // this variable could be bits' variable sbit transbit = transdata^7; sbit _KeySel = P3^0; // key scanning active sbit _KeyAuto = P1^0; // key pressed sbit _KeyDarker = P1^1; // key pressed sbit _KeyLighter = P1^2; // key pressed sbit _KeyStep = P1^3; // key pressed bit HideFlag = 1; bit AutoRun; // 1 for auto run, 0 for manual run uint ContrastLevel; // for contrast setting level uchar bdata GrayLevel4; //该变量可为位操作之变量 uchar code logo[]={ /*-- 调入了一幅图像:C:\Documents and Settings\admin\桌面\lm12896A-logo.bmp --*/ /*-- ??x??=128x64 --*/ 0xFF,0x01,0x81,0x01,0x81,0x01,0x81,0x01,0x81,0x41,0x81,0x41,0x81,0x41,0x81,0x41, 0x81,0x41,0xA1,0x41,0xA1,0x41,0xA1,0x51,0xA1,0x51,0xA1,0x51,0xA9,0x51,0xA9,0x51, 0xA9,0x55,0xA9,0x55,0x29,0x15,0xAB,0x95,0xCB,0xC5,0xEB,0xE5,0xE3,0xF5,0xF3,0xF9, 0xFB,0xF9,0xF9,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0x01,0x01,0x41,0x81,0x01,0x81,0x81, 0x81,0x81,0x81,0x81,0x81,0x81,0x01,0x01,0x01,0xC1,0x01,0x01,0xC1,0x01,0x01,0x81, 0x01,0x01,0xC1,0x01,0x01,0x01,0xC1,0x01,0x01,0x81,0x81,0x81,0x81,0x81,0x81,0x81, 0x01,0x01,0x01,0x01,0x41,0x81,0x01,0x01,0x81,0x41,0x01,0x01,0x01,0x01,0x01,0x81, 0x41,0x81,0x01,0xC1,0x01,0x81,0x01,0xC1,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0x41,0xA8,0x55,0xAA,0x55,0xAA,0x55,0x2A,0x95,0xCA,0xE5,0xF2,0xF9, 0xF8,0xFD,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x42,0xE4,0x10,0x00,0x11,0x94, 0x52,0xFC,0x50,0x92,0x14,0x11,0x00,0x84,0x84,0xFF,0x44,0x44,0xFF,0x00,0x00,0xFF, 0x00,0x00,0xFF,0x00,0x22,0x22,0xFF,0x12,0x2A,0x10,0xFC,0x13,0x10,0x10,0xF0,0x00, 0x00,0x08,0x0B,0x0D,0xE9,0xAF,0xA9,0xA9,0xAF,0xA9,0xED,0x0B,0x09,0x00,0x11,0xF8, 0x04,0x0B,0xEA,0x2B,0xEA,0x8B,0x3C,0xC3,0x3E,0x02,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40, 0xA8,0x54,0x2A,0x95,0xCA,0xE5,0xF2,0xF9,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x23,0x20,0x21,0x21,0x20, 0x20,0x23,0x20,0x20,0x21,0x21,0x20,0x20,0x21,0x20,0x22,0x21,0x20,0x20,0x20,0x20, 0x20,0x20,0x23,0x20,0x20,0x22,0x23,0x20,0x20,0x20,0x23,0x21,0x21,0x21,0x23,0x20, 0x20,0x20,0x20,0x20,0x23,0x22,0x22,0x22,0x22,0x22,0x23,0x20,0x20,0x20,0x20,0x23, 0x22,0x21,0x20,0x20,0x21,0x22,0x21,0x20,0x21,0x22,0x20,0x20,0x20,0x20,0x20,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x14,0xCA,0xE1, 0xF8,0xFC,0xFF,0xFF,0xFB,0xFB,0xC3,0xFB,0xFB,0xFF,0xE7,0xDB,0xDB,0xDB,0xE7,0xFF, 0xC3,0xEB,0xEB,0xEB,0xF7,0xFF,0xE3,0xDF,0xEF,0xDF,0xE3,0xFF,0xCF,0xE7,0xEB,0xE7, 0xCF,0xFF,0xFB,0xF7,0xCF,0xF7,0xFB,0xFF,0xFF,0x00,0x01,0x01,0xFF,0x01,0x01,0x00, 0x3C,0x42,0x81,0x81,0x81,0x42,0x3C,0x00,0xFF,0x11,0x11,0x11,0x0E,0x03,0x3C,0xC0, 0x30,0x0E,0x01,0x0E,0x30,0xC0,0x3C,0x03,0xC0,0x30,0x2E,0x21,0x2E,0x30,0xC0,0x00, 0x01,0x06,0x08,0xF0,0x08,0x06,0x01,0x00,0x00,0x00,0x00,0xFF,0x80,0x80,0x80,0x80, 0x04,0xFF,0x84,0x00,0x78,0x84,0x84,0x48,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xF0,0xF0,0xF0,0x70,0xF0,0xC0,0x00,0x00,0x00,0xC0,0xF0,0x70,0xF0,0xF0, 0xF0,0x00,0x00,0x80,0xE0,0xE0,0x70,0x30,0x30,0x70,0x60,0x40,0x00,0x00,0x80,0xE0, 0xE0,0x70,0x30,0x70,0xE0,0xE0,0x80,0x00,0x00,0x80,0xE0,0xE0,0x70,0x30,0x70,0xE0, 0xE0,0x80,0x00,0x00,0xC0,0xE0,0xF0,0x30,0x30,0x30,0xF0,0xE0,0xC0,0x00,0x00,0x00, 0x00,0x80,0xF0,0xF0,0x70,0xF0,0xF0,0x80,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xE0, 0x70,0x70,0x70,0x70,0xF0,0xE0,0xE0,0x80,0x00,0x70,0xF0,0xF0,0x80,0x00,0x00,0xC0, 0xF0,0xF0,0xF0,0xC0,0x00,0x00,0x80,0xF0,0xF0,0x70,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x00,0x00,0xFF,0xFF,0xFF,0x00,0x07,0x7F,0xFC,0xC0,0xFC,0x7F,0x07,0x00,0xFF,0xFF, 0xFF,0x00,0x00,0x7F,0xFF,0xFF,0x86,0x03,0x87,0xFF,0xFE,0x7C,0x00,0x00,0x7F,0xFF, 0xFF,0x80,0x00,0x80,0xFF,0xFF,0x7F,0x00,0x00,0x8F,0x9F,0xBF,0x38,0x30,0x98,0xFF, 0xFF,0x7F,0x00,0x00,0xC0,0xC0,0xC0,0x00,0x06,0x06,0xFF,0xFF,0xF9,0x00,0x00,0xE0, 0xFC,0xFF,0x7F,0x73,0x70,0x73,0x7F,0xFF,0xFC,0xE0,0x00,0x00,0x3F,0xFF,0xFF,0xC0, 0x80,0x80,0x80,0x80,0xC0,0xE1,0xE1,0x40,0x00,0x00,0x3F,0xFF,0xFF,0xC0,0xFC,0xFF, 0x0F,0x00,0x0F,0xFF,0xFC,0xC0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0xE0,0x20,0x20,0x20,0x23,0x03,0xC3,0x23,0x23,0x23,0x23,0x43,0x03,0x23, 0x20,0xE0,0x23,0x23,0x03,0xE0,0x40,0x80,0x03,0x03,0xE3,0x00,0x00,0x00,0x03,0xE3, 0x03,0x00,0x00,0x00,0x01,0x81,0x43,0x23,0x23,0x21,0x41,0x00,0xE0,0x20,0x20,0x21, 0x41,0x83,0x03,0x03,0x01,0x01,0x80,0x40,0xE0,0x00,0x01,0x03,0x43,0x23,0x23,0x21, 0xC1,0x00,0xC0,0x20,0x20,0x21,0xC3,0x03,0x03,0x03,0x03,0x81,0x00,0x00,0x03,0x83, 0x03,0x00,0x00,0x00,0xC0,0x20,0x20,0x20,0x43,0x03,0x03,0x80,0x40,0xE0,0x01,0x01, 0x03,0x03,0x03,0xE3,0x23,0x21,0x21,0xC0,0x00,0xA0,0x00,0x83,0x03,0x03,0x03,0x80, 0x00,0x00,0x80,0x80,0x83,0x03,0x03,0xE3,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0xFF, 0xFF,0x80,0x9F,0x81,0x81,0x81,0x80,0x80,0x88,0x91,0x91,0x92,0x92,0x8C,0x80,0x80, 0x80,0x9F,0x80,0x80,0x80,0x9F,0x80,0x81,0x86,0x88,0x9F,0x80,0x80,0x80,0x80,0x9F, 0x90,0x90,0x90,0x90,0x80,0x87,0x88,0x90,0x90,0x90,0x88,0x80,0x9F,0x90,0x90,0x90, 0x88,0x87,0x80,0x80,0x80,0x80,0x80,0x80,0x9F,0x80,0x80,0x80,0x90,0x98,0x94,0x92, 0x91,0x80,0x8E,0x91,0x91,0x91,0x8E,0x80,0x80,0x80,0x80,0x90,0x89,0x86,0x89,0x90, 0x80,0x80,0x80,0x80,0x8F,0x91,0x91,0x91,0x8E,0x80,0x86,0x85,0x84,0x9F,0x84,0x80, 0x80,0x80,0x80,0x9F,0x82,0x82,0x82,0x81,0x80,0x9F,0x80,0x90,0x89,0x86,0x89,0x90, 0x80,0x8F,0x92,0x92,0x92,0x8B,0x80,0x9F,0x80,0x89,0x92,0x92,0x94,0x89,0x80,0xFF }; //----------------------------------- // Delay Routine //----------------------------------- void delayms(uint m) // 12MHz Xtal, close to ms value { uint j; uint i; for(i=0; i0x00) // 限制下限值 { ContrastLevel--; // 对比度参数减1 SdCmd(0xd7); } } //----清屏子程序----------------- void ClearRAM() { uchar i,j; SdCmd(0x30); //Extension Command 1 SdCmd(0xf0); // Display Mode SdData(0x10); // 10H=Monochrome Mode,11H=4Gray SdCmd(0x15);SdData(0x00);SdData(0x9f); // 设置列地址 SdCmd(0x75);SdData(0x00);SdData(0x13); // 设置页地址 SdCmd(0x5c); for(i=0;i<20;i++) { for(j=0;j<160;j++) { SdData(0x00); } } } /****************************************************************************/ void clear_ICON_RAM() { int j; SdCmd(0x30); //Extension Command 1 SdCmd(0x77); // Enable ICON RAM SdCmd(0x15); // Column Address Setting SdData(0x00); // SEG0 -> SEG255 SdData(0xff); SdCmd(0x5c); for(j=0;j<256;j++) { SdData(0x00); } SdCmd(0x76); // Disable ICON RAM } //----------------------------------- // 初始化子程序Init LCD module //----------------------------------- void initLCDM(void) { _RST=0; delayms(2); _RST=1; delayms(200); //------OTP Set----------------- SdCmd(0x31); //Extension Command 2 SdCmd(0xd7); SdData(0x9f); // Auto Read Control? SdCmd(0xe0); SdData(0x00); // OTP WR/RD Control delayms(10); SdCmd(0xe3); // OTP Read delayms(20); SdCmd(0xe1); // OTP Control Out //------对比度参数初始值设置----------------------------------- ContrastLevel=0x00f2; // 对比度参数初始化设置 //------功能设置---------------------------------------------- SdCmd(0x30); //Extension Command 1 SdCmd(0x94); // Sleep out, SdCmd(0xae); // Display off delayms(50); SdCmd(0x20); SdData(0x0b); // Power Control SdCmd(0x81); // 对比度设置 SdData(0x2b); // VOP=12.5V SdData(0x1e); // VOP=13.0V SdData(0x2b); SdData(0x03); SdCmd(0x31); //Extension Command 2 SdCmd(0x32); // Analog Circuit set SdData(0x00); SdData(0x01); SdData(0x05); // 1/9bias SdData(0x04); 1/10bias SdCmd(0x51); SdData(0xfa); // Booster level x8 SdCmd(0x30); //Extension Command 1 SdCmd(0xf0); SdData(0x10); // Display mode SdData(0x10)单色,SdData(0x11)4灰阶 SdCmd(0x0c); // D0=0 LSB on bottom SdCmd(0xca); // Display Control SdData(0x00); SdData(0x3f); SdData(0x00); // 1/64duty SdData(0x5f); 1/96duty SdCmd(0xbc); SdData(0x00); // Data scan direction SdCmd(0xa6); // Inversion Display SdCmd(0xa6)normal,SdCmd(0xa7)Inverse SdCmd(0x31); //Extension Command 2 //---Frame Rate---// SdCmd(0xf0); SdData(0x02); // 20HZ SdData(0x03); // 34.5 SdData(0x12); // 77 SdData(0x1c); //138 SdCmd(0xf2); // Temperature Range SdData(0x09); // TA=-31 SdData(0x14); // TB=-20 SdData(0x52); // TC=42 SdCmd(0xf4); // Temperature Gradient Compensation 2019-07-23 SdData(0x56); // SdData(0x34); // SdData(0x23); // SdData(0x00); // SdData(0x10); // SdData(0x53); // SdData(0x56); // SdData(0x53); // SdCmd(0x31); //Extension Command 2 SdCmd(0x40); // Internal Power Supply clear_ICON_RAM(); ClearRAM(); SdCmd(0xaf); // Display on } //-----图画写入子程序--------------------------------- void ShowBMP(uchar *pstr) { uchar i,j; SdCmd(0x30); //Extension Command 1 SdCmd(0x15);SdData(0x00);SdData(0x7f); // 设置列地址 SdCmd(0x75);SdData(0x00);SdData(0x07); // 设置页地址 SdCmd(0x5c); // 写数据 for(i=0;i<8;i++) { for(j=0;j<128;j++) { SdData(*pstr++); // 写图形数据 } } } //----------------------------------- // Main Program //----------------------------------- void main() { SP=0x60; EA = 0; // disable interrupts _CS =1; RS =1; SCLK =1; SID =1; _RST =1; // hardware reset LCD module _KeySel = 1; // init all signal AutoRun = 0; _RST =1; // hardware reset LCD module initLCDM(); ShowBMP(logo); while(1); } //end of program