微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > S3C2440驱动TFT屏(24bit显示模式)

S3C2440驱动TFT屏(24bit显示模式)

时间:11-20 来源:互联网 点击:

  1. if(e>if(e>0)
  2. {
  3. x1+=1;
  4. e-=dy;
  5. }
  6. y1+=1;
  7. e+=dx;
  8. }
  9. }
  10. }
  11. else
  12. {
  13. dy=-dy;
  14. if(dx>=dy)//8/8象限
  15. {
  16. e=dy-dx/2;
  17. while(x1<=x2)
  18. {
  19. Paint_Pixel(x1,y1,color);
  20. if(e>0)
  21. {
  22. y1-=1;
  23. e-=dx;
  24. }
  25. x1+=1;
  26. e+=dy;
  27. }
  28. }
  29. else//7/8象限
  30. {
  31. e=dx-dy/2;
  32. while(y1>=y2)
  33. {
  34. Paint_Pixel(x1,y1,color);
  35. if(e>0)
  36. {
  37. x1+=1;
  38. e-=dy;
  39. }
  40. y1-=1;
  41. e+=dx;
  42. }
  43. }
  44. }
  45. }
  46. else
  47. {
  48. dx=-dx;
  49. if(dy>=0)
  50. {
  51. if(dx>=dy)//4/8象限
  52. {
  53. e=dy-dx/2;
  54. while(x1>=x2)
  55. {
  56. Paint_Pixel(x1,y1,color);
  57. if(e>0)
  58. {
  59. y1+=1;
  60. e-=dx;
  61. }
  62. x1-=1;
  63. e+=dy;
  64. }
  65. }
  66. else//3/8象限
  67. {
  68. e=dx-dy/2;
  69. while(y1<=y2)
  70. {
  71. Paint_Pixel(x1,y1,color);
  72. if(e>0)
  73. {
  74. x1-=1;
  75. e-=dy;
  76. }
  77. y1+=1;
  78. e+=dx;
  79. }
  80. }
  81. }
  82. else
  83. {
  84. dy=-dy;
  85. if(dx>=dy)//5/8象限
  86. {
  87. e=dy-dx/2;
  88. while(x1>=x2)
  89. {
  90. Paint_Pixel(x1,y1,color);
  91. if(e>0)
  92. {
  93. y1-=1;
  94. e-=dx;
  95. }
  96. x1-=1;
  97. e+=dy;
  98. }
  99. }
  100. else//6/8象限
  101. {
  102. e=dx-dy/2;
  103. while(y1>=y2)
  104. {
  105. Paint_Pixel(x1,y1,color);
  106. if(e>0)
  107. {
  108. x1-=1;
  109. e-=dy;
  110. }
  111. y1-=1;
  112. e+=dx;
  113. }
  114. }
  115. }
  116. }
  117. }
  118. /*************************************************************
  119. *名称:Graw_Rectangle
  120. *功能:显示一条矩形框
  121. *入口参数:起始坐标(x1,y1),结束坐标(x2,y2),矩形框颜色color
  122. *出口参数:无
  123. **************************************************************/
  124. voidGraw_Rectangle(U32x1,U32y1,U32x2,U32y2,U32color)
  125. {
  126. Draw_Line(x1,y1,x2,y1,color);
  127. Draw_Line(x2,y1,x2,y2,color);
  128. Draw_Line(x1,y2,x2,y2,color);
  129. Draw_Line(x1,y1,x1,y2,color);
  130. }
  131. /*************************************************************
  132. *名称:Graw_Full_Rectangle
  133. *功能:显示一条矩形框,并填充颜色
  134. *入口参数:起始坐标(x1,y1),结束坐标(x2,y2),填充颜色color
  135. *出口参数:无
  136. **************************************************************/
  137. voidGraw_Full_Rectangle(U32x1,U32y1,U32x2,U32y2,U32color)
  138. {
  139. inti;
  140. for(i=y1;i<=y2;i++)
  141. Draw_Line(x1,i,x2,i,color);
  142. }
  143. /**********************************************************************************
  144. *名称:Paint_Picture
  145. *功能:显示一张图片
  146. *入口参数:起始坐标(x0,y0),显示高度height,显示宽度width,填充颜色color
  147. *出口参数:无
  148. ************************************************************************************/
  149. voidPaint_Picture(U32x0,U32y0,U32width,U32height,UCHARbmp[])
  150. {
  151. intx,y;
  152. U32c;
  153. intp=0;
  154. for(y=y0;y
  155. {
  156. for(x=x0;x
  157. {
  158. c=bmp[p+2]|(bmp[p+1]<8)|(bmp[p]<16);
  159. if(((x0+x)
  160. {
  161. TFT_Buffer[y0+y][x0+x]=c;
  162. }
  163. p=p+3;
  164. }
  165. }
  166. }
  167. /********************************************************************
  168. *文件名:main.c
  169. *功能:测试TFT屏的驱动函数
  170. *作者:jianqi
  171. *版本:v1.0
  172. ********************************************************************/
  173. #include"2440addr.h"//包含2440相关寄存器的设置
  174. #include"TFT.h"
  175. externunsignedcharq_480x272[];//图片转换后的数组
  176. /*******************************************
  177. *名称:Delay
  178. *功能:延时
  179. *入口参数:无
  180. *出口参数:无
  181. **********************************************/
  182. voidDelay()
  183. {
  184. inti,j,k;
  185. for(i=0;i<20;i++)
  186. {
  187. for(j=0;j<100;j++)
  188. {
  189. for(k=0;k<1000;k++);
  190. }
  191. }
  192. }
  193. /*******************************************
  194. *名称:Main
  195. *功能:测试TFT屏幕
  196. *入口参数:无
  197. *出口参数:无
  198. **********************************************/
  199. voidMain(void)
  200. {
  201. TFT_Power_Enable(1);
  202. TFT_Contraller_Init();
  203. TFT_Video_ON(1);
  204. while(1)
  205. {
  206. TFT_CLearScreen((0x00<11)|(0x3f<5)|(0x00));//全屏显示红色
  207. Delay();
  208. Draw_Line(0,0,480,272,(0x1f<11)|(0x00<5)|(0x00));//对角线画直线
  209. Delay();
  210. Graw_Rectangle(20,20,400,200,(0x00<11)|(0x00<5)|(0x1f));//矩形框
  211. Delay();
  212. Graw_Full_Rectangle(20,20,400,200,(0x00<11)|(0x00<5)|(0x1f));//填充矩形框位指定颜色
  213. Delay();
  214. Paint_Picture(0,0,480,272,q_480x272);//显示图片
  215. Delay();
  216. }
  217. }

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top