freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于嵌入式linux電表采集終端顯示模塊設(shè)計(jì)論文-免費(fèi)閱讀

2024-12-12 02:39 上一頁面

下一頁面
  

【正文】 這些不僅讓我鞏固了原有的知識(shí)基礎(chǔ),真正學(xué)到了許多以前沒有接觸過的知識(shí),還端正了工作態(tài)度,培養(yǎng)了嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,使我受益匪淺。本畢業(yè)設(shè)計(jì)討論的是電表采集終端顯示模塊,在與其他模塊整合的過程中,采用共享內(nèi)存的方式整合成功,并能成功獲取采集模塊采集的數(shù)據(jù),通過顯示模塊顯示到顯示屏上??偨Y(jié)接觸嵌入式Linux至今已有兩個(gè)多月,從熟悉Linux基本命令到搭建嵌入式Linux交叉開發(fā)平臺(tái),再到學(xué)習(xí)Linux設(shè)備驅(qū)動(dòng)并能夠開發(fā)出一個(gè)簡單的圖形界面,我對嵌入式Linux有了初步的了解。 } default:{ DrawText(meterno1,strlen(meterno1),lpMidRect1,DT_TOP|DT_LEFT,RGB_BLACK)。 break。 } case KEYPAD4:{ DrawText(meterno4,strlen(meterno4),lpMidRect1,DT_TOP|DT_LEFT,RGB_BLACK)。 DrawTextInfo(0)。while(1){ read(keypad_fd,ret,1)。 return。 meter *p_map=NULL。 free(lpTopRect)。 FillRect(lpMidRect3,RGB_WHITE)。 free(lpInterRect2)。 free(lpTopRect)。 close(keypad_fd)。 FillRect(lpInterRect1,RGB_NAVYLTGRAY)。 FillRect(lpMidRect1,RGB_WHITE)。 FillRect(lpTopRect,RGB_NAVYLTGRAY)。3. 初始化圖形主界面圖形主界面分三個(gè)部分,標(biāo)題欄,電表信息顯示欄,錯(cuò)誤信息顯示欄。 if(!_lGUI_pFrameBuffer){ printerror(mmap return error.)。 _lGUI_iFrameWidth=。開始初始化獲取鍵值與上次鍵值是否相同清除文本框鍵值是否為KEYPADENTER否根據(jù)鍵值顯示信息否結(jié)束是是 圖形界面程序流程圖 初始化初始化framebuffer,初始化小鍵盤,初始化圖形主界面和通過共享內(nèi)存獲得采集到的數(shù)據(jù)。yiCharHeight。 if(offset0 ||offset95) return false。我們設(shè)定要顯示的ASCII字符大小為16*8,所以我們定義的字模數(shù)組大小為ASC_MSK[96*16],下面是部分字模數(shù)組:static unsigned char ASC_MSK[96*16] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18, /* ! */ 0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x66,0x66,0x66,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x36,0x36,0x7F,0x36,0x36, /* */ 0x36,0x7F,0x36,0x36,0x00,0x00,0x00,0x00, 0x00,0x18,0x18,0x3C,0x66,0x60,0x30,0x18, /* $ */ 0x0C,0x06,0x66,0x3C,0x18,0x18,0x00,0x00, 0x00,0x00,0x70,0xD8,0xDA,0x76,0x0C,0x18, /* % */ 0x30,0x6E,0x5B,0x1B,0x0E,0x00,0x00,0x00, 0x00,0x00,0x00,0x38,0x6C,0x6C,0x38,0x60, /* amp。該位為0表示字符的筆畫不經(jīng)過此位,對應(yīng)于此位置為背景顏色。inBottomRect。 //top line LineTo(lprc,lprcleft,lprctop,lprcright1,lprctop,crFrameColor)。default:假設(shè)我們已經(jīng)知道直線的起始坐標(biāo)點(diǎn)(Xbegin,Ybegin)和終點(diǎn)(Xend,Yend),x,y,是當(dāng)前的坐標(biāo)點(diǎn),如果我們通過增加x反算出y的方法的話,這個(gè)公式就可以很容易轉(zhuǎn)換為偽代碼。}首先計(jì)算將要畫點(diǎn)的地址。無論何時(shí),只要程序在分配的地址范圍內(nèi)進(jìn)行讀取或者寫入,實(shí)際上就是對設(shè)備的訪問,使用 mmap 可以既快速又簡單地訪問顯示卡的內(nèi)存。 圖形引擎初始化_lGUI_iFrameBuffer = open (/dev/fb0, O_RDWR)。這里調(diào)用函數(shù)pckdb_translate,實(shí)現(xiàn)了scancode和keycode之間的轉(zhuǎn)換。然后將keyboard tasklet加入到tasklet鏈表中。 s3c2410fb_init(void)//當(dāng)模塊被載入時(shí)執(zhí)行 映射(map)操作:由于Linux工作在內(nèi)核保護(hù)模式,每個(gè)應(yīng)用程序都有自己的虛擬地址空間,在應(yīng)用程序中是不能直接訪問物理緩沖區(qū)地址的。int (*fb_set_var)(struct fb_var_screeninfo *var, int con, struct fb_info *info)。緩沖區(qū)大小為:點(diǎn)陣行數(shù)點(diǎn)陣列數(shù)用于表示一個(gè)像素的比特?cái)?shù)/8。它包括顯示屏幕的分辨率、每個(gè)像素的比特?cái)?shù)和一些時(shí)序變量。分別對應(yīng)/dev/fb0~/dev/fb31??紤]到實(shí)際應(yīng)用的專用性以及消費(fèi)類產(chǎn)品對成本的敏感性,由桌面PC操作系統(tǒng)演變來的Windows CE /QT Embedded等嵌入式操作系統(tǒng)所提供的GU I所要求的資源普遍較高。 實(shí)現(xiàn)原理在鍵盤產(chǎn)生按鍵動(dòng)作之后,鍵盤上的掃描芯片獲得鍵盤的掃描碼,并將其發(fā)送到主機(jī)端。一般說來,底層硬件處理函數(shù)中最重要的工作就是在鍵盤中斷處理中獲取被按下鍵的掃描碼,并且以它為參數(shù)調(diào)用handle_scancode,該掃描碼可以自己定義,但它必須唯一地標(biāo)識(shí)出被按下鍵在鍵盤上的位置??梢钥闯?,這個(gè)函數(shù)完成的是鍵盤驅(qū)動(dòng)程序中最核心的一些工作,而這些核心的邏輯功能是不依賴于底層硬件的,所以可以將其獨(dú)立出來,并且導(dǎo)出給底層的硬件處理函數(shù)調(diào)用。大多數(shù)LCD驅(qū)動(dòng)器都需要與顯示器相匹配的幀頻率,幀頻率計(jì)算公式如下:RATE = 1/{[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]*[(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)*[2*(CLKVAL+1)/(HCLK)]} ()[5] 小鍵盤驅(qū)動(dòng)Linux由于其具有內(nèi)核強(qiáng)大且穩(wěn)定,易于擴(kuò)展和裁減,豐富的硬件支持等諸多優(yōu)點(diǎn),在嵌入式系統(tǒng)中得到了廣泛的應(yīng)用。S3C2410有兩個(gè)FIFO來支持雙掃描顯示模式。LCDCDMA是一個(gè)專用DMA,自動(dòng)從幀存儲(chǔ)器傳輸數(shù)據(jù)到LCD控制器,用這個(gè)特殊的DMA,視頻數(shù)據(jù)可不經(jīng)過CPU干涉就顯示在屏幕上。S3C2410中的LCD控制器可支持STN和TFT兩種液晶。因此在嵌入式系統(tǒng)中開發(fā)LCD驅(qū)動(dòng)得以廣泛運(yùn)用。 framebuffer驅(qū)動(dòng)幀緩沖區(qū)是出現(xiàn)在Linux ,這種接口將顯示設(shè)備抽象為幀緩沖區(qū)設(shè)備區(qū)。對于常用設(shè)備,Linux有約定俗成的編號,如硬盤的主設(shè)備號是3。字符設(shè)備和塊設(shè)備的主要區(qū)別是:在對字符設(shè)備發(fā)出讀/寫請求時(shí),實(shí)際的硬件I/O一般就緊接著發(fā)生了。 嵌入式GUI的發(fā)展現(xiàn)狀目前在嵌入式平臺(tái)上可用的GUI產(chǎn)品比較豐富,但大體上可分為如下幾類:1. 各大嵌入式設(shè)備廠商依靠自己的能力開發(fā)的專用GUI產(chǎn)品;2. 基于傳統(tǒng)PC平臺(tái)的風(fēng)格和習(xí)慣移植的GUI產(chǎn)品,如Windows CE,QT Embedded,緊縮的X Window系統(tǒng)等;這種GUI往往帶有過多的PC平臺(tái)痕跡,例如X Window系統(tǒng)本來是Linux以及其他類UNIX系統(tǒng)的標(biāo)準(zhǔn)GUI,基于服務(wù)器/客戶端結(jié)構(gòu),適應(yīng)面廣,非常靈活方便。最高主頻可達(dá)180MHz,同時(shí)功耗極低。3. 最下層為用戶層:它規(guī)定了電表能夠?yàn)橛脩羲峁┑姆?wù)以及客戶端與計(jì)量儀表進(jìn)行數(shù)據(jù)交換的要求。因此智能性原則必須充分發(fā)揮軟件的作用,在設(shè)計(jì)中盡量采用軟件來代替硬件完成一些功能,特別是數(shù)據(jù)采集過程的控制,故障的檢測報(bào)警等。具體包括以下幾個(gè)方面:1. 電源系統(tǒng)的可靠性設(shè)計(jì);2. 結(jié)構(gòu)堅(jiān)固,不易損壞;3. 電路的硬件及可靠性;4. 軟件的抗干擾和可靠性設(shè)計(jì);5. 系統(tǒng)故障的自保護(hù)、自檢、自診斷設(shè)計(jì);6. 元器件與參數(shù)合理選擇,老化篩選和部件、整體測試。數(shù)據(jù)采集終端分為抄表模塊,數(shù)據(jù)顯示模塊,控制模塊,遠(yuǎn)程升級等。 課題研究的意義后PC 時(shí)代,隨著嵌入式系統(tǒng)的廣泛應(yīng)用,嵌入式操作系統(tǒng)也越來越受到重視。隨后闡述以ARM9為硬件平臺(tái),嵌入式Linux為軟件平臺(tái),實(shí)現(xiàn)顯示模塊的兩個(gè)前提條件:基于framebuffer顯示屏驅(qū)動(dòng)和特殊小鍵盤驅(qū)動(dòng)的方法。自動(dòng)抄表系統(tǒng)節(jié)約了大量的人力和時(shí)間,快捷、準(zhǔn)確地傳遞了信息,減少了人工抄表誤差,提高了工作效率,是電力行業(yè)優(yōu)化管理、走向市場的技術(shù)保障。為了保證電網(wǎng)安全、正確地商業(yè)化運(yùn)營,必須有一套計(jì)量精確、功能強(qiáng)大的自動(dòng)抄表系統(tǒng)。為電力計(jì)量計(jì)費(fèi)的準(zhǔn)確、實(shí)時(shí)操作提供了可靠的技術(shù)保證。第五部分對研究工作進(jìn)行歸納和總結(jié)。由于采用了微機(jī)系統(tǒng),使系統(tǒng)具有數(shù)據(jù)處理,邏輯判斷和信息存儲(chǔ)的功能。本地抄表系統(tǒng)主要采用手持式抄表終端,該手持抄表終端里面含有微控制器,配有外設(shè)如鍵盤、液晶顯示屏等人機(jī)交互接口處理工作人員的命令,通過RS232接口通訊方式與電表進(jìn)行數(shù)據(jù)傳輸,并將電表的相關(guān)數(shù)據(jù)顯示在顯示屏上。ARM處理器專門用于處理娛樂、教育和商業(yè)設(shè)備。因此在嵌入式系統(tǒng)中開發(fā)LCD驅(qū)動(dòng)得以廣泛運(yùn)用。 考慮到上述原因,一種較好的解決方案是自行設(shè)計(jì)一種輕型、適合電表采集終端要求的圖形用戶界面,顯示功能齊全,操作簡便,在應(yīng)用、功能上都能滿足用戶需求,并且應(yīng)大大降低成本。應(yīng)用程序可以打開、關(guān)閉和讀寫這些設(shè)備文件,完成對設(shè)備的操作,就像操作普通的數(shù)據(jù)文件一樣。不同類型的文件有不同的file_operations成員函數(shù),如普通的磁盤數(shù)據(jù)文件,接口函數(shù)完成磁盤數(shù)據(jù)塊讀寫操作;而對于各種設(shè)備文件,則最終調(diào)用各自驅(qū)動(dòng)程序中的I/O函數(shù)進(jìn)行具體設(shè)備的操作。用戶可以將它看成是顯示內(nèi)存的一個(gè)映像,將其映射到進(jìn)程地址空間之后,就可以進(jìn)行讀寫操作,而讀寫操作可以反映到LCD。用戶所要顯示的內(nèi)容皆是從緩沖區(qū)中讀出,從而顯示到屏幕上的。SamsungS3C2410XLCD控制器VCLK/LCD HCLKVLINE/VSYNC/CPVVFRAME/VSYNC/STVVM/VDEN/TPVD[23:0]LENDLCDPWRENLCDVF0LCDVF01LCDVF02 S3C2410 LCD控制器1. 寄存器介紹LCD的寄存器主要有:LCDCON1寄存器、LCDCON2寄存器、LCDCON3寄存器、LCDCON4寄存器和LCDCON5寄存器。當(dāng)FIFO空或部分空時(shí),LCDCDMA要求從基于突發(fā)傳輸模式的幀緩存器中來取來數(shù)據(jù),存入要顯示的圖像數(shù)據(jù),而這個(gè)幀存儲(chǔ)器是LCD控制器在RAM中開辟的一片緩沖區(qū)。VSYNC和HSYNC脈沖的產(chǎn)生依賴于LCDCON2/3寄存器的HOZVAL域和LINEVAL域的培植。鍵盤驅(qū)動(dòng)程序的上層公共部分都在driver/。這個(gè)文件包括了鍵盤中斷處理函數(shù)keyboard_interrupt,掃描碼到鍵碼轉(zhuǎn)換函數(shù)pckbd_translate等其他一些與底層硬件密切相關(guān)的函數(shù)。特殊鍵盤的硬件模塊是ZLG7289A芯片。UTF8 mode(Unicode)模式:Unicode模式基本上與XLATE相同,只不過可以通過數(shù)字小鍵盤間接輸入U(xiǎn)nicode代碼,通過參數(shù)u可以設(shè)置。而/dev/fb則為當(dāng)前缺省的幀緩沖設(shè)備,通常指向/dev/fb0。struct fb_fix_screeninfo:記錄了幀緩沖設(shè)備和指定顯示模式的不可修改信息。其中成員變量modename為設(shè)備名稱,fontname為顯示字體,fbops為指向底層操作的函數(shù)的指針。編寫結(jié)構(gòu)fb_info中函數(shù)指針fb_ops對應(yīng)的成員函數(shù),對于嵌入式系統(tǒng)的簡單實(shí)現(xiàn),只需要下列三個(gè)函數(shù)就可以了。而fb_set_var()函數(shù)的傳入?yún)?shù)是fb_var_screeninfo,函數(shù)中需要對xres、yres和bits_per_pixel賦值。在應(yīng)用程序中,操作/dev/fb的一般步驟如下:打開/dev/fb設(shè)備文件;用ioctrl操作取得當(dāng)前顯示屏幕的參數(shù),如屏幕分辨率和每個(gè)像素的比特?cái)?shù),根據(jù)屏幕參數(shù)可計(jì)算屏幕緩沖區(qū)的大??;將屏幕緩沖區(qū)映射到用戶空間;映射后即可直接讀寫屏幕緩沖區(qū),進(jìn)行繪圖和圖片顯示了。 小鍵盤驅(qū)動(dòng)實(shí)現(xiàn) 初始化s3c2410_keypad_init()函數(shù)是鍵盤代碼執(zhí)行的入口點(diǎn)。handle_scancode()處理的結(jié)果就是把按鍵發(fā)給相應(yīng)的處理
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1