标题: 单片机+lcd12864只显示背光,没有汉字 求帮助 [打印本页]

作者: 冷月枫    时间: 2019-8-6 14:43
标题: 单片机+lcd12864只显示背光,没有汉字 求帮助
lcd12864不显示。只显示背光,没有汉字,不知道是什么情况,程序用的是卖家给的,求各位大佬指点

TIM图片20190806144135.jpg (152.97 KB, 下载次数: 72)

TIM图片20190806144135.jpg

TIM图片20190806144228.png (57.83 KB, 下载次数: 63)

电路图

电路图

作者: wc86110    时间: 2019-8-6 20:15
12864 液晶屏分有字库和无字库,所使用的程序也有区别,另外还得看软硬件是否正确,屏幕对比度调节是否恰当等
作者: gb302    时间: 2019-8-7 08:37
调节偏压电阻试试
作者: cphnkj188    时间: 2019-8-7 09:21
很可能是对比度电位器没调好
作者: wj_yuq    时间: 2019-8-7 14:39
LCD12864控制芯片有好几种,按楼主的接线图来看应该是ks0108控制的,这种一般是不带字库的,要在18脚与1脚之间接电位器,电位器的中间(可变)脚接LCD的第三脚,通过调整电位器就可以看到液晶屏对比度的变化,调整到你满意的位置。
作者: 冷月枫    时间: 2019-8-7 20:00
gb302 发表于 2019-8-7 08:37
调节偏压电阻试试

调了,也没有啥变化
作者: 冷月枫    时间: 2019-8-7 20:00
wj_yuq 发表于 2019-8-7 14:39
LCD12864控制芯片有好几种,按楼主的接线图来看应该是ks0108控制的,这种一般是不带字库的,要在18脚与1脚 ...

那带字库的不能显示吗?
作者: 冷月枫    时间: 2019-8-7 22:30
已解决,谢谢各位大佬的帮忙。非常感谢
作者: phuilee@51    时间: 2019-8-8 00:26
V0和Vee没接,看看液晶管脚定义和说明
作者: 冷月枫    时间: 2019-8-8 08:18
phuilee@51 发表于 2019-8-8 00:26
V0和Vee没接,看看液晶管脚定义和说明

这两个不用接
作者: 47okey    时间: 2019-8-8 08:54
冷月枫 发表于 2019-8-7 22:30
已解决,谢谢各位大佬的帮忙。非常感谢

怎么解决的,最好贴出来分享一下。
作者: 冷月枫    时间: 2019-8-8 20:00
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-8 20:02
47okey 发表于 2019-8-8 08:54
怎么解决的,最好贴出来分享一下。

cs1就是PSB,CS2不用接,其他管脚照着程序接就好
作者: zoujiayu    时间: 2019-8-13 22:49
他的三号管角不是要连一个电位器嘛,你不连电位器,在三号管角和5v电压之间连一个电阻,阻值具体多少在4.7-10k试试就知道了,当然前提是你的代码没问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1