熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 應用方案 > 航空數字化儀表中動畫顯示技術的應用

航空數字化儀表中動畫顯示技術的應用

時間:2008-11-05 11:36:00來源:ronggang

導語:?針對實際的航空數字化儀表,給出了SVGA顯示模式下動畫顯示的實現過程,其中包括了直接寫屏技術、雙緩沖技術等,并提出了一種利用顯存自身實現雙緩沖動畫顯示的新方法
摘 要:針對實際的航空數字化儀表,給出了SVGA顯示模式下動畫顯示的實現過程,其中包括了直接寫屏技術、雙緩沖技術等,并提出了一種利用顯存自身實現雙緩沖動畫顯示的新方法。 關鍵詞:數字化儀表;SVGA;動畫;雙緩沖 一、 引言   目前飛機座艙顯示系統中使用的電子顯示儀表,基本上沿用傳統的指針顯示形式。而計算機成像的彩色動畫顯示格式,則突破了傳統的顯示形式,使飛行員能迅速掌握瞬息變化的動態信息,做到一目了然,直接提高飛行員的作戰能力。在座艙顯示系統中最常見的顯示方式就是指針指示。這就涉及到指針的動態顯示原理, C語言標準圖形函數通常強調更高的通用性,于是必然付出函數效率很低的代價,另外也不支持256色的顯示模式,不能滿足座艙顯示系統的要求,所以本人開發了一套SVGA256色顯示模式下的圖形函數庫,從顯示模式設置的的底層開始,到運用顯存自身實現雙緩沖顯示技術,大大提高了效率與顯示質量。 二、 常用動畫顯示技術介紹   圖形動畫技術有很多種,對C語言編程比較適合的主要包括:   1) 重畫技術:   畫了擦,擦了再畫,或者一張一張貼(覆蓋)上去。這是最常用的一種技術,操作比較簡單,又分為全屏重畫和局部重畫兩種,但動畫效果較差,存在閃爍現象。   2) 異或技術:   通過對寫入點和屏幕顏色進行邏輯異或運算,來實現擦除和重畫運動部分的動畫。具體的說就是如果在同一個位置用異或的方法畫兩個顏色相同的點,點會消失;而用不同顏色畫點,點會變成第三種顏色。這種方法由于也存在二次擦除的過程,所以也會有閃爍現象。   3) 調色板技術:   利用預先設置的動作圖片和顯示適配中彩色表(調色板寄存器)通過屏幕的顏色變化來實現動畫的技術。在SVGA顯示模式下,256種顏色分別對應256個調色板寄存器,而每種顏色又是由R、G、B(范圍都是0-255)三原色的值配出來的,每一個寄存器中的值可由程序進行設置,即可以通過程序改變這256個索引顏色的實際顏色。于是可以先將幾個索引顏色設置為黑色,然后使用這幾個索引顏色依次繪制出動畫元素每個動畫動作,這樣每次將當前位置動作所用的索引顏色值設為當前顏色,其它動作的索引顏色設為黑色,就可以實現動畫顯示。   這種動畫方法由于不對屏幕進行操作,所以畫面及其穩定、流暢,無閃爍現象。但由于動畫的所有動作都必須在動畫之前完成,而且要用不同的索引顏色,所以這種方法無法處理復雜的動畫元素。對于機載顯示系統來說,指針的實際位置很多,而且要根據實際情況而定,所以無法采用調色板技術實現指針的動畫顯示。   本人所開發的某機載顯示系統中,需要256色支持,所以采用了SVGA顯示模式,運用重畫技術與雙緩沖技術相結合來實現儀表中指針及其它圖像的動態顯示。重畫技術是編程人員最容易想到的一種動畫方法,它來自于人們對動畫顯示最基本的理解——將前一次顯示的圖形擦去再在當前位置畫上要顯示的圖形。但這種方法存在著一個致命的缺點,那就是圖形閃爍問題。閃爍現象主要是由于將擦寫的操作過程放在觀眾面前造成的,于是我們可以考慮將操作放到幕后,待操作完成后再將它快速映射到屏幕上去。事實上這將大大提高動畫顯示的速度和穩定性。在C語言標準圖形函數中也提供了setvisualpage()和 setactivepage()兩個函數來實現這一思想,但這兩個函數的操作是對整個屏幕進行映射,效率較低,而且在SVGA顯示模式下無法應用,所以必須從SVGA模式的設置、顯示原理的底層出發來實現最終的動畫顯示。 三、 SVGA顯示模式設置   SVGA顯示模式建立在VESA標準之上,可以提供多種高分辨率的256色圖形模式(表1)。VESA-BIOS功能也是通過中斷10h來實現的,所有功能的調用格式為:AH=4Fh,AL=VESA功能代碼,功能代碼為00h,返回VESA基本信息;功能代碼為01h,返回VESA特定模式信息;功能代碼為02h,設置顯示;功能代碼為03h,返回當前顯示模式;功能代碼為05h,控制VRAM存儲段。   表1 SVGA模式下分辨率表
  下面給出SVGA設置的基本操作函數:   1) 設置顯示模式   void InitMode(int mode) //mode為顯示方式號(表1中的中斷號)   {   if(mode >= 0x100)   {   asm mov ax, 4f02h //設置顯示方式功能號AL=02h   asm mov bx, mode //bx=顯示方式號   asm int 10h   }   else   {   asm mov ah,0;   asm mov al,mode;   asm int 10h;   }   }   2) 設置VRAM段   void SelectPage(int page)//page為VRAM存儲段號   {   asm pusha   asm mov ax, 4f05h //VRAM存儲段控制功能號AL=05h   asm mov bx, 0 //bx=0000h為設置VRAM段號,bx=0100h為檢測VRAM段號   asm mov dx, page //dx=要設置的VRAM存儲段段號(0~15)   asm int 10h   asm popa   } 四、 直接寫屏技術的實現   直接寫屏技術就是計算出屏幕上的點所對應的顯示內存位置,然后根據常規的坐標計算將圖形通過點的形式保存到對應位置的顯示內存中去。用直接寫屏技術,畫一滿屏的點,只要用0.05秒左右,這就是說,直接寫屏比用C語言的函數寫屏,起碼快出了二十左右。   本系統選擇的SVGA模式顯示分辨率為640×480,256色,屏幕上的一個象素點在顯存中占用一個字節。該模式采用了內存分段處理技術,即將整個顯存劃分為若干個段,使每段大小為64K,起始地址為A000:0000H,可以通過對段進行讀寫操作來實現對整個顯存的訪問。如果用(x,y)表示屏幕上的一個象素點,那么該象素點在顯存中的地址計算公式為:   VRAM段號=(y×640+x)/65536(/為整除);   段內偏移地址=(y×640+x)%65536(%為取余)   下面給出向顯存寫點的具體實現函數:   void PutPixel(int x, int y, unsigned char color)   {   long Location;   int Page = 0, off = 0;   Location = ((long)y<<9) + ((long)y<<7) + x; //Location=y*640+x   Page = Location >> 16; //Page=Location/65536   off = Location & 0xffff; //off=Location%65536   SelectPage(Page); //選擇VRAM段   *(video_buffer + off) = color; // video_buffer為顯存首地址   } 五、 利用顯存自身實現雙緩沖動畫顯示   通常緩沖技術的具體過程可以理解為:有兩個屏幕,一個是當前屏幕,一個是繪制屏幕。當前屏幕實際上就是我們可以直接看到的屏幕(顯存),而繪制屏幕就是我們開設的與顯存大小相同的內存區域。我們將一張畫面繪制到繪制屏幕(申請的內存)中去,等當前屏幕顯示了足夠的時間后再將其替換上去。所以,當前屏幕上從未進行過任何繪制操作,所有操作都在繪制屏幕上完成。這樣在當前屏幕上就只看到了完工的畫面,可以很好的消除由擦寫帶來的閃爍現象。   在系統的開發過程中,我們發現很難申請到與屏幕大小相同的內存空間,根據系統自身的特點,利用顯存自身來實現上述的雙緩沖思想。   本機載顯示系統采用的顯示器尺寸為320×240,而選用的SVGA模式分辨率為640×480,實際在該系統顯示屏幕上只顯示出了實際尺寸左上部320×240的區域,而其它的區域是顯示不出來的。這樣就給我們提供了一個現有的空間作為擦寫專用的繪制屏幕,而不必去另外申請內間。實際,采用右上部分320×240的區域作為繪制屏幕(觀眾是看不到的),在直接寫屏時只需將橫坐標增加320個象素單位,就可以將圖形繪制在幕后,待完成了擦除、重畫的操作后再將繪制屏幕上的圖像平移到顯示屏幕上,這樣就利用現有的顯存實現了雙緩沖的動畫顯示。 [align=center] 圖1 利用顯存自身實現雙緩沖動畫顯示示意圖[/align]   在將繪制屏幕的圖像copy到當前屏幕時,應十分注意同一行存在兩個段值時的移動方法。0-101行都在0號段內,103-203行都在1號段內,205-239行都在2號段內,這些行都可以直接調用匯編函數實現段內轉移。102、204兩行內都存在兩個段號,需借助臨時緩存實現平移。下面給出字傳送的實際函數:   void MoveWord(unsigned char far * dest, unsigned char far * sour, unsigned int size)   {   asm push ds   asm mov cx,size   asm les di,dest   asm lds si,sour   asm cld   asm rep movsw //傳送字   asm pop ds   }   綜上,可以得到該顯示系統動畫顯示的流程圖如下: [align=center] 圖2 動畫顯示流程圖[/align] 六、 結論   本人所開發的某機載顯示系統中,采用上述動畫顯示方法,很好的解決了儀表中指針閃爍的問題,大大提高了效率,并且在實際系統中對指針進行了消抖與平滑的處理,使儀表的顯示效果得到很大的改善。

標簽:

點贊

分享到:

上一篇:PLC+風光變頻器的小區恒壓供...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

相關資訊

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 化州市| 和硕县| 罗城| 龙里县| 安多县| 松江区| 马边| 雷州市| 连州市| 孙吴县| 德保县| 东宁县| 墨脱县| 布尔津县| 科技| 右玉县| 鄄城县| 封开县| 茶陵县| 麻城市| 广德县| 北川| 平昌县| 洛宁县| 华容县| 内黄县| 克拉玛依市| 全南县| 姚安县| 马龙县| 张家港市| 巫溪县| 八宿县| 拜城县| 新乐市| 珠海市| 古丈县| 堆龙德庆县| 六安市| 禄劝| 新晃|