下面是線路連接圖,我自己已經搞了整整一個測試成功了絕對可用
由于篇幅有限完整的c51代碼下載 :http://www.zg4o1577.cn/f/12864wu.rar
源代碼: #include<reg52.h> #define LCD P0 unsigned char i,j,k; sbit EN=P2^0; sbit RW=P2^1; sbit RS=P2^2; sbit CS1=P2^3; sbit CS2=P2^4; sbit BUSY=P0^0; void delay(unsigned char a); unsigned char code ban[16][16]={ {0x00,0x00,0x00,0xf0,0x90,0x90,0x90,0xfe,0x90,0x90,0x90,0xf0,0x00,0x00,0x00,0x00}, {0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x3f,0x24,0x24,0x24,0x27,0x20,0x38,0x00,0x00},//電 {0x00,0x00,0x00,0x00,0x8c,0x88,0x88,0x88,0x88,0xc8,0xa8,0x98,0x00,0x00,0x00,0x00}, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//子 {0x00,0x00,0x00,0x00,0x10,0x10,0x30,0x54,0x9c,0x90,0x50,0x00,0x30,0x10,0x00,0x00}, {0x00,0x40,0x30,0x0c,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00},//產 {0x00,0x00,0x00,0x00,0x7c,0x44,0x44,0x44,0x44,0x44,0x44,0x7c,0x00,0x00,0x00,0x00}, {0x00,0x00,0x3f,0x21,0x21,0x21,0x3f,0x00,0x00,0x3f,0x21,0x21,0x21,0x3f,0x00,0x00},//品 {0x00,0x00,0x00,0x00,0x0c,0x08,0x08,0x08,0xf8,0x08,0x08,0x08,0x08,0x00,0x00,0x00}, {0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x30,0x00,0x00},//工 {0x00,0x90,0x90,0x88,0xf8,0x84,0x86,0x00,0x7c,0x44,0x44,0x44,0x44,0x7c,0x00,0x00}, {0x40,0x30,0x0c,0x02,0x7f,0x02,0x0c,0x10,0x49,0x49,0x49,0x7f,0x49,0x49,0x00,0x00},//程 {0x00,0x10,0x10,0x10,0xfc,0x90,0x10,0x00,0xd0,0x50,0x50,0x7e,0x50,0xd0,0x50,0x00}, {0x04,0x08,0x04,0x22,0x7f,0x00,0x40,0x20,0x10,0x09,0x06,0x06,0x09,0x10,0x20,0x40},//技 {0x00,0x00,0x10,0x10,0x10,0xd0,0x10,0xfe,0x10,0x50,0x94,0x1c,0x10,0x00,0x00,0x00}, {0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x7f,0x00,0x00,0x00,0x03,0x04,0x18,0x60,0x00},//術 }; unsigned char code qrs[6][16]={ {0x00,0x00,0xbc,0xe0,0xa0,0xa0,0xe0,0xa0,0x3f,0xa0,0x60,0x20,0x20,0x3c,0x00,0x00}, {0x00,0x00,0x00,0x3f,0x24,0x24,0x3f,0x22,0x11,0x09,0x05,0x07,0x09,0x13,0x20,0x00},//嵌 {0x00,0x00,0x00,0x00,0x02,0x04,0xc8,0x30,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00}, {0x00,0x40,0x20,0x18,0x06,0x01,0x00,0x00,0x00,0x00,0x00,0x03,0x06,0x0c,0x30,0x00},//入 --{0x00,0x00,0x00,0x20,0xa0,0xa0,0xa0,0xa0,0xa2,0xa4,0x38,0xe0,0x24,0x2c,0x00,0x00}, {0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x0f,0x09,0x04,0x04,0x00,0x07,0x18,0x20,0x00},//式 }; checkbusy() { EN=1; RW=1; RS=0; LCD=0XFF; if(BUSY); } writecode(unsigned char dat) //寫命令 { checkbusy(); EN=1; RW=0; RS=0; LCD=dat; EN=1; EN=0; } writedata(unsigned char dat) //寫數據 { checkbusy(); EN=1; RW=0; RS=1; LCD=dat; EN=1; EN=0; } void displayhanzi(unsigned char page,unsigned char lineaddress,int n, unsigned char table[][16]) { unsigned char temp[32]; if(lineaddress<0X80) {CS1=1; CS2=0;}//left for(j=0;j<n;j++) { if(lineaddress>=0X80) { CS1=0;//right CS2=1; lineaddress=lineaddress-0X40; } //////////////////////////////////////// for(k=0;k<16;k++) {temp[k]=table[j][k];} j+=1; for(k=0;k<16;k++) {temp[16+k]=table[j][k];} //一個字:占兩個字符,32個數據(temp[32]) /////////////////////////////////////// writecode(page); writecode(lineaddress); for(i=0;i<16;i++) { writedata(temp[i]);} writecode(page+1); writecode(lineaddress); for(i=16;i<32;i++) { writedata(temp[i]);} //寫一個字:每頁16個數據 //////////////////////////////////////////////// lineaddress+=16; delay(200); } } void clear() { unsigned char b=0x40,c,d; for(c=0;c<4;c++) { for(a=0;a<8;a++) { switch(c) { case 0:d=0xb8;break; case 1:d=0xba;break; case 2:d=0xbc;break; default:d=0xbe; } displayhanzi(d,b,2,&lin); b+=0x10; } b=0x40; } } void lcdinti() { writecode(0X3f);//顯示開關關 writecode(0XC0);//修改顯示起始行 writecode(0XB8);//修改頁地址,x地址 writecode(0X40);//修改列地址,y地址 } void delay(unsigned char a) { unsigned char i,j; for(i=0;i<a;i++) for(j=0;j<200;j++) ; } main() { lcdinti(); clear(); while(1) { displayhanzi(0XB8,0X40,12,&xx); displayhanzi(0XBa,0X40,16,&ban); displayhanzi(0XBc,0X60,6,&zjy); displayhanzi(0XBe,0X60,6,&qrs); delay(200); clear(); displayhanzi(0XB8,0X40,12,&xx); displayhanzi(0XBa,0X40,16,&ban); displayhanzi(0XBc,0X60,4,&sg); displayhanzi(0XBe,0X60,6,&qrs); delay(200); clear(); displayhanzi(0XB8,0X40,12,&xx); displayhanzi(0XBa,0X40,16,&ban); displayhanzi(0XBc,0X60,6,&qrs); displayhanzi(0XBe,0X60,8,&jqyk); delay(200); delay(200); delay(200); delay(200); delay(200); delay(200); delay(200); delay(200); clear(); } } 匯編源代碼: 完整代碼下載:http://www.zg4o1577.cn/f/12864wuasm.rar ORG 0100H EN BIT 0A0H ;sbit EN=P2^0; RW BIT 0A1H ;sbit RW=P2^1; RS BIT 0A2H ;sbit RS=P2^2; CS1 BIT 0A3H ;sbit CS1=P2^3; CS2 BIT 0A4H BUS BIT 80H START: CLR CS1 CLR CS2 CALL INIT CALL CLEAR CALL HANZI SJMP $ WRITEDATA: ;入口參數R1 PUSH PSW PUSH ACC SETB EN CLR RW SETB RS NOP MOV P0,R1 NOP SETB EN NOP NOP CLR EN POP ACC POP PSW RET WRITECODE: ;入口參數R2 PUSH PSW PUSH ACC SETB EN CLR RW CLR RS NOP MOV P0,R2 NOP SETB EN NOP NOP CLR EN POP ACC POP PSW RET DELAY: ;入口參數R2 PUSH PSW PUSH ACC MOV R1,0FFH A2: DEC R2 A1: DEC R1 DJNZ R1,A1 DJNZ R2,A2 POP ACC POP PSW RET INIT: PUSH PSW PUSH ACC MOV R2,0C0H CALL WRITECODE MOV R2,3FH CALL WRITECODE MOV R2,0BBH CALL WRITECODE MOV R2,50H CALL WRITECODE POP ACC POP PSW RET CLEAR: PUSH PSW PUSH ACC CLR CS1 CLR CS2 MOV R2,0B8H B2: MOV 31H,R2 PUSH 31H CALL WRITECODE MOV R2,40H CALL WRITECODE B1: MOV R1,#00H CALL WRITEDATA INC R2 CJNE R2,#80H,B1 POP 31H INC 31H MOV R2,31H CJNE R2,#0BEH,B2 POP ACC POP PSW RET HANZI: PUSH PSW PUSH ACC CALL INIT ANL A,#00H MOV DPTR,#DAT B3: MOVC A,@A+DPTR MOV R1,A CALL WRITEDATA INC R2 INC A CJNE R2,#50H,B3 MOV R2,0B9H CALL WRITECODE MOV R2,40H CALL WRITECODE B4: MOVC A,@A+DPTR MOV R1,A CALL WRITEDATA INC R2 INC A CJNE R2,#50H,B4 POP ACC POP PSW RET DAT: DB 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01 DB 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01 END