找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于12864lcd屏显示单片机驱动程序问题,单数列能正常显示,双数列不能正常显示

查看数: 1910 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-5-29 21:28

正文摘要:

各位大佬,你们好!这是一个无字库屏, 我用12864显示中文的函数,改了一个显示数字的函数,(16*8的点阵) 产生了一个很奇怪的问题,第一个数字可以正常清新显示,横向第二个却无法正常显示, 或者说单数列能正 ...

回复

ID:123289 发表于 2022-5-31 17:33
是不是调用上别人的函数?
ID:821461 发表于 2022-5-30 11:29
不要黑 发表于 2022-5-30 11:09
if (j == 8)//由于8X16用到两个Y坐标,当大于等于8时,切换坐标
{
y+=1;

我刚试过了,还是一样的,那些列还是不清楚,就好像丢失了几个数据一样好奇怪
修改后的代码如下:
void Lcd12864_Write8ascii(u8 x, u8 y, u8 Num)
{
        u8 j, x1, x2;
        y += 0xB0;           //求取Y坐标的值

        for( j=0; j<16; j++)                 //
        {               
                if (j == 8)         //由于8X16用到两个Y坐标,当大于等于8时,切换坐标
                {
                        y+=1;
                        x-=8;
                }
                //--设置Y坐标--//
                LcdSt7565_WriteCmd(y);

                x1 = (x >> 4) & 0x0F;   //由于X坐标要两句命令,分高低4位,所以这里先取出高4位
                x2 = x & 0x0F;          //去低四位
                //--设置X坐标--//
                LcdSt7565_WriteCmd(0x10 + x1);   //高4位
                LcdSt7565_WriteCmd(0x04 + x2);        //低4位
       
               
                LcdSt7565_WriteData(ascii_1608[Num][j]);
                x ++;
        }                               
}
ID:789121 发表于 2022-5-30 11:09
if (j == 8)//由于8X16用到两个Y坐标,当大于等于8时,切换坐标
{
y+=1;
x-=8;
}
放到 //--设置Y坐标--//上面
ID:789121 发表于 2022-5-30 11:08
if (j == 8)         //由于8X16用到两个Y坐标,当大于等于8时,切换坐标
                {
                        y+=1;
                        x-=8;
                }
放到
//--设置Y坐标--//
上面试一下

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

Powered by 单片机教程网

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