您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > ARM9教程DSP教程FPGA教程CPLD教程13A3软硬件设计0229
第41页共80页unsignedintColorWord=0;switch(Video_BitsPerPixel){case4:color=(color4)|(color&0x0F);case8:ColorWord=(color24)|(color16)|(color8)|color;//ColorWord=0xFFFFFFFF;break;case2:switch(color&0x03){case0:ColorWord=0x00000000;break;case1:ColorWord=0x55555555;break;case2:ColorWord=0xAAAAAAAA;break;case3:ColorWord=0xFFFFFFFF;break;}break;case1:if(color&1)ColorWord=0xFFFFFFFF;elseColorWord=0;break;}VideoMemorySize=(Video_Width*Video_Height)/(8/Video_BitsPerPixel);VideoMemorySize++;第42页共80页for(i=0;iVideoMemorySize;i+=4){Pointer=(unsignedint*)(i+Video_DrawAddress);*Pointer=ColorWord;}}//..............................................................................//..............................................................................voidvga_clear_screen(void){vga_fill_screen(0);}//..............................................................................//..............................................................................unsignedcharvga_get_video_mode(void){returnVideo_Mode;}//..............................................................................//..............................................................................voidvga_set_video_mode(unsignedcharmode){Video_Mode=mode;switch(Video_Mode){caseVideoMode_800x600_bpp8:Video_Width=800;第43页共80页Video_Height=600;Video_BitsPerPixel=8;Video_Resolution=HighResolution;vga_initialize_registers();VGA_Ctrl_Register=ENDIANESS(0x0381);break;caseVideoMode_800x600_bpp4:Video_Width=800;Video_Height=600;Video_BitsPerPixel=4;Video_Resolution=HighResolution;vga_initialize_registers();VGA_Ctrl_Register=ENDIANESS(0x3A1);break;caseVideoMode_800x600_bpp2:Video_Width=800;Video_Height=600;Video_BitsPerPixel=2;Video_Resolution=HighResolution;vga_initialize_registers();VGA_Ctrl_Register=ENDIANESS(0x3C1);break;caseVideoMode_800x600_bpp1:Video_Width=800;Video_Height=600;Video_BitsPerPixel=1;Video_Resolution=HighResolution;vga_initialize_registers();第44页共80页VGA_Ctrl_Register=ENDIANESS(0x3E1);break;caseVideoMode_640x480_bpp8:Video_Width=640;Video_Height=480;Video_BitsPerPixel=8;Video_Resolution=LowResolutionDiv;vga_initialize_registers();VGA_Ctrl_Register=ENDIANESS(0x1381);break;caseVideoMode_640x480_bpp4:Video_Width=640;Video_Height=480;Video_BitsPerPixel=4;Video_Resolution=LowResolutionDiv;vga_initialize_registers();VGA_Ctrl_Register=ENDIANESS(0x13A1);break;caseVideoMode_640x480_bpp2:Video_Width=640;Video_Height=480;Video_BitsPerPixel=2;Video_Resolution=LowResolutionDiv;vga_initialize_registers();VGA_Ctrl_Register=ENDIANESS(0x13C1);break;caseVideoMode_640x480_bpp1:第45页共80页Video_Width=640;Video_Height=480;Video_BitsPerPixel=1;Video_Resolution=LowResolutionDiv;vga_initialize_registers();VGA_Ctrl_Register=ENDIANESS(0x13E1);break;}}//............................................................................../**********************************************************************|*|*FUNCTION:vga_plot|*|*INPUT:x,y=coordinatesofpixel|*color=colorofthepixel|*|*OUTPUT:None|*|*DESCRIPTION:Drawonepixelwithgivencolor*/voidvga_plot(unsignedintx,unsignedinty,unsignedcharcolor){unsignedintByteOffset=0;unsignedchar*vmem;unsignedcharbyte;unsignedcharpix;unsignedcharmask;//........................................第46页共80页//CompensatefordefectinVGAhardwarex=x+1;//........................................switch(Video_BitsPerPixel){case8:ByteOffset=(y*(Video_Width/1))+(x/1);break;case4:ByteOffset=(y*(Video_Width/2))+(x/2);break;case2:ByteOffset=(y*(Video_Width/4))+(x/4);break;case1:ByteOffset=(y*(Video_Width/8))+(x/8);break;}vmem=(unsignedchar*)(Video_DrawAddress+ByteOffset);switch(Video_BitsPerPixel){case8:*vmem=color;break;case4:color=color&0x0f;//Bits(7..4)arelowerpixel(leftmost)byte=*vmem;if(x&1)byte=(byte&0xf0)|(color);elsebyte=(byte&0x0f)|(color4);*vmem=byte;break;第47页共80页case2:color=color&0x03;//Bits(7..6)arelowerpixel(leftmost)byte=*vmem;pix=2*(3-(x&3));mask=(3)pix;color=(color&3)pix;byte=(byte&(~mask))|color;*vmem=byte;break;case1:byte=*vmem;pix=7-(x&0x07);mask=(1)pix;color=(color&1)pix;byte=(byte&(~mask))|color;*vmem=byte;break;}}//..............................................................................//..............................................................................voidvga_fill(unsignedintx1,unsignedinty1,unsignedintx2,unsignedinty2,unsignedcharcolor){unsignedintix,iy;第48页共80页for(iy=y1;iy=y2;iy++){for(ix=x1;ix=x2;ix++){vga_plot(ix,iy,color);}}}//-----------------------------------------------------------------------------/**********************************************************************|*|*FUNCTION:vga_line|*|*INPUT:x1,y1=coordinatesofstartpoint|*x2,y2=coordinatesofendpoint|*color=colortobeusedfordrawing|*|*OUTPUT:None|*|*DESCRIPTION:DrawastraightlinebetweentwopointsusingBresenham's|*integer-onlyalgorithm*///..............................................................................//..............................................................................voidvga_line(unsignedintx1,unsignedinty1,unsignedintx2,
本文标题:ARM9教程DSP教程FPGA教程CPLD教程13A3软硬件设计0229
链接地址:https://www.777doc.com/doc-3385986 .html