野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16420|回复: 3

lcd12864显示文字乱码怎么破

[复制链接]
发表于 2015-10-17 15:56:49 | 显示全部楼层 |阅读模式
本帖最后由 本笨奔 于 2015-10-17 15:59 编辑

在下最近上网买了块带字库lcd12864,怀抱一颗赤子去学习如何在屏幕显示汉字!谁知道天意弄人,熬了几个夜晚看了12864的中文说明书并成功写出程序,却的到一个乱码的结果,使我久久不得意!百般无奈下,唯有求助江湖大神,望能助我分析程序,寻得乱码缘由,在下定当不胜感激!
{源程序如下:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit cs=P1^0;
sbit sid=P1^1;
sbit clk=P1^2;
sbit psb=P1^3;//串行四线,psb=0
sbit bla=P1^4;
sbit blk=P1^5;
/*延迟函数*/
void delay(int a)
{        int i,j;
        for(i=a;i>0;i--)
        {
                for(j=110;j>0;j--);
        }
}
/*发送命令*/
void send_command(uchar ming);
/*发送数据*/
void send_data(uchar shu);
/*lcd初始化*/
void lcd_init();
uchar a[]="I am shen chang ben ";
/*文字:广石化电气*/
uchar code  b[]={0xb9,0xca,0xbb,0xb5,0xc6};//高位
uchar code b1[]={0xe3,0xaf,0xaf,0xe7,0xf8};//低位
int e;
void main()
{
        bla=1;
        blk=0;
        lcd_init();
        delay(400);
        e=0;
        while(a[e]!='\0')
        {
                send_data(a[e]);
                e=e+1;
                delay(50);
        }        
                delay(5000);
        send_command(0x01);
        send_command(0x02);
        lcd_init();
        send_command(0x88);
        delay(50);
        for(e=0;e<4;e++)
        {
         send_command(0x80+e);
                send_data(b[e]);
                send_data(b1[e]);
                delay(500);
        }
        while(1)
        {}
}
void send_command(uchar ming)
{
        uchar i_command;
        int i;
        i_command=0xf8;
        cs=1;
        clk=0;
        for(i=0;i<8;i++)
        {
                        sid=(bit)(i_command & 0x80);
                clk=0;
        
                clk=1;
                i_command=i_command<<1;
        }
        i_command=ming;
        i_command=i_command & 0xf0;
        for(i=0;i<8;i++)
        {
                        sid=(bit)(i_command & 0x80);clk=0;
        
                clk=1;
                i_command=i_command<<1;
        }
        i_command=ming;
        i_command=i_command<<4;
        for(i=0;i<8;i++)
        {
                sid=(bit)(i_command & 0x80);clk=0;
               
                clk=1;
                i_command=i_command<<1;
        }
        cs=0;
        delay(10);
}
void send_data(uchar shu)
{
        uchar i_data;
        int i;
        i_data=0xfa;
        cs=1;
        for(i=0;i<8;i++)
        {
                        sid=(bit)(i_data & 0x80);clk=0;
        
                clk=1;
                i_data=i_data<<1;
        }
        i_data=shu;
        i_data=i_data & 0xf0;
        for(i=0;i<8;i++)
        {
                        sid=(bit)(i_data & 0x80);clk=0;
        
                clk=1;
                i_data=i_data<<1;
        }
        i_data=shu;
        i_data=i_data<<4;
        for(i=0;i<8;i++)
        {
                        sid=(bit)(i_data & 0x80);clk=0;
        
                clk=1;
                i_data=i_data<<1;
        }
        cs=0;delay(10);
}
void lcd_init()
{
        psb=0;
        cs=0;
        clk=0;
        send_command(0x30);
        send_command(0x02);
        send_command(0x01);
        send_command(0x0c);
        send_command(0x80);


}

乱码啊

乱码啊
回复

使用道具 举报

发表于 2015-10-17 16:01:17 | 显示全部楼层
只能帮顶                       
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-17 16:28:10 | 显示全部楼层

望大神帮解决
回复 支持 反对

使用道具 举报

发表于 2015-10-17 16:38:07 | 显示全部楼层

没搞过这个,有彩屏也懒得搞了
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-22 13:49 , Processed in 0.038006 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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