12864程序适用于芯片ST7565 NT7534 SSD1815 KS0724等
// 12864 ST7565 NT7534 SSD1815 KS0724 (并口) 8x16 字体 //*************************************************************************** //* Create by :Ssmart * //*************************************************************************** //80时序连线表:CPU=89C52 * //A0=P2.0 /CS=P2.7 /WR=/WR /RD=/RD * //FOSC=12MHz D0-D7=P0.0-P0.7 /RSET=/(CPU RSET) * //*************************************************************************** //68时序连线表:CPU=89C52 * //A0=P2.0 /CS=P2.7 RW=P2.1 E=/(WR*RD) * //FOSC=12MHz D0-D7=P0.0-P0.7 /RSET=/(CPU RSET) * //*************************************************************************** #include <reg52.h> #include <intrins.h> char xdata LcmCmdPort _at_ 0x0000; //Write Cmd A0=0 RW=0 char xdata LcmDatPort _at_ 0x0100; //Write Data A0=1 RW=0 char xdata LcmStatusPort _at_ 0x0200; //Read Status A0=0 RW=1 char xdata LcmReadDatPort _at_ 0x0300; //Read Data A0=1 RW=1 sbit Reset=P3^5; #define Uchar unsigned char #define Uint unsigned int Uchar code ASCIIchardot[]; Uchar code bmp1[]; Uchar code bmp2[]; Uchar code bmp3[]; Uchar code ComTable[]={3,2,1,0,7,6,5,4,}; void CheckBusy( void ) { while(LcmStatusPort&0x80); //Status Busy =1 , wait... } void WriteCommand( Uchar CommandByte ) { CheckBusy(); LcmCmdPort=CommandByte; } void WriteData( Uchar DataByte ) { CheckBusy(); LcmDatPort=DataByte; } Uchar ReadData( void ) { CheckBusy(); return LcmReadDatPort; } void Delay(Uint MS) { Uchar us,usn; while(MS!=0) { usn = 4; while(usn!=0) { us=0xf0; while (us!=0){us--;}; usn--; } MS--; } } void LcmClear( void ) { Uint i,j; WriteCommand(0x40); //Set Display Start Line = com0 for(i=0;i<8;i++) { WriteCommand(0xB0|ComTable[i]); //Set Page Address WriteCommand(0x10); //Set Column Address = 0 WriteCommand(0x01); //Colum from 1 -> 129 auto add for(j=0;j<128;j++) { WriteData( 0 ); } } } void LcmInit( void ) { WriteCommand(0xAE); //Display OFF WriteCommand(0xA2); //1/64 Duty 1/9 Bias WriteCommand(0xA0); //ADC select --> right WriteCommand(0xC0); //com1 --> com64 WriteCommand(0x24); //没用,外部Rb/Ra WriteCommand(0x81); //Sets V0 WriteCommand(0x30); //内部电位器调节对比度 WriteCommand(0x2F); //voltage follower ON regulator ON booster ON WriteCommand(0xA6); //Normal Display (not reverse dispplay) WriteCommand(0xA4); //Entire Display Disable LcmClear(); WriteCommand(0xAF); //Display ON WriteCommand(0x40); //Set Display Start Line = com0 WriteCommand(0xB0); //Set Page Address = 0 WriteCommand(0x10); //Set Column Address 4 higher bits = 0 WriteCommand(0x01); //Set Column Address 4 lower bits = 1 , from IC SEG1 -> SEG129 } //显示ASICC字符的函数 void LcmPutChar(Uchar col,Uchar page,Uchar Order) { Uchar i; Uint x; x = (Order-0x20)*0x10; //ASICC字符从0x20开始,每个16 byte WriteCommand(ComTable[page&0x07]|0xB0); //Set Page Address WriteCommand( ((col+1)>>4) | 0x10); //Set Column Address High Byte WriteCommand( (col+1)&0x0F ); //Low Byte Colum from 1 -> 129 auto add for(i=0;i<8;i++) { WriteData( ASCIIchardot[x] ); x++; } page++; //下半字符page+1 WriteCommand(ComTable[page&0x07]|0xB0); //Set Page Address WriteCommand( ((col+1)>>4) | 0x10); //Set Column Address High Byte WriteCommand( (col+1)&0x0F ); //Low Byte Colum from 1 -> 129 auto add for(i=0;i<8;i++) { WriteData( ASCIIchardot[x] ); x++; } page--; //写完一个字符page还原 } //显示字符串的函数 /* 为了避免需要LcmPutChar返回page col值, 只能将判断col和paeg的程序放到PutStr中 调用函数的时候需要注意 */ void LcmPutStr(Uchar col,Uchar page,Uchar *puts) { while(*puts != '\0') //判断字符串时候显示完毕 { if(col>120) //判断行末空间是否足够放一个字符,自动换行 { page=page+2; col=0; } if(page>6) //到了屏幕最下角,自动返回左上角 { page=0; col=0; } LcmPutChar(col,page,*puts); puts++; Delay(10); //延时演示效果 col=col+8; //下一个字符8列之后 } } void LcmDisplayBmp( Uchar *puts ) { Uchar i,j; Uint X=0; WriteCommand(0x40); //Set Display Start Line = com0 for(i=0;i<8;i++) { WriteCommand(0xB0|ComTable[i]); //Set Page Address WriteCommand(0x10); //Set Column Address = 0 WriteCommand(0x01); //Colum from 1 -> 129 auto add for(j=0;j<128;j++) { WriteData( puts[X] ); X++; } } } void LcmReverseBmp( void ) { Uchar i,j,X; WriteCommand(0x40); //Set Display Start Line = com0 for(i=0;i<8;i++) { WriteCommand(0xB0|ComTable[i]); //Set Page Address for(j=0;j<128;j++) { WriteCommand( ((j+1)>>4) | 0x10); WriteCommand( (j+1)&0x0F ); X = ReadData(); //Dummy Read X = ReadData(); X = ~X; WriteCommand( ((j+1)>>4) | 0x10); WriteCommand( (j+1)&0x0F ); WriteData(X); } } } void LcmDisplayBlack( ) { Uchar i,j; WriteCommand(0x40); //Set Display Start Line = com0 for(i=0;i<8;i++) { WriteCommand(0xB0|ComTable[i]); //Set Page Address WriteCommand(0x10); //Set Column Address = 0 WriteCommand(0x01); //Colum from 1 -> 129 auto add for(j=0;j<128;j++) WriteData( 0xff ); } } void main( void ) { Delay(10); Reset = 0; Delay(200); Reset = 1; Delay(50); LcmInit(); while(1) { LcmDisplayBmp(bmp1); Delay(1000); LcmReverseBmp(); Delay(1000); LcmClear(); LcmPutStr(0,0,"http://hi.baidu.com/lcdbbs/ Ssmart"); Delay(1000); LcmDisplayBlack(); Delay(1000); } } /* ASICC字库代码 8x16点阵 */ unsigned char code ASCIIchardot[16*96] = { /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*! */ 0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0x0C,0x00,0x00,0x00, /*" */ 0x00,0x08,0x30,0x60,0x08,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*# */ 0x02,0x03,0x1E,0x02,0x03,0x1E,0x02,0x00,0x20,0xFC,0x20,0x20,0xFC,0x20,0x20,0x00, /*$ */ 0x00,0x0E,0x11,0x3F,0x10,0x0C,0x00,0x00,0x00,0x18,0x04,0xFF,0x84,0x78,0x00,0x00, /*% */ 0x0F,0x10,0x0F,0x00,0x07,0x18,0x00,0x00,0x00,0x84,0x38,0xC0,0x78,0x84,0x78,0x00, /*& */ 0x00,0x0F,0x10,0x11,0x0E,0x00,0x00,0x00,0x78,0x84,0xC4,0x24,0x98,0xE4,0x84,0x08, /*' */ 0x08,0x68,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*( */ 0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00, /*) */ 0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00, /** */ 0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00, /*+ */ 0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xF8,0x80,0x80,0x80,0x00, /*, */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0D,0x0E,0x00,0x00,0x00,0x00,0x00, /*- */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80, /*. */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, /*/ */ 0x00,0x00,0x00,0x00,0x01,0x06,0x18,0x20,0x00,0x06,0x18,0x60,0x80,0x00,0x00,0x00, /*0 */ 0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,0x00, /*1 */ 0x00,0x08,0x08,0x1F,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0xFC,0x04,0x04,0x00,0x00, /*2 */ 0x00,0x0E,0x10,0x10,0x10,0x11,0x0E,0x00,0x00,0x0C,0x14,0x24,0x44,0x84,0x0C,0x00, /*3 */ 0x00,0x0C,0x10,0x11,0x11,0x12,0x0C,0x00,0x00,0x18,0x04,0x04,0x04,0x88,0x70,0x00, /*4 */ 0x00,0x00,0x03,0x04,0x08,0x1F,0x00,0x00,0x00,0xE0,0x20,0x24,0x24,0xFC,0x24,0x00, /*5 */ 0x00,0x1F,0x10,0x11,0x11,0x10,0x10,0x00,0x00,0x98,0x84,0x04,0x04,0x88,0x70,0x00, /*6 */ 0x00,0x07,0x08,0x11,0x11,0x18,0x00,0x00,0x00,0xF0,0x88,0x04,0x04,0x88,0x70,0x00, /*7 */ 0x00,0x1C,0x10,0x10,0x13,0x1C,0x10,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00, /*8 */ 0x00,0x0E,0x11,0x10,0x10,0x11,0x0E,0x00,0x00,0x38,0x44,0x84,0x84,0x44,0x38,0x00, /*9 */ 0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,0x00,0x00,0x8C,0x44,0x44,0x88,0xF0,0x00, /*: */ 0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00, /*; */ 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x00,0x00,0x00,0x00, /*< */ 0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x00, /*= */ 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00, /*> */ 0x00,0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x04,0x08,0x10,0x20,0x40,0x80,0x00, /*? */ 0x00,0x0E,0x12,0x10,0x10,0x10,0x0F,0x00,0x00,0x00,0x00,0x0C,0x6C,0x80,0x00,0x00, /*@ */ 0x03,0x0C,0x13,0x14,0x17,0x08,0x07,0x00,0xE0,0x18,0xE4,0x24,0xC4,0x28,0xD0,0x00, /*A */ 0x00,0x00,0x03,0x1C,0x07,0x00,0x00,0x00,0x04,0x3C,0xC4,0x40,0x40,0xE4,0x1C,0x04, /*B */ 0x10,0x1F,0x11,0x11,0x11,0x0E,0x00,0x00,0x04,0xFC,0x04,0x04,0x04,0x88,0x70,0x00, /*C */ 0x03,0x0C,0x10,0x10,0x10,0x10,0x1C,0x00,0xE0,0x18,0x04,0x04,0x04,0x08,0x10,0x00, /*D */ 0x10,0x1F,0x10,0x10,0x10,0x08,0x07,0x00,0x04,0xFC,0x04,0x04,0x04,0x08,0xF0,0x00, /*E */ 0x10,0x1F,0x11,0x11,0x17,0x10,0x08,0x00,0x04,0xFC,0x04,0x04,0xC4,0x04,0x18,0x00, /*F */ 0x10,0x1F,0x11,0x11,0x17,0x10,0x08,0x00,0x04,0xFC,0x04,0x00,0xC0,0x00,0x00,0x00, /*G */ 0x03,0x0C,0x10,0x10,0x10,0x1C,0x00,0x00,0xE0,0x18,0x04,0x04,0x44,0x78,0x40,0x00, /*H */ 0x10,0x1F,0x10,0x00,0x00,0x10,0x1F,0x10,0x04,0xFC,0x84,0x80,0x80,0x84,0xFC,0x04, /*I */ 0x00,0x10,0x10,0x1F,0x10,0x10,0x00,0x00,0x00,0x04,0x04,0xFC,0x04,0x04,0x00,0x00, /*J */ 0x00,0x00,0x10,0x10,0x1F,0x10,0x10,0x00,0x03,0x01,0x01,0x01,0xFE,0x00,0x00,0x00, /*K */ 0x10,0x1F,0x11,0x03,0x14,0x18,0x10,0x00,0x04,0xFC,0x04,0x80,0x64,0x1C,0x04,0x00, /*L */ 0x10,0x1F,0x10,0x00,0x00,0x00,0x00,0x00,0x04,0xFC,0x04,0x04,0x04,0x04,0x0C,0x00, /*M */ 0x10,0x1F,0x1F,0x00,0x1F,0x1F,0x10,0x00,0x04,0xFC,0x00,0xFC,0x00,0xFC,0x04,0x00, /*N */ 0x10,0x1F,0x0C,0x03,0x00,0x10,0x1F,0x10,0x04,0xFC,0x04,0x00,0xE0,0x18,0xFC,0x00, /*O */ 0x07,0x08,0x10,0x10,0x10,0x08,0x07,0x00,0xF0,0x08,0x04,0x04,0x04,0x08,0xF0,0x00, /*P */ 0x10,0x1F,0x10,0x10,0x10,0x10,0x0F,0x00,0x04,0xFC,0x84,0x80,0x80,0x80,0x00,0x00, /*Q */ 0x07,0x08,0x10,0x10,0x10,0x08,0x07,0x00,0xF0,0x18,0x24,0x24,0x1C,0x0A,0xF2,0x00, /*R */ 0x10,0x1F,0x11,0x11,0x11,0x11,0x0E,0x00,0x04,0xFC,0x04,0x00,0xC0,0x30,0x0C,0x04, /*S */ 0x00,0x0E,0x11,0x10,0x10,0x10,0x1C,0x00,0x00,0x1C,0x04,0x84,0x84,0x44,0x38,0x00, /*T */ 0x18,0x10,0x10,0x1F,0x10,0x10,0x18,0x00,0x00,0x00,0x04,0xFC,0x04,0x00,0x00,0x00, /*U */ 0x10,0x1F,0x10,0x00,0x00,0x10,0x1F,0x10,0x00,0xF8,0x04,0x04,0x04,0x04,0xF8,0x00, /*V */ 0x10,0x1E,0x11,0x00,0x00,0x13,0x1C,0x10,0x00,0x00,0xE0,0x1C,0x70,0x80,0x00,0x00, /*W */ 0x1F,0x10,0x00,0x1F,0x00,0x10,0x1F,0x00,0xC0,0x3C,0xE0,0x00,0xE0,0x3C,0xC0,0x00, /*X */ 0x10,0x18,0x16,0x01,0x01,0x16,0x18,0x10,0x04,0x0C,0x34,0xC0,0xC0,0x34,0x0C,0x04, /*Y */ 0x10,0x1C,0x13,0x00,0x13,0x1C,0x10,0x00,0x00,0x00,0x04,0xFC,0x04,0x00,0x00,0x00, /*Z */ 0x08,0x10,0x10,0x10,0x13,0x1C,0x10,0x00,0x04,0x1C,0x64,0x84,0x04,0x04,0x18,0x00, /*[ */ 0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00, /*\ */ 0x00,0x30,0x0C,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x1C,0x03,0x00, /*] */ 0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00, /*^ */ 0x00,0x00,0x20,0x40,0x40,0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*_ */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, /*` */ 0x00,0x40,0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*a */ 0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x98,0x24,0x44,0x44,0x44,0xFC,0x04, /*b */ 0x10,0x1F,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0xFC,0x88,0x04,0x04,0x88,0x70,0x00, /*c */ 0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x70,0x88,0x04,0x04,0x04,0x88,0x00, /*d */ 0x00,0x00,0x00,0x01,0x01,0x11,0x1F,0x00,0x00,0x70,0x88,0x04,0x04,0x08,0xFC,0x04, /*e */ 0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0xF8,0x44,0x44,0x44,0x44,0xC8,0x00, /*f */ 0x00,0x01,0x01,0x0F,0x11,0x11,0x11,0x18,0x00,0x04,0x04,0xFC,0x04,0x04,0x00,0x00, /*g */ 0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0xD6,0x29,0x29,0x29,0xC9,0x06,0x00, /*h */ 0x10,0x1F,0x00,0x01,0x01,0x01,0x00,0x00,0x04,0xFC,0x84,0x00,0x00,0x04,0xFC,0x04, /*i */ 0x00,0x01,0x19,0x19,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0xFC,0x04,0x04,0x00,0x00, /*j */ 0x00,0x00,0x00,0x01,0x19,0x19,0x00,0x00,0x00,0x03,0x01,0x01,0x01,0xFE,0x00,0x00, /*k */ 0x10,0x1F,0x00,0x00,0x01,0x01,0x01,0x00,0x04,0xFC,0x24,0x40,0xB4,0x0C,0x04,0x00, /*l */ 0x00,0x10,0x10,0x1F,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0xFC,0x04,0x04,0x00,0x00, /*m */ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x04,0xFC,0x04,0x00,0xFC,0x04,0x00,0xFC, /*n */ 0x01,0x01,0x00,0x01,0x01,0x01,0x00,0x00,0x04,0xFC,0x84,0x00,0x00,0x04,0xFC,0x04, /*o */ 0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0xF8,0x04,0x04,0x04,0x04,0xF8,0x00, /*p */ 0x01,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x01,0xFF,0x85,0x04,0x04,0x88,0x70,0x00, /*q */ 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x70,0x88,0x04,0x04,0x05,0xFF,0x01, /*r */ 0x01,0x01,0x01,0x00,0x01,0x01,0x01,0x00,0x04,0x04,0xFC,0x84,0x04,0x00,0x80,0x00, /*s */ 0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0xCC,0x24,0x24,0x24,0x24,0x98,0x00, /*t */ 0x00,0x01,0x01,0x07,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0xF8,0x04,0x04,0x00,0x00, /*u */ 0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0xF8,0x04,0x04,0x04,0x08,0xFC,0x04, /*v */ 0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x00,0x80,0x70,0x0C,0x10,0x60,0x80,0x00, /*w */ 0x01,0x01,0x00,0x01,0x00,0x01,0x01,0x01,0xF0,0x0C,0x30,0xC0,0x30,0x0C,0xF0,0x00, /*x */ 0x00,0x01,0x01,0x00,0x01,0x01,0x01,0x00,0x00,0x04,0x8C,0x74,0x70,0x8C,0x04,0x00, /*y */ 0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x81,0x71,0x0E,0x18,0x60,0x80,0x00, /*z */ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x84,0x0C,0x34,0x44,0x84,0x0C,0x00, /*{ */ 0x00,0x00,0x00,0x00,0x01,0x3E,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0xFC,0x02,0x02, /*| */ 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, /*} */ 0x00,0x40,0x40,0x3E,0x01,0x00,0x00,0x00,0x00,0x02,0x02,0xFC,0x00,0x00,0x00,0x00, /*~ */ 0x00,0x60,0x80,0x80,0x40,0x40,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; Uchar code bmp1[]={ //一幅12864图片的纵向取模的数据 };
本文出自 LcdBBS,转载时请注明出处及相应链接。