0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【開鴻智谷NiobeU4開發(fā)板免費試用體驗】LVGL移植前菜篇-程序員就要晚點有藝術(shù)的(生成藝術(shù)圖片)

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-10-14 15:33 ? 次閱讀

本文來源電子發(fā)燒友社區(qū),作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2307400_1_1.html


前言

話說沒有藝術(shù)細胞的程序員不是好碼農(nóng)!

上一次我們進行了LCD的刷屏測試,我們覺得太單調(diào)了,程序員就應(yīng)該玩點有藝術(shù)性的。這次我們使用LCD點陣畫出各類具有藝術(shù)性的圖像。

參見https://codegolf.stackexchange.com/

代碼

有用到浮點算數(shù)運算,需要包含算術(shù)庫

#include

代碼如下

//圖片尺寸:

#define DIM 130

//圖片尺寸-1

#define DM1 (DIM-1)

#define _sq(x) ((x)*(x))                           // 平方

#define _cb(x) abs((x)*(x)*(x))                    // 立方的絕對值

#define _cr(x) (unsigned short)(pow((x),1.0/3.0))  // 立方根

 

unsigned char RD(int i,int j){

return (char)(_sq(cos(atan2(j-65,i-65)/2))*255);

}

 

unsigned char GR(int i,int j){

return (char)(_sq(cos(atan2(j-65,i-65)/2-2*acos(-1)/3))*255);

}

 

unsigned char BL(int i,int j){

return (char)(_sq(cos(atan2(j-65,i-65)/2+2*acos(-1)/3))*255);

}

 

unsigned char RD0(int i,int j)

{

float s=3./(j+99);

float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;

return ((int)((i+DIM)*s+y)%2+(int)((DIM*2-i)*s+y)%2)*127;

}

 

unsigned char GR0(int i,int j){

float s=3./(j+99);

float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;

return ((int)(5*((i+DIM)*s+y))%2+(int)(5*((DIM*2-i)*s+y))%2)*127;

}

 

unsigned char BL0(int i,int j){

float s=3./(j+99);

float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;

return ((int)(29*((i+DIM)*s+y))%2+(int)(29*((DIM*2-i)*s+y))%2)*127;

}

 

unsigned char RD1(int i, int j) {

#define r(n)(rand()%n)

    static char c[DIM][DIM]; return!c[i][j] ? c[i][j] = !r(999) ? r(256) : RD((i + r(2)) % 1024, (j + r(2)) % 1024) : c[i][j];

}

unsigned char GR1(int i, int j) {

    static char c[DIM][DIM]; return!c[i][j] ? c[i][j] = !r(999) ? r(256) : GR((i + r(2)) % 1024, (j + r(2)) % 1024) : c[i][j];

}

unsigned char BL1(int i, int j) {

    static char c[DIM][DIM]; return!c[i][j] ? c[i][j] = !r(999) ? r(256) : BL((i + r(2)) % 1024, (j + r(2)) % 1024) : c[i][j];

}

 

unsigned char RD2(int i, int j) {

    static double k; k += rand() / 1. / 0x7FFF; int l = k; l %= 512; return l > 255 ? 511 - l : l;

}

unsigned char GR2(int i, int j) {

    static double k; k += rand() / 1. / 0x7FFF; int l = k; l %= 512; return l > 255 ? 511 - l : l;

}

unsigned char BL2(int i, int j) {

    static double k; k += rand() / 1. / 0x7FFF; int l = k; l %= 512; return l > 255 ? 511 - l : l;

}

 

unsigned char RD3(int i, int j) {

    return (unsigned char)sqrt((double)(_sq(i - DIM / 2) * _sq(j - DIM / 2)) * 2.0);

}

unsigned char GR3(int i, int j) {

    return (unsigned char)sqrt((double)(

        (_sq(i - DIM / 2) | _sq(j - DIM / 2)) *

        (_sq(i - DIM / 2) & _sq(j - DIM / 2))

        ));

}

unsigned char BL3(int i, int j) {

    return (unsigned char)sqrt((double)(_sq(i - DIM / 2) & _sq(j - DIM / 2)) * 2.0);

}

 

unsigned char RD4(int i, int j) {

    static int r[DIM]; int p = rand() % 9 - 4; r[i] = i & r[i] ? (r[i] + r[i - 1]) / 2 : i ? r[i - 1] : 512; r[i] += r[i] + p > 0 ? p : 0; return r[i] ? r[i] < DIM ? r[i] : DM1 : 0;

}

unsigned char GR4(int i, int j) {

    static int r[DIM]; int p = rand() % 7 - 3; r[i] = i & r[i] ? (r[i] + r[i - 1]) / 2 : i ? r[i - 1] : 512; r[i] += r[i] + p > 0 ? p : 0; return r[i] ? r[i] < DIM ? r[i] : DM1 : 0;

}

unsigned char BL4(int i, int j) {

    static int r[DIM]; int p = rand() % 15 - 7; r[i] = i & r[i] ? (r[i] + r[i - 1]) / 2 : i ? r[i - 1] : 512; r[i] += r[i] + p > 0 ? p : 0; return r[i] ? r[i] < DIM ? r[i] : DM1 : 0;

}

 

void StartHdfSPITest(void)

{

    static uint16_t gcolor = 0xFFFF;

    LcdInit();

    while (1) {

        for(int i=0;ifor(int j=0;jstatic unsigned short color[3];

                color[0] = RD(i,j)&255;

                color[1] = GR(i,j)&255;

                color[2] = BL(i,j)&255;

                uint16_t c = (color[0]>>3) << 11;

                c |= (color[1]>>2) << 5;

                c |= (color[2]>>3) << 0;

                lcd_draw_point(i,j,c);

            }

        }

        LcdPush();

        LOS_Msleep(2000);

 

        for(int i=0;ifor(int j=0;jstatic unsigned short color[3];

                color[0] = RD1(i,j)&255;

                color[1] = GR1(i,j)&255;

                color[2] = BL1(i,j)&255;

                uint16_t c = (color[0]>>3) << 11;

                c |= (color[1]>>2) << 5;

                c |= (color[2]>>3) << 0;

                lcd_draw_point(i,j,c);

            }

        }

        LcdPush();

        LOS_Msleep(2000);

 

        for(int i=0;ifor(int j=0;jstatic unsigned short color[3];

                color[0] = RD2(i,j)&255;

                color[1] = GR2(i,j)&255;

                color[2] = BL2(i,j)&255;

                uint16_t c = (color[0]>>3) << 11;

                c |= (color[1]>>2) << 5;

                c |= (color[2]>>3) << 0;

                lcd_draw_point(i,j,c);

            }

        }

        LcdPush();

        LOS_Msleep(2000);

 

        for(int i=0;ifor(int j=0;jstatic unsigned short color[3];

                color[0] = RD3(i,j)&255;

                color[1] = GR3(i,j)&255;

                color[2] = BL3(i,j)&255;

                uint16_t c = (color[0]>>3) << 11;

                c |= (color[1]>>2) << 5;

                c |= (color[2]>>3) << 0;

                lcd_draw_point(i,j,c);

            }

        }

        LcdPush();

        LOS_Msleep(2000);

 

        for(int i=0;ifor(int j=0;jstatic unsigned short color[3];

                color[0] = RD4(i,j)&255;

                color[1] = GR4(i,j)&255;

                color[2] = BL4(i,j)&255;

                uint16_t c = (color[0]>>3) << 11;

                c |= (color[1]>>2) << 5;

                c |= (color[2]>>3) << 0;

                lcd_draw_point(i,j,c);

            }

        }

        LcdPush();

        LOS_Msleep(2000);

    }

}
;j++)>;i++)>;j++)>;i++)>;j++)>;i++)>;j++)>;i++)>;j++)>;i++)>

效果

image.png

image.png

image.png

image.png

總結(jié)

代碼中有大量的浮點運算,本身也可以作為CPU性能的一個對比測試,同時也可以測試刷屏的速率。從效果來看CPU的性能是不錯的,刷頻效果也可以,后面就正式開始LVGL的移植了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開鴻智谷
    +關(guān)注

    關(guān)注

    2

    文章

    116

    瀏覽量

    1112
  • NiobeU4
    +關(guān)注

    關(guān)注

    3

    文章

    31

    瀏覽量

    492
收藏 人收藏

    評論

    相關(guān)推薦

    【AG32開發(fā)板體驗連載】網(wǎng)絡(luò)攝像頭

    和 DVP 相機等接口,但是大部分都可以通過 FPGA 核心搭建出來,甚至于那些單總線協(xié)議 ,紅外遙控協(xié)議,都能在 FPGA 核搭建 開發(fā)板上板載 2 個用戶按鍵,4 個自定義 LED 燈,SPI
    發(fā)表于 10-11 14:54

    亮相OpenHarmony開發(fā)者大會,與生態(tài)共創(chuàng)開源新篇章!

    5月25日,以“心聚力智引未來”為主題的OpenHarmony開發(fā)者大會2024(以下簡稱大會)在深圳成功舉辦。獲得多項獎項及授牌
    的頭像 發(fā)表于 05-26 08:30 ?582次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>亮相OpenHarmony<b class='flag-5'>開發(fā)</b>者大會,與生態(tài)共創(chuàng)開源新篇章!

    榮獲鴻蒙原生應(yīng)用開發(fā)及培訓(xùn)服務(wù)商牌匾授牌

    出席現(xiàn)場,并獲頒鴻蒙原生應(yīng)用開發(fā)及培訓(xùn)服務(wù)商稱號。圖/左4副總裁李傳釗
    的頭像 發(fā)表于 05-24 08:30 ?639次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>榮獲鴻蒙原生應(yīng)用<b class='flag-5'>開發(fā)</b>及培訓(xùn)服務(wù)商牌匾授牌

    聯(lián)合多家伙伴戰(zhàn)略簽約,加速鴻蒙生態(tài)發(fā)展!

    5月20日,母公司拓維信息520產(chǎn)品與技術(shù)開放日暨28周年慶圓滿舉行,此次周年慶不僅是對公司創(chuàng)新突破、產(chǎn)品孵化和商業(yè)成果的回顧,更是攜手合作伙伴共同展望未來、開啟新篇章的重要時刻。
    的頭像 發(fā)表于 05-23 08:30 ?659次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>聯(lián)合多家伙伴戰(zhàn)略簽約,加速鴻蒙生態(tài)發(fā)展!

    免費!NXP i.MX 93開發(fā)板有獎試用

    米爾與NXP合作發(fā)布的新品基于NXPi.MX93應(yīng)用處理器的MYD-LMX9X開發(fā)板免費試用活動來啦~~米爾提供了2塊價值678
    的頭像 發(fā)表于 05-23 08:01 ?603次閱讀
    <b class='flag-5'>免費</b>!NXP i.MX 93<b class='flag-5'>開發(fā)板</b>有獎<b class='flag-5'>試用</b>

    受邀出席2023年度南山區(qū)經(jīng)濟突出貢獻企業(yè)TOP峰會

    4月19日,2023年度南山區(qū)經(jīng)濟突出貢獻今業(yè)TOP峰會順利召開,(深圳子公司)作為南山鴻蒙產(chǎn)業(yè)生態(tài)的核心企業(yè),OpenHarmony項目群A類捐贈人、鴻蒙生態(tài)服務(wù)公司首批入駐
    的頭像 發(fā)表于 04-20 08:29 ?348次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>受邀出席2023年度南山區(qū)經(jīng)濟突出貢獻企業(yè)TOP峰會

    拓維信息及旗下同獲華為HarmonyOS開發(fā)服務(wù)商認證

    近日,拓維信息及旗下雙雙通過華為HarmonyOS開發(fā)服務(wù)商認證,成為華為“鴻蒙服務(wù)商先鋒計劃”認證級伙伴。秉持共同發(fā)展、共創(chuàng)價值的合作理念,拓維信息、
    的頭像 發(fā)表于 03-29 08:13 ?420次閱讀
    拓維信息及旗下<b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>同獲華為HarmonyOS<b class='flag-5'>開發(fā)</b>服務(wù)商認證

    與CSDN達成戰(zhàn)略合作,共建OpenHarmony人才計劃

    2024年3月19日,與中國專業(yè)開發(fā)者社區(qū)CSDN就共建OpenHarmony人才計劃達成戰(zhàn)略合作并舉辦發(fā)布儀式。
    的頭像 發(fā)表于 03-20 08:29 ?337次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>與CSDN達成戰(zhàn)略合作,共建OpenHarmony人才計劃

    國內(nèi)首批 | 多名講師獲“鴻蒙原生應(yīng)用開發(fā)培訓(xùn)講師”資格認證

    2023年3月4日-5日,鴻蒙生態(tài)服務(wù)(深圳)有限公司(以下簡稱“鴻蒙生態(tài)服務(wù)公司”)組織了國內(nèi)首批“鴻蒙原生應(yīng)用開發(fā)培訓(xùn)講師”認證,
    的頭像 發(fā)表于 03-16 08:29 ?521次閱讀
    國內(nèi)首批 | <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>多名講師獲“鴻蒙原生應(yīng)用<b class='flag-5'>開發(fā)</b>培訓(xùn)講師”資格認證

    與數(shù)城科技達成戰(zhàn)略合作

    12月21日,數(shù)城科技股份有限公司(以下簡稱數(shù)城科技)董事長杜潛一行到訪湖南開數(shù)字產(chǎn)業(yè)發(fā)展有限公司參觀交流(以下簡稱),拓維信
    的頭像 發(fā)表于 12-22 08:30 ?1082次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>與數(shù)城科技達成戰(zhàn)略合作

    【飛騰派4G版免費試用】鴻蒙系統(tǒng)的各種報錯,讓程序員差點.............

    開源這一塊,但是大部分的程序員還是停留在生計問題,有時間精力投入到給開源添磚加瓦的還是比較少,這或許就是開源與程序員的矛盾。 8、好多指令都缺,用起來完全不習(xí)慣,好多東西需要自己去
    發(fā)表于 12-13 15:09

    明德?lián)PPCIE開發(fā)板系列XILINX-K7試用體驗-第二

    本文為明德?lián)P原創(chuàng)文章,轉(zhuǎn)載請注明出處!作者:Vito 明德?lián)PPCIE開發(fā)板系列XILINX-K7試用體驗-第二 第二周的試用計劃是實現(xiàn)常見低速協(xié)議(UART,I2C,SPI)的FPG
    的頭像 發(fā)表于 11-29 15:39 ?3145次閱讀
    明德?lián)PPCIE<b class='flag-5'>開發(fā)板</b>系列XILINX-K7<b class='flag-5'>試用</b>體驗-第二<b class='flag-5'>篇</b>

    亮相第十二屆中國互聯(lián)網(wǎng)測試開發(fā)大會

    11月25日,中國互聯(lián)網(wǎng)測試開發(fā)大會在深圳順利開啟,大會以“軟件質(zhì)量保障體系和測試研發(fā)技術(shù)交流”為主要目的,旨在為行業(yè)搭建一個深入探討和交流的橋梁和平臺。作為深耕OpenHar
    的頭像 發(fā)表于 11-28 08:29 ?558次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>亮相第十二屆中國互聯(lián)網(wǎng)測試<b class='flag-5'>開發(fā)</b>大會

    程序員表白程序

    電子發(fā)燒友網(wǎng)站提供《程序員表白程序.rar》資料免費下載
    發(fā)表于 11-21 10:41 ?16次下載
    <b class='flag-5'>程序員</b>表白<b class='flag-5'>程序</b>

    LVGL案例分享--手把手教你移植到T113-i國產(chǎn)工業(yè)開發(fā)板

    龍科技的T113-i的開發(fā)板上。 LVGL LVGL,全名“Littlev Graphics Library”,是一個開源的圖形庫,主要用于在嵌入式系統(tǒng)上創(chuàng)建圖形用戶界面(GUI)。它是用C語言編寫
    發(fā)表于 11-17 09:55