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

正文內(nèi)容

基于嵌入式linux電表采集終端顯示模塊設(shè)計(jì)論文(完整版)

  

【正文】 rWidth/8+1。 int offset=0。、*8的ASCII碼字符B的顯示效果圖和位圖。 } 顯示ASCII碼點(diǎn)陣字符 點(diǎn)陣字符 在點(diǎn)陣字符庫(kù)中,每個(gè)字符由一個(gè)位圖表示。 if(!lprc) return false。//draw rectangle frame with color crFrameColorBOOL GUIAPIDrawRect( RECT *lprc, COLORREF crFrameColor){ int i。for y = Ybegin to Yend本文使用簡(jiǎn)單的直線方程算法。 *(pDest+2) = R(color)。打開fb0,并將framebuffer映射到用戶空間字符數(shù)組,首地址存放在_lGUI_pFrameBuffer中。static int _lGUI_iFrameHeight。這個(gè)函數(shù)就是將處理函數(shù)的結(jié)果發(fā)送到TY或者console進(jìn)行顯示。s3c2410_keypad_init ()在對(duì)鍵盤的工作模式及其他參數(shù)進(jìn)行配置后,調(diào)用HW_keypad_init()。 加載LCD驅(qū)動(dòng)編寫模塊化驅(qū)動(dòng)程序,有以下幾個(gè)關(guān)鍵的函數(shù)。 實(shí)現(xiàn)顯示設(shè)備的主要操作。struct fb_ops{…… int (*fb_get_fix)(struct fb_fix_screeninfo *fix, int con, struct fb_info *info)。 LCD驅(qū)動(dòng)開發(fā)的主要工作包括如下三個(gè)步驟:初始化函數(shù)首先初始化LCD控制器,通過寫寄存器設(shè)置顯示模式和顏色數(shù),然后分配LCD顯示緩沖區(qū)。它包含了屏幕緩沖區(qū)的物理地址和長(zhǎng)度。當(dāng)然在嵌入式系統(tǒng)中支持一個(gè)顯示設(shè)備就夠了。4.電表終端顯示模塊的設(shè)計(jì)與實(shí)現(xiàn)自20世紀(jì)80年代以來(lái),隨著液晶屏幕成本的降低,各種嵌入式圖形消費(fèi)產(chǎn)品和工業(yè)設(shè)備逐步獲得了廣泛的應(yīng)用,從面向?qū)I(yè)人員的高端產(chǎn)品逐步轉(zhuǎn)變成為面向普通消費(fèi)者和普通技術(shù)人員的低端產(chǎn)品。ZLG7289A是廣州周立功單片機(jī)發(fā)展有限公司自行設(shè)計(jì)的,具有SPI串行接口功能的可同時(shí)驅(qū)動(dòng)8位共陰式數(shù)碼管(或64只獨(dú)立LED)的智能顯示驅(qū)動(dòng)芯片,該芯片同時(shí)還可連接多達(dá)64鍵的鍵盤矩陣,單片即可完成LED顯示、鍵盤接口的全部功能。在這種體系結(jié)構(gòu)下,要添加一塊特殊鍵盤到系統(tǒng)中就顯得格外清晰。該文件中最重要的就是內(nèi)核用EXPORT_SYMBOL這個(gè)宏導(dǎo)出的handle_scancode函數(shù)。HOZVAL和LINEVAL的值由LCD屏的尺寸決定,見式()、():HOZVAL = 水平顯示尺寸 1 ()LINEVAL = 垂直顯示尺寸 1 ()VCLK信號(hào)的頻率取決于LCDCON1寄存器中的CLKVAL域。當(dāng)這個(gè)傳送請(qǐng)求被存儲(chǔ)控制器中的總線仲裁器接受到后,從系統(tǒng)存儲(chǔ)器到內(nèi)部FIFO就會(huì)成功傳送4個(gè)字。2. 控制流程REGBANK、LCDCDMA、VIDPRCS和LPC3600組成()。幀緩沖區(qū)的大小由屏幕的分辨率和顯示色彩數(shù)決定。 硬件介紹LCD(液晶顯示)模塊滿足了嵌入式系統(tǒng)日益提高的要求,它可以顯示漢字、字符和圖形,同時(shí)還具有低壓、低功耗、體積小、重量輕和超薄等很多優(yōu)點(diǎn)。這樣,應(yīng)用程序根本不必考慮操作的是設(shè)備還是普通文件,可一律當(dāng)作文件處理,具有非常清晰統(tǒng)一的I/O接口。為了管理這些設(shè)備,系統(tǒng)為設(shè)備編了號(hào),每個(gè)設(shè)備號(hào)又分為主設(shè)備號(hào)和次設(shè)備號(hào)。同時(shí),它的響應(yīng)速度也要有很大提高,進(jìn)一步滿足實(shí)時(shí)性要求[3]。(transflective)LQ035Q7DB02 TFTLCD顯示模塊。它是信息終端機(jī)、個(gè)人互聯(lián)網(wǎng)訪問設(shè)備等應(yīng)用的理想處理器解決方案。智能抄表終端掛接電表PC通訊網(wǎng)絡(luò) 智能抄表系統(tǒng)結(jié)構(gòu)框圖1. 下層為掛接電表層:它規(guī)定了計(jì)量?jī)x表的計(jì)量特性、數(shù)據(jù)項(xiàng)以及電氣性能指標(biāo)。在設(shè)計(jì)時(shí),要選擇性能先進(jìn)、滿足功能要求的CPU和足夠容量的存儲(chǔ)器,并提供良好的硬件環(huán)境,這樣智能化才有了基礎(chǔ)。 總體設(shè)計(jì)原則 可靠性原則可靠性是智能抄表的基本要求。典型的電力自動(dòng)抄表系統(tǒng)主要由前端抄表子系統(tǒng)、通信子系統(tǒng)和中心處理子系統(tǒng)等3 部分組成。自動(dòng)抄表系統(tǒng)不僅節(jié)約了大量的人力和時(shí)間,快捷、準(zhǔn)確地傳遞了信息,減少了人工抄表誤差,提高了工作效率,而且也是全面實(shí)現(xiàn)發(fā)、輸、配電網(wǎng)用戶電能量的自動(dòng)采集、分析與計(jì)費(fèi)功能的有效手段,是電力行業(yè)優(yōu)化管理、走向市場(chǎng)的技術(shù)保障。數(shù)據(jù)采集終端分為抄表模塊,數(shù)據(jù)顯示模塊,控制模塊,遠(yuǎn)程升級(jí)等。本文首先介紹了電表采集系統(tǒng)的總體設(shè)計(jì),并通過比較現(xiàn)有嵌入式GUI,對(duì)電表采集系統(tǒng)的顯示模塊提出設(shè)計(jì)方案?,F(xiàn)今市場(chǎng)上使用的抄表系統(tǒng)大多采用單片機(jī)為平臺(tái),具有硬件功能單一,軟件移植性差等缺點(diǎn),因此不能滿足智能抄表系統(tǒng)多用戶掛接、遠(yuǎn)程信息傳送、遠(yuǎn)程即時(shí)控制、遠(yuǎn)程軟件升級(jí)、實(shí)時(shí)顯示用戶用電信息等需求。電能表數(shù)據(jù)采集終端是前端采集子系統(tǒng)的主要組成部分。在實(shí)際使用要求系統(tǒng)具有抗惡工作環(huán)境的能力,無(wú)故障時(shí)間長(zhǎng)。智能抄表系統(tǒng)之所以能智能地處理問題,主要是軟件的功勞。2. 中間層為數(shù)據(jù)傳輸協(xié)議層:規(guī)定了用戶層與電表層之間以及相關(guān)設(shè)備進(jìn)行數(shù)據(jù)交換的形式。ARM處理器在芯片上直接智能化地集成了各種關(guān)鍵的系統(tǒng)組件,例如LCD控制模塊、USB和內(nèi)存控制器等。該產(chǎn)品在傳輸模式下的亮度達(dá)到100cd/m對(duì)比度達(dá)100:1,提供262,144種色彩,功耗小于365mw,響應(yīng)時(shí)間低于30ms,尺寸為65**4mm,重量為45g,能夠在各種照明條件下利用它來(lái)生動(dòng)地展示圖像和文字信息,從而成為GPS系統(tǒng)、PDA及其它手持設(shè)備的理想選擇[2]。3. Linux設(shè)備驅(qū)動(dòng) Linux設(shè)備驅(qū)動(dòng)的概念 Linux設(shè)備驅(qū)動(dòng)類別Linux將設(shè)備分為最基本的兩大類:一類是字符設(shè)備,另一類是塊設(shè)備。主設(shè)備號(hào)用來(lái)區(qū)分不同種類的設(shè)備,而次設(shè)備號(hào)用來(lái)區(qū)分同一類型的多個(gè)設(shè)備。所以file_operations是文件層次的I/O接口[4]。隨著嵌入式系統(tǒng)的應(yīng)用越來(lái)越廣泛,功能也越來(lái)越強(qiáng)大,對(duì)系統(tǒng)中的人機(jī)界面的要求也越來(lái)越高,在應(yīng)用需求的驅(qū)使下,許多工作在Linux下的圖形界面軟件包的開發(fā)和移植工作中都涉及到底層LCD驅(qū)動(dòng)的開發(fā)問題。驅(qū)動(dòng)幀緩沖的實(shí)現(xiàn)是整個(gè)驅(qū)動(dòng)開發(fā)過程的重點(diǎn)。REGBANK有17個(gè)可編程寄存器組和256*16的調(diào)色板存儲(chǔ)器,用來(lái)設(shè)定LCD控制器。FIFO的總大小是28個(gè)字,其中低位FIFOL是12個(gè)字,高位FIFOH是16個(gè)字。VCLK和CLKVAL域的關(guān)系如下,其中CLKVAL的最小值是0:VCLK(Hz) = HCLK/[(CLKVAL+1)*2] ()幀頻率是VSYNC信號(hào)的頻率,它與LCDCON1和LCDCON2/3/4寄存器的VSYNC、VDPD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL和CLKVAL都有關(guān)系。handle_scancode完成的功能是:首先將掃描碼轉(zhuǎn)換成鍵碼,接著根據(jù)shift, alt等擴(kuò)展鍵的按下情況將鍵碼轉(zhuǎn)換成目標(biāo)碼,一般情況下是ASCII碼,最后將該ASCII碼放到終端設(shè)備的緩沖區(qū)中,并且調(diào)度一個(gè)tasklet負(fù)責(zé)將其在顯示器上回顯出來(lái)。開發(fā)者只需為其編寫驅(qū)動(dòng)程序中的底層硬件處理函數(shù),就可以將該鍵盤驅(qū)動(dòng)起來(lái)。ZLG7289A內(nèi)部含有譯碼器,可直接接收BCD碼或16進(jìn)制碼,并同時(shí)具有2種譯碼方式,此外,還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。作為人機(jī)交互的紐帶,圖形用戶界面(GUI)的重要性越來(lái)越凸現(xiàn)出來(lái)。幀緩沖設(shè)備為標(biāo)準(zhǔn)字符設(shè)備,主設(shè)備號(hào)為29,次設(shè)備號(hào)則從0到31。 struct fb_var_screeninfo:記錄了幀緩沖設(shè)備和指定顯示模式的可修改信息。在Linux中可以用kmalloc()函數(shù)分配一段連續(xù)的空間。int (*fb_get_var)(struct fb_var_screeninfo *var, int con, struct fb_info *info)。讀/寫(read/write)/dev/fb:相當(dāng)于讀/寫屏幕緩沖區(qū)。對(duì)于上層來(lái)說(shuō),s3c2410_keypad_init()是一個(gè)統(tǒng)一的接口,對(duì)于不同體系結(jié)構(gòu)或同體系下的不同開發(fā)板,它們的HW_keypad_init()的實(shí)現(xiàn)代碼是不同的,它就是進(jìn)行鍵盤的硬件初始化功能。 轉(zhuǎn)化按鍵掃描碼 在完成鍵盤的初始化之后,就需要完成對(duì)鍵盤掃描碼的轉(zhuǎn)化。其中_lGUI_pFrameBuffer是用來(lái)將framebuffer映射到用戶空間,_lGUI_fInfo,_lGUI_vInfo分別用來(lái)存儲(chǔ)framebuffer的不可變信息和可變信息。使用mmap函數(shù)使用戶空間的一段內(nèi)存關(guān)聯(lián)到設(shè)備內(nèi)存(framebuffer)上。 } else *((PCOLORREF)pDest)=color。我們使用公式y(tǒng) = kx + b來(lái)作為繪圖的依據(jù),那么就需要分3種情況:水平直線,斜率為0;垂直直線,斜率為無(wú)窮大(或者說(shuō)k不存在);普通直線。在Ebegin,y處畫點(diǎn) if(!lprc) return false。 for(i=nTopRect+1。該位為1表示字符的筆畫經(jīng)過此位,對(duì)應(yīng)于此位的像素應(yīng)置為字符顏色。 點(diǎn)陣字符B ASCII碼字符B在點(diǎn)陣字庫(kù)中的位圖表示 定義ASCII碼字模數(shù)組一個(gè)ASC字符8位,首位為0,因此共128個(gè)字符,其中有32個(gè)控制字符,沒有必要在顯示屏顯示。 offset = *pChar 32。 for(y=0。 }} 窗口顯示設(shè)計(jì)電表采集終端的圖形界面采用單窗口顯示方式,既能方便地顯示電表采集的信息,也降低了難度。 _lGUI_iFrameHeight=。 _lGUI_pFrameBuffer =mmap (NULL, _lGUI_iBufferSize, PROT_READ | PROT_WRITE, MAP_SHARED, _lGUI_iFrameBuffer, 0)。keypad_fd = open(/dev/keypad,O_RDONLY)。 } SetRect(lpTopRect,1,1,291,21)。 } SetRect(lpMidRect1,1,20,291,100)。 } SetRect(lpInterRect1,1,100,291,120)。 UnInitFrameBuffer()。 free(lpMidRect1)。 if(!lpMidRect3){ printerror(alloc memory error!\n)。 } SetRect(lpMidRect3,1,220,291,300)。 free(lpMidRect1)。 key_t key。 if(shm_id == 1) { perror(shmget error)。} 程序邏輯主體顯示程序循環(huán)接受小鍵盤驅(qū)動(dòng),當(dāng)有按鍵事件發(fā)生,獲取鍵碼,并根據(jù)鍵碼執(zhí)行相應(yīng)的鍵盤處理程序。 case KEYPAD1:{ DrawText(meterno1,strlen(meterno1),lpMidRect1,DT_TOP|DT_LEFT,RGB_BLACK)。 break。 DrawTextInfo(5)。 } case KEYPADENTER:{ goto leave。 創(chuàng)新思想獨(dú)立設(shè)計(jì)一套適合電表采集終端特殊工業(yè)應(yīng)用的圖形界面,滿足了應(yīng)用的基本需求。設(shè)計(jì)的過程中,深入了解了一些圖形學(xué)方面和用戶界面的知識(shí),也接觸到開發(fā)圖形用戶界面的一些方法和理論。對(duì)于遇到的問題,xx老師也給予詳細(xì)的解答,同時(shí)鼓勵(lì)大家拓寬自己的思維方式,勇于創(chuàng)新。本次畢業(yè)設(shè)計(jì)得以順利完成,還要?dú)w功于周圍同學(xué)和朋友的無(wú)私幫助。致謝在本科畢業(yè)設(shè)計(jì)這段時(shí)間里,我十分感謝軟件學(xué)院對(duì)我們的重視,xx老師的悉心教導(dǎo),以及周圍的同學(xué)和朋友對(duì)我的幫助。由于學(xué)習(xí)時(shí)間不長(zhǎng),動(dòng)手實(shí)踐不多,因此能夠?qū)懗烧撐牡某晒埠苡邢蕖? DrawTextInfo(0)。 } case KEYPAD7:{ DrawText(meterno7,strlen(meterno7),lpMidRect1,DT_TOP|DT_LEFT,RGB_BLACK)。 DrawTextInfo(3)。 break。 //printf(key = %c\n,ret[1])。 } p_map = (meter*)shmat(shm_id,NULL,0)。 char* name = test1。 UnInitFrameBuffer()。 //bottom rect shows error info lpBottomRect = malloc(sizeof(RECT))。 free(lpMidRect2)。 UnInitFrameBuffer()。 } SetRect(lpMidRect2,1,120,291,200)。 DrawText(voltage,strlen(voltage),lpInterRect1,DT_VCENTER|DT_CENTER,RGB_RE
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1