找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1955|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

ESK32-360開(kāi)發(fā)板TFT屏顯示功能及擴(kuò)展(2)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:776997 發(fā)表于 2020-8-7 09:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
2. 繪圖函數(shù)的擴(kuò)展
要實(shí)現(xiàn)繪圖功能,首先是添加畫(huà)點(diǎn)函數(shù),然后是添加畫(huà)線(xiàn)函數(shù)和區(qū)域填充函數(shù)。
添加的畫(huà)點(diǎn)函數(shù)為:
  1. void LCD_dotDraw(u16 X_Location, u16 Y_Location, u16 Color)
  2. {
  3.     LCD_StarterSet(X_Location, Y_Location);
  4.          LCD_WriteRAMPrior();
  5.          LCD_WriteRAM(Color);
  6. }
復(fù)制代碼

添加的畫(huà)線(xiàn)函數(shù)為:
  1. void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2, u16 Color)
  2. {
  3.          u16 t;
  4.          s16 xerr=0,yerr=0,delta_x,delta_y,distance;
  5.          u16 incx,incy,uRow,uCol;
  6.          delta_x=x2-x1;
  7.          delta_y=y2-y1;
  8.          uRow=x1;
  9.          uCol=y1;
  10.          if(delta_x>0)incx=1;
  11.          else if(delta_x==0)incx=0;
  12.          else { incx=-1; delta_x=-delta_x; }
  13.         
  14.          if(delta_y>0)incy=1;
  15.          else if(delta_y==0)incy=0;
  16.          else { incy=-1; delta_y=-delta_y; }
  17.         
  18.          if( delta_x>delta_y) distance=delta_x;
  19.          else distance=delta_y;
  20.         
  21.          for(t=0;t<=distance+1;t++)
  22.          {
  23.                    LCD_dotDraw(uRow,uCol,Color);            
  24.                    xerr+=delta_x ;
  25.                    yerr+=delta_y ;
  26.                    if(xerr>distance)
  27.                    {
  28.                             xerr-=distance;
  29.                             uRow+=incx;
  30.                    }
  31.                    if(yerr>distance)
  32.                    {
  33.                             yerr-=distance;
  34.                             uCol+=incy;
  35.                    }
  36.          }
  37. }
復(fù)制代碼

添加的區(qū)域填充函數(shù):
  1. void LCD_fill(u16 x,u16 y,u16 Height,u16 Width,u16 Color)
  2. {
  3.   u16 i,j;

  4.   for(j=0;j<Height;j++)
  5.   {
  6.          LCD_StarterSet(x,y);
  7.     LCD_WriteRAMPrior();
  8.     for (i = Width; i > 0; i--)
  9.     {
  10.       LCD_WriteRAM(Color);
  11.     }
  12.            x++;
  13.   }
  14. }
復(fù)制代碼

有了這3個(gè)函數(shù),后面我們?cè)谶M(jìn)行A/D采集時(shí)就可以輕松地實(shí)現(xiàn)數(shù)據(jù)的波形顯示,稍后見(jiàn)!

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表