久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1602|回復: 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); 也沒看出來有什么問題啊,是哪里有問題呢?

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



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

使用道具 舉報

沙發
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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 7799精品视频天天看 | 日本久久久久久久久 | 国产精品精品久久久久久 | 天天想天天干 | 91视频.com | 日日操操操 | 亚洲乱码一区二区三区在线观看 | 成人在线视频网站 | 香蕉一区二区 | 久久久久久免费免费 | 男人天堂99| 亚洲精品一区在线 | 九九久视频| 久久综合伊人 | 最新中文字幕 | 日韩一级免费 | 午夜a√ | 91中文字幕在线观看 | 久久综合久色欧美综合狠狠 | 国产精品久久国产精品99 | 无码日韩精品一区二区免费 | 国产一区高清 | 国产成人一区 | 国产极品车模吞精高潮呻吟 | av一区在线观看 | 亚洲91视频| 成人日韩 | 5060网一级毛片 | 五月激情婷婷六月 | av香蕉| 久久9热 | 久久久91精品国产一区二区三区 | 欧美日韩在线看 | 成人性视频在线 | 99国产精品99久久久久久 | 日韩精品国产精品 | 日韩高清成人 | 狠狠干2020| 日韩国产欧美在线观看 | 天天操天天射综合 | 精品久久香蕉国产线看观看亚洲 |