找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3134|回复: 13
收起左侧

单片机+lcd12864只显示背光,没有汉字 求帮助

[复制链接]
ID:535176 发表于 2019-8-6 14:43 | 显示全部楼层 |阅读模式
lcd12864不显示。只显示背光,没有汉字,不知道是什么情况,程序用的是卖家给的,求各位大佬指点
TIM图片20190806144135.jpg

电路图

电路图
回复

使用道具 举报

ID:96682 发表于 2019-8-6 20:15 | 显示全部楼层
12864 液晶屏分有字库和无字库,所使用的程序也有区别,另外还得看软硬件是否正确,屏幕对比度调节是否恰当等
回复

使用道具 举报

ID:10193 发表于 2019-8-7 08:37 | 显示全部楼层
调节偏压电阻试试
回复

使用道具 举报

ID:524818 发表于 2019-8-7 09:21 | 显示全部楼层
很可能是对比度电位器没调好
回复

使用道具 举报

ID:307020 发表于 2019-8-7 14:39 | 显示全部楼层
LCD12864控制芯片有好几种,按楼主的接线图来看应该是ks0108控制的,这种一般是不带字库的,要在18脚与1脚之间接电位器,电位器的中间(可变)脚接LCD的第三脚,通过调整电位器就可以看到液晶屏对比度的变化,调整到你满意的位置。
回复

使用道具 举报

ID:535176 发表于 2019-8-7 20:00 | 显示全部楼层
gb302 发表于 2019-8-7 08:37
调节偏压电阻试试

调了,也没有啥变化
回复

使用道具 举报

ID:535176 发表于 2019-8-7 20:00 | 显示全部楼层
wj_yuq 发表于 2019-8-7 14:39
LCD12864控制芯片有好几种,按楼主的接线图来看应该是ks0108控制的,这种一般是不带字库的,要在18脚与1脚 ...

那带字库的不能显示吗?
回复

使用道具 举报

ID:535176 发表于 2019-8-7 22:30 | 显示全部楼层
已解决,谢谢各位大佬的帮忙。非常感谢
回复

使用道具 举报

ID:594143 发表于 2019-8-8 00:26 | 显示全部楼层
V0和Vee没接,看看液晶管脚定义和说明
回复

使用道具 举报

ID:535176 发表于 2019-8-8 08:18 | 显示全部楼层
phuilee@51 发表于 2019-8-8 00:26
V0和Vee没接,看看液晶管脚定义和说明

这两个不用接
回复

使用道具 举报

ID:105364 发表于 2019-8-8 08:54 | 显示全部楼层
冷月枫 发表于 2019-8-7 22:30
已解决,谢谢各位大佬的帮忙。非常感谢

怎么解决的,最好贴出来分享一下。
回复

使用道具 举报

ID:535176 发表于 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);
                }
}








这是程序
回复

使用道具 举报

ID:535176 发表于 2019-8-8 20:02 | 显示全部楼层
47okey 发表于 2019-8-8 08:54
怎么解决的,最好贴出来分享一下。

cs1就是PSB,CS2不用接,其他管脚照着程序接就好
回复

使用道具 举报

ID:599909 发表于 2019-8-13 22:49 | 显示全部楼层
他的三号管角不是要连一个电位器嘛,你不连电位器,在三号管角和5v电压之间连一个电阻,阻值具体多少在4.7-10k试试就知道了,当然前提是你的代码没问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表