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

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

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

  1. /********************************************************************
  2. *文件名:TFT.h
  3. *功能:定义TFT控制器参数,声明驱动TFT屏的相关函数
  4. *作者:jianqi
  5. *版本:v1.0
  6. ********************************************************************/
  7. #ifndef__TFT_H__
  8. #define__TFT_H__
  9. #include"def.h"
  10. #defineTFT351
  11. #defineTFT432
  12. #defineLCD_TypeTFT43
  13. //4.3寸TFT屏的相关参数
  14. #if(LCD_Type==TFT43)
  15. #defineTFT_XSIZE480
  16. #defineTFT_YSIZE272
  17. #defineCLKVAL4
  18. #defineVBPD4
  19. #defineVFPD4
  20. #defineVSPW8
  21. #defineHBPD4
  22. #defineHFPD4
  23. #defineHSPW40
  24. #definePNRMODE3
  25. #defineBPPMODE13
  26. #endif
  27. #defineHOZVALTFT_XSIZE-1
  28. #defineLINEVALTFT_YSIZE-1
  29. voidTFT_Power_Enable(BOOLON_OFF);
  30. voidTFT_Video_ON(BOOLON_OFF);
  31. voidTFT_Contraller_Init(void);
  32. voidPaint_Pixel(U32x,U32y,U32color);
  33. voidTFT_CLearScreen(U32color);
  34. voidDraw_Line(U32x1,U32y1,U32x2,U32y2,U32color);
  35. voidGraw_Rectangle(U32x1,U32y1,U32x2,U32y2,U32color);
  36. voidGraw_Full_Rectangle(U32x1,U32y1,U32x2,U32y2,U32color);
  37. voidPaint_Picture(U32x0,U32y0,U32width,U32height,UCHARbmp[]);
  38. #endif
  39. /********************************************************************
  40. *文件名:TFT.c
  41. *功能:配置ARM芯片的屏幕控制器相关寄存器,定义TFT相关显示函数
  42. *作者:jianqi
  43. *版本:v1.0
  44. ********************************************************************/
  45. #include"2440addr.h"
  46. #include"TFT.h"
  47. #include"def.h"
  48. volatileunsignedintTFT_Buffer[TFT_YSIZE][TFT_XSIZE];//显示数据缓存区
  49. /**********************************************
  50. *名称:TFT_Contraller_Init
  51. *功能:初始化相关的S3C2440的TFT驱动寄存器
  52. *入口参数:无
  53. *出口参数:无
  54. **********************************************/
  55. voidTFT_Contraller_Init(void)
  56. {
  57. rGPDCON=0xaaaaaaaa;//使能VD[15:8]
  58. rGPDUP=0x00000000;//使能上拉电阻
  59. rGPCCON=0xaaaa02a9;//使能相关GPC引脚的LCD控制功能
  60. rGPCUP=0x00000000;//使能上拉电阻
  61. rLCDCON1=(CLKVAL<8)|(0<7)|(PNRMODE<5)|(BPPMODE<1)|0;
  62. rLCDCON2=(VBPD<24)|(LINEVAL<14)|(VFPD<6)|(VSPW<0);
  63. rLCDCON3=(HBPD<19)|(HOZVAL<8)|(HFPD<0);
  64. rLCDCON4=(13<8)|(HSPW<0);
  65. rLCDCON5=(1<11)|(0<10)|(1<9)|(1<8)|(0<7)|(0<6)|(1<3)|(0<1)|(1<0);
  66. rLCDSADDR1=(((U32)TFT_Buffer>>22)<21)|(((U32)TFT_Buffer>>1)&0x1fffff);//缓存区起始地址30~22位
  67. rLCDSADDR2=((((U32)TFT_Buffer+(TFT_XSIZE*TFT_YSIZE)*4)>>1)&0x1fffff);//缓存区结束地址21~1位
  68. }
  69. /**********************************************
  70. *名称:TFT_Video_ON
  71. *功能:是否开启TFT屏
  72. *入口参数:1--开启TFT;0--关闭TFT
  73. *出口参数:无
  74. **********************************************/
  75. voidTFT_Video_ON(BOOLON_OFF)
  76. {
  77. if(ON_OFF==1)
  78. rLCDCON1|=1;//ENVID=ON
  79. else
  80. rLCDCON1=rLCDCON1&0xffffe;//ENVID=Off
  81. }
  82. /**********************************************
  83. *名称:TFT_Power_Enable
  84. *功能:是否使能TFT控制器电源
  85. *入口参数:1--使能;0--不使能
  86. *出口参数:无
  87. **********************************************/
  88. voidTFT_Power_Enable(BOOLEnable_Disenable)
  89. {
  90. rGPGUP=rGPGUP&(~(1<4))|(1<4);
  91. rGPGCON=rGPGCON&(~(3<8))|(3<8);//GPG4=PWREN
  92. if(Enable_Disenable==1)
  93. {
  94. rGPGDAT=rGPGDAT|(1<4);
  95. }
  96. else
  97. {
  98. rGPGDAT=rGPGDAT&(~(1<4));
  99. }
  100. }
  101. /*************************************************************
  102. *名称:Paint_Pixel
  103. *功能:点亮一个像素点
  104. *入口参数:像素点X坐标x,Y坐标y,显示颜色color
  105. *出口参数:无
  106. **************************************************************/
  107. voidPaint_Pixel(U32x,U32y,U32color)
  108. {
  109. if((x
  110. {
  111. TFT_Buffer[y][x]=color;
  112. }
  113. }
  114. /*************************************************************
  115. *名称:TFT_CLearScreen
  116. *功能:擦除屏幕为指定颜色
  117. *入口参数:擦出颜色color
  118. *出口参数:无
  119. **************************************************************/
  120. voidTFT_CLearScreen(U32color)
  121. {
  122. U32x,y;
  123. for(y=0;y
  124. {
  125. for(x=0;x
  126. {
  127. TFT_Buffer[y][x]=color;
  128. }
  129. }
  130. }
  131. /*************************************************************
  132. *名称:Draw_Line
  133. *功能:显示一条直线
  134. *入口参数:起始坐标(x1,y1),结束坐标(x2,y2),线条颜色color
  135. *出口参数:无
  136. **************************************************************/
  137. voidDraw_Line(U32x1,U32y1,U32x2,U32y2,U32color)
  138. {
  139. intdx,dy,e;
  140. dx=x2-x1;
  141. dy=y2-y1;
  142. if(dx>=0)
  143. {
  144. if(dy>=0)
  145. {
  146. if(dx>=dy)//1/8象限
  147. {
  148. e=dy-dx/2;
  149. while(x1<=x2)
  150. {
  151. Paint_Pixel(x1,y1,color);
  152. if(e>0)
  153. {
  154. y1+=1;
  155. e-=dx;
  156. }
  157. x1+=1;
  158. e+=dy;
  159. }
  160. }
  161. else//2/8象限
  162. {
  163. e=dx-dy/2;
  164. while(y1<=y2)
  165. {
  166. Paint_Pixel(x1,y1,color);
  167. if(e>

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

网站地图

Top