91精品一区二区三区久久久久久_欧美一级特黄大片色_欧美一区二区人人喊爽_精品一区二区三区av

位置:51電子網 » 技術資料 » 嵌入式系統

基于uc/os-ii的嵌入式GUI研究與應用

發布時間:2008/6/16 0:00:00 訪問次數:977

1. 引言

  人機界面是嵌入式系統的重要組成部分,當前比較流行的gui主要有:nano-x,microwindows,

  minigui,qt/embedded,opengui等,普遍采用客戶/服務器結構,多線程概念,主要用于嵌入式linux系統中。uc/os-ii是一個簡單、高效的嵌入式實時操作系統內核,憑借其源代碼開放,系統內核可剪裁等特點,被廣泛應用到各種嵌入式系統中。但是,uc/os-ii只是一個實時多任務內核,不具有現代操作系統的線程,客戶/服務器機制,上述gui不能方便的運行在uc/os-ii上。

  uc/gui是一個源代碼開放的gui,可以實現windows風格的圖形界面。微型是其最大的特點,占用很小的系統資源,易于移植,功能強大[1];可以運行在uc/os-ii操作系統中;采用了100%的ansi c編寫,可以應用于任何lcd和cpu中;加上其源代碼開放的特點,使用起來非常靈活。

2. 系統組成

  系統是基于三星的s3c44b0x, 1mb的flash:sst39vf160,8mb的sdram:hy57v641620;使用了casio公司320×240象素stn偽彩色lcd,輸入使用4線電阻式觸摸屏,操作系統為uc/os-ii ,編譯器使用arm公司ads1.2;根據實際需要設計了兩路a/d轉換電路、一路d/a轉換電路。

3. uc/gui的移植

  在進行移植之前首先要了解uc/gui的組織結構。uc/gui是以ansi c源碼包的形式提供的,由config和gui兩個目錄組成:

config
包含了對uc/gui進行配置的文件

gui/convertmono
使用黑白顯示設備時,所要使用的灰度轉換函數

gui/convertcolor
使用彩色顯示設備時,所要使用的彩色轉換函數

gui/core
uc/gui核心代碼

gui/font
uc/gui與字體相關的代碼文件

gui/memdev
內存設備支持文件代碼

gui/lcddriver
lcd驅動文件代碼

gui/touch
支持觸摸屏輸入的文件代碼

gui/widget
控件代碼,包括編輯框、列表框、按鈕、選擇框等

gui/wm

  config目錄下包含了lcdconf.h,guitouchconf.h和guiconf.h三個文件用來對具體使用的lcd驅動程序、觸摸屏驅動程序和uc/gui進行配置。

  uc/gui的移植過程主要是對config目錄下三個文件的修改,以及進行觸摸屏和lcd驅動程序的編寫[2]。

3.1觸摸屏的移植

  在使用觸摸屏之前必須將config目錄下guiconf.h中的gui_support_touch設置為 1,由于項目中使用了操作系統所以同時將gui_os也設置為 1。觸摸屏觸點位置的獲得是通過調用gui/core/目錄中gui_touch_driveranalog.c文件中的 gui_touch_exec( )函數來實現的,對該函數進行修改后的偽代碼如下:

void gui_touch_exec(void)

{

讀取觸點在觸摸屏上(x, y)點實際坐標值;

進行實際坐標值到邏輯坐標的轉換;

調用gui_touch_storestate(x, y)保存邏輯坐標值;

}

  系統為了實時得到觸點坐標,就要不斷調用gui_touch_exec( )函數。因此需要在uc/os-ii操作系統中建立一個單獨的任務對該函數進行調用,這樣可以保證觸摸屏任務的實時響應。實現方式如下:

void task_touch(void*id){ //建立觸摸屏任務

while(1){ gui_touch_exec(); //調用此函數

ostimedly(1); } //延時一個時鐘節拍

}

3.2 液晶屏的移植

  lcd的移植與具體使用的lcd有關,并且相同的lcd可以有不同的顯示模式,這些都影響相關配置文件的修改。本系統使用的是casio公司320×240象素stn偽彩色lcd,s3c44b0x中的lcd控制器與lcd的連接方式為8位單掃描方式,顯示模式為彩色顯示。

配置的參數包含在lcdconf.h文件中,修改后的參數如下:

#define lcd_xsize 320 //x,y大小

#define lcd_ysize 240

#define lcdcolor //定義顯示模式

#define lcd_bitsperpixel 8 //每個象素點的位數

#define lcd_swap_rb 1 //是否交換藍色分量和紅色分量

#define lcd_fixedpalette 332 //調色板模式,本例使用3紅,3綠,2藍

#define lcd_max_log_colors (256) //最大的邏輯顏色數

以上是對lcd各配置參數的修改,接下來將完成lcd驅動api函數。其偽代碼如下:

u32 buffer[lcd_ysize][ lcd_xsize/4] //定義顯存, 對顯存操作直接反映到lcd上

int lcd_l0_init(void){ // lcd初始化函數

關閉lcd;

設定s3c44b0x lcd控制寄存器;

打開lcd;

return 0;

}

void lcd_setpixel(buffer, x, y, color) //畫象素點函數

buffer[(y)][(x)/4]=((buffer[(y)][(x)/4]&(~(0xff000000>>((x)%4)*8)))|( (c)<<((4-1-((x)%4))*8) ));

  另外,在uc/os-ii操作系統中也需要建立一個單獨的任務對gui_exec()函數進行調用,以保證屏幕的及時刷新,給此屏幕刷新任務分配一個盡

1. 引言

  人機界面是嵌入式系統的重要組成部分,當前比較流行的gui主要有:nano-x,microwindows,

  minigui,qt/embedded,opengui等,普遍采用客戶/服務器結構,多線程概念,主要用于嵌入式linux系統中。uc/os-ii是一個簡單、高效的嵌入式實時操作系統內核,憑借其源代碼開放,系統內核可剪裁等特點,被廣泛應用到各種嵌入式系統中。但是,uc/os-ii只是一個實時多任務內核,不具有現代操作系統的線程,客戶/服務器機制,上述gui不能方便的運行在uc/os-ii上。

  uc/gui是一個源代碼開放的gui,可以實現windows風格的圖形界面。微型是其最大的特點,占用很小的系統資源,易于移植,功能強大[1];可以運行在uc/os-ii操作系統中;采用了100%的ansi c編寫,可以應用于任何lcd和cpu中;加上其源代碼開放的特點,使用起來非常靈活。

2. 系統組成

  系統是基于三星的s3c44b0x, 1mb的flash:sst39vf160,8mb的sdram:hy57v641620;使用了casio公司320×240象素stn偽彩色lcd,輸入使用4線電阻式觸摸屏,操作系統為uc/os-ii ,編譯器使用arm公司ads1.2;根據實際需要設計了兩路a/d轉換電路、一路d/a轉換電路。

3. uc/gui的移植

  在進行移植之前首先要了解uc/gui的組織結構。uc/gui是以ansi c源碼包的形式提供的,由config和gui兩個目錄組成:

config
包含了對uc/gui進行配置的文件

gui/convertmono
使用黑白顯示設備時,所要使用的灰度轉換函數

gui/convertcolor
使用彩色顯示設備時,所要使用的彩色轉換函數

gui/core
uc/gui核心代碼

gui/font
uc/gui與字體相關的代碼文件

gui/memdev
內存設備支持文件代碼

gui/lcddriver
lcd驅動文件代碼

gui/touch
支持觸摸屏輸入的文件代碼

gui/widget
控件代碼,包括編輯框、列表框、按鈕、選擇框等

gui/wm

  config目錄下包含了lcdconf.h,guitouchconf.h和guiconf.h三個文件用來對具體使用的lcd驅動程序、觸摸屏驅動程序和uc/gui進行配置。

  uc/gui的移植過程主要是對config目錄下三個文件的修改,以及進行觸摸屏和lcd驅動程序的編寫[2]。

3.1觸摸屏的移植

  在使用觸摸屏之前必須將config目錄下guiconf.h中的gui_support_touch設置為 1,由于項目中使用了操作系統所以同時將gui_os也設置為 1。觸摸屏觸點位置的獲得是通過調用gui/core/目錄中gui_touch_driveranalog.c文件中的 gui_touch_exec( )函數來實現的,對該函數進行修改后的偽代碼如下:

void gui_touch_exec(void)

{

讀取觸點在觸摸屏上(x, y)點實際坐標值;

進行實際坐標值到邏輯坐標的轉換;

調用gui_touch_storestate(x, y)保存邏輯坐標值;

}

  系統為了實時得到觸點坐標,就要不斷調用gui_touch_exec( )函數。因此需要在uc/os-ii操作系統中建立一個單獨的任務對該函數進行調用,這樣可以保證觸摸屏任務的實時響應。實現方式如下:

void task_touch(void*id){ //建立觸摸屏任務

while(1){ gui_touch_exec(); //調用此函數

ostimedly(1); } //延時一個時鐘節拍

}

3.2 液晶屏的移植

  lcd的移植與具體使用的lcd有關,并且相同的lcd可以有不同的顯示模式,這些都影響相關配置文件的修改。本系統使用的是casio公司320×240象素stn偽彩色lcd,s3c44b0x中的lcd控制器與lcd的連接方式為8位單掃描方式,顯示模式為彩色顯示。

配置的參數包含在lcdconf.h文件中,修改后的參數如下:

#define lcd_xsize 320 //x,y大小

#define lcd_ysize 240

#define lcdcolor //定義顯示模式

#define lcd_bitsperpixel 8 //每個象素點的位數

#define lcd_swap_rb 1 //是否交換藍色分量和紅色分量

#define lcd_fixedpalette 332 //調色板模式,本例使用3紅,3綠,2藍

#define lcd_max_log_colors (256) //最大的邏輯顏色數

以上是對lcd各配置參數的修改,接下來將完成lcd驅動api函數。其偽代碼如下:

u32 buffer[lcd_ysize][ lcd_xsize/4] //定義顯存, 對顯存操作直接反映到lcd上

int lcd_l0_init(void){ // lcd初始化函數

關閉lcd;

設定s3c44b0x lcd控制寄存器;

打開lcd;

return 0;

}

void lcd_setpixel(buffer, x, y, color) //畫象素點函數

buffer[(y)][(x)/4]=((buffer[(y)][(x)/4]&(~(0xff000000>>((x)%4)*8)))|( (c)<<((4-1-((x)%4))*8) ));

  另外,在uc/os-ii操作系統中也需要建立一個單獨的任務對gui_exec()函數進行調用,以保證屏幕的及時刷新,給此屏幕刷新任務分配一個盡

相關IC型號

熱門點擊

 

推薦技術資料

DFRobot—玩的就是
    如果說新車間的特點是“靈動”,FQPF12N60C那么... [詳細]
版權所有:51dzw.COM
深圳服務熱線:13751165337  13692101218
粵ICP備09112631號-6(miitbeian.gov.cn)
公網安備44030402000607
深圳市碧威特網絡技術有限公司
付款方式


 復制成功!
新建县| 东乌珠穆沁旗| 湖北省| 临高县| 黄浦区| 新和县| 通榆县| 湘乡市| 梅州市| 宁乡县| 东至县| 原平市| 临颍县| 宣武区| 武汉市| 遵义市| 静安区| 政和县| 个旧市| 房山区| 阳城县| 宝清县| 中牟县| 东源县| 通城县| 顺昌县| 大庆市| 阿坝| 黄龙县| 霍城县| 丰宁| 沽源县| 囊谦县| 安仁县| 凌海市| 东乡族自治县| 鹤岗市| 谢通门县| 芦山县| 讷河市| 马尔康县|