繪圖的API函數(shù)
一、 實(shí)驗(yàn)?zāi)康?BR>學(xué)習(xí)使用嵌入式系統(tǒng)的繪圖API 函數(shù)。理解繪圖設(shè)備上下文(DC)在多任務(wù)操作系統(tǒng)
中的作用。會(huì)使用繪圖設(shè)備上下文(DC)在屏幕上繪制一個(gè)圓角矩形和一個(gè)圓。了解繪制
動(dòng)畫(huà)防止閃爍的基本原理,可以實(shí)現(xiàn)無(wú)閃爍的動(dòng)畫(huà)。
二、 實(shí)驗(yàn)內(nèi)容
本次實(shí)驗(yàn)通過(guò)使用嵌入式系統(tǒng)的繪圖API 函數(shù),首先,在屏幕上繪制一個(gè)圓角矩形和
一個(gè)整圓。然后,再在屏幕上無(wú)閃爍的繪制一個(gè)移動(dòng)的正弦波。
三、 預(yù)備知識(shí)
1、用ARM SDT 2.5 集成開(kāi)發(fā)環(huán)境,編寫(xiě)和調(diào)試程序的基本過(guò)程。
2、基于操作系統(tǒng)的應(yīng)用程序的框架結(jié)構(gòu)。
3、會(huì)使用Source Insight 3 編輯C 語(yǔ)言源程序
四、 實(shí)驗(yàn)設(shè)備及工具(包括軟件調(diào)試工具)
硬件:ARM 嵌入式開(kāi)發(fā)板、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentumn100 以
上
軟件:PC 機(jī)操作系統(tǒng)win98、ARM SDT 2.51 集成開(kāi)發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、Source
Insight 3
五、 實(shí)驗(yàn)步驟
1、在ARM SDT 2.51 中,使用實(shí)驗(yàn)一中創(chuàng)建好的模板,新建一個(gè)項(xiàng)目work1。把操作
系統(tǒng)的所需要的頭文件(*.h)和庫(kù)文件(*.alf)加入工程中。
2、用Source Insight 3 創(chuàng)建一個(gè)工程,把work1 中的C 語(yǔ)言源文件文件加入。
3、編輯Main.c 文件,在Main_Task 任務(wù)中加入代碼。使用操作系統(tǒng)的繪圖API 函數(shù),
繪制出如圖所示的圖形。
提示:
⑴ 繪圖必須通過(guò)使用繪圖設(shè)備上下文(DC)來(lái)實(shí)現(xiàn)。繪圖設(shè)備上下文(DC)中
包括了與繪圖相關(guān)的信息,比如:畫(huà)筆的寬度、繪圖的原點(diǎn)等等。這樣,在多任務(wù)系統(tǒng)
中,不同的任務(wù)通過(guò)不同的繪圖設(shè)備上下文(DC)繪圖才不會(huì)互相影響。
⑵ 繪制整圓可以用Circle 函數(shù),繪制直線用Line 函數(shù),繪制圓弧用ArcTo 函數(shù)。
調(diào)試的過(guò)程中可以在每條的繪圖函數(shù)之后調(diào)用OSTimeDly()函數(shù),使系統(tǒng)更新顯示,輸
出到液晶屏上,具體的細(xì)節(jié)原因見(jiàn)步驟5 的提示。
⑶ 為方便繪圖,可使用SetDrawOrg 函數(shù)設(shè)置繪圖的原點(diǎn)。
⑷ 因?yàn)楸敬螌?shí)驗(yàn)不用系統(tǒng)的字符顯示,所以,可以去掉Main()函數(shù)中LoadFont()
函數(shù),以節(jié)省系統(tǒng)啟動(dòng)的時(shí)間。
4、用ARM SDT 2.5 編譯、下載并調(diào)試上述程序,檢查運(yùn)行結(jié)果
5、在屏幕上無(wú)閃爍的繪制一個(gè)移動(dòng)的正弦波。
提示:
⑴ 在操作系統(tǒng)中,液晶顯示屏的刷新是通過(guò)Lcd_Fresh_Task 任務(wù)完成的。繪圖
首先是在繪圖緩沖區(qū)中完成的,然后,系統(tǒng)自動(dòng)(也可以通過(guò)設(shè)置繪圖設(shè)備上下文屏,
不讓系統(tǒng)自動(dòng)刷新)的向Lcd_Fresh_Task 發(fā)送的更新消息。其流程圖如圖所示。
⑵ 因?yàn)槔L圖是在后臺(tái)進(jìn)行的,繪制完成之后,再更新到液晶屏上,所以,在繪圖
的時(shí)候不用擔(dān)心反覆的擦除屏幕會(huì)引起屏幕的閃爍,這樣,可以很方便的實(shí)現(xiàn)動(dòng)畫(huà)無(wú)閃
爍的顯示。
⑶ 繪制完一次圖形以后,必須要使用OSTimeDly()給出一定時(shí)間的延時(shí)(推薦用
200),同時(shí),使Main_Task 任務(wù)主動(dòng)讓出對(duì)CPU 的控制權(quán),使Lcd_Fresh_Task 任務(wù)可
以完成刷新。
⑷ 因?yàn)槔L圖需要使用sin()函數(shù),所以需要在main.c 中加入#include math.h>。
⑸ 為方便繪圖,可使用SetDrawOrg 函數(shù)設(shè)置繪圖的原點(diǎn)。
6、用ARM SDT 2.5 編譯、下載并調(diào)試上述程序,檢查運(yùn)行結(jié)果
7、生成發(fā)行版本的.bin 文件,通過(guò)USB 下載到嵌入式開(kāi)發(fā)板中,運(yùn)行并檢查輸出結(jié)。
評(píng)論