掃瞄方式,lcd驅動程式

2021-09-29 02:56:25 字數 1868 閱讀 9092

顯示器的掃瞄方式主要有隔行掃瞄(interlaced)與逐行掃瞄(non-interlaced)兩種,港台地區也稱為交錯與非交錯。

隔行掃瞄是指在顯示器在顯示影象時,先掃瞄奇數行,然後再回頭掃瞄偶數行,經過兩次掃瞄才完成一次影象重新整理。

先摘抄乙份,以備後用

前些天除錯lcd,發現顯示的內容完全是旋轉的,並且也只顯示了部分,寫color bar的程式部分如下

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

struct fb_var_screeninfo vinfo;

int main(int argc, char *ar**)

int fbfd, fbsize, i;

int red, green, blue;

unsigned char *fbbuf;

if (argc != 5) {

printf("usage: ./%s /dev/fbx r g b/n", ar**[0]);

printf("e.g: ./%s /dev/fb0 128 255 255/n", ar**[0]);

exit(0);

red = atoi(ar**[2]);

green = atoi(ar**[3]);

blue = atoi(ar**[4]);

/* open video memory */

if ((fbfd = open(ar**[1], o_rdwr)) < 0) {

exit(1);

/* get variable display parameters */

if (ioctl(fbfd, fbioget_vscreeninfo, &vinfo)) {

printf("bad vscreeninfo ioctl/n");

exit(2);

printf("xres, yres, pixel/bit : %d, %d, %d/n", vinfo.xres, vinfo.yres, vinfo.

bits_per_pixel);

/* size of frame buffer */

fbsize = vinfo.xres*vinfo.yres*(vinfo.bits_per_pixel/8);

/* map video memory */

if ((fbbuf = mmap(0, fbsize, prot_read | prot_write, map_shared, fbfd, 0)) == (void *) -1

exit(3);

/* clear the screen */

for (i = 0; i < fbsize; i++) {

*(fbbuf + i++) = red;

*(fbbuf + i++) = green;

*(fbbuf + i++) = blue;

printf("clear screen with rgb:%s %s %s %d/n", ar**[2], ar**[3], ar**[4], fbsize);

munmap(fbbuf, fbsize);

close(fbfd);

return 0;

改進部分如下

顯示如下

code: 

redblue

green

red/blue

後來發現其實是掃瞄方式,的問題。

但是應該顯示:

redblue

green

red/blue

lcd驅動程式

ok6410lcd測試程式 1.在螢幕上分別顯示紅綠藍三個長方形 自定義結構體用來在使用者空間裡管理幀緩衝的資訊 typedef struct fd dev fb dev t 實現緩衝裝置的開啟和關閉操作的介面 int fb open fb dev t fbd,char fbn 獲取lcd的可變引數...

LCD驅動程式移植

對lcd的操作可以像串列埠一樣,通過終端裝置層的封裝 dev tty 裝置 來輸出內容,也可以通過frame buffer dev fb 裝置 直接在視訊記憶體上 繪製 影象。tty 終端裝置 和frame buffer驅動程式的框架 下面根據每層的檔案講解一下上圖 1 顯示驅動程式 2 鍵盤驅動程...

LCD裝置驅動程式

對螢幕進行抓屏 cp dev fb0 myfile.png 幀緩衝裝置的主裝置號29,次裝置號0 31,也就是dev fb0 dev fb31 填充乙個fbinfo結構。用register framebuffer fbinfo 將fbinfo結構註冊到核心,對於fbinfo結構,最基本的是fs op...