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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4291|回復: 3
打印 上一主題 下一主題
收起左側

單片機驅動ILI9320畫線,畫點,畫圓,畫矩形,打印字母,打印漢字,輸出圖像

[復制鏈接]
跳轉到指定樓層
樓主
ID:112317 發表于 2016-4-6 19:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

2.0寸彩屏驅動240*320分辨率,ILI9320控制器,含有基本驅動函數和基本圖形顯示函數例如:畫線,畫點,畫圓,畫矩形,打印字母,打印漢字,輸出圖像等

完整代碼下載: 52465290V1.0_TFT_ILI9320.rar (88.1 KB, 下載次數: 60)

主要代碼預覽:
  1. /**********************************************************
  2. 文件名稱:ILI9320_figure.c
  3. 功能說明:圖形函數庫,畫點、畫線、畫圓、填充、畫矩形
  4. 編寫:阿呆游樂園
  5.   ADaiPlay.21ic.org
  6.   QQ:1325180192
  7. 時間:2011/8/10
  8. 其他說明:版權所有,盜版請注明出處
  9. **********************************************************/

  10. #include <reg51.h>
  11. #include "MyType.h"
  12. #include "ILI9320_base.h"
  13. #include "ILI9320_figure.h"








  14. /**********************************************************
  15. 函數名稱:LCD_print_full()
  16. 入口參數:color為常用的需要顯示的顏色(已經提前定義),color為
  17.                   NULL時,則可將不常用顏色放入dat中加以顯示
  18. 出口參數:無
  19. 時間:2011/8/10
  20. 功能說明:全屏顯示單色畫面
  21. 其他說明:無
  22. **********************************************************/
  23. void LCD_print_full(uint16 color)
  24. {
  25.           unsigned int i,j;
  26.        
  27.         ILI9320_SetPos(0,0,SCREEN_X_MAX,SCREEN_Y_MAX);

  28.         for(i=0;i<SCREEN_Y_MAX;i++)
  29.         {
  30.              for(j=0;j<SCREEN_X_MAX;j++)
  31.         {
  32.                         LCD_WRITE_DATA(color);
  33.         }
  34.         }
  35. }



  36. /**********************************************************
  37. 函數名稱:LCD_print_part()
  38. 入口參數:起始、終止橫坐標(0-239),縱坐標(0-319),顯示顏色uint16
  39. 出口參數:無
  40. 時間:2011/8/10
  41. 功能說明:填充矩形區域
  42. 其他說明:0<=xs<xe<=SCREEN_X_MAX-1
  43.                   0<=ys<ye<=SCREEN_Y_MAX-1
  44. **********************************************************/
  45. void LCD_print_part(uint16 xs,uint16 ys,uint16 xe,uint16 ye,uint16 color_dat)
  46. {
  47.         uint16 i,j;

  48.         ILI9320_SetPos(xs,ys,xe,ye);       
  49.         for(j=0;j<(ye-ys+1);j++)
  50.     {
  51.             for(i=0;i<(xe-xs+1);i++)
  52.                 {
  53.                         LCD_WRITE_DATA(color_dat);
  54.                 }
  55.         }   
  56. }

  57. /**********************************************************
  58. 函數名稱:LCD_print_rectangle()
  59. 入口參數:起始、終止橫坐標(0-239),縱坐標(0-319),顯示顏色uint16
  60. 出口參數:無
  61. 時間:2011/8/10
  62. 功能說明:畫矩形邊框
  63. 其他說明:0<=xs<xe<=SCREEN_X_MAX-1
  64.                   0<=ys<ye<=SCREEN_Y_MAX-1
  65. **********************************************************/
  66. void LCD_print_rectangle(uint16 xs,uint16 ys,uint16 xe,uint16 ye,uint16 color_dat)
  67. {
  68.         LCD_print_line(xs,ys,xs,ye,color_dat);          //畫矩形左邊
  69.         LCD_print_line(xe,ys,xe,ye,color_dat);          //畫矩形右邊
  70.         LCD_print_line(xs,ys,xe,ys,color_dat);          //畫矩形上邊
  71.         LCD_print_line(xs,ye,xe,ye,color_dat);          //畫矩形下邊
  72. }


  73. /**********************************************************
  74. 函數名稱:LCD_print_circle()
  75. 入口參數:圓心橫坐標(0-239),縱坐標(0-319),半徑(0-120),顯示顏色uint16
  76. 出口參數:無
  77. 時間:2011/8/10
  78. 功能說明:畫圓形邊框(僅支持屏幕內畫圓)
  79. 其他說明:0<=x<=SCREEN_X_MAX-1
  80.                   0<=y<=SCREEN_Y_MAX-1
  81. **********************************************************/
  82. void LCD_print_circle(uint16 x,uint16 y,uint16 r,uint16 color_dat)
  83. {
  84.         uint16 dx, dy = r;

  85.         if((x>=r) &&((SCREEN_X_MAX-x)>=r) && (y>=r) && ((SCREEN_Y_MAX-y)>=r))                //確定所畫圓在屏幕范圍內,沒有超出最外邊,(暫不支持與屏幕邊相交)
  86.         {
  87.                 for(dx = 0; dx <= r; dx++)
  88.                 {
  89.                         while((r * r + 1 - dx * dx) < (dy * dy)) dy--;
  90.                         LCD_print_dot(x + dx, y - dy, color_dat);
  91.                         LCD_print_dot(x - dx, y - dy, color_dat);
  92.                         LCD_print_dot(x - dx, y + dy, color_dat);
  93.                         LCD_print_dot(x + dx, y + dy, color_dat);

  94.                         LCD_print_dot(x + dy, y - dx, color_dat);
  95.                         LCD_print_dot(x - dy, y - dx, color_dat);
  96.                         LCD_print_dot(x - dy, y + dx, color_dat);
  97.                         LCD_print_dot(x + dy, y + dx, color_dat);
  98.                 }
  99.         }
  100. }


  101. /**********************************************************
  102. 函數名稱:LCD_print_line()
  103. 入口參數:起始、終止橫坐標(0-239),縱坐標(0-319),顯示顏色uint16
  104. 出口參數:無
  105. 時間:2011/8/10
  106. 功能說明:畫直線
  107. 其他說明:0<=xs<xe<=SCREEN_X_MAX-1
  108.                   0<=ys<ye<=SCREEN_Y_MAX-1
  109. **********************************************************/
  110. void LCD_print_line(uint16 xs,uint16 ys,uint16 xe,uint16 ye,uint16 color_dat)
  111. {
  112.         uint16 i,ds;
  113.         int dx,dy,inc_x, inc_y;
  114.         int xerr = 0, yerr = 0;                                //初始化變量

  115.         if(xs==xe)                                                          //如果是畫垂直線則只需對豎直坐標計數
  116.         {
  117.             ILI9320_SetPos(xs,ys,xe,ye);
  118.                 for(i=0;i<(ye-ys+1);i++)
  119.                 {
  120.                         LCD_WRITE_DATA(color_dat);
  121.                 }
  122.         }
  123.         else if(ys==ye)                                                //如果是水平線則只需要對水平坐標計數
  124.     {
  125.                 ILI9320_SetPos(xs,ys,xe,ye);
  126.                   for(i=0;i<(xe-xs+1);i++)
  127.                 {
  128.                         LCD_WRITE_DATA(color_dat);
  129.                 }
  130.         }
  131.         else                                                                                        //如果是斜線,則重新計算,使用畫點函數畫出直線
  132.         {
  133.             dx = xe - xs;                                                                //計算坐標增量
  134.             dy = ye - ys;

  135.                 if(dx > 0) inc_x = 1;                                                //設置單步方向
  136.                 else
  137.                 {
  138.                         inc_x = -1; dx = -dx;
  139.                 }
  140.                 if(dy > 0) inc_y = 1;                                                //設置單步方向
  141.                 else
  142.             {
  143.                         inc_y = -1; dy = -dy;
  144.                 }

  145.                 if(dx > dy) ds = dx;                                                //選取基本增量坐標軸
  146.                 else                ds = dy;

  147.                 for(i = 0; i <= ds+1; i++)                                        //畫線輸出
  148.                 {
  149.                         LCD_print_dot(xs, ys,color_dat);        //畫點
  150.                         xerr += dx;
  151.                         yerr += dy;
  152.                         if(xerr > ds)
  153.                         {
  154.                                 xerr -= ds;
  155.                                 xs   += inc_x;
  156.                         }
  157.                         if(yerr > ds)
  158.                         {
  159.                                 yerr -= ds;
  160.                                 ys   += inc_y;
  161.                         }
  162.                 }
  163.         }  
  164. }

  165. /**********************************************************
  166. 函數名稱:LCD_print_dot()
  167. 入口參數:起始橫坐標(0-239),縱坐標(0-319),顯示顏色uint16
  168. 出口參數:無
  169. 時間:2011/8/8
  170. 功能說明:畫點
  171. 其他說明:0<=x<=SCREEN_X_MAX-1
  172.                   0<=y<=SCREEN_Y_MAX-1
  173. **********************************************************/
  174. void LCD_print_dot(uint16 x,uint16 y,uint16 color_dat)
  175. {
  176.         ILI9320_SetPos(x,y,x,y);
  177.         LCD_WRITE_DATA(color_dat);
  178. }
復制代碼



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

使用道具 舉報

沙發
ID:112642 發表于 2016-4-7 08:54 來自觸屏版 | 只看該作者
想下載看看咋樣
回復

使用道具 舉報

板凳
ID:183105 發表于 2017-3-24 16:18 | 只看該作者
感謝樓主
回復

使用道具 舉報

地板
ID:242746 發表于 2019-1-31 22:02 | 只看該作者
能用串口輸出動態圖嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91免费电影| 国产精品v | 亚洲人成人一区二区在线观看 | 91精品久久久久久久久 | av高清毛片 | 久久777| 国产精品久久久久久吹潮 | 精品久久久久久久久久久久 | 精品国产乱码久久久久久老虎 | 天天干天天草 | 成人精品免费视频 | 亚洲在线一区 | 午夜成人免费电影 | 韩日av在线 | 久热精品在线播放 | 久久久青草婷婷精品综合日韩 | 欧美日韩国产一区二区三区 | 欧美a级成人淫片免费看 | 精品久久久久久久久久久久久久久久久 | 国产中文字幕网 | 羞羞的视频在线观看 | 久久精品网 | 天天综合久久 | 日韩免费一区二区 | 在线一区二区三区 | 亚洲精品视频久久 | 不卡的av在线 | 欧美日本韩国一区二区 | 日韩中文字幕一区二区 | 亚洲国产高清在线观看 | 日韩欧美大片在线观看 | 免费高潮视频95在线观看网站 | 色约约视频 | 久久久久久久久国产精品 | 不卡一区| 国产视频线观看永久免费 | 国产高清一区二区三区 | 成人在线中文字幕 | 亚洲视频在线免费观看 | 国产精品国产成人国产三级 | 国产一区二区三区四区三区四 |