| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4401 人关注过本帖
标题:液晶屏12864显示的字库字为2个一样的
只看楼主 加入收藏
byx123
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-10-16
结帖率:0
收藏
 问题点数:0 回复次数:1 
液晶屏12864显示的字库字为2个一样的
实际测试结果是显示的字是每2个是同一个字,高地址的下的16个字只显示出来了,低地址的双数地址的字,
只显示了0x02,0x04,0x06等的汉字显示如下,不知道是为什么邦指点下,在显示半宽字符时也是一样的
啊啊埃埃哎哎衷衷癌癌矮矮碍碍隘隘
/*
**12864并行接口参考程序,控制器st7920
*/

#include <reg51.h>
#include <intrins.h>

sbit RS = P3^5;//H代表数据,L代表指令
sbit RW = P3^4;//H读L写
sbit E = P3^3;//使能
//sbit PSB = P3^1;//串并口选择,高并行低串行
//sbit RES = P3^5;
sbit led=P3^6;//液晶屏0为亮

#define FIRST_ADDR 0       //定义字符/汉字显示起始位置
unsigned char invert(unsigned char a1)//需要传P1口值颠倒,电路连接是0-7,1-6,2-5……
{
    unsigned char a3,a2;
    for(a2=0;a2<7;a2++)
    {
        a1>>=1;
        a3|=CY;
        a3<<=1;
    }
    a1>>=1;
    a3|=CY;
    return a3;
}
//延时子程序
void delay(unsigned int t)
{  unsigned int i,j;
   for(i=0;i<t;i++)
      for(j=0;j<10;j++)
         ;
}

//测忙
void chk_busy()
{  RS=0;
   RW=1;
   E=1;
   while((P1&0x01)==0x01);//80
   E=0;
}

//读数据
/*unsigned char lcdrd()
{  unsigned char i;
   P3=0xFB;
   _nop_();
   E=1;
   delay(5);
   i=P1;
   _nop_();
   E=0;
   return i;
}*/

//写数据
void lcdwd(unsigned char dispdata)
{  chk_busy();
   _nop_();
   RS=1;
   RW=0;
   E=1;
   P1=invert(dispdata);
   delay(5);
   _nop_();
   E=0;
   _nop_();
   P1=invert(0xff);
}

//写指令代码
void lcdwc(unsigned char cmdcode)
{  chk_busy();
   _nop_();
   RS=0;
   RW=0;
   E=1;
   P1=invert(cmdcode);
   delay(5);
   _nop_();
   E=0;
   _nop_();
   P1=invert(0xff);
}

//初始化
void lcdreset()
{  delay(2000);
   //lcdwc(0x30);       //选择基本指令集
   lcdwc(0x30);       //选择8bit数据流
   delay(5);
   lcdwc(0x0c);       //开显示(无游标、不反白)
   delay(5);
   lcdwc(0x01);       //清除显示,并且设定地址指针为00H
   delay(5);
   lcdwc(0x06);       //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
}
void hzklib()
{
    unsigned char a1,a2;
    a2=0xa0;
    for(a1=0;a1<16;a1++)
    {
        lcdwd(0xb0);
        lcdwd(a2);
        a2++;
        delay(3000);
    }   
}
main()
{  //unsigned char i;
   //i=0x55;
   //RES=0;
   _nop_();
   //RES=1;
   led=0;
   while(1)
   {  //PSB=1;
      RW=0;
      lcdreset();       //初始化LCD屏
      lcdwc(0x01);//清除显示,并且设定地址指针为00H
      delay(1000);
      hzklib();
      delay(4000);
      //i=~i;
   }
}
搜索更多相关主题的帖子: include 测试结果 液晶屏 控制器 汉字 
2013-09-08 09:17
liqi2009
Rank: 2
等 级:禁止访问
帖 子:71
专家分:15
注 册:2012-2-21
收藏
得分:0 
     可以尝试一下这个工具Da Vinci LCD,专门设计嵌入式显示画面的(含字库,适用于点阵LCD屏),汽车级的,下载地址:http://xxxxxxxxxxxxxxxx/down/class/?2.html
2013-09-21 11:50
快速回复:液晶屏12864显示的字库字为2个一样的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025329 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved