www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]S3C2440自帶有LCD控制器,該控制器主要有以下接口僅僅說TFT顯示器,TFT顯示器的時序如下TFT顯示器的驅動是以行列的形式逐點掃描過來的,驅動時鐘有三種,一種是行時鐘,一種是列時鐘,還有一個點時鐘, VSYNC低電平期間需要

S3C2440自帶有LCD控制器,該控制器主要有以下接口


僅僅說TFT顯示器,TFT顯示器的時序如下



TFT顯示器的驅動是以行列的形式逐點掃描過來的,驅動時鐘有三種,一種是行時鐘,一種是列時鐘,還有一個點時鐘, VSYNC低電平期間需要掃描完一列數據, HSYNC低電平期間要寫完一個點的數據,vclk負責一個點的每一位數據寫入,實際上就是說,如果有a列,b行,一個點需c個VCLK時鐘,那么掃描完成需要的中vclk為a*b*c(近似,中間還有一些延時時間)

可以將這個過程看作是1602的刷新過程, VSYNC為低選擇一列, HSYNC為低選擇一行,然后寫入顯示數據還需要一個數據時鐘,寫完之后指針自動增長,中間的等待時間是設備響應時間,在TFT上叫做同步時間,用于時鐘的同步,防止時鐘混亂

那么現在就有這些參數需要設置

VBPD: VSYNC與VCLK的開始同步時間

VSPW: VHYNC脈沖的高電平寬度

LINEVAL LCD面板的垂直尺寸:

VFPD: VSYNC與VCLK的結束同步時間

HBPD: HSYNC與VCLK的開始同步時間

HFPD: HSYNC與VCLK的結束同步時間

HOZVAL: 決定了LCD面板的水平尺寸

HSPW: HSYNC脈沖的高電平寬度

配置這些參數一般都依靠顯示器的數據手冊進行配置,我使用群創(chuàng)4.3寸屏幕,數據手冊上顯示


也就是說,確定一個DCLK時間,剩下的都可以確定了.(配置之前注意IO口功能配置GPIOC和D)

根據這張表,驅動S3C2440的步驟分為以下幾步

1.設置DCLK頻率,像素比以及信號輸出


2.確定VSYC的開始同步結束同步以及高電平寬度還有尺寸


3.3.設置HSYC的開始同步結束同步以及高電平寬度還有尺寸


4.設置HSPW時間


5.對于輸出的圖像格式進行一些選擇


6.設置LCD顯示緩沖區(qū)相關的數據

然后,CPU系統(tǒng)就會去自動刷新屏幕(使用緩沖區(qū)數據),而我們的讀出寫入都針對于緩沖區(qū),再由顯示器接口寫入顯示器

具體設置請查看程序:

Lcd.c

#include"tftlcd.h"volatilestaticunsignedshortLCD_BUFFER[SCR_YSIZE_TFT][SCR_XSIZE_TFT];//定義顯示緩存區(qū)/**************************************************************TFTLCD功能模塊初始化**************************************************************/voidLCDInit(void){//配置引腳rGPCUP=0x00000000;rGPCCON=0xaaaa02a9;rGPDUP=0x00000000;rGPDCON=0xaaaaaaaa;//InitializeVD[15:8]//TFTLCDpanel,16bppTFT,ENVID=offrLCDCON1=(CLKVAL_TFT<<8)"(MVAL_USED<<7)|(3<<5)|(12<<1)|0;rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW);rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD);rLCDCON4=HSPW;rLCDCON5=(1<<11)|(0<<10)|(1<<9)|(1<<8)|(0<<7)|(0<<6)|(1<<3)|(BSWP<<1)|(HWSWP);//16位輸出格式565,VCLK下降沿取數據等(看數據手冊)這里指定目的地址rLCDSADDR1=(((u32)LCD_BUFFER>>22)<<21)|M5D((u32)LCD_BUFFER>>1);//單掃描rLCDSADDR2=M5D(((u32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1);//LCD_WIDTH×16/16;由于是選擇的16位模式,//如果是24位模式,每個像素4字節(jié)則為LCD_WIDTH×32/16//(LCD_WIDTH在此為LCD_XSIZE_TFT)rLCDSADDR3=(((SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);rLCDINTMSK|=(3);//MASKLCDSubInterruptrTCONSEL&=(~7);//DisableLPC3600rTPAL=0;//禁止臨時調色板寄存器}/***************************************************************LCD視頻和控制信號輸出或者停止,1開啟視頻輸出**************************************************************/voidLCDEnvidOnOff(intonoff){if(onoff==1)rLCDCON1|=1;//ENVID=ONelserLCDCON1=rLCDCON1&0x3fffe;//ENVIDOff}/***************************************************************TFTLCD電源控制引腳使能*pwren=1時,允許PWREN信號*pwren=0時,禁止PWREN信號*invpwre=1,PWREN信號極性反轉*invpwre=0,PWREN信號極性正常**************************************************************/voidLCDPowerEnable(intinvpwren,intpwren){//GPG4issettedasLCD_PWRENrGPGUP|=(1<<4);//GPG4上拉電阻無效rGPGCON|=(3<<8);//GPG4=LCD_PWRENrGPGDAT|=1<<4;//GPG4置1//invpwren=pwren;//EnableLCDPOWERENABLEFunctionif(pwren)rLCDCON5|=1<<3;elserLCDCON5&=~(1<<3);if(invpwren)rLCDCON5|=1<<5;elserLCDCON5&=~(1<<5);}/**************************************************************TFTLCD單個象素的顯示數據輸出**************************************************************/voidLCDPutPixel(u32x,u32y,u32color){if((x0)incx=1;//設置單步方向elseif(delta_x==0)incx=0;//垂直線else{incx=-1;delta_x=-delta_x;}if(delta_y>0)incy=1;elseif(delta_y==0)incy=0;//水平線else{incy=-1;delta_y=-delta_y;}if(delta_x>delta_y)distance=delta_x;//選取基本增量坐標軸elsedistance=delta_y;for(t=0;t<=distance+1;t++)//畫線輸出{LCDPutPixel(uRow,uCol,color);//畫點xerr+=delta_x;yerr+=delta_y;if(xerr>distance){xerr-=distance;uRow+=incx;}if(yerr>distance){yerr-=distance;uCol+=incy;}}}//畫矩形voidLCDDrawRectangle(u16x1,u16y1,u16x2,u16y2,u16color){LCDDrawLine(x1,y1,x2,y1,color);LCDDrawLine(x1,y1,x1,y2,color);LCDDrawLine(x1,y2,x2,y2,color);LCDDrawLine(x2,y1,x2,y2,color);}//在指定位置畫一個指定大小的圓//(x,y):中心點//r:半徑voidLCDDrawCircle(u16x0,u16y0,u8r,u16color){inta,b;intdi;a=0;b=r;di=3-(r<<1);//判斷下個點位置的標志while(a<=b){LCDPutPixel(x0-b,y0-a,color);//3LCDPutPixel(x0+b,y0-a,color);//0LCDPutPixel(x0-a,y0+b,color);//1LCDPutPixel(x0-b,y0-a,color);//7LCDPutPixel(x0-a,y0-b,color);//2LCDPutPixel(x0+b,y0+a,color);//4LCDPutPixel(x0+a,y0-b,color);//5LCDPutPixel(x0+a,y0+b,color);//6LCDPutPixel(x0-b,y0+a,color);a++;//使用Bresenham算法畫圓if(di<0)di+=4*a+6;else{di+=10+4*(a-b);b--;}LCDPutPixel(x0+a,y0+b,color);}}

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

  本文根據網絡視頻采集的需要,將網絡傳輸與視頻采集相結合,設計了以S3C2440為核心的USB攝像頭視頻采集和嵌入式Linux系統(tǒng)下的視頻服務器,從而實現了遠程網絡視頻信息采集。   

關鍵字: s3c2440 視頻采集 usb攝像頭

         之前在提起自動化或是智能化時,人們會不自覺的想到工業(yè)生產,這是因為自動化這個字眼進入中國,確實是以工業(yè)

關鍵字: 嵌入式 Linux s3c2440 視頻采集

  引言   隨著科技的不斷發(fā)展,以數據業(yè)務為主的固定寬帶無線接入技術發(fā)展已經很成熟,而移動寬帶無線通信技術還并沒有得到廣泛的應用。由于移動寬帶無線接入系統(tǒng)需要解決帶寬、移動性和覆蓋范圍

關鍵字: IPv6 s3c2440 x86 架構

  1 引言   人們生活水平的提高以及科技的進步,特別是計算機技術、網絡技術和通信技術的發(fā)展,智能家居將慢慢成為未來家居生活的發(fā)展方向。1984年在美國誕生了世界上第一座智能家居建筑,

關鍵字: boa nrf24l01 s3c2440 智能家居

我們知道2440開發(fā)流程為:移植uboot--》移植內核---》掛接根文件系統(tǒng)。我們移植完內核需要掛接根文件系統(tǒng),那么首先我們必須擁有根文件系統(tǒng)。如何來制作我們的根文件系統(tǒng)呢?第一步:在linux下建

關鍵字: s3c2440 根文件系統(tǒng)

1.TQ2440u-boot-1.1.6修改文件所在的路徑是u-boot-1.1.6includeconfigsEmbedSky.h將#defineLCD_TFTxxx(LCD類型)W353.5寸TFT4802724.3...

關鍵字: s3c2440 lcd參數

2440的晶振頻率為12MHZ,有兩個PLL:MPLL和UPLL,其中MPLL產生FCLK、HCLK、PCLK;UPLL產生UCLK。FCLK為ARM核提供時鐘,HCLK為AHB總線時鐘,PCLK為APB總線時鐘,UCL...

關鍵字: s3c2440 時鐘初始化

開發(fā)板:TQ2440內核:Linux 2.6.32PC OS:Ubuntu 11.041.配置內核打開I2C功能:打開雜項設備,該選項打開后,EEPROM也就打開了。2. 修改代碼修改文件: linux/arch/arm...

關鍵字: at24c02 eeprom s3c2440 移植 linux驅動

在分析ARM-Linux s3c2440中UART的時有必要先了解 s3c2440A中串口的硬件知識。硬件篇:S3c2440A串口提供三個獨立的異步串行通信I/O端口(asynchronousserial I/O por...

關鍵字: ARM Linux s3c2440 uart

s3c2440 cpu的默認工作主頻有兩種12MHz和16.9344MHz,也就是我們的晶振的頻率,但一般12MHz的晶振用的比較多,Fin就是指我們接的晶振頻率。大家都知道s3c2440上電正常工作后頻率是遠遠大于12...

關鍵字: s3c2440 時鐘
關閉