日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

显示屏的方向设置问题

發布時間:2024/10/14 编程问答 119 豆豆
生活随笔 收集整理的這篇文章主要介紹了 显示屏的方向设置问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

此文基于stm32F429原子的例程,stm32F429自帶LTDC液晶控制器,底層驅動在"ltdc.c"中配置。

1. 在不用emwin顯示的情況下,如果想任意設置屏幕的顯示方向,則應該更改文件"ltdc.c"中的打點函數,想怎么顯示修改代碼

lcdltdc.pixsize*(lcdltdc.pwidth*y+x)

lcdltdc.pixsize*(lcdltdc.pwidth*(lcdltdc.pheight-x)+y)

lcdltdc.pixsize*(lcdltdc.pwidth*(272-y)+(480-x))

lcdltdc.pixsize*(lcdltdc.pwidth*(lcdltdc.pheight-x-1)+y)

//畫點函數 //x,y:坐標 //color:顏色值 void LTDC_Draw_Point(u16 x,u16 y,u32 color) { #if LCD_PIXFORMAT==LCD_PIXFORMAT_ARGB8888||LCD_PIXFORMAT==LCD_PIXFORMAT_RGB888if(lcdltdc.dir) //橫屏{*(u32*)((u32)ltdc_framebuf[lcdltdc.activelayer]+lcdltdc.pixsize*(lcdltdc.pwidth*y+x))=color;}else //豎屏{*(u32*)((u32)ltdc_framebuf[lcdltdc.activelayer]+lcdltdc.pixsize*(lcdltdc.pwidth*(lcdltdc.pheight-x)+y))=color; } #elseif(lcdltdc.dir) //橫屏{*(u16*)((u32)ltdc_framebuf[lcdltdc.activelayer]+lcdltdc.pixsize*(lcdltdc.pwidth*y+x))=color;}else //豎屏{*(u16*)((u32)ltdc_framebuf[lcdltdc.activelayer]+lcdltdc.pixsize*(lcdltdc.pwidth*(lcdltdc.pheight-x-1)+y))=color; } #endif }

2.使用emwin時,應該在emwin的相應的LCD配置文件LCDConf_中修改LCD_X_Config()函數,參考emwin5手冊中的“顯示驅動”一章節中的“通過函數配置顯示方向”這一節,大概在800多頁。

修改代碼

? GUI_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y);

?GUI_SetOrientation(GUI_MIRROR_X|GUI_MIRROR_Y);? ? ? ? ? ?

//配置程序,用于創建顯示驅動器件,設置顏色轉換程序和顯示尺寸 void LCD_X_Config(void) {uint32_t i;LCD_LL_Init (); //LCD底層驅動(LTDC中斷設置和DMA2D初始化) #if (NUM_BUFFERS>1) //多緩沖for (i=0;i<GUI_NUM_LAYERS; i++) {GUI_MULTIBUF_ConfigEx(i, NUM_BUFFERS);} #endif//設置第一層GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER_0,COLOR_CONVERSION_0,0,0);//創建顯示驅動器件GUI_SelectLayer(0); //選中第0層if(lcddev.dir==0)//豎屏{LCD_SetSizeEx(0,lcddev.height,lcddev.width); //設置可見區尺寸LCD_SetVSizeEx(0,lcddev.height,lcddev.width*NUM_VSCREENS); //設置虛擬顯示區尺寸 GUI_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y); //設置為豎屏}else //橫屏{LCD_SetSizeEx(0,lcddev.width,lcddev.height); //設置可見區尺寸LCD_SetVSizeEx(0,lcddev.width,lcddev.height*NUM_VSCREENS); //設置虛擬顯示區尺寸GUI_SetOrientation(GUI_MIRROR_X|GUI_MIRROR_Y); //設置為反向//屏幕方向設置}GUI_TOUCH_Calibrate(GUI_COORD_X,0,lcddev.width,0,lcddev.width-1); GUI_TOUCH_Calibrate(GUI_COORD_Y,0,lcddev.height,0,lcddev.height-1); #if (GUI_NUM_LAYERS>1)//設置第二層GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER_1,COLOR_CONVERSION_1,0,1);GUI_SelectLayer(1); //選中第1層if(lcddev.dir==0)//豎屏{LCD_SetSizeEx(1,lcddev.height,lcddev.width); //設置可見區尺寸LCD_SetVSizeEx(1,lcddev.height,lcddev.width*NUM_VSCREENS); //設置虛擬顯示區尺寸 GUI_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y); //設置為豎屏}else //橫屏{LCD_SetSizeEx(1,lcddev.width,lcddev.height); //設置可見區尺寸LCD_SetVSizeEx(1,lcddev.width,lcddev.height*NUM_VSCREENS); //設置虛擬顯示區尺寸GUI_SetOrientation(GUI_MIRROR_X|GUI_MIRROR_Y); //設置為反向//屏幕方向設置}GUI_TOUCH_Calibrate(GUI_COORD_X,0,lcddev.width,0,lcddev.width-1); GUI_TOUCH_Calibrate(GUI_COORD_Y,0,lcddev.height,0,lcddev.height-1); #endiflayer_prop[0].address=LCD_LAYER0_FRAME_BUFFER; //緩沖區 #if (GUI_NUM_LAYERS>1)layer_prop[1].address=LCD_LAYER1_FRAME_BUFFER; #endiffor (i=0;i<GUI_NUM_LAYERS;i++) {layer_prop[i].pColorConvAPI=(LCD_API_COLOR_CONV *)apColorConvAPI[i];layer_prop[i].pending_buffer=-1;LCD_SetVRAMAddrEx(i,(void *)(layer_prop[i].address));layer_prop[i].BytesPerPixel=LCD_GetBitsPerPixelEx(i) >> 3;LCD_SetDevFunc(i,LCD_DEVFUNC_COPYBUFFER,(void(*)(void))CUSTOM_CopyBuffer);LCD_SetDevFunc(i,LCD_DEVFUNC_COPYRECT,(void(*)(void))CUSTOM_CopyRect);if (LCD_LL_GetPixelformat(i)<=LTDC_PIXEL_FORMAT_ARGB4444) {LCD_SetDevFunc(i,LCD_DEVFUNC_FILLRECT,(void(*)(void))CUSTOM_FillRect);LCD_SetDevFunc(i,LCD_DEVFUNC_DRAWBMP_8BPP,(void(*)(void))LCD_DrawBitmap8bpp);}if(LCD_LL_GetPixelformat(i)==LTDC_PIXEL_FORMAT_RGB565) {LCD_SetDevFunc(i,LCD_DEVFUNC_DRAWBMP_16BPP,(void(*)(void))LCD_DrawBitmap16bpp); }GUICC_M1555I_SetCustColorConv(Color2IndexBulk_M1555IDMA2D,Index2ColorBulk_M1555IDMA2D); //GUICC_M565_SetCustColorConv(Color2IndexBulk_M565DMA2D,Index2ColorBulk_M565DMA2D); GUICC_M4444I_SetCustColorConv(Color2IndexBulk_M4444IDMA2D,Index2ColorBulk_M4444IDMA2D); GUICC_M888_SetCustColorConv(Color2IndexBulk_M888DMA2D,Index2ColorBulk_M888DMA2D); GUICC_M8888I_SetCustColorConv(Color2IndexBulk_M8888IDMA2D,Index2ColorBulk_M8888IDMA2D);GUI_SetFuncAlphaBlending(DMA2D_AlphaBlending); GUI_SetFuncGetpPalConvTable(_LCD_GetpPalConvTable);GUI_SetFuncMixColors(DMA2D_MixColors);GUI_SetFuncMixColorsBulk(LCD_MixColorsBulk);} }

總結

以上是生活随笔為你收集整理的显示屏的方向设置问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。