找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7145|回复: 17
打印 上一主题 下一主题
收起左侧

ILI9163的51单片机驱动程序 含有基本驱动和基本图形函数

  [复制链接]
跳转到指定楼层
楼主
驱动文件说明:
1.V2版本本驱动将包含ILI9163基本驱动函数、基本图形函数,并将相应函数进行归类。如果需要将本驱动移植到其他平台,只需修改base文件中相应函数即可。
1.8寸tft彩屏SGP18T驱动,ILI9163控制器;含有基本驱动和基本图形函数


51单片机所有驱动文件下载:

部分代码预览:
  1. /**********************************************************
  2. 文件名称:
  3. 功能说明:
  4. 编写:阿呆游乐园
  5.   ADaiPlay.21ic.org
  6.   QQ:1325180192
  7. 时间:2011/8/
  8. 其他说明:版权所有,盗版请注明出处
  9. **********************************************************/

  10. #include<reg51.h>
  11. #include "MyType.h"
  12. #include "SGP18T_ILI9163B_base.h"
  13. #include "SGP18T_ILI9163B_figure.h"




  14. /*****************数组声名**********************************/
  15. uint16 code palette[]={
  16.                                 0x0000,
  17.                                 0xf800,//red
  18.                                 0x07e0,//green
  19.                                 0x001f,//blue
  20.                                 0xf81f,//purple
  21.                                 0xffe0,//yellow
  22.                                 0x07ff,//cyan
  23.                                 0xffff, //white
  24.                                 0xfc08,//orange
  25.                                 };





  26. /**********************************************************
  27. 函数名称:ILI9163B_display_full()
  28. 入口参数:color为常用的需要显示的颜色(已经提前定义),color为
  29.                   NULL时,则可将不常用颜色放入dat中加以显示
  30. 出口参数:无
  31. 时间:2011/8/8
  32. 功能说明:全屏显示单色画面
  33. 其他说明:无
  34. **********************************************************/
  35. void ILI9163B_display_full(uint8 color,uint16 dat)
  36. {
  37.           unsigned int i,j;
  38.        
  39.         ILI9163B_address_rst();

  40.         for(i=0;i<160;i++)
  41.         {
  42.              for(j=0;j<128;j++)
  43.         {
  44.                         if(color == NULL)
  45.                                ILI9163B_write_para16(dat);
  46.                         else
  47.                         {
  48.                                 ILI9163B_write_para16(palette[color]);
  49.                         }
  50.         }
  51.         }
  52. }



  53. /**********************************************************
  54. 函数名称:ILI9163B_draw_part()
  55. 入口参数:起始、终止横坐标(0-127),纵坐标(0-159),显示颜色uint16
  56. 出口参数:无
  57. 时间:2011/8/8
  58. 功能说明:填充矩形区域
  59. 其他说明:0<=xs<xe<=127
  60.                   0<=ys<ye<=159
  61. **********************************************************/
  62. void ILI9163B_draw_part(uint8 xs,uint8 ys,uint8 xe,uint8 ye,uint16 color_dat)
  63. {
  64.         uint8 i,j;

  65.         ILI9163B_SetPos(xs,ys,xe,ye);       
  66.         for(j=0;j<(ye-ys+1);j++)
  67.     {
  68.             for(i=0;i<(xe-xs+1);i++)
  69.                 {
  70.                         ILI9163B_write_para16(color_dat);
  71.                 }
  72.         }   
  73. }

  74. /**********************************************************
  75. 函数名称:ILI9163B_draw_rectangle()
  76. 入口参数:起始、终止横坐标(0-127),纵坐标(0-159),显示颜色uint16
  77. 出口参数:无
  78. 时间:2011/8/8
  79. 功能说明:画矩形边框
  80. 其他说明:0<=xs<xe<=127
  81.                   0<=ys<ye<=159
  82. **********************************************************/
  83. void ILI9163B_draw_rectangle(uint8 xs,uint8 ys,uint8 xe,uint8 ye,uint16 color_dat)
  84. {
  85.         ILI9163B_draw_line(xs,ys,xs,ye,color_dat);          //画矩形左边
  86.         ILI9163B_draw_line(xe,ys,xe,ye,color_dat);          //画矩形右边
  87.         ILI9163B_draw_line(xs,ys,xe,ys,color_dat);          //画矩形上边
  88.         ILI9163B_draw_line(xs,ye,xe,ye,color_dat);          //画矩形下边
  89. }


  90. /**********************************************************
  91. 函数名称:ILI9163B_draw_circle()
  92. 入口参数:圆心横坐标(0-127),纵坐标(0-159),半径(0-128),显示颜色uint16
  93. 出口参数:无
  94. 时间:2011/8/8
  95. 功能说明:画圆形边框(仅支持屏幕内画圆)
  96. 其他说明:0<=x<=127
  97.                   0<=y<=159
  98. **********************************************************/
  99. void ILI9163B_draw_circle(uint8 x,uint8 y,uint8 r,uint16 color_dat)
  100. {
  101.         unsigned char dx, dy = r;

  102.         if((x>=r) &&((128-x)>=r) && (y>=r) && ((160-y)>=r))                //确定所画圆在屏幕范围内,没有超出最外边,(暂不支持与屏幕边相交)
  103.         {
  104.                 for(dx = 0; dx <= r; dx++)
  105.                 {
  106.                         while((r * r + 1 - dx * dx) < (dy * dy)) dy--;
  107.                         ILI9163B_draw_dot(x + dx, y - dy, color_dat);
  108.                         ILI9163B_draw_dot(x - dx, y - dy, color_dat);
  109.                         ILI9163B_draw_dot(x - dx, y + dy, color_dat);
  110.                         ILI9163B_draw_dot(x + dx, y + dy, color_dat);

  111.                         ILI9163B_draw_dot(x + dy, y - dx, color_dat);
  112.                         ILI9163B_draw_dot(x - dy, y - dx, color_dat);
  113.                         ILI9163B_draw_dot(x - dy, y + dx, color_dat);
  114.                         ILI9163B_draw_dot(x + dy, y + dx, color_dat);
  115.         }
  116.         }



  117. }


  118. /**********************************************************
  119. 函数名称:ILI9163B_draw_line()
  120. 入口参数:起始、终止横坐标(0-127),纵坐标(0-159),显示颜色uint16
  121. 出口参数:无
  122. 时间:2011/8/8
  123. 功能说明:画直线
  124. 其他说明:0<=xs<xe<=127
  125.                   0<=ys<ye<=159
  126. **********************************************************/
  127. void ILI9163B_draw_line(uint8 xs,uint8 ys,uint8 xe,uint8 ye,uint16 color_dat)
  128. {
  129.         uint8 i,ds;
  130.         int dx,dy,inc_x, inc_y;
  131.         int xerr = 0, yerr = 0;                                //初始化变量

  132.         if(xs==xe)                                                          //如果是画垂直线则只需对竖直坐标计数
  133.         {
  134.             ILI9163B_SetPos(xs,ys,xe,ye);
  135.                 for(i=0;i<(ye-ys+1);i++)
  136.                 {
  137.                         ILI9163B_write_para16(color_dat);
  138.                 }
  139.         }
  140.         else if(ys==ye)                                                //如果是水平线则只需要对水平坐标计数
  141.     {
  142.                 ILI9163B_SetPos(xs,ys,xe,ye);
  143.                   for(i=0;i<(xe-xs+1);i++)
  144.                 {
  145.                         ILI9163B_write_para16(color_dat);
  146.                 }
  147.         }
  148.         else                                                                                        //如果是斜线,则重新计算,使用画点函数画出直线
  149.         {
  150.             dx = xe - xs;                                                                //计算坐标增量
  151.             dy = ye - ys;

  152.                 if(dx > 0) inc_x = 1;                                                //设置单步方向
  153.                 else
  154.                 {
  155.                         inc_x = -1; dx = -dx;
  156.                 }
  157.                 if(dy > 0) inc_y = 1;                                                //设置单步方向
  158.                 else
  159.             {
  160.                         inc_y = -1; dy = -dy;
  161.                 }

  162.                 if(dx > dy) ds = dx;                                                //选取基本增量坐标轴
  163.                 else                ds = dy;

  164.                 for(i = 0; i <= ds+1; i++)                                        //画线输出
  165.                 {
  166.                         ILI9163B_draw_dot(xs, ys,color_dat);        //画点
  167.                         xerr += dx;
  168.                         yerr += dy;
  169.                         if(xerr > ds)
  170.                         {
  171.                                 xerr -= ds;
  172.                                 xs   += inc_x;
  173.                         }
  174.                         if(yerr > ds)
  175.                         {
  176.                                 yerr -= ds;
  177.                                 ys   += inc_y;
  178.                         }
  179.                 }
  180.         }  
  181. }

  182. /**********************************************************
  183. 函数名称:ILI9163B_draw_dot()
  184. 入口参数:起始横坐标(0-127),纵坐标(0-159),显示颜色uint16
  185. 出口参数:无
  186. 时间:2011/8/8
  187. 功能说明:画点
  188. 其他说明:0<=x<=127
  189.                   0<=y<=159
  190. **********************************************************/
  191. void ILI9163B_draw_dot(uint8 x,uint8 y,uint16 color_dat)
  192. {
  193.         ILI9163B_SetPos(x,y,x,y);
  194.         ILI9163B_write_para16(color_dat);
  195. }
复制代码




GP18T_1.8ITL9163B.rar

48.74 KB, 下载次数: 164, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:137922 发表于 2016-8-30 13:56 | 只看该作者
看看。。。。。。。
回复

使用道具 举报

板凳
ID:83761 发表于 2016-10-7 10:09 | 只看该作者
看看
回复

使用道具 举报

地板
ID:214768 发表于 2017-6-26 16:01 | 只看该作者
看看,刚好我现在在做这个。
回复

使用道具 举报

5#
ID:238611 发表于 2017-10-11 16:02 | 只看该作者
正好需要,参考参考!
回复

使用道具 举报

6#
ID:244749 发表于 2017-10-31 22:24 | 只看该作者
参考参考, 看看
回复

使用道具 举报

7#
ID:79642 发表于 2018-4-29 08:13 来自手机 | 只看该作者
点下我这个屏
回复

使用道具 举报

8#
ID:328554 发表于 2018-9-11 20:21 | 只看该作者
下载学学
回复

使用道具 举报

9#
ID:440159 发表于 2018-12-5 16:08 | 只看该作者
看看,谢谢
回复

使用道具 举报

10#
ID:62864 发表于 2019-1-10 21:23 | 只看该作者
感谢分享  正在找
回复

使用道具 举报

11#
ID:57984 发表于 2019-5-12 14:08 | 只看该作者
这屏的驱动正需要,谢谢
回复

使用道具 举报

12#
ID:67705 发表于 2019-5-24 23:26 来自手机 | 只看该作者
买了几个屏,试下。谢谢。
回复

使用道具 举报

13#
ID:624629 发表于 2019-10-21 13:34 | 只看该作者
来学习了
回复

使用道具 举报

14#
ID:542032 发表于 2019-10-21 22:47 | 只看该作者
手里有几片这屏幕,正需要这程序,赞一个!!
回复

使用道具 举报

15#
ID:198286 发表于 2019-10-22 16:08 | 只看该作者
有9341的屏,和这个太小了
回复

使用道具 举报

16#
ID:268627 发表于 2019-11-16 20:31 | 只看该作者
感谢分享,有一些赠品屏幕
回复

使用道具 举报

17#
ID:650313 发表于 2019-12-20 19:29 | 只看该作者
谢谢楼主!
回复

使用道具 举报

18#
ID:341453 发表于 2022-5-7 16:14 | 只看该作者
手里正好有这个屏幕,SGP18T.不过分辨率不怎么好。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表