S3C2440之液晶屏LCD驱动
生活随笔
收集整理的這篇文章主要介紹了
S3C2440之液晶屏LCD驱动
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
作為一款高端的CPU S3C2440(2013年的時(shí)候),自帶LCD液晶屏的UI接口,
也就是外設(shè),只需要對(duì)照對(duì)應(yīng)的LCD手冊(cè)設(shè)置寄存器即可
所用LCD是一款16BPP的320(寬)X240(高)的LCD顯示屏
/****************************** *文件名:LCD.c * *功能: 液晶顯示程序 * *創(chuàng)建者: 潘星宇 * *最后修改:2013.02.27 * *備注: * * * *******************************/#include "LCD.h"#if !BPP24 #define BPPMODE_TFT 12 //16位TFT型LCD #else #define BPPMODE_TFT 13 //24位TFT型LCD #endif#if !BPP24 #define HWSWP 1 //顏色數(shù)據(jù)半字交換 #else #define HWSWP 0 //顏色數(shù)據(jù)半字不交換 #endif //定義顯示緩存區(qū) 320 240 //24BPP時(shí)應(yīng)該為 U32LCD_BUFFER[LCD_HEIGHT][LCD_WIDTH]; volatile U16 LCD_BUFFER[LCD_HEIGHT][LCD_WIDTH]; /************************************************************************** ***** 函數(shù)名: LCD_Init(void) ***** 功能: LCD初始化 ***** 參數(shù): 無(wú) ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間: 2013-03-7 ***** 最后更新:2013-03-7 ****************************************************************************/ void LCD_Init(void) {rGPCUP = 0x00000000;rGPCCON = 0xaaaa02aa; //0x1010rGPDUP = 0x00000000;rGPDCON=0xaaaaaaaa; //Initialize VD[15:8]rLCDCON1=rLCDCON1|((CLKVAL_TFT<<8)|(MVAL_USED<<7)|(PNRMODE_TFT<<5)|(BPPMODE_TFT<<1)|0); //1100rLCDCON2=(VBPD<<24)|(LINEVAL<<14)|(VFPD<<6)|(VSPW);rLCDCON3=(HBPD<<19)|(HOZVAL<<8)|(HFPD);rLCDCON4=(HSPW);rLCDCON5 = (1<<11) |(INVVCLK<<10) | (INVVLINE<<9) | (INVVFRAME<<8) | (0<<7) | (INVVDEN<<6) | (PWREN<<3) |(BSWP<<1) | (HWSWP);rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);//24BPP時(shí)應(yīng)該是M5D( ((U32)LCD_BUFFER+(LCD_WIDTH*LCD_HEIGHT*4))>>1 );rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(LCD_WIDTH*LCD_HEIGHT*2))>>1 );rLCDSADDR3=LCD_WIDTH*2/2; //24BPP時(shí)候應(yīng)該是 LCD_WIDTH*4/2rLCDINTMSK|=(3); // MASK LCD Sub InterruptrTCONSEL = 0; // Disable LPC3480rGPGUP=rGPGUP&(~(1<<4))|(1<<4); // Pull-up disablerGPGCON=rGPGCON&(~(3<<8))|(3<<8); //GPG4=LCD_PWREN把rGPGDAT = rGPGDAT | (1<<4) ;rLCDCON5=rLCDCON5&(~(1<<3))|(1<<3); // PWRENrLCDCON5=rLCDCON5&(~(1<<5))|(0<<5); // INVPWREN電源脈沖信號(hào)不反轉(zhuǎn)rLCDCON1|=1; //開啟LCD顯示 }/************************************************************************** ***** 函數(shù)名: PutPixel(void) ***** 功能: 繪制像素點(diǎn) ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) c顏色 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2011-03-30 int ****************************************************************************/ void PutPixel(U32 x,U32 y, U32 c ) {LCD_BUFFER[y][x] = c; }/************************************************************************** ***** 函數(shù)名: Draw_Text16(void) ***** 功能:繪制寬X高大小為16×16的中文字符 ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) c顏色 ch:字模數(shù)組 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2011-03-30 ****************************************************************************/ void Draw_Text16(U32 x,U32 y,U32 color,U32 backColor,const unsigned char ch[]) { unsigned short int i,j;unsigned char mask,buffer;for (i=0;i<16;i++){/*漢字的左半邊*/mask=0x80; //掩碼 0b1000 0000>>1---0b0000 1000buffer=ch[i*2]; //提取一行的第一個(gè)字節(jié)0x08=0b0000 1000for (j=0;j<8;j++){if (buffer&mask){PutPixel(x+j,y+i,color); //為筆畫上色}else{PutPixel(x+j,y+i,backColor); //背景色}mask=mask>>1; //為判斷下一位準(zhǔn)備}/*漢字的右半邊*/mask=0x80; //掩碼,從bit7開始判斷buffer=ch[i*2+1]; //提取一行的第二個(gè)字節(jié)for (j=0;j<8;j++){if (buffer&mask){PutPixel(x+j+8,y+i,color); //為筆畫上色}else{PutPixel(x+j+8,y+i,backColor);//背景色}mask=mask>>1; //為判斷下一位準(zhǔn)備}} }/************************************************************************** ***** 函數(shù)名: Draw_ASCII16x24(void) ***** 功能:繪制寬X高大小為16×24的字符 ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) c顏色 ch:字模數(shù)組 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2013-03-22 ***** 最后更新:2013-03-22 ****************************************************************************/ void Draw_ASCII16x24(U32 x,U32 y,U32 color,U32 backColor,const unsigned char ch[]) { unsigned short int i,j;unsigned char mask,buffer;for (i=0;i<24;i++){/*字符的左半邊*/mask=0x80; //掩碼 0b1000 0000>>1---0b0000 1000buffer=ch[i*2]; //提取一行的第一個(gè)字節(jié)0x08=0b0000 1000for (j=0;j<8;j++){if (buffer&mask){PutPixel(x+j,y+i,color); //為筆畫上色}else{PutPixel(x+j,y+i,backColor); //背景色}mask=mask>>1; //為判斷下一位準(zhǔn)備}/*字符的右半邊*/mask=0x80; //掩碼,從bit7開始判斷buffer=ch[i*2+1]; //提取一行的第二個(gè)字節(jié)for (j=0;j<8;j++){if (buffer&mask){PutPixel(x+j+8,y+i,color); //為筆畫上色}else{PutPixel(x+j+8,y+i,backColor);//背景色}mask=mask>>1; //為判斷下一位準(zhǔn)備}} }/************************************************************************** ***** 函數(shù)名: Draw_ASCII(void) ***** 功能:繪制寬X高大小為8×16的字符 ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) color文字顏色 backColor 文字背景顏色 ch:字模數(shù)組 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2011-03-30 ****************************************************************************/ void Draw_ASCII(U32 x,U32 y,U32 color,U32 backColor,const unsigned char *ch) {unsigned short int i,j;unsigned char mask,buffer;for (i=0;i<16;i++){mask=0x80; //掩碼,從bit7開始判斷buffer=ch[i]; //提取一行的第一個(gè)字節(jié)for (j=0;j<8;j++){if (buffer&mask){PutPixel(x+j,y+i,color);//為筆畫上色}else{PutPixel(x+j,y+i,backColor); //背景色}mask=mask>>1; //為判斷下一位準(zhǔn)備}} }/************************************************************************** ***** 函數(shù)名: Draw_ASCII_N(void) ***** 功能: 繪制大小為16×8,16x16的字符串 ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) color文字顏色 backColor 文字背景顏色 ch:字模數(shù)組 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2011-03-30 ****************************************************************************/ void Draw_Text_8_16(U32 x,U32 y,U32 color,U32 backColor,const unsigned char *chs) { U32 i=0;while (*chs != '\0'){if (*chs > 0xa0) //漢字內(nèi)碼都是大于0xa0{for (i=0 ;i < GB16_NUM();i++){ if(x>LCD_WIDTH-16){x=0;y=y+16;}if ((*chs == hz_index[i]) && (*(chs+1) == hz_index[i+1])){Draw_Text16(x,y,color,backColor,&hz[16*(i)]);x +=16;break;}}chs+=2;}else //如果是字符執(zhí)行以下{ if(x>LCD_WIDTH-8){x=0;y=y+16;}for (i=0 ;i < ASCII_NUM();i++){if (*chs == zf_index[i]){Draw_ASCII(x,y,color,backColor,&zf[16*i]);x += 8;break;}}chs++;} } }/************************************************************************** ***** 函數(shù)名: Draw_Text56(void) ***** 功能:繪制大小為56×56的中文字符 ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) c顏色 ch:字模數(shù)組 ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間: 2012-12-16 ***** 最后更新:2012-12-16 ****************************************************************************/ //Draw_Text16(50,10,0x0,0xf800,xin); void Draw_Text56(U32 x,U32 y,U32 color,U32 backColor,const unsigned char ch[]) { unsigned long int i,j;unsigned char mask,buffer;for (i=0;i<56;i++){/*漢字的第一部分*/mask=0x80; //掩碼 0b1000 0000>>1---0b0000 1000buffer=ch[i*7]; //提取一行的第一個(gè)字節(jié)0x08=0b0000 1000for (j=0;j<8;j++){if (buffer&mask){PutPixel(x+j,y+i,color); //為筆畫上色}else{PutPixel(x+j,y+i,backColor); //背景色}mask=mask>>1; //為判斷下一位準(zhǔn)備}/*漢字的第二部分*/mask=0x80; //掩碼,從bit7開始判斷buffer=ch[i*7+1]; //提取一行的第二個(gè)字節(jié)for (j=0;j<8;j++){if (buffer&mask){PutPixel(x+j+8,y+i,color); //為筆畫上色}else{PutPixel(x+j+8,y+i,backColor);//背景色}mask=mask>>1; //為判斷下一位準(zhǔn)備}/*漢字的第三部分*/mask=0x80; //掩碼,從bit7開始判斷buffer=ch[i*7+2]; //提取一行的第二個(gè)字節(jié)for (j=0;j<8;j++){if (buffer&mask){PutPixel(x+j+16,y+i,color); //為筆畫上色}else{PutPixel(x+j+16,y+i,backColor);//背景色}mask=mask>>1; //為判斷下一位準(zhǔn)備}/*漢字的第四部分*/mask=0x80; //掩碼,從bit7開始判斷buffer=ch[i*7+3]; //提取一行的第二個(gè)字節(jié)for (j=0;j<8;j++){if (buffer&mask){PutPixel(x+j+24,y+i,color); //為筆畫上色}else{PutPixel(x+j+24,y+i,backColor);//背景色}mask=mask>>1; //為判斷下一位準(zhǔn)備}/*漢字的第五部分*/mask=0x80; //掩碼,從bit7開始判斷buffer=ch[i*7+4]; //提取一行的第二個(gè)字節(jié)for (j=0;j<8;j++){if (buffer&mask){PutPixel(x+j+32,y+i,color); //為筆畫上色}else{PutPixel(x+j+32,y+i,backColor);//背景色}mask=mask>>1; //為判斷下一位準(zhǔn)備}/*漢字的第六部分*/mask=0x80; //掩碼,從bit7開始判斷buffer=ch[i*7+5]; //提取一行的第二個(gè)字節(jié)for (j=0;j<8;j++){if (buffer&mask){PutPixel(x+j+40,y+i,color); //為筆畫上色}else{PutPixel(x+j+40,y+i,backColor);//背景色}mask=mask>>1; //為判斷下一位準(zhǔn)備}/*漢字的第七部分*/mask=0x80; //掩碼,從bit7開始判斷buffer=ch[i*7+6]; //提取一行的第二個(gè)字節(jié)for (j=0;j<8;j++){if (buffer&mask){PutPixel(x+j+48,y+i,color); //為筆畫上色}else{PutPixel(x+j+48,y+i,backColor);//背景色}mask=mask>>1; //為判斷下一位準(zhǔn)備}} }/************************************************************************** ***** 函數(shù)名: Draw_ASCII_N(void) ***** 功能: 繪制N個(gè)大小為16×8的字符 ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) color顏色 ch:字符串 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2011-03-30 ****************************************************************************/ void Draw_ASCII_N(U32 x,U32 y,U32 color,U32 backColor,const unsigned char *chs) {U32 i=0;while (*chs!= '\0'){for ( ;i < ASCII_NUM();i++){if (*chs==zf_index[i]){Draw_ASCII(x,y+8,color,backColor,&zf[16*i]);break;}}} }/************************************************************************** ***** 函數(shù)名: Brush_Background() ***** 功能: 繪制屏幕背景顏色,顏色為c ***** 參數(shù): c 顏色 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新: 2011-03-30 ****************************************************************************/ void Brush_Background( U32 c) {int x,y ;for ( y = 0 ; y < LCD_HEIGHT ; y++ ){for ( x = 0 ; x < LCD_WIDTH ; x++ ){LCD_BUFFER[y][x] = c ;}} }/************************************************************************** ***** 函數(shù)名: one_point_to_another(unsigned int x1, unsigned int y1,unsigned int length, double angle, unsigned int color, unsigned int length_start,unsigned int length_end) ***** 功能: 由一點(diǎn),長(zhǎng)度和角度做線 ***** 參數(shù): 已知點(diǎn)坐標(biāo)x1,y1;長(zhǎng)度length,角度angle,顏色color;起始點(diǎn)和結(jié)束點(diǎn);角度按照鐘表原則,0點(diǎn)為0°,順時(shí)針旋轉(zhuǎn),函數(shù)內(nèi)部將角度按照象限的原則轉(zhuǎn)化,第一象限為0°的開始。length_start_points:希望保留起始的點(diǎn)的個(gè)數(shù)length_end_points:希望保留最后的點(diǎn)的個(gè)數(shù) ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間:2012-12-25 ***** 最后更新: 2012-12-28 ****************************************************************************/ void one_point_to_another(unsigned int x1, //已知點(diǎn)橫坐標(biāo)x1unsigned int y1, //已知點(diǎn)縱坐標(biāo)y1unsigned int length, //兩點(diǎn)間距長(zhǎng)度f(wàn)loat angle, //兩點(diǎn)角度,按照鐘表原則,0點(diǎn)為0°,順時(shí)針旋轉(zhuǎn)unsigned int color, //顏色unsigned int length_start_points, //希望保留起始的點(diǎn)的個(gè)數(shù)unsigned int length_end_points) //希望保留最后的點(diǎn)的個(gè)數(shù) {unsigned int x2; //畫線用橫坐標(biāo)寄存器unsigned int y2; //畫線用縱坐標(biāo)寄存器unsigned int length_i; //畫線計(jì)數(shù)用unsigned int length_end_i = 0; //畫線取最后幾個(gè)點(diǎn)計(jì)數(shù)用float radian; //弧度if ((angle >= 0) && (angle <= 90)){angle = 90 - angle;}else if ((angle >= 91) && (angle <= 180)){angle = 360 - (angle - 90);}else if ((angle >= 181) && (angle <=270)){angle = 270 - (angle - 180); }else if ((angle >= 271) && (angle <=359)){angle = 180 - (angle - 270); }radian = (angle / 180)*PIN; //角度與弧度的轉(zhuǎn)換if (length_start_points >= length) //如果希望保留前面的點(diǎn)超出了線的長(zhǎng)度{length_start_points = length; }if (length_end_points >= length) //如果希望保留后面的點(diǎn)超出了線的長(zhǎng)度{length_end_points = length; }for (length_i = 0; length_i <= length; length_i++){if ((length_start_points > 0) || (length_end_i >= (length - length_end_points))) //希望保留起始點(diǎn)的個(gè)數(shù){x2 = (unsigned int)(x1 + length_i*cos(radian) + 0.5); //加0.5為了防止大于5的小數(shù)被舍去y2 = (unsigned int)(y1 - length_i*sin(radian) + 0.5); //由于液晶屏的坐標(biāo)Y軸向下坐標(biāo)大,與象限剛好相反,故在此是減去PutPixel(x2,y2,color);if (length_start_points > 0) //防止自減運(yùn)算溢出,變成最大值{length_start_points--;}}length_end_i++;} }/************************************************************************** ***** 函數(shù)名: draw_circle(unsigned int x1, unsigned int y1,unsigned int radius,unsigned int color) ***** 功能: 畫一個(gè)圓 ***** 參數(shù): 已知點(diǎn)坐標(biāo)x1,y1;半徑radius,顏色color; ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間:2012-12-30 ***** 最后更新: 2012-12-30 ****************************************************************************/ void draw_circle(unsigned int x1, //圓心橫坐標(biāo)unsigned int y1, //圓心縱坐標(biāo)unsigned int radius, //半徑unsigned int color) //顏色 {unsigned int i;for (i=0; i <= 359; i++){one_point_to_another (x1, y1, radius, i, color, 0, 1);} }/************************************************************************** ***** 函數(shù)名: MidpointCircle(int x0,int y0,int r,int color)***** 功能:畫個(gè)圓 ***** 參數(shù): 圓心x,y坐標(biāo),半徑,顏色 ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間: 2012-12-23 ***** 最后更新: 2012-12-23 ****************************************************************************/ void MidpointCircle(int x0,int y0,int r,int color) {int x,y;float d;x=0;y=r;d=5.0/4-r;while(x<=y){PutPixel(x0+x,y0+y,color);PutPixel(x0+x,y0-y,color);PutPixel(x0-x,y0+y,color);PutPixel(x0-x,y0-y,color);PutPixel(x0+y,y0+x,color);PutPixel(x0+y,y0-x,color);PutPixel(x0-y,y0+x,color);PutPixel(x0-y,y0-x,color);if(d<0){d+=x*2.0+3;}else{d+=2.0*(x-y)+5;y--;}x++;} }/************************************************************************** ***** 函數(shù)名: draw_square畫個(gè)正方形 ***** 參數(shù): x:左上角頂點(diǎn)橫坐標(biāo)y:左上角頂點(diǎn)縱坐標(biāo)l:邊長(zhǎng)color:邊的顏色back_color:內(nèi)部填充色 ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間: 2013-3-14 ***** 最后更新: 2013-3-14 ****************************************************************************/ void draw_square(U16 x, U16 y, U16 l, U32 color, U32 back_color) {U16 i,j,k;for (i=0; i<=l; i++){PutPixel(x+i,y,color); //上邊PutPixel(x+i,y+l,color); //下邊PutPixel(x,y+i,color); //左邊PutPixel(x+l,y+i,color); //右邊}for (j=0; j<=l-2; j++){for(k=0; k<=l-2; k++){PutPixel(x+1+k,y+1+j,back_color); //填充內(nèi)部,橫著畫} } }/************************************************************************** ***** 函數(shù)名: draw_rectangle畫個(gè)矩形 ***** 參數(shù): x:起點(diǎn)橫坐標(biāo)y:起點(diǎn)縱坐標(biāo) width:寬height:高color:顏色 ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間: 2013-3-24 ***** 最后更新: 2013-3-24 ****************************************************************************/ void draw_rectangle(U16 x, U16 y, U16 width, U16 height, U32 color) {U16 i,j;for(i=0; i<height; i++){for(j=0; j<width; j++){PutPixel(x+j,y+i,color); }} }/************************************************************************** ***** 函數(shù)名: Paint_Bmp() ***** 功能: 顯示指定大小圖片 ***** 參數(shù): x0 開始位置,y0開始位置 ,h高度,l 寬度 ,bmp 圖片數(shù)據(jù)數(shù)組 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2017-04-22 ****************************************************************************/ //l:480 h:272void Paint_Bmp(int x0,int y0,int l,int h,const unsigned char bmp[]) {int x,y;U32 c;int p = 0;for( y = y0 ; y < y0+h ; y++ ){for( x = x0 ; x <x0+l ; x++ ){c = bmp[p+1] | (bmp[p]<<8) ; //16BPP 先放的是高8位然后是低8位// if ( ( (x0+x) < LCD_WIDTH) && ( (y0+y) < LCD_HEIGHT) )LCD_BUFFER[y][x] = c ;p = p + 2 ; //16BPP儲(chǔ)存一個(gè)顏色 故一次加2}} }有好幾個(gè)頭文件如下:
#ifndef LCD_H #define LCD_H #include "2440addr.h" #include "def.h" #include "zi.h" #include "math.h" /************************************************************************** ***** 函數(shù)名: LCD_Init(void) ***** 功能: LCD初始化 ***** 參數(shù): 無(wú) ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2011-03-30 ****************************************************************************/ extern void LCD_Init(void);/************************************************************************** ***** 函數(shù)名: PutPixel(void) ***** 功能: 繪制像素點(diǎn) ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) c顏色 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2011-03-30 int ****************************************************************************/ extern void PutPixel(U32 x,U32 y, U32 c );/************************************************************************** ***** 函數(shù)名: Draw_Text16(void) ***** 功能:繪制寬X高大小為16×16的中文字符 ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) c顏色 ch:字模數(shù)組 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2011-03-30 ****************************************************************************/ extern void Draw_Text16(U32 x,U32 y,U32 color,U32 backColor,const unsigned char ch[]);/************************************************************************** ***** 函數(shù)名: Draw_Text56(void) ***** 功能:繪制大小為56×56的中文字符 ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) c顏色 ch:字模數(shù)組 ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間: 2012-12-16 ***** 最后更新:2012-12-16 ****************************************************************************/ //Draw_Text16(50,10,0x0,0xf800,xin); extern void Draw_Text56(U32 x,U32 y,U32 color,U32 backColor,const unsigned char ch[]);/************************************************************************** ***** 函數(shù)名: Draw_ASCII(void) ***** 功能:繪制寬X高大小為8×16的字符 ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) color文字顏色 backColor 文字背景顏色 ch:字模數(shù)組 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2011-03-30 ****************************************************************************/ extern void Draw_ASCII(U32 x,U32 y,U32 color,U32 backColor,const unsigned char *ch);/************************************************************************** ***** 函數(shù)名: Draw_ASCII_N(void) ***** 功能: 繪制大小為16×8,16x16的字符串 ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) color文字顏色 backColor 文字背景顏色 ch:字模數(shù)組 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2011-03-30 ****************************************************************************/ extern void Draw_Text_8_16(U32 x,U32 y,U32 color,U32 backColor,const unsigned char *chs);/************************************************************************** ***** 函數(shù)名: Draw_ASCII16x24(void) ***** 功能:繪制寬X高大小為16×24的字符 ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) c顏色 ch:字模數(shù)組 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2013-03-22 ***** 最后更新:2013-03-22 ****************************************************************************/ extern void Draw_ASCII16x24(U32 x,U32 y,U32 color,U32 backColor,const unsigned char ch[]);/************************************************************************** ***** 函數(shù)名: Draw_ASCII_N(void) ***** 功能: 繪制N個(gè)大小為16×8的字符 ***** 參數(shù): x:橫坐標(biāo) y:縱坐標(biāo) color顏色 ch:字符串 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2011-03-30 ****************************************************************************/ extern void Draw_ASCII_N(U32 x,U32 y,U32 color,U32 backColor,const unsigned char *chs);/************************************************************************** ***** 函數(shù)名: Brush_Background() ***** 功能: 繪制屏幕背景顏色,顏色為c ***** 參數(shù): c 顏色 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新: 2011-03-30 ****************************************************************************/ extern void Brush_Background( U32 c);/************************************************************************** ***** 函數(shù)名: one_point_to_another(unsigned int x1, unsigned int y1,unsigned int length, double angle, unsigned int color, unsigned int length_start,unsigned int length_end) ***** 功能: 由一點(diǎn),長(zhǎng)度和角度做線 ***** 參數(shù): 已知點(diǎn)坐標(biāo)x1,y1;長(zhǎng)度length,角度angle,顏色color;起始點(diǎn)和結(jié)束點(diǎn);角度按照鐘表原則,0點(diǎn)為0°,順時(shí)針旋轉(zhuǎn),函數(shù)內(nèi)部將角度按照象限的原則轉(zhuǎn)化,第一象限為0°的開始。length_start_points:希望保留起始的點(diǎn)的個(gè)數(shù)length_end_points:希望保留最后的點(diǎn)的個(gè)數(shù) ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間:2012-12-25 ***** 最后更新: 2012-12-25 這個(gè)函數(shù)有個(gè)缺陷:圓心的橫縱坐標(biāo)都要大于半徑,因?yàn)闆](méi)有判斷負(fù)值的數(shù)據(jù)類型,稍微改造下即可 ****************************************************************************/ extern void one_point_to_another(unsigned int x1, //已知點(diǎn)橫坐標(biāo)x1unsigned int y1, //已知點(diǎn)縱坐標(biāo)y1unsigned int length, //兩點(diǎn)間距長(zhǎng)度f(wàn)loat angle, //兩點(diǎn)角度,按照鐘表原則,0點(diǎn)為0°,順時(shí)針旋轉(zhuǎn)unsigned int color, //顏色unsigned int length_start_points, //希望保留起始的點(diǎn)的個(gè)數(shù)unsigned int length_end_points); //希望保留最后的點(diǎn)的個(gè)數(shù)/************************************************************************** ***** 函數(shù)名: draw_circle(unsigned int x1, unsigned int y1,unsigned int radius,unsigned int color) ***** 功能: 畫一個(gè)圓 ***** 參數(shù): 已知點(diǎn)坐標(biāo)x1,y1;半徑radius,顏色color; ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間:2012-12-30 ***** 最后更新: 2012-12-30 ****************************************************************************/ extern void draw_circle(unsigned int x1, //圓心橫坐標(biāo)unsigned int y1, //圓心縱坐標(biāo)unsigned int radius, //半徑unsigned int color); //顏色/************************************************************************** ***** 函數(shù)名: MidpointCircle(int x0,int y0,int r,int color)***** 功能:畫個(gè)圓 ***** 參數(shù): 圓心x,y坐標(biāo),半徑,顏色 ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間: 2012-12-23 ***** 最后更新: 2012-12-23 ****************************************************************************/ extern void MidpointCircle(int x0,int y0,int r,int color);/************************************************************************** ***** 函數(shù)名: draw_square畫個(gè)正方形 ***** 參數(shù): x:左上角頂點(diǎn)橫坐標(biāo)y:左上角頂點(diǎn)縱坐標(biāo)l:邊長(zhǎng)color:邊的顏色back_color:內(nèi)部填充色 ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間: 2013-3-14 ***** 最后更新: 2013-3-14 ****************************************************************************/ extern void draw_square(U16 x, U16 y, U16 l, U32 color, U32 back_color);/************************************************************************** ***** 函數(shù)名: draw_rectangle畫個(gè)矩形 ***** 參數(shù): x:起點(diǎn)橫坐標(biāo)y:起點(diǎn)縱坐標(biāo) width:寬height:高color:顏色 ***** 返回值: 無(wú) ***** 創(chuàng)建者: 潘星宇 ***** 創(chuàng)建時(shí)間: 2013-3-24 ***** 最后更新: 2013-3-24 ****************************************************************************/ extern void draw_rectangle(U16 x, U16 y, U16 width, U16 height, U32 color);/************************************************************************** ***** 函數(shù)名: Paint_Bmp() ***** 功能: 顯示指定大小圖片 ***** 參數(shù): x0 開始位置,y0開始位置 ,h高度,l 寬度 ,bmp 圖片數(shù)據(jù)數(shù)組 ***** 返回值: 無(wú) ***** 創(chuàng)建者: ***** 創(chuàng)建時(shí)間: 2011-03-30 ***** 最后更新:2011-03-30 ****************************************************************************/ //l:480 h:272 extern void Paint_Bmp(int x0,int y0,int h,int l,const unsigned char bmp[]); #endif #ifndef __DEF_H__ #define __DEF_H__#define U32 unsigned int #define U16 unsigned short #define S32 int #define S16 short int #define U8 unsigned char #define S8 char#define BYTE char #define WORD short #define DWORD int #define UINT U32 #define LPSTR U8 * #define TRUE 1 #define FALSE 0 #define OK 1 #define FAIL 0#define SIZE_1K 0x00000400 #define SIZE_2K 0x00000800 #define SIZE_4K 0x00001000 #define SIZE_8K 0x00002000 #define SIZE_16K 0x00004000 #define SIZE_32K 0x00008000 #define SIZE_64K 0x00010000 #define SIZE_128K 0x00020000 #define SIZE_256K 0x00040000 #define SIZE_512K 0x00080000 #define SIZE_1M 0x00100000 #define SIZE_2M 0x00200000 #define SIZE_4M 0x00400000 #define SIZE_8M 0x00800000 #define SIZE_16M 0x01000000 #define SIZE_32M 0x02000000 #define SIZE_64M 0x04000000 #define SIZE_128M 0x08000000 #define SIZE_256M 0x10000000 #define SIZE_512M 0x20000000 #define SIZE_1G 0x40000000 #define SIZE_2G 0x80000000#define ENTER_KEY 0x0d #define BACK_KEY 0x08 #define BEEP_KEY 0x07 #define UP_KEY 0x41 #define DOWN_KEY 0x42 #define RIGHT_KEY 0x43 #define LEFT_KEY 0x44 #define HOME_KEY 0x48 #define END_KEY 0x4b #define ESC_KEY 0x1b#define PIN 3.141592653 #define M5D(n) ((n) & 0x1fffff) //用于設(shè)置顯示緩存區(qū)時(shí),取低21位地址/******************480X272*********************************/#define BPP24 (0) #define LCD_WIDTH 480 //屏幕的寬 #define LCD_HEIGHT 272 //屏幕的高 //垂直同步信號(hào)的脈寬、后肩和前肩 #define VSPW (8) //垂直同步信號(hào)的脈寬(X35屏只能是該值) #define VBPD (2) //垂直同步信號(hào)的后肩 #define VFPD (4) //垂直同步信號(hào)的前肩//水平同步信號(hào)的脈寬、后肩和前肩 #define HSPW (30) //水平同步信號(hào)的脈寬 #define HBPD (10) //水平同步信號(hào)的后肩 #define HFPD (19) //水平同步信號(hào)的前肩#define FRM565 (1)//for #define CLKVAL_TFT 4 //設(shè)置時(shí)鐘信號(hào) #define MVAL_USED 0 // 當(dāng)屏是TFT時(shí)設(shè)置為0,STN屏?xí)r設(shè)置為1 #define PNRMODE_TFT 3 //選擇顯示模式 TFT型LCD //for LCDCON5 #define BPP24BL 0 //32位數(shù)據(jù)表示24位顏色值時(shí),低位數(shù)據(jù)有效,高8位無(wú)效 #define INVVCLK 0 //像素值在VCLK下降沿有效 #define INVVLINE 1 //翻轉(zhuǎn)HSYNC信號(hào) #define INVVFRAME 1 //翻轉(zhuǎn)VSYNC信號(hào) #define INVVD 1 //翻轉(zhuǎn)VD信號(hào)極性 #define INVVDEN 1 //1 //翻轉(zhuǎn)VDEN信號(hào)極性 #define PWREN 1 //使能PWREN信號(hào) #define BSWP 0 //顏色數(shù)據(jù)字節(jié)不交換 #define LINEVAL (LCD_HEIGHT-1) #define HOZVAL (LCD_WIDTH-1)#endif /*__DEF_H__*/?
總結(jié)
以上是生活随笔為你收集整理的S3C2440之液晶屏LCD驱动的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Excel VBA】Len的有趣之处—
- 下一篇: 周报 | 吉吉拍助力消费者转变