找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1965|回复: 6
收起左侧

STM32 LCD12864的大字体显示程序调试问题

[复制链接]
ID:497468 发表于 2020-11-16 16:53 | 显示全部楼层 |阅读模式
最近用12864带字库的LCD做一个小治具, 上面要用到大字体的. 主控用的是STM32F103C8T6
我自制了0-9的大字体字库,显示也没有问题,现在在主程序刷新时,会闪烁,刷新越快闪的越快,好像有个熄灭的过程一样.
我是调用CGROM来更换数字的,是不是在重写CGROM的时候就被熄灭了,有没有好的方法解决,急求,请大侠指点.
void LCD_Display_Picture2(u8 x,u8 y,u8 w,u8 h,u8 n)           //任意位置显示大字体数字        ,xy=起始XY,W=宽,H=高,N=要显示的数字  ,,
{
    u16 i;
    u8 xi,yi;
    u8 xt,yt;

    x >>= 4;
    w >>= 3;
    i = 0;
    Lcd_WriteCmd(0x34); //启动CGRAM操作
        
    for (yi=0; yi<h; yi++)
    {
        yt = y+yi;
        xt = x;
        if (yt >= 32)
        {
            yt -= 32;
            xt += 8;
        }
        Lcd_WriteCmd(0x80|yt);
        Lcd_WriteCmd(0x80|xt);
        for (xi=0; xi<w; xi++)
        {
            Lcd_WriteData(LCD_XZ4024[n][i++]);
        }
    }

回复

使用道具 举报

ID:497468 发表于 2020-11-17 09:04 | 显示全部楼层
现在做的反白的部分也会随着大字体的刷新也会闪烁.
我参考了大字体的时钟程序,没有看到其它人的特别处理的地方,和我的差不多,求指点.
回复

使用道具 举报

ID:592807 发表于 2020-11-18 08:48 | 显示全部楼层
闪可能是你电压不稳定,或者你刷新程序里面有延时,把延时缩短试试
回复

使用道具 举报

ID:497468 发表于 2020-11-18 17:24 | 显示全部楼层
电压很稳定,其它都不闪,就像有个刷新的时间一样,我仔细看了显示图片和字库的程序,里面都没有延时的程序
void LCD_Display_Picture2(u8 x,u8 y,u8 w,u8 h,u8 n)           //èÎòaλÖÃÏÔê¾′ó×Öìåêy×Ö        ,xy=Æeê¼XY,W=¿í,H=¸ß,N=òaÏÔê¾μÄêy×Ö  ,,OK
{
    u16 i;
    u8 xi,yi;
    u8 xt,yt;

    x >>= 4;
    w >>= 3;
    i = 0;
    Lcd_WriteCmd(0x34); //Æô¶ˉCGRAM2ù×÷
       
    for (yi=0; yi<h; yi++)
    {
        yt = y+yi;
        xt = x;
        if (yt >= 32)
        {
            yt -= 32;
            xt += 8;
        }
        Lcd_WriteCmd(0x80|yt);
        Lcd_WriteCmd(0x80|xt);
        for (xi=0; xi<w; xi++)
        {
            Lcd_WriteData(LCD_XZ4024[n][i++]);
        }
    }
                      

   Lcd_WriteCmd(0x36);
   Lcd_WriteCmd(0x30);
  }
回复

使用道具 举报

ID:497468 发表于 2020-11-20 09:36 | 显示全部楼层
我重复的试了多次,发现每次重写一个数字的时候就会打开OX34,再0X36,0X30,只要操作这三个指令就会出现这个问题,我试过一个一个的不用,但会出现其它问题,不显示,花屏等,现在显示区就像呼吸灯一样,换数字就会出现从灭到亮的过程, 找了好多的资料都无效,    我的字体是4024的,有120个字节, 显示LCD自带字库就没有这个问题,我看了别人做大字体的时钟也是用带字符的,好偈没有这个问题,求指点,
是LCD的本身特质还是我程序有问题?还是说用STM32这个的原因?
回复

使用道具 举报

ID:158375 发表于 2020-11-20 09:58 | 显示全部楼层
最好把显示屏资料或型号放一下比较好,毕竟正好用的显示屏和你一样显示屏的达人是少数。多数人是凭经验的。
回复

使用道具 举报

ID:497468 发表于 2020-11-20 10:05 | 显示全部楼层
感谢各位的参与,我的问题解决了,按照我的思路,我发现只要打开0X34就会这样,后仔细对比了别人的程序,有的人的程序里也打开0X34,但还有的人不用这个指令, 原来这个指令是扩绘图关,然后0X36是开,  每刷新一次的时候,把绘图先关后开,所以就会有个显示中间缺失的过程,造成像呼吸灯一样的,每刷新一次就亮灭一次,现在我的解决方法就是取消0X34, 以下程序经测试,没有问题.
void LCD_Display_Picture2(u8 x,u8 y,u8 w,u8 h,u8 n)           //èÎòaλÖÃÏÔê¾′ó×Öìåêy×Ö        ,xy=Æeê¼XY,W=¿í,H=¸ß,N=òaÏÔê¾μÄêy×Ö  ,,OK
{
    u16 i;
    u8 xi,yi;
    u8 xt,yt;

    x >>= 4;
    w >>= 3;
    i = 0;
    Lcd_WriteCmd(0x36); //Æô¶ˉCGRAM2ù×÷//这里做了修改
      
    for (yi=0; yi<h; yi++)
    {
        yt = y+yi;
        xt = x;
        if (yt >= 32)
        {
            yt -= 32;
            xt += 8;
        }
        Lcd_WriteCmd(0x80|yt);
        Lcd_WriteCmd(0x80|xt);
        for (xi=0; xi<w; xi++)
        {
            Lcd_WriteData(LCD_XZ4024[n][i++]);
        }
    }
                     

   Lcd_WriteCmd(0x30);
  }
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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