他的三号管角不是要连一个电位器嘛,你不连电位器,在三号管角和5v电压之间连一个电阻,阻值具体多少在4.7-10k试试就知道了,当然前提是你的代码没问题 |
47okey 发表于 2019-8-8 08:54 cs1就是PSB,CS2不用接,其他管脚照着程序接就好 |
47okey 发表于 2019-8-8 08:54 #include <reg52.h> #define DATA_PORT P0//êy¾Y¿ú sbit LCD12864_RS = P2^6; sbit LCD12864_RW = P2^5; sbit LCD12864_EN = P2^7; sbit LCD12864_PSB = P3^2;//1Îa′®DD0λ2¢DD sbit LCD12864_RST = P3^4;//¸′λ //Ñó3ùoˉêy void delay(unsigned int xms) //1ms { unsigned char i,j; for(j = 0; j < xms; j++) { for(i = 0;i < 110;i++); } } //Ã|¼ì2é //bit LcdBusyCheck() //{ // bit result; // LCD12864_RS = 0; // LCD12864_RW = 1; // LCD12864_EN = 1; // result = (bit)(DATA_PORT&0x80);//=1.ËμÃ÷Ã| // LCD12864_EN = 0; // return result; //} //D′Ãüáî void WriteCmdToLCD(unsigned char cmd) { // while(LcdBusyCheck()); delay(10); LCD12864_RS = 0; LCD12864_RW = 0; LCD12864_EN = 1; DATA_PORT = cmd; delay(5); LCD12864_EN = 0; delay(5); LCD12864_EN = 1; } //D′êy¾Y void WriteDatToLcd(unsigned char dat) { //while(LcdBusyCheck()); delay(10); LCD12864_RS = 1; LCD12864_RW = 0; LCD12864_EN = 1; DATA_PORT = dat; delay(5); LCD12864_EN = 0; delay(5); LCD12864_EN = 1; } //′«êäêy¾Y void WriteStrToLcd(unsigned char *str) { while(*str != '\0') { WriteDatToLcd(*str++);//′«Ëíêy¾Y delay(5); } } //éèÖÃ×ø±ê void LcdPos(unsigned char x,unsigned char y) { unsigned char pos; if(x == 1)//μúò»DD { x = 0x80; } else if(x == 2)//μú¶tDD { x = 0x90; } else if(x == 3)//μúèyDD { x = 0x88; } else if(x == 4)//μúËÄDD { x = 0x98; } pos = x + y ; WriteCmdToLCD(pos);//′«êäÃüáî } //LCD128643õê¼»ˉ void LcdInit() { LCD12864_PSB = 1;//2¢DD LCD12864_RST = 0;//¸′λ delay(10); LCD12864_RST = 1;//2»¸′λ WriteCmdToLCD(0x30);//oo×Öģ꽣¨±ê׼ģ꽣© delay(5); // WriteCmdToLCD(0x30); // delay(5); WriteCmdToLCD(0x18);// delay(5); WriteCmdToLCD(0x10);// delay(5); WriteCmdToLCD(0x01);// delay(5); WriteCmdToLCD(0x06);// delay(5); WriteCmdToLCD(0x0c);// delay(5); } int main() { //P0 = 0xff;//3õê¼»ˉ //P1 = 0xff; LcdInit(); while(1) { LcdPos(1,0);//μúò»DDÏÔê¾ WriteStrToLcd(" ÎòÖÕóú3é1|áË ");// delay(5); LcdPos(2,0); WriteStrToLcd("Îaé¶ÏÔê¾2»áË"); delay(5); LcdPos(3,0); WriteStrToLcd("12864 3é1|£¬1t1t"); delay(5); LcdPos(4,0); WriteStrToLcd("¼á3Ö¾íêÇê¤àû!!!"); delay(5); } } 这是程序 |
冷月枫 发表于 2019-8-7 22:30 怎么解决的,最好贴出来分享一下。 ![]() |
phuilee@51 发表于 2019-8-8 00:26 这两个不用接 |
V0和Vee没接,看看液晶管脚定义和说明 |
已解决,谢谢各位大佬的帮忙。非常感谢 |
wj_yuq 发表于 2019-8-7 14:39 那带字库的不能显示吗? |
gb302 发表于 2019-8-7 08:37 调了,也没有啥变化 |
LCD12864控制芯片有好几种,按楼主的接线图来看应该是ks0108控制的,这种一般是不带字库的,要在18脚与1脚之间接电位器,电位器的中间(可变)脚接LCD的第三脚,通过调整电位器就可以看到液晶屏对比度的变化,调整到你满意的位置。 |
很可能是对比度电位器没调好 |
调节偏压电阻试试 |
12864 液晶屏分有字库和无字库,所使用的程序也有区别,另外还得看软硬件是否正确,屏幕对比度调节是否恰当等 |