十七、128*64显示 实验电路图:
源程序:
#include
#define LCD12864_RS (1<<7) #define LCD12864_RW (1<<6) #define LCD12864_E (1<<5) #define LCD12864_CS1 (1<<16) #define LCD12864_CS2 (1<<17) uint32 doyleee[] = {
0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x81,0xF1,0xF1,0xF1,0x71,0x31, 0x31,0x71,0xF1,0xF1,0xE1,0xC1,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x81,0xF1,0xF1,0xF1,0x71,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 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,0xF0,0xFF,0xFF,0xFF,0x0F,0x00,0x00, 0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x7F,0x00, 0x00,0xF0,0xFC,0xFE,0xFE,0x0F,0x03,0x03, 0x07,0xFF,0xFE,0xFE,0xF8,0x00,0xE0,0xE0, 0xE0,0xE0,0x00,0x03,0x3F,0xFF,0xFF,0xFC, 0xC0,0xF0,0xFE,0x3F,0x0F,0x03,0x00,0xF0, 0xFF,0xFF,0xFF,0x0F,0x00,0x00,0xF0,0xFC, 0xFE,0xFE,0x3F,0x33,0x33,0x33,0x3F,0x3F, 0x3E,0x38,0x00,0x00,0xF0,0xFC,0xFE,0xFE, 0x3F,0x33,0x33,0x33,0x3F,0x3F,0x3E,0x38, 0x00,0x00,0xF0,0xFC,0xFE,0xFE,0x3F,0x33, 0x33,0x33,0x3F,0x3F,0x3E,0x38,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80, 0x8E,0x8F,0x8F,0x8F,0x8C,0x8C,0x8C,0x8C, 0x8E,0x8F,0x87,0x87,0x83,0x81,0x80,0x80, 0x80,0x81,0x87,0x87,0x8F,0x8E,0x8C,0x8C, 0x8F,0x87,0x87,0x83,0x80,0x80,0x80,0xC0, 0xC0,0xC0,0xC0,0xC0,0xC0,0xF3,0x7F,0x3F, 0x0F,0x03,0x00,0x00,0x00,0x00,0x0E,0x0F, 0x0F,0x0F,0x00,0x00,0x00,0x00,0x01,0x07, 0x07,0x0F,0x0E,0x0C,0x0C,0x0F,0x07,0x03, 0x01,0x00,0x00,0x00,0x01,0x07,0x07,0x0F, 0x0E,0x0C,0x0C,0x0F,0x07,0x03,0x01,0x00, 0x00,0x00,0x01,0x07,0x07,0x0F,0x0E,0x0C, 0x0C,0x0F,0x07,0x03,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x00,0x00,0xFC, 0xFC,0x04,0x0C,0xF8,0xF0,0x00,0x00,0xF0, 0xF0,0x00,0x00,0xF0,0xF0,0x00,0x00,0x40, 0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x10, 0x10,0x18,0xFC,0xFC,0x00,0x00,0x00,0x18, 0x1C,0x84,0xC4,0x7C,0x38,0x00,0x00,0xB8, 0xFC,0x64,0xC4,0xFC,0xB8,0x00,0x00,0xE0, 0xF0,0x3C,0x2C,0xE4,0xC0,0x00,0x00,0x80, 0xFC,0x7C,0x00,0xF0,0xF0,0x00,0x00,0xFC, 0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0xF8, 0xFC,0x04,0x04,0x1C,0x18,0x00,0x00,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07, 0x07,0x04,0x06,0x03,0x01,0x00,0x20,0x23, 0x27,0x34,0x1C,0x0F,0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x07,0x07,0x04,0x00,0x00,0x06, 0x07,0x05,0x04,0x04,0x04,0x00,0x00,0x03, 0x07,0x04,0x04,0x07,0x03,0x00,0x00,0x03, 0x07,0x04,0x04,0x07,0x03,0x00,0x00,0x01, 0x01,0x01,0x01,0x07,0x07,0x01,0x00,0x07, 0x07,0x04,0x04,0x04,0x04,0x00,0x00,0x03, 0x07,0x04,0x04,0x07,0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0, 0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x00, 0x00,0x20,0x20,0xF0,0xF0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0, 0x10,0x10,0x90,0x50,0xF0,0xE0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x81,0x83, 0x86,0x8C,0x8C,0x86,0x83,0x81,0x80,0x80, 0x88,0x88,0x88,0x8F,0x8F,0x88,0x88,0x88, 0x80,0x80,0x8C,0x8C,0x80,0x80,0x87,0x8F, 0x8A,0x89,0x88,0x88,0x8F,0x87,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF };
void delayms(uint8 x) { uint8 i; while(x--) for(i=50000;i>0;i--); }
void Read_busy() { IO0CLR=IO0CLR|0xff00; IO0SET=LCD12864_RW ; IO0CLR=LCD12864_RS; IO0SET=LCD12864_E; while((IO0CLR=IO0CLR|0xff00) & 0x80); IO0CLR=LCD12864_E; }
void LCD12864_WriteCOM(uint8 com) { IO0CLR=LCD12864_RW; IO0CLR=LCD12864_RS;
Read_busy();
IO0CLR=IO0CLR|0xff00; IO0SET=com<<8; IO0SET=LCD12864_E; IO0CLR=LCD12864_E; Read_busy(); }
void LCD12864_WriteData(uint8 dat)
{ IO0CLR=LCD12864_RW; IO0SET=LCD12864_RS; IO0CLR=IO0CLR|0xff00; IO0SET=dat<<8; IO0SET=LCD12864_E; IO0CLR=LCD12864_E; Read_busy(); }
unsigned char LCD12864_ReadData(void) { unsigned char LCD12864_data; IO0CLR=LCD12864_E; IO0SET=LCD12864_RW; IO0SET=LCD12864_RS; IO0SET=LCD12864_E; LCD12864_data =IO0DIR|0xff00;
Read_busy(); //读LCM忙 return LCD12864_data; }
void LCD12864_Write1Byte_X_Y( unsigned char x, unsigned char y, unsigned char LCD12864_data)
{ x = x&0x7f; y = y&0x3f; IO0SET=LCD12864_CS1;
IO0SET=LCD12864_CS2; if(x<64) { IO0CLR=LCD12864_CS1; } else{ IO0CLR=LCD12864_CS2; x = x-64; } LCD12864_WriteCOM(0x40+x); LCD12864_WriteCOM(0xb8+y); LCD12864_WriteData(LCD12864_data); }