欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1786|回復: 2
收起左側

LCD_ShowChar字符顯示函數影響系統的響應時間問題

[復制鏈接]
ID:997026 發表于 2022-7-21 22:11 | 顯示全部樓層 |閱讀模式
本帖最后由 hxdby 于 2022-7-21 22:14 編輯

各位好,

我現在調一塊3.5寸的TFT LCD,發現廠家提供的 void LCD_ShowChar()這個顯示字符串的函數執行效率非常低下,我的程序中一使用這個函數,按鍵的反應就下降很多,按一下按鍵,LCD上幾乎1s才有反應,只要注釋掉這個函數,按鍵的響應幾乎瞬間的,非常快!

這個函數如下:
void LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t size,uint8_t mode, uint16_t pcolor, uint16_t bcolor)
{
    uint8_t temp,t1,t;
    uint16_t y0=y;
    uint8_t csize=(size/8+((size%8)?1:0))*(size/2);                //得到字體一個字符對應點陣集所占的字節數
    num=num-' ';//得到偏移后的值(ASCII字庫是從空格開始取模,所以-' '就是對應字符的字庫)

    //Address_set(x,y,x+size/2-1,y+size-1); //如果把坐標設置放在這里,不放循環中可以解決響應問題,但是商家給我的程序,這里被注釋掉了,不知道為啥?我啟用后,發送字符顯示亂碼------1
    for(t=0; t<csize; t++)
    {
        if(size==24)temp=asc2_2412[num][t];                  //調用1206字體
        else if(size==16)temp=asc2_1608[num][t];           //調用1608字體
         else if(size==38)temp=asc2_38x19[num][t];        //調用3216字體
        else if(size==48)temp=asc2_4824[num][t];        //調用4824字體
        //        else if(size==64)temp=asc2_6432[num][t];        //調用4824字體
        else return;                                                                //沒有的字庫
        for(t1=0; t1<8; t1++)
        {
            if(temp&0x80)LCD_DrawPoint(x,y,pcolor);  //發現問題在畫點函數這里,畫點函數帶了坐標設置,導致每循環一次就會發一次坐標,而坐標是通過SPI發給LCD,SPI速度不高拖慢整個程序
            else if(mode==0)LCD_DrawPoint(x,y,bcolor);
            temp<<=1;
            y++;
            if(y>=240)return;                //超區域了
            if((y-y0)==size)
            {
                y=y0;
                x++;
                if(x>=320)return;        //超區域了
                break;
            }
        }
    }
}



后來我調了好久,發現并非是這整個函數問題,而是在這個函數中的循環里的畫點函數帶了坐標設置,每循環一次都會通過SPI發坐標給LCD,嚴重拖慢了整個系統。而發一次坐標SPI要發8次數據,所以導致系統變慢。
如果把發坐標的部分單獨拿出來,放在上面代碼都1處,系統就正常了,響應非常快,但是放在1處,字符顯示不正常了,這個坐標設置函數Address_set(x,y,x+size/2-1,y+size-1); 也沒看出來有什么問題啊,是哪里有問題呢?

各位有沒有什么方法不要在循環里發坐標,循環里只發顏色數據,坐標放在外面設置,有什么寫法可以分享,我自己在網上查了很多,發現很多都是這種循環帶坐標的寫法,難道坐標非得放在循環里嗎。



回復

使用道具 舉報

ID:248705 發表于 2022-7-25 09:52 | 顯示全部樓層
跟廠家要屏幕的數據手冊,看看屏幕有沒有連續寫模式
回復

使用道具 舉報

ID:997026 發表于 2022-7-29 00:22 | 顯示全部樓層
祖國的花朵 發表于 2022-7-25 09:52
跟廠家要屏幕的數據手冊,看看屏幕有沒有連續寫模式

這個問題我已經解決了!廠家提供的程序我全部研究過了,基本只能說是能實現最基礎的功能,但是要用在項目中是不現實的。
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

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