找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3825|回复: 14
收起左侧

单片机+LCD12864汉字乱码

  [复制链接]
ID:469787 发表于 2020-7-12 21:03 | 显示全部楼层 |阅读模式
确定12864有中文字库  

单片机源程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int

uchar code dis1[]={"姓名: 我爱你"};
uchar code dis2[]={"性别: 男"};
uchar code dis3[]={"工号: 119137"};
uchar code dis4[]={"www.szu.edu.cn"};

sbit LCD_RS=P0^7;
sbit LCD_RW=P0^6;
sbit LCD_EN=P0^5;
sbit LCD_PSB=P0^4;
sbit LCD_RST=P0^3;

void delay_1ms(uint x)  //1ms延迟函数
{
    uint i,j;
    for(j=0;j<x;j++)
    for(i=0;i<148;i++);
}

void write_cmd(uchar cmd)//发送命令
{
        LCD_RW=0;
        LCD_RS=0;
        
        P2=cmd;
        delay_1ms(1);
        LCD_EN=1;
        delay_1ms(1);
        LCD_EN=0;
}        

void write_data(uchar a)//发送数据
{
        LCD_RW=0;
        LCD_RS=1;
        LCD_EN=0;

        P2=a;
        delay_1ms(1);
        LCD_EN=1;
        delay_1ms(1);
        LCD_EN=0;
}
void lcd_pose(uchar X,uchar Y)//定位坐标
{
        uchar S,pose;
switch (X)
{
case 0:
S=0x80; //液晶第一行显示
break;
case 1:
S=0x90; //第二行显示
break;
case 2: //第三行显示
S=0x88;
break;
case 3: //第四行显示
S=0x98;
break;
}
pose=S+Y;
write_cmd(pose);
}

void LCD12864_Init()
        {
            //首先对LCD进行复位
                        LCD_RST=0;
                        delay_1ms(1);
            LCD_RST=1;
                        delay_1ms(1);
                        LCD_PSB=1;
                        delay_1ms(1);
            /* 开始初始化的步骤 */
            write_cmd(0x30);
                        delay_1ms(1);
          //  write_cmd(0x08);
                        delay_1ms(1);
            write_cmd(0x01);
                        delay_1ms(1);
            write_cmd(0x06);
                        delay_1ms(1);
            write_cmd(0x0c);
          }
void write_zifu(uchar *p) //循环发送数组数据
{
        while(*p!='\0')
        {
                write_data(*p);
                p++;
                delay_1ms(5);
        }
}
void main()
{
        LCD12864_Init();
        {
        lcd_pose(0,0);
        write_zifu(dis1);
        lcd_pose(1,0);
        write_zifu(dis2);
        lcd_pose(2,0);
        write_zifu(dis3);
        lcd_pose(3,0);
        write_zifu(dis4);
        }
        while(1);
}

乱码

乱码
回复

使用道具 举报

ID:789121 发表于 2020-7-12 21:14 | 显示全部楼层
用的哪个软件?检查一下编码方式。如果是keil改成GB2312试一下
回复

使用道具 举报

ID:802252 发表于 2020-7-12 21:17 | 显示全部楼层
检查下液晶屏的操控时序对不对
回复

使用道具 举报

ID:452950 发表于 2020-7-12 23:01 | 显示全部楼层
如果你在keil代码里打中文会变成?的话,需要先设置中文GB2312,然后重新编译一下
回复

使用道具 举报

ID:473186 发表于 2020-7-13 10:38 | 显示全部楼层
找一个能正常显示的对比一下就了解的,光这样对你说越说你越迷糊
回复

使用道具 举报

ID:706222 发表于 2020-7-13 10:43 | 显示全部楼层
编码问题或者接触问题
回复

使用道具 举报

ID:584814 发表于 2020-7-13 10:45 | 显示全部楼层
时序没问题,是字模检索和获取的问题,通俗点说就是在字库找字的时候没找对。
回复

使用道具 举报

ID:752658 发表于 2020-7-13 10:52 | 显示全部楼层
有没有仿真呀,我要详细的过程,呀呀呀呀呀
回复

使用道具 举报

ID:469787 发表于 2020-7-18 18:08 | 显示全部楼层
不要黑 发表于 2020-7-12 21:14
用的哪个软件?检查一下编码方式。如果是keil改成GB2312试一下

你好   不会有?    keil5里面也改为GB2312
乱码.JPG
回复

使用道具 举报

ID:469787 发表于 2020-7-18 18:09 | 显示全部楼层
不要黑 发表于 2020-7-12 21:14
用的哪个软件?检查一下编码方式。如果是keil改成GB2312试一下

你好 用的是keil5  里面已经改过来了
回复

使用道具 举报

ID:469787 发表于 2020-7-18 18:31 | 显示全部楼层
s17336380743 发表于 2020-7-13 10:52
有没有仿真呀,我要详细的过程,呀呀呀呀呀

没有仿真
回复

使用道具 举报

ID:469787 发表于 2020-7-18 18:33 | 显示全部楼层
xxpp2011 发表于 2020-7-12 23:01
如果你在keil代码里打中文会变成?的话,需要先设置中文GB2312,然后重新编译一下

你好  现在我换成keil2中文破解版就可以了   还是因为编码的原因吗  keil5里面要什么改     
回复

使用道具 举报

ID:986562 发表于 2021-12-16 21:11 来自手机 | 显示全部楼层
楼主你好,请问最后问题解决了么?我也遇到了这个麻烦
回复

使用道具 举报

ID:766634 发表于 2021-12-17 14:57 | 显示全部楼层
看起来像是字库问题
回复

使用道具 举报

ID:107799 发表于 2022-6-6 20:49 | 显示全部楼层
需要打补丁可以解决这个问题。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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