#include //#include #include #define Uchar unsigned char #define Uint unsigned int sbit CS=P1^7; //PIN 16 sbit REST=P1^6; //PIN 4 sbit RS=P1^5; //PIN 5 sbit SDA=P1^3; //PIN 14 sbit SCL=P1^4; //PIN 13 void DispBmp(Uchar *bmp); void Disp(Uchar dot1,Uchar dot2); void ComWrite(Uchar com); void DatWrite(Uchar dat); void Initial(void); //void ScanIcon(void); //void ScanIcon1(void); extern Uchar code tx1[]; extern Uchar code tx2[]; //extern Uchar code tx3[]; Uchar Ratio=0x22; Uchar Refer=0x1A; //Vlcd voltage parameter void disp_hz(); //#include delay_ms(unsigned int l) { int j; //int k; while(l--) { for(j=0;j<100;j++) { } } } unsigned char code dat[]= { /*反显示 /*-- 文字: 云 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0xDF,0xFF,0xE3,0xCF,0xDF,0xF3,0xE3,0x00,0xFF,0x33,0x33,0xFF,0xFF,0x00, 0x00,0x60,0x77,0x17,0x06,0x66,0x76,0x17,0x07,0x60,0x73,0x13,0x03,0x33,0x73,0x40, /*-- 文字: 对 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0xE0,0xEE,0x3E,0xF6,0xE6,0x27,0xEF,0xFC,0x18,0xFE,0xFE,0xC6,0xFE,0xFE, 0x00,0x70,0x63,0x63,0x7B,0x3F,0x07,0x0F,0x1B,0x33,0x60,0x4F,0x0F,0x0C,0x1F,0x1F, /*-- 文字: 雨 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x00,0xFE,0xFE,0x06,0x76,0xC6,0x86,0xC6,0x66,0x36,0xFE,0xFE,0x00,0x00, 0x00,0x78,0x70,0x3F,0x1F,0x00,0x0E,0x03,0x01,0x06,0x0C,0x08,0x03,0x1F,0x7C,0x20, /*-- 文字: 雪 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x30,0x30,0xFE,0xFE,0x30,0xB0,0xB0,0x00,0x7C,0xFC,0x0C,0x8C,0xCC,0x4C,0x00, 0x00,0x00,0x00,0x3F,0x7F,0x60,0x63,0x01,0x00,0x1C,0x0F,0x03,0x0F,0x18,0x30,0x20, /*-- 文字: 对 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x38,0x3B,0x0B,0xAB,0xAB,0x0B,0xFF,0xFF,0x0B,0xAB,0xAB,0x0B,0x3B,0x38,0x00, 0x00,0x00,0x7E,0x7E,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x00,0x00,0x00, /*-- 文字: 风 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0xF6,0xF6,0x36,0xB6,0xB6,0xFE,0xFE,0x36,0xB6,0xB6,0xF6,0xF6,0x06,0x00, 0x00,0x00,0x3F,0x7F,0x60,0x0D,0x04,0x3F,0x3F,0x00,0x0D,0x04,0x7F,0x7F,0x00,0x00, /*-- 文字: 晚 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x30,0x30,0xFE,0xFE,0x30,0xB0,0xB0,0x00,0x7C,0xFC,0x0C,0x8C,0xCC,0x4C,0x00, 0x00,0x00,0x00,0x3F,0x7F,0x60,0x63,0x01,0x00,0x1C,0x0F,0x03,0x0F,0x18,0x30,0x20, /*-- 文字: 照 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x60,0x60,0x66,0x66,0x66,0x66,0xE6,0xE6,0x66,0x66,0x66,0x60,0x60,0x00, 0x00,0x00,0x60,0x78,0x3C,0x36,0x30,0x30,0x31,0x33,0x36,0x3C,0x38,0x30,0x00,0x00, /*-- 文字: 对 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x03,0xA3,0xB3,0xEB,0xE3,0xBB,0xFB,0xE3,0x9B,0xFB,0xE3,0xC3,0xFF,0xFF,0x00, 0x00,0x30,0x34,0x34,0x3F,0x3F,0x34,0x7F,0x7F,0x00,0x7F,0x7F,0x00,0x1F,0x3F,0x60, /*-- 文字: 晴 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x80,0x80,0x98,0x98,0x98,0x98,0xFF,0xFF,0x98,0x98,0x98,0x98,0x98,0x80,0x80, 0x00,0x01,0x61,0x71,0x39,0x3D,0x35,0x31,0x61,0x67,0x6F,0x79,0x71,0x61,0x01,0x01, /*-- 文字: 空 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x30,0x30,0xFE,0xFE,0x30,0xB0,0xB0,0x00,0x7C,0xFC,0x0C,0x8C,0xCC,0x4C,0x00, 0x00,0x00,0x00,0x3F,0x7F,0x60,0x63,0x01,0x00,0x1C,0x0F,0x03,0x0F,0x18,0x30,0x20, /*-- 文字: 来 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x3E,0x7E,0x46,0x37,0x07,0xFE,0xFE,0x18,0xF8,0xF8,0x18,0x06,0x63,0x30, 0x00,0x00,0x3F,0x7F,0x63,0x1B,0x1B,0x1B,0x1B,0x06,0x07,0x0F,0x0C,0x06,0x3E,0x38, /*-- 文字: 鸿 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x80,0x80,0x8C,0xBC,0xEC,0xCC,0x8C,0xFF,0xFF,0x8C,0xCC,0xEC,0xBC,0x8C,0x80, 0x00,0x21,0x31,0x31,0x19,0x0D,0x07,0x03,0x7F,0x7F,0x03,0x07,0x0D,0x19,0x31,0x21, /*-- 文字: 对 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x1C,0x9C,0xCC,0x4C,0x6C,0x2C,0x0E,0x0F,0x0D,0x2C,0x6C,0x4C,0xDC,0x9C,0x00, 0x00,0x60,0x60,0x66,0x66,0x66,0x66,0x7E,0x7E,0x66,0x66,0x66,0x66,0x60,0x60,0x00, /*-- 文字: 去 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x20,0xAA,0xAA,0xAA,0xBF,0xBF,0xAA,0xAA,0x20,0xFE,0xFE,0xC6,0xFE,0xFE,0x00, 0x00,0x00,0x3F,0x7F,0x6A,0x0A,0x0A,0x7F,0x7F,0x00,0x1F,0x1F,0x0C,0x1F,0x1F,0x00, /*-- 文字: 雁 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x30,0x30,0xFE,0xFE,0x30,0xB0,0xB0,0x00,0x7C,0xFC,0x0C,0x8C,0xCC,0x4C,0x00, 0x00,0x00,0x00,0x3F,0x7F,0x60,0x63,0x01,0x00,0x1C,0x0F,0x03,0x0F,0x18,0x30,0x20, //正显示(正向取模 字节倒序) /*-- 文字: 云 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x00,0x60,0x60,0x66,0x66,0x66,0xE6,0xE6,0x66,0x66,0x66,0x66,0x60,0x60,0x00,0x00, 0x00,0x00,0x30,0x38,0x3C,0x36,0x33,0x31,0x30,0x30,0x36,0x3C,0x78,0x60,0x00,0x00, /*-- 文字: 对 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x00,0x4C,0xCC,0x8C,0x0C,0xFC,0x7C,0x00,0xB0,0xB0,0x30,0xFE,0xFE,0x30,0x30,0x00, 0x20,0x30,0x18,0x0F,0x03,0x0F,0x1C,0x00,0x01,0x63,0x60,0x7F,0x3F,0x00,0x00,0x00, /*-- 文字: 雨 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x00,0x06,0xF6,0xF6,0xB6,0xB6,0x36,0xFE,0xFE,0xB6,0xB6,0x36,0xF6,0xF6,0x00,0x00, 0x00,0x00,0x7F,0x7F,0x04,0x0D,0x00,0x3F,0x3F,0x04,0x0D,0x60,0x7F,0x3F,0x00,0x00, /*-- 文字: 雪 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x00,0x38,0x3B,0x0B,0xAB,0xAB,0x0B,0xFF,0xFF,0x0B,0xAB,0xAB,0x0B,0x3B,0x38,0x00, 0x00,0x00,0x00,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x7E,0x7E,0x00,0x00, /*-- 文字: 对 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x00,0x4C,0xCC,0x8C,0x0C,0xFC,0x7C,0x00,0xB0,0xB0,0x30,0xFE,0xFE,0x30,0x30,0x00, 0x20,0x30,0x18,0x0F,0x03,0x0F,0x1C,0x00,0x01,0x63,0x60,0x7F,0x3F,0x00,0x00,0x00, /*-- 文字: 风 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x00,0x00,0xFE,0xFE,0x36,0x66,0xC6,0x86,0xC6,0x76,0x06,0xFE,0xFE,0x00,0x00,0x00, 0x20,0x7C,0x1F,0x03,0x08,0x0C,0x06,0x01,0x03,0x0E,0x00,0x1F,0x3F,0x70,0x78,0x00, /*-- 文字: 晚 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0xFE,0xFE,0xC6,0xFE,0xFE,0x18,0xFC,0xEF,0x27,0xE6,0xF6,0x3E,0xEE,0xE0,0x00,0x00, 0x1F,0x1F,0x0C,0x0F,0x4F,0x60,0x33,0x1B,0x0F,0x07,0x3F,0x7B,0x63,0x63,0x70,0x00, /*-- 文字: 照 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x00,0xFF,0xFF,0x33,0x33,0xFF,0x00,0xE3,0xF3,0xDF,0xCF,0xE3,0xFF,0xDF,0x00,0x00, 0x40,0x73,0x33,0x03,0x13,0x73,0x60,0x07,0x17,0x76,0x66,0x06,0x17,0x77,0x60,0x00, /*-- 文字: 对 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x00,0x4C,0xCC,0x8C,0x0C,0xFC,0x7C,0x00,0xB0,0xB0,0x30,0xFE,0xFE,0x30,0x30,0x00, 0x20,0x30,0x18,0x0F,0x03,0x0F,0x1C,0x00,0x01,0x63,0x60,0x7F,0x3F,0x00,0x00,0x00, /*-- 文字: 晴 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x00,0xFE,0xFE,0xC6,0xFE,0xFE,0x20,0xAA,0xAA,0xBF,0xBF,0xAA,0xAA,0xAA,0x20,0x00, 0x00,0x1F,0x1F,0x0C,0x1F,0x1F,0x00,0x7F,0x7F,0x0A,0x0A,0x6A,0x7F,0x3F,0x00,0x00, /*-- 文字: 空 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x00,0x9C,0xDC,0x4C,0x6C,0x2C,0x0D,0x0F,0x0E,0x2C,0x6C,0x4C,0xCC,0x9C,0x1C,0x00, 0x00,0x60,0x60,0x66,0x66,0x66,0x66,0x7E,0x7E,0x66,0x66,0x66,0x66,0x60,0x60,0x00, /*-- 文字: 来 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x80,0x8C,0xBC,0xEC,0xCC,0x8C,0xFF,0xFF,0x8C,0xCC,0xEC,0xBC,0x8C,0x80,0x80,0x00, 0x21,0x31,0x19,0x0D,0x07,0x03,0x7F,0x7F,0x03,0x07,0x0D,0x19,0x31,0x31,0x21,0x00, /*-- 文字: 鸿 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x30,0x63,0x06,0x18,0xF8,0xF8,0x18,0xFE,0xFE,0x07,0x37,0x46,0x7E,0x3E,0x00,0x00, 0x38,0x3E,0x06,0x0C,0x0F,0x07,0x06,0x1B,0x1B,0x1B,0x1B,0x63,0x7F,0x3F,0x00,0x00, /*-- 文字: 对 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x00,0x4C,0xCC,0x8C,0x0C,0xFC,0x7C,0x00,0xB0,0xB0,0x30,0xFE,0xFE,0x30,0x30,0x00, 0x20,0x30,0x18,0x0F,0x03,0x0F,0x1C,0x00,0x01,0x63,0x60,0x7F,0x3F,0x00,0x00,0x00, /*-- 文字: 去 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x80,0x80,0x98,0x98,0x98,0x98,0x98,0xFF,0xFF,0x98,0x98,0x98,0x98,0x80,0x80,0x00, 0x01,0x01,0x61,0x71,0x79,0x6F,0x67,0x61,0x31,0x35,0x3D,0x39,0x71,0x61,0x01,0x00, /*-- 文字: 雁 --*/ /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/ /*0x00,0xFF,0xFF,0xC3,0xE3,0xFB,0x9B,0xE3,0xFB,0xBB,0xE3,0xEB,0xB3,0xA3,0x03,0x00, 0x60,0x3F,0x1F,0x00,0x7F,0x7F,0x00,0x7F,0x7F,0x34,0x3F,0x3F,0x34,0x34,0x30,0x00, */ }; void DispBmp (Uchar *bmp) { Uchar cnt; Uchar cnt1; for(cnt=0;cnt<9;cnt++) {ComWrite(0xb0+cnt); //Set Page Address 0~7 ComWrite(0x10); ComWrite(0x00); for(cnt1=0;cnt1<128;cnt1++) DatWrite(*bmp++); } // delay (10000); } // ------------------ 汉字字模的数据结构定义 ------------------------ // typedef struct typFNT_GB16 // 汉字字模数据结构 { signed char Index[2]; // 汉字内码索引 char Msk[32]; // 点阵码数据 }; struct typFNT_GB16 code GB_16[] = // 数据表 { "中", 0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0xFF, 0x08,0x08,0x08,0x08,0x08,0xFC,0x08,0x00, 0x00,0x03,0x01,0x01,0x01,0x01,0x01,0xFF, 0x01,0x01,0x01,0x01,0x01,0x03,0x00,0x00, "国", 0x00,0xFE,0x02,0x0A,0x8A,0x8A,0x8A,0xFA, 0x8A,0xCA,0x8E,0x0A,0x02,0xFF,0x02,0x00, 0x00,0xFF,0x40,0x50,0x50,0x50,0x50,0x5F, 0x50,0x52,0x54,0x50,0x40,0xFF,0x00,0x00, "人", 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x7F, 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00, 0x03,0x0C,0x10,0x20,0x40,0xC0,0x40,0x00, "民", 0x00,0xFE,0x22,0x22,0x22,0x22,0xE2,0x22, 0x22,0x22,0x22,0x3F,0x82,0x00,0x00,0x00, 0x00,0xFF,0x41,0x21,0x11,0x01,0x03,0x0D, 0x11,0x21,0x41,0x41,0x81,0x81,0xE0,0x00 }; void disp_mark() { unsigned char i,j,k; unsigned char l,h; k=1; for(i=123;i<=127;i++) { delay_ms(300); ComWrite(0xb0+8); //第8页 l=i&0x0f; h=(i&0xf0)>>4; ComWrite(0x10+h); ComWrite(0x00+l); DatWrite(1); // k=k<<1; } } void clr_mark() { unsigned char i,j,k; unsigned char l,h; k=1; for(i=123;i<=127;i++) { delay_ms(300); ComWrite(0xb0+8); l=i&0x0f; h=(i&0xf0)>>4; ComWrite(0x10+h); ComWrite(0x00+l); DatWrite(0); // k=k<<1; } } void disp_hz1() { int i,j,k; /* unsigned char GB_16[] = // 数据表 { 0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0xFF, //中 0x08,0x08,0x08,0x08,0x08,0xFC,0x08,0x00, 0x00,0x03,0x01,0x01,0x01,0x01,0x01,0xFF, 0x01,0x01,0x01,0x01,0x01,0x03,0x00,0x00, }; */ for(k=0;k<8;k++) //8个字符 { for(i=0;i<2;i++) //2个页面 { ComWrite(0xb0+i); //Set Page Address 0~7 ComWrite(0x10+(k*16>>4)); ComWrite(0x00); for(j=0;j<16;j++) //每个页面有16个数据 { // DatWrite(GB_16[j+i*16]); //在同一行显示8个中 DatWrite(dat[k*32+j+i*16]); } } } for(k=0;k<8;k++) //8个中文字 { for(i=0;i<2;i++) //2个页面 { ComWrite(0xb0+i+2); //Set Page Address 0~7 第2 和第3个页面 ComWrite(0x10+(k*16>>4)); ComWrite(0x00); for(j=0;j<16;j++) //每个页面有16个数据 { // DatWrite(GB_16[j+i*16]); //在同一行显示8个中 // DatWrite(dat[k].Msk[j+i*16]); DatWrite(dat[(k+8)*32+j+i*16]); //第2行从第9个汉字开始 } } } } void disp_hz() { int i,j,k; /* unsigned char GB_16[] = // 数据表 { 0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0xFF, //中 0x08,0x08,0x08,0x08,0x08,0xFC,0x08,0x00, 0x00,0x03,0x01,0x01,0x01,0x01,0x01,0xFF, 0x01,0x01,0x01,0x01,0x01,0x03,0x00,0x00, }; */ for(k=0;k<8;k++) //8个字符 { for(i=0;i<2;i++) //2个页面 { ComWrite(0xb0+i); //Set Page Address 0~7 ComWrite(0x10+(k*16>>4)); ComWrite(0x00); for(j=0;j<16;j++) //每个页面有16个数据 { // DatWrite(GB_16[j+i*16]); //在同一行显示8个中 DatWrite(GB_16[k].Msk[j+i*16]); } } for(i=2;i<4;i++) //2个页面 { ComWrite(0xb0+i); //Set Page Address 0~7 ComWrite(0x10+(k*16>>4)); ComWrite(0x00); for(j=0;j<16;j++) //每个页面有16个数据 { // DatWrite(GB_16[j+i*16]); //在同一行显示8个中 DatWrite(GB_16[k].Msk[j+(i-2)*16]); } } } /* for(i=0;i<2;i++) { ComWrite(0xb0+i); //Set Page Address 0~7 ComWrite(0x11); ComWrite(0x00); for(j=0;j<16;j++) { DatWrite(GB_16[j+i*16]); } } for(i=0;i<2;i++) { ComWrite(0xb0+i); //Set Page Address 0~7 ComWrite(0x12); ComWrite(0x00); for(j=0;j<16;j++) { DatWrite(GB_16[j+i*16]); } }*/ } void Disp(Uchar dot1,Uchar dot2) { Uchar cnt; Uchar cnt1; for(cnt=0;cnt<4;cnt++) { ComWrite(0xb0+cnt); //Set Page Address 0~7 ComWrite(0x10); ComWrite(0x00); for(cnt1=0;cnt1<128;cnt1++) { // DatWrite(dot1); DatWrite(dot2); // delay (50); } } // delay(10000); } /*void ScanIcon(void) { Uchar cnt1; ComWrite(0xB8); ComWrite(0x10); ComWrite(0x00); for(cnt1=0; cnt1<4; cnt1++) { DatWrite(0xFF); delay(3000); } } void ScanIcon1(void) { Uchar cnt1; ComWrite(0xB8); ComWrite(0x17); ComWrite(0x06); for(cnt1=0; cnt1<10; cnt1++) { DatWrite(0xFF); delay(3000); } }*/ void Initial() { CS =0; REST=0; // delay(100); REST=1; // delay(100); ComWrite(0Xa2); // 1/8 bias ComWrite(0Xa0); // ADC ComWrite(0Xc0); // COM scan Direction ComWrite(Ratio); ComWrite(0X81); //set V0 output voltage electronic volum register ComWrite(Refer); // ComWrite(0X2c); // ComWrite(0X2e); ComWrite(0X2f); //power control set ComWrite(0X40); // start line 00 ComWrite(0Xaf); //display on ComWrite(0Xf8); ComWrite(0X00); } void DatWrite(Uchar dat) { unsigned char count; RS=1; for (count = 0; count < 8; count++) { SCL=0; SDA=(bit)(dat&0x80); SCL=1; dat=dat<<1; } } void ComWrite(Uchar com) { unsigned char count; RS=0; for (count = 0; count < 8; count++) { SCL=0; SDA=(bit)(com&0x80); SCL=1; com=com<<1; } } void main (void) { EA=1; EX1=1; PX1=1; IT1=1; Initial(); while(1) { // DispBmp(tx1); // DispBmp(tx2); // DispBmp(tx3); // Disp(0x00,0x00); // delay_ms(500); disp_mark(); // delay_ms(500); disp_hz1(); delay_ms(5000); // Disp(0x0ff,0x0ff); // delay_ms(500); // Disp(0x00,0x00); // delay_ms(500); Disp(0x55,0x55); delay_ms(500); Disp(0x0aa,0x0aa); delay_ms(300); // Disp(0x0ff,0x00); // delay_ms(500); // Disp(0x00,0x0ff); // delay_ms(500); Disp(0x0aa,0x55); delay_ms(300); Disp(0x055,0xaa); // delay_ms(500); // clr_mark(); // delay_ms(500); // ScanIcon(); // ScanIcon1(); //Disp(0x55,0x0aa); //Disp(0x0ff,0x0ff); //Disp(0x00,0x00); } }