在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > S3C2440驅(qū)動TFT屏(24bit顯示模式)

            S3C2440驅(qū)動TFT屏(24bit顯示模式)

            作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏

            本文引用地址:http://www.biyoush.com/article/201611/318929.htm
            1. /********************************************************************
            2. *文件名:TFT.h
            3. *功能:定義TFT控制器參數(shù),聲明驅(qū)動TFT屏的相關(guān)函數(shù)
            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屏的相關(guān)參數(shù)
            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芯片的屏幕控制器相關(guān)寄存器,定義TFT相關(guān)顯示函數(shù)
            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];//顯示數(shù)據(jù)緩存區(qū)
            49. /**********************************************
            50. *名稱:TFT_Contraller_Init
            51. *功能:初始化相關(guān)的S3C2440的TFT驅(qū)動寄存器
            52. *入口參數(shù):無
            53. *出口參數(shù):無
            54. **********************************************/
            55. voidTFT_Contraller_Init(void)
            56. {
            57. rGPDCON=0xaaaaaaaa;//使能VD[15:8]
            58. rGPDUP=0x00000000;//使能上拉電阻
            59. rGPCCON=0xaaaa02a9;//使能相關(guān)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);//緩存區(qū)起始地址30~22位
            67. rLCDSADDR2=((((U32)TFT_Buffer+(TFT_XSIZE*TFT_YSIZE)*4)>>1)&0x1fffff);//緩存區(qū)結(jié)束地址21~1位
            68. }
            69. /**********************************************
            70. *名稱:TFT_Video_ON
            71. *功能:是否開啟TFT屏
            72. *入口參數(shù):1--開啟TFT;0--關(guān)閉TFT
            73. *出口參數(shù):無
            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. *入口參數(shù):1--使能;0--不使能
            86. *出口參數(shù):無
            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. *入口參數(shù):像素點X坐標(biāo)x,Y坐標(biāo)y,顯示顏色color
            105. *出口參數(shù):無
            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. *入口參數(shù):擦出顏色color
            118. *出口參數(shù):無
            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. *入口參數(shù):起始坐標(biāo)(x1,y1),結(jié)束坐標(biāo)(x2,y2),線條顏色color
            135. *出口參數(shù):無
            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>0)
            168. {
            169. x1+=1;
            170. e-=dy;
            171. }
            172. y1+=1;
            173. e+=dx;
            174. }
            175. }
            176. }
            177. else
            178. {
            179. dy=-dy;
            180. if(dx>=dy)//8/8象限
            181. {
            182. e=dy-dx/2;
            183. while(x1<=x2)
            184. {
            185. Paint_Pixel(x1,y1,color);
            186. if(e>0)
            187. {
            188. y1-=1;
            189. e-=dx;
            190. }
            191. x1+=1;
            192. e+=dy;
            193. }
            194. }
            195. else//7/8象限
            196. {
            197. e=dx-dy/2;
            198. while(y1>=y2)
            199. {
            200. Paint_Pixel(x1,y1,color);
            201. if(e>0)
            202. {
            203. x1+=1;
            204. e-=dy;
            205. }
            206. y1-=1;
            207. e+=dx;
            208. }
            209. }
            210. }
            211. }
            212. else
            213. {
            214. dx=-dx;
            215. if(dy>=0)
            216. {
            217. if(dx>=dy)//4/8象限
            218. {
            219. e=dy-dx/2;
            220. while(x1>=x2)
            221. {
            222. Paint_Pixel(x1,y1,color);
            223. if(e>0)
            224. {
            225. y1+=1;
            226. e-=dx;
            227. }
            228. x1-=1;
            229. e+=dy;
            230. }
            231. }
            232. else//3/8象限
            233. {
            234. e=dx-dy/2;
            235. while(y1<=y2)
            236. {
            237. Paint_Pixel(x1,y1,color);
            238. if(e>0)
            239. {
            240. x1-=1;
            241. e-=dy;
            242. }
            243. y1+=1;
            244. e+=dx;
            245. }
            246. }
            247. }
            248. else
            249. {
            250. dy=-dy;
            251. if(dx>=dy)//5/8象限
            252. {
            253. e=dy-dx/2;
            254. while(x1>=x2)
            255. {
            256. Paint_Pixel(x1,y1,color);
            257. if(e>0)
            258. {
            259. y1-=1;
            260. e-=dx;
            261. }
            262. x1-=1;
            263. e+=dy;
            264. }
            265. }
            266. else//6/8象限
            267. {
            268. e=dx-dy/2;
            269. while(y1>=y2)
            270. {
            271. Paint_Pixel(x1,y1,color);
            272. if(e>0)
            273. {
            274. x1-=1;
            275. e-=dy;
            276. }
            277. y1-=1;
            278. e+=dx;
            279. }
            280. }
            281. }
            282. }
            283. }
            284. /*************************************************************
            285. *名稱:Graw_Rectangle
            286. *功能:顯示一條矩形框
            287. *入口參數(shù):起始坐標(biāo)(x1,y1),結(jié)束坐標(biāo)(x2,y2),矩形框顏色color
            288. *出口參數(shù):無
            289. **************************************************************/
            290. voidGraw_Rectangle(U32x1,U32y1,U32x2,U32y2,U32color)
            291. {
            292. Draw_Line(x1,y1,x2,y1,color);
            293. Draw_Line(x2,y1,x2,y2,color);
            294. Draw_Line(x1,y2,x2,y2,color);
            295. Draw_Line(x1,y1,x1,y2,color);
            296. }
            297. /*************************************************************
            298. *名稱:Graw_Full_Rectangle
            299. *功能:顯示一條矩形框,并填充顏色
            300. *入口參數(shù):起始坐標(biāo)(x1,y1),結(jié)束坐標(biāo)(x2,y2),填充顏色color
            301. *出口參數(shù):無
            302. **************************************************************/
            303. voidGraw_Full_Rectangle(U32x1,U32y1,U32x2,U32y2,U32color)
            304. {
            305. inti;
            306. for(i=y1;i<=y2;i++)
            307. Draw_Line(x1,i,x2,i,color);
            308. }
            309. /**********************************************************************************
            310. *名稱:Paint_Picture
            311. *功能:顯示一張圖片
            312. *入口參數(shù):起始坐標(biāo)(x0,y0),顯示高度height,顯示寬度width,填充顏色color
            313. *出口參數(shù):無
            314. ************************************************************************************/
            315. voidPaint_Picture(U32x0,U32y0,U32width,U32height,UCHARbmp[])
            316. {
            317. intx,y;
            318. U32c;
            319. intp=0;
            320. for(y=y0;y
            321. {
            322. for(x=x0;x
            323. {
            324. c=bmp[p+2]|(bmp[p+1]<<8)|(bmp[p]<<16);
            325. if(((x0+x)
            326. {
            327. TFT_Buffer[y0+y][x0+x]=c;
            328. }
            329. p=p+3;
            330. }
            331. }
            332. }
            333. /********************************************************************
            334. *文件名:main.c
            335. *功能:測試TFT屏的驅(qū)動函數(shù)
            336. *作者:jianqi
            337. *版本:v1.0
            338. ********************************************************************/
            339. #include"2440addr.h"http://包含2440相關(guān)寄存器的設(shè)置
            340. #include"TFT.h"
            341. externunsignedcharq_480x272[];//圖片轉(zhuǎn)換后的數(shù)組
            342. /*******************************************
            343. *名稱:Delay
            344. *功能:延時
            345. *入口參數(shù):無
            346. *出口參數(shù):無
            347. **********************************************/
            348. voidDelay()
            349. {
            350. inti,j,k;
            351. for(i=0;i<20;i++)
            352. {
            353. for(j=0;j<100;j++)
            354. {
            355. for(k=0;k<1000;k++);
            356. }
            357. }
            358. }
            359. /*******************************************
            360. *名稱:Main
            361. *功能:測試TFT屏幕
            362. *入口參數(shù):無
            363. *出口參數(shù):無
            364. **********************************************/
            365. voidMain(void)
            366. {
            367. TFT_Power_Enable(1);
            368. TFT_Contraller_Init();
            369. TFT_Video_ON(1);
            370. while(1)
            371. {
            372. TFT_CLearScreen((0x00<<11)|(0x3f<<5)|(0x00));//全屏顯示紅色
            373. Delay();
            374. Draw_Line(0,0,480,272,(0x1f<<11)|(0x00<<5)|(0x00));//對角線畫直線
            375. Delay();
            376. Graw_Rectangle(20,20,400,200,(0x00<<11)|(0x00<<5)|(0x1f));//矩形框
            377. Delay();
            378. Graw_Full_Rectangle(20,20,400,200,(0x00<<11)|(0x00<<5)|(0x1f));//填充矩形框位指定顏色
            379. Delay();
            380. Paint_Picture(0,0,480,272,q_480x272);//顯示圖片
            381. Delay();
            382. }
            383. }



            評論


            技術(shù)專區(qū)

            關(guān)閉