NOKIA7110液晶在世面上還有不少 存在,顯示效果相當不錯,還有利用價值,
以下有全部單片機代碼,取摸方式,取摸軟件,這樣容易上手,還有Proteus圖
//nokia7110液晶驅動 //取摸軟件zimo21,取摸方式:縱向取摸,字節倒序,保留
#include <reg52.h> void delay_1us(unsigned int n); void LCD_init(void); void LCD_clear(void); void LCD_set_XY(unsigned char X, unsigned char Y); void LCD_write_char(unsigned char c); void LCD_write_english_string(unsigned char X,unsigned char Y,char*s);//英語 void LCD_write_chinese_string(unsigned char X, unsigned char Y,unsigned char ch_with,unsigned char num, unsigned char line,unsigned char row);//漢字 void LCD_write_byte(unsigned char dat, unsigned char command); sbit SCLK = P1^5; sbit SDIN = P1^4; sbit LCD_DC = P1^3; sbit LCD_CE = P1^1; sbit LCD_RST = P1^2; sbit LED = P1^6; code unsigned char write_chinese[18][32]={ {0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,0x20,0xFF,0x20,0x22,0x2C,0xA0,0x20,0x00, 0x00,0x08,0x48,0x84,0x7F,0x02,0x41,0x40,0x20,0x13,0x0C,0x14,0x22,0x41,0xF8,0x00},//我 {0x80,0x64,0x2C,0x34,0x24,0x24,0xEC,0x32,0x22,0x22,0x32,0x2E,0x23,0xA2,0x60,0x00, 0x00,0x41,0x21,0x91,0x89,0x87,0x4D,0x55,0x25,0x25,0x55,0x4D,0x81,0x80,0x80,0x00},//愛 {0x00,0x80,0x60,0xF8,0x07,0x40,0x20,0x18,0x0F,0x08,0xC8,0x08,0x08,0x28,0x18,0x00, 0x01,0x00,0x00,0xFF,0x00,0x10,0x0C,0x03,0x40,0x80,0x7F,0x00,0x01,0x06,0x18,0x00},//你 {0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00, 0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x0F,0x00,0x00,0x00},/*"中",0*/ {0x00,0xFE,0x02,0x12,0x92,0x92,0x92,0xF2,0x92,0x92,0x92,0x12,0x02,0xFE,0x00,0x00, 0x00,0xFF,0x40,0x48,0x48,0x48,0x48,0x4F,0x48,0x4A,0x4C,0x48,0x40,0xFF,0x00,0x00},/*"國",1*/ {0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x00},/*"人",2*/ /*-- 文字: 中 --*/ /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/ 0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00, 0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x0F,0x00,0x00,0x00, /*-- 文字: 國 --*/ /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/ 0x00,0xFE,0x02,0x12,0x92,0x92,0x92,0xF2,0x92,0x92,0x92,0x12,0x02,0xFE,0x00,0x00, 0x00,0xFF,0x40,0x48,0x48,0x48,0x48,0x4F,0x48,0x4A,0x4C,0x48,0x40,0xFF,0x00,0x00, /*-- 文字: 人 --*/ /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x00, /*-- 文字: 民 --*/ /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/ 0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0x3E,0x00,0x00,0x00, 0x00,0x00,0xFF,0x41,0x21,0x11,0x01,0x01,0x03,0x0D,0x11,0x21,0x41,0xF1,0x00,0x00, /*-- 文字: --*/ /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/ 0x12,0xEA,0xAF,0xAA,0xEA,0x0F,0xFA,0x02,0x88,0x8C,0x57,0x24,0x54,0x8C,0x84,0x00, 0x02,0x02,0xEA,0xAA,0xAA,0xAB,0xAA,0xAB,0xAA,0xAA,0xAA,0xAA,0xEA,0x02,0x02,0x00, /*-- 文字: --*/ /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/ 0x08,0x46,0xA2,0x5A,0x92,0x52,0x32,0x03,0x3A,0x52,0x92,0x52,0x32,0x0A,0x06,0x00, 0x04,0x44,0x22,0x15,0x04,0x45,0x85,0x7D,0x05,0x05,0x04,0x15,0x21,0x42,0x02,0x00, /*-- 文字: 中 --*/ /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/ 0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00, 0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x0F,0x00,0x00,0x00, /*-- 文字: 央 --*/ /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/ 0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0xF8,0x00,0x00,0x00,0x00, 0x82,0x82,0x42,0x43,0x22,0x12,0x0E,0x03,0x0E,0x12,0x22,0x43,0x42,0x82,0x82,0x00, /*-- 文字: 人 --*/ /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x00, /*-- 文字: --*/ /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/ 0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0x3E,0x00,0x00,0x00, 0x00,0x00,0xFF,0x41,0x21,0x11,0x01,0x01,0x03,0x0D,0x11,0x21,0x41,0xF1,0x00,0x00, /*-- 文字: --*/ /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/ 0x04,0xC4,0x04,0x04,0xFC,0x84,0x84,0x04,0x80,0x70,0x8F,0x08,0x08,0xF8,0x08,0x00, 0x20,0x3F,0x20,0x20,0x1F,0x10,0x10,0x90,0x40,0x20,0x13,0x0C,0x33,0x40,0x80,0x00, /*-- 文字: --*/ /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/ 0x00,0x00,0xFC,0x04,0x04,0xC4,0x34,0x05,0x86,0x84,0x84,0x84,0xF4,0x84,0x84,0x00, 0x40,0x30,0x0F,0x02,0x01,0xFF,0x00,0x00,0x02,0x0C,0x40,0x80,0x7F,0x00,0x00,0x00, }; code unsigned char font6x8[92][6] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }, }; //******主程序*****// void main(void) { LCD_init(); LCD_write_english_string(8,7,"QQ:");//第2列第8行開始顯示QQ LCD_write_english_string(24,7,"137670553"); //第4列第8行開始顯示123456789 //LCD_write_english_string(9,6,"QQ:"); LCD_write_chinese_string(0,0,16,6,0,0);// 第1列第1行開始顯示漢字 LCD_write_chinese_string(0,2,16,6,6,0);// 第2列第1行開始顯示漢字 LCD_write_chinese_string(0,4,16,6,12,0); // 第3列第1行開始顯示漢字 //LCD_write_chinese_string(0,6,16,6,0,0);//第4列第1行開始顯示漢字 while(1){} } //******延時程序*****// void delay_1us(unsigned int n) { unsigned int i,j; for(j=0;j<n;j++) for(i=0;i<1000;i++); } //*****LCD初始化*******// void LCD_init(void) { LCD_CE = 1; delay_1us(1); LCD_RST = 0; delay_1us(1); LCD_RST = 1; delay_1us(1); LCD_write_byte(0xA6, 0); LCD_write_byte(0xA3, 0); LCD_write_byte(0xA1, 0); LCD_write_byte(0xC0, 0); LCD_write_byte(0x22, 0); LCD_write_byte(0x81, 0); LCD_write_byte(0x2E, 0); LCD_write_byte(0x2F, 0); LCD_write_byte(0xE3, 0); LCD_write_byte(0x40, 0); LCD_write_byte(0xAF, 0); LCD_write_byte(0xA5, 0); delay_1us(5); LCD_write_byte(0xAE, 0); LCD_clear(); LCD_write_byte(0xAF, 0); LCD_write_byte(0xA4, 0); } //******LCD 清屏****// void LCD_clear(void) { unsigned int i,x; for (i=0; i<9; i++) { LCD_write_byte(0xB0|i, 0); LCD_write_byte(0x11, 0); LCD_write_byte(0x02, 0); for (x=96; x>0; x--) {LCD_write_byte(0, 0);} } } //******LCD坐標設置*******// void LCD_set_XY(unsigned char X, unsigned char Y) { LCD_write_byte(0xB0+Y, 0); X=0x12+X; LCD_write_byte(0x10+(X>>4), 0); LCD_write_byte(0x0F&X, 0); } //******寫一個字母*******// void LCD_write_char(unsigned char c) { unsigned char line; c -= 32; for (line=0; line<6; line++) LCD_write_byte(font6x8[c][line],1); } //*****寫英語*******// void LCD_write_english_string(unsigned char X,unsigned char Y,char *s) { LCD_set_XY(X,Y); while (*s) { LCD_write_char(*s); s++; } } //******寫中文******// void LCD_write_chinese_string(unsigned char X, unsigned char Y, //起始坐標 unsigned char ch_with,unsigned char num,//字寬,字數 unsigned char line,unsigned char row)//第幾個字,字間隔 { unsigned char i,n; LCD_set_XY(X,Y); for (i=0;i<num;i++) { for (n=0; n<ch_with*2; n++) { if (n==ch_with) { LCD_set_XY((X+(ch_with+row)*i),Y+1);//設置字下行的起始坐標(一個字兩行) } LCD_write_byte(write_chinese[line+i][n],1);//發送數據 } LCD_set_XY((X+(ch_with+row)*(i+1)),Y);//設置下個字的起始坐標 } } //***發送數據(1)和命令(0)*****// void LCD_write_byte(unsigned char dat, unsigned char command) { unsigned char i; LCD_CE = 0; if (command == 0) LCD_DC = 0; else LCD_DC = 1; for(i=0;i<8;i++) {SCLK = 0; if(dat&0x80) SDIN = 1; else SDIN = 0; dat = dat << 1; SCLK = 1; } LCD_CE = 1; }
|