1852|0

3241

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

T6963C不显示的问题 [复制链接]

void lcdinit()    //LCD初始化

{

lcdcmd0(0x80); //设置显示方式,文本图形“或” 

lcdcmd2(0x00,0x00,0x42); //设置光标首地址

lcdcmd2(30,0x00,0x43); //设定图形区域宽度

lcdcmd2(0x00,0x00,0x40); //设置文本显示区首地址

 

 

lcdcmd2(30,0x00,0x41); ////设定文本区域宽度

lcdcmd0(0x9f); //设置光标闪烁,不显示,文本与图形显示

 

lcdcmd0(0xa2); //设置光标形状

 

 

lcdcmd2(0x00,0x00,0x21); //设置光标指针

lcdcmd2(0x00,0x00,0x22); //设置CGRAM偏移地址

lcdcmd2(0x00,0x00,0x24); //设置地址指针

 

 

 

}

现在可以显示光标,可是不显示字符。

主程序:

lcdinit();

 

dis_clr(0);//清屏

 write_lcd(16,0,"123abc----------");

显示字符函数如下:

//--------------------------------------------

//         指定位置向LCD写入指定字符

//

//

//--------------------------------------------

void write_lcd(uchar x,uchar y,char *cha)

{

uint place,i=0;

uchar length,c1,c2,j,k;

for(length=0;cha[length]!=0;length++);

   do

    {

      c1=cha[i];      //取字符串的ASCII码

      c2=cha[i+1];

      place=x*30+y;

      if(c1<=128)        //#####小于128为字符,大于128为汉字

       {

        for(k=0;k<16;++k)     //字符设置为16*8

        {

          lcddatw(place&0xff);   //写入地址低位

          lcddatw(place/256);    //写入地址高位

          lcdcmd0(0x24);          //地址设置

          lcdcmd0(0xb0);          //设置数据自动写

          lcddatw(ASC_MSK[(c1-0x20)*16+k]); /*---例如:0的ASCII码为0x30,

          在ASC_MSK中的位置为0x10*16 ---16字节字码依次写入LCD---*/

          lcdcmd0(0xb2);          //自动复位

          place=place+30;

        }

        if(y>28)            //y>28时候需要换行

          {x=x+16;y=0;}

        else                //否则,不换行,继续写下一个字符

          {y++;}

           i++;

      }

     else                   //#####c1大于128为汉字

      {

        for(j=0;j<sizeof(GB_16)/sizeof(GB_16[0]);j++) //找到汉字

         {

           if(c1==GB_16[j].Index[0]&&c2==GB_16[j].Index[1])

           break;            //汉字找到则跳出   

         }

        if(j<sizeof(GB_16)/sizeof(GB_16[0]))   //------如果汉字在子码表内

         {

          for(k=0;k<16;k++)     //字符设置为16*8

           {

            lcddatw(place&0xff);   //写入地址低位

            lcddatw(place/256);    //写入地址高位

            lcdcmd0(0x24);          //地址设置

            lcdcmd0(0xb0);          //地址设置

            lcddatw(GB_16[j].Msk[k*2]);

       lcddatw(GB_16[j].Msk[k*2+1]); //16*16,每行2字节

            lcdcmd0(0xb2);             //自动复位

            place=place+30;              //下一行

           }

         }

        else             //-----没找到对应汉字则涂黑

         {

          for(k=0;k<16;k++)     //字符设置为16*8

           {

            lcddatw(place&0xff);   //写入地址低位

            lcddatw(place/256);    //写入地址高位

            lcdcmd0(0x24);          //地址设置

            lcdcmd0(0xb0);          //地址设置

            lcddatw(0xff);

      lcddatw(0xff); 

            lcdcmd0(0xb2);             //自动复位

            place=place+30;              //下一行

           }

         }

        if(y>27)      //-------换行

         {x+=16;y=0;}

        else          //--------不用换行,则下一个字

         {y+=2;}

         i+=2;

      } 

    }

   while(i<length);

}

请高手指教,谢谢!

此帖出自51单片机论坛
点赞 关注
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表