S3C2440驱动4.3寸TFT屏程序
时间:11-21
来源:互联网
点击:
- 1,color);
- if(e>0){x1+=1;e-=dy;}
- y1+=1;
- e+=dx;
- }
- }
- }
- else//dy
- {
- dy=-dy;//dy=abs(dy)
- if(dx>=dy)//8/8octant
- {
- e=dy-dx/2;
- while(x1<=x2)
- {
- PutPixel(x1,y1,color);
- if(e>0){y1-=1;e-=dx;}
- x1+=1;
- e+=dy;
- }
- }
- else//7/8octant
- {
- e=dx-dy/2;
- while(y1>=y2)
- {
- PutPixel(x1,y1,color);
- if(e>0){x1+=1;e-=dy;}
- y1-=1;
- e+=dx;
- }
- }
- }
- }
- else//dx
- {
- dx=-dx;//dx=abs(dx)
- if(dy>=0)//dy>=0
- {
- if(dx>=dy)//4/8octant
- {
- e=dy-dx/2;
- while(x1>=x2)
- {
- PutPixel(x1,y1,color);
- if(e>0){y1+=1;e-=dx;}
- x1-=1;
- e+=dy;
- }
- }
- else//3/8octant
- {
- e=dx-dy/2;
- while(y1<=y2)
- {
- PutPixel(x1,y1,color);
- if(e>0){x1-=1;e-=dy;}
- y1+=1;
- e+=dx;
- }
- }
- }
- else//dy
- {
- dy=-dy;//dy=abs(dy)
- if(dx>=dy)//5/8octant
- {
- e=dy-dx/2;
- while(x1>=x2)
- {
- PutPixel(x1,y1,color);
- if(e>0){y1-=1;e-=dx;}
- x1-=1;
- e+=dy;
- }
- }
- else//6/8octant
- {
- e=dx-dy/2;
- while(y1>=y2)
- {
- PutPixel(x1,y1,color);
- if(e>0){x1-=1;e-=dy;}
- y1-=1;
- e+=dx;
- }
- }
- }
- }
- }
- /**************************************************************
- 在LCD屏幕上画一个矩形
- **************************************************************/
- voidGlib_Rectangle(intx1,inty1,intx2,inty2,intcolor)
- {
- Glib_Line(x1,y1,x2,y1,color);
- Glib_Line(x2,y1,x2,y2,color);
- Glib_Line(x1,y2,x2,y2,color);
- Glib_Line(x1,y1,x1,y2,color);
- }
- /**************************************************************
- 在LCD屏幕上用颜色填充一个矩形
- **************************************************************/
- voidGlib_FilledRectangle(intx1,inty1,intx2,inty2,intcolor)
- {
- inti;
- for(i=y1;i<=y2;i++)
- Glib_Line(x1,i,x2,i,color);
- }
- /**************************************************************
- 在LCD屏幕上指定坐标点画一个指定大小的图片
- **************************************************************/
- voidPaint_Bmp(intx0,inty0,inth,intl,unsignedcharbmp[])
- {
- intx,y;
- U32c;
- intp=0;
- for(y=y0;y
- {
- for(x=x0;x
- {
- c=bmp[p+1]|(bmp[p]<8);
- if(((x0+x)
- LCD_BUFFER[y0+y][x0+x]=c;
- p=p+2;
- }
- }
- }
- //=============================================================
- //语法格式:voidTFT_Circle(intx,inty,intr,intcolor,unsignedcharMode);
- //实现功能:在屏幕中画圆
- //参数:
- //x-圆心的x坐标
- //y-圆心的y坐标
- //r-圆的半径
- //color-圆的颜色
- //Mode-0空心圆
- //1实心圆
- //返回值:无
- //=============================================================
- voidTFT_Circle(intx,inty,intr,intcolor,unsignedcharMode)
- {
- intdx,dy,ref;
- intTemp;
- if(r==0)
- return;
- dx=r;
- dy=1;
- ref=707*r/1000;//参考值为0.707r
- if(Mode==1)//实心圆
- {
- while(dy<=dx)
- {
- if(dx>ref)
- Glib_Line(x+ref+1,y+dy,x+dx,y+dy,color);
- if(x>=ref+1&&dx>ref)
- {
- if(x
- Temp=0;
- else
- Temp=x-dx;
- Glib_Line(Temp,y+dy,x-ref-1,y+dy,color);
- }
- if(y>=dy&&dx>ref)
- Glib_Line(x+ref+1,y-dy,x+dx,y-dy,color);
- if(x>=ref+1&&y>=dy&&dx>ref)
- {
- if(x
- Temp=0;
- else
- Temp=x-dx;
- Glib_Line(Temp,y-dy,x-ref-1,y-dy,color);
- }
- if(dy!=dx||dx==ref)
- {
- if(y
- Temp=0;
- else
- Temp=y-dx;
- Glib_Line(x+dy,Temp,x+dy,y+dx,color);
- }
- if(x>=dy&&(dy!=dx||dy==ref))
- {
- if(y
- Temp=0;
- else
- Temp=y-dx;
- Glib_Line(x-dy,Temp,x-dy,y+dx,color);
- }
- dy++;
- if((r*r-dy*dy)<=(dx-1)*dx)
- dx--;
- }
- Glib_Line(x+ref+1,y,x+r,y,color);
- if(x>=ref+1)
- {
- if(x
- Temp=0;
- else
- Temp=x-r;
- Glib_Line(Temp,y,x-ref-1,y,color);
- }
- if(y
- Temp=0;
- else
- Temp=y-r;
- Glib_Line(x,Temp,x,y+r,color);
- }
- else//空心圆
- {
- while(dy<=dx)
- {
- PutPixel(x+dx,y+dy,color);
- PutPixel(x-dx,y+dy,color);
- PutPixel(x+dx,y-dy,color);
- PutPixel(x-dx,y-dy,color);
- if(dx!=dy)
- {
- PutPixel(x+dy,y+dx,color);
- PutPixel(x+dy,y-dx,color);
- PutPixel(x-dy,y+dx,color);
- PutPixel(x-dy,y-dx,color);
- }
- dy++;
- if((r*r-dy*dy)<=(dx-1)*dx)
- dx--;
- }
- PutPixel(x+r,y,color);
- PutPixel(x-r,y,color);
- PutPixel(x,y+r,color);
- PutPixel(x,y-r,color);
- }
- }
- /**************************************************************
- *
- *LCD屏初始化
- *
- **************************************************************/
- voidLcd_TFT_Init(void)
- {
- Lcd_Init();
- Lcd_PowerEnable(0,1);
- Lcd_EnvidOnOff(1);//turnonvedio
- Lcd_ClearScr((0x00<11)|(0x00<5)|(0x00));//565格式纯黑色
- }
- voidMain(void)
- {
- SelectFclk(2);//设置系统时钟400M
- ChangeClockDivider(2,1);//设置分频1:4:8
- CalcBusClk();//计算总线频率
- Lcd_TFT_Init();
- Lcd_ClearScr((0x00<11)|(0x00<5)|(0x0e));//背景整屏蓝屏
- Glib_Rectangle(10,10,150,150,(0x1f<11)|(0x00<5)|(0x00));//空心正方形边为纯红
- Glib_FilledRectangle(20,20,100,100,(0x1f<11)|(0x00<5)|(0x1f));//品红正方形
- Gli
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)