在LCD上顯示英文和漢字

2021-09-25 18:43:04 字數 1623 閱讀 4154

lcd工作時會在記憶體中的視訊記憶體(framebuffer)中取出若干個位元組來表示乙個畫素點,如此迴圈的把視訊記憶體中的點陣顯示出來

下面直接貼出**,在**中有詳細的注釋:

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

if (ioctl(fd_fb, fbioget_vscreeninfo, &var)) //獲取lcd裝置fb0可變資訊

if (ioctl(fd_fb, fbioget_fscreeninfo, &fix)) // 獲取lcd裝置fb0固定資訊

line_width = var.xres * var.bits_per_pixel / 8; //算出一行的寬度單位是位元組

pixel_width = var.bits_per_pixel / 8; //算出每個畫素的位元組數

//算出視訊記憶體的大小var.xres螢幕寬度 var.yres螢幕高度 var.bits_per_pixel每個畫素用幾位元組表示

screen_size = var.xres * var.yres * var.bits_per_pixel / 8;

//給lcd裝置分配乙個screen_size大小的視訊記憶體空間

fbmem = (unsigned char *)mmap(null,screen_size,prot_read | prot_write,map_shared,fd_fb,0);

if(fbmem == (unsigned char*)-1)

/* hzk16的初始化 */

fd_hzk16 = open("hzk16", o_rdwr); //開啟漢字型檔

if (fd_hzk16 < 0)

if(fstat(fd_hzk16, &hzk_stat)) //獲得漢字型檔的大小資訊

//將漢字型檔對映到記憶體中去,可以像訪問記憶體陣列一樣訪問他

hzkmem = (unsigned char *)mmap(null , hzk_stat.st_size, prot_read, map_shared, fd_hzk16, 0);

if (hzkmem == (unsigned char *)-1)

/* 清屏: 全部設為黑色 */

memset(fbmem, 0, screen_size);

lcd_put_ascii(var.xres/2, var.yres/2, 'a'); //顯示乙個英文本母

printf("chinese code : %02x %02x \n",str[0],str[1]);

lcd_put_chinese(var.xres/2 + 8, var.yres/2, str); //顯示乙個中文

return 0;

}

顯示字元函式

void lcd_put_ascii(int x, int y, unsigned char c)

case 16: //對於畫素寬度位16的,需要把int型的資料轉化為565的16位資料

case 32:

default :} }

使用stm32在lcd上隨意顯示漢字

怎樣在lcd彩屏上顯示漢字,我們習慣使用漢字型檔,也有很多自己做乙個漢字型檔,我就習慣這一種。介紹一下 我做的顯示 同乙個世界!同乙個夢想!首先 在網上下乙個提取點陣的的軟體生成自己的字型檔,const struct typfont16 font16lib 漢字的點陣結構體格式為 typedef s...

ARM平台LCD顯示漢字

arm平台lcd顯示漢字 2008 06 13 18 54 33 做了無數的windows程式,從來沒有把顯示漢字和英文本母當成一回事兒。這也難怪,寫視窗程式的時候,什麼setwindowtext messagebox setdlgitemtext等等,你只需要把自己想要顯示的字串傳進去,然後編譯 ...

ARM平台LCD顯示漢字

做了無數的windows程式,從來沒有把顯示漢字和英文本母當成一回事兒。這也難怪,寫視窗程式的時候,什麼setwindowtext messagebox setdlgitemtext等等,你只需要把自己想要顯示的字串傳進去,然後編譯 鏈結,就能夠顯示出來了,非常非常簡單 若說麻煩,可能就是在asci...