找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2302|回復: 6
打印 上一主題 下一主題
收起左側(cè)

STM32 LCD12864的大字體顯示程序調(diào)試問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:497468 發(fā)表于 2020-11-16 16:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近用12864帶字庫的LCD做一個小治具, 上面要用到大字體的. 主控用的是STM32F103C8T6
我自制了0-9的大字體字庫,顯示也沒有問題,現(xiàn)在在主程序刷新時,會閃爍,刷新越快閃的越快,好像有個熄滅的過程一樣.
我是調(diào)用CGROM來更換數(shù)字的,是不是在重寫CGROM的時候就被熄滅了,有沒有好的方法解決,急求,請大俠指點.
void LCD_Display_Picture2(u8 x,u8 y,u8 w,u8 h,u8 n)           //任意位置顯示大字體數(shù)字        ,xy=起始XY,W=寬,H=高,N=要顯示的數(shù)字  ,,
{
    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++]);
        }
    }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:497468 發(fā)表于 2020-11-17 09:04 | 只看該作者
現(xiàn)在做的反白的部分也會隨著大字體的刷新也會閃爍.
我參考了大字體的時鐘程序,沒有看到其它人的特別處理的地方,和我的差不多,求指點.
回復

使用道具 舉報

板凳
ID:592807 發(fā)表于 2020-11-18 08:48 | 只看該作者
閃可能是你電壓不穩(wěn)定,或者你刷新程序里面有延時,把延時縮短試試
回復

使用道具 舉報

地板
ID:497468 發(fā)表于 2020-11-18 17:24 | 只看該作者
電壓很穩(wěn)定,其它都不閃,就像有個刷新的時間一樣,我仔細看了顯示圖片和字庫的程序,里面都沒有延時的程序
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);
  }
回復

使用道具 舉報

5#
ID:497468 發(fā)表于 2020-11-20 09:36 | 只看該作者
我重復的試了多次,發(fā)現(xiàn)每次重寫一個數(shù)字的時候就會打開OX34,再0X36,0X30,只要操作這三個指令就會出現(xiàn)這個問題,我試過一個一個的不用,但會出現(xiàn)其它問題,不顯示,花屏等,現(xiàn)在顯示區(qū)就像呼吸燈一樣,換數(shù)字就會出現(xiàn)從滅到亮的過程, 找了好多的資料都無效,    我的字體是4024的,有120個字節(jié), 顯示LCD自帶字庫就沒有這個問題,我看了別人做大字體的時鐘也是用帶字符的,好偈沒有這個問題,求指點,
是LCD的本身特質(zhì)還是我程序有問題?還是說用STM32這個的原因?
回復

使用道具 舉報

6#
ID:158375 發(fā)表于 2020-11-20 09:58 | 只看該作者
最好把顯示屏資料或型號放一下比較好,畢竟正好用的顯示屏和你一樣顯示屏的達人是少數(shù)。多數(shù)人是憑經(jīng)驗的。
回復

使用道具 舉報

7#
ID:497468 發(fā)表于 2020-11-20 10:05 | 只看該作者
感謝各位的參與,我的問題解決了,按照我的思路,我發(fā)現(xiàn)只要打開0X34就會這樣,后仔細對比了別人的程序,有的人的程序里也打開0X34,但還有的人不用這個指令, 原來這個指令是擴繪圖關(guān),然后0X36是開,  每刷新一次的時候,把繪圖先關(guān)后開,所以就會有個顯示中間缺失的過程,造成像呼吸燈一樣的,每刷新一次就亮滅一次,現(xiàn)在我的解決方法就是取消0X34, 以下程序經(jīng)測試,沒有問題.
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);
  }
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表