3150.《基于LCD模擬三角形運(yùn)動(dòng)設(shè)計(jì)》_第1頁
3150.《基于LCD模擬三角形運(yùn)動(dòng)設(shè)計(jì)》_第2頁
3150.《基于LCD模擬三角形運(yùn)動(dòng)設(shè)計(jì)》_第3頁
3150.《基于LCD模擬三角形運(yùn)動(dòng)設(shè)計(jì)》_第4頁
3150.《基于LCD模擬三角形運(yùn)動(dòng)設(shè)計(jì)》_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 基于lcd模擬三角形運(yùn)動(dòng)設(shè)計(jì) 第頁 共17頁 1 引 言通常我們常用的lcd顯示模塊,有兩種,一是帶有驅(qū)動(dòng)電路的lcd顯示模塊,一是不帶驅(qū)動(dòng)電路的lcd顯示屏。大部分arm處理器中都集成了lcd的控制器,所以,針對(duì)arm芯片,一般不使用帶驅(qū)動(dòng)電路的lcd顯示模塊。s3c44b0x微處理器是三星公司專為手持設(shè)備和一般應(yīng)用提供的高性價(jià)比和高性能的微控制器解決方案。它使用arm7tdmi核,工作在66mhz,集成了lcd控制器等外圍器件。它的lcd控制器具有通用性,能與大多數(shù)lcd顯示模塊接口。接口設(shè)計(jì)、驅(qū)動(dòng)程序開發(fā)都很簡(jiǎn)單,廣泛應(yīng)用于智能儀表、pda等的顯示部分。本實(shí)驗(yàn)實(shí)現(xiàn)的是lcd模擬三角形的

2、運(yùn)動(dòng),通過在main()函數(shù)中修改并加入相應(yīng)的實(shí)現(xiàn)代碼,繪圖api函數(shù)在glib.c文件中。arm7tdmi系統(tǒng)擴(kuò)充包括thumb協(xié)處理器、片上ice中斷調(diào)試支持和32位乘法器。s3c44b0x通過在arm7tdmi內(nèi)容基礎(chǔ)上擴(kuò)展一系列完整的通用外圍器件。其特點(diǎn)如下: 采用arm7tdmi內(nèi)核,i/o電壓3.3v,內(nèi)核電壓2.5v; 內(nèi)置鎖相環(huán)(pll),系統(tǒng)工作主頻66mhz; 4種工作模式(正常、慢速、閑置和停止),可以實(shí)現(xiàn)電源管理以降低系統(tǒng)功耗; 8kb的系統(tǒng)高速緩存(cache),極大地提高了系統(tǒng)的運(yùn)行速度; 支持8個(gè)memory bank,最大外部存儲(chǔ)空間達(dá)256mb,并支持sdra

3、m; 內(nèi)置彩色lcd控制器; 2路異步串口(uart); 71個(gè)通用i/o口,包括8個(gè)外部中斷源; 8路10位a/d轉(zhuǎn)換器; 實(shí)時(shí)時(shí)鐘(rtc)和看門狗電路(watchdog);1.1 課程設(shè)計(jì)目的1. 學(xué)習(xí)lcd與arm的lcd的控制器的接口原理;2. 掌握內(nèi)置lcd控制器驅(qū)動(dòng)編寫方法;3. 學(xué)習(xí)調(diào)用簡(jiǎn)單的gui繪圖。1.2 程序開發(fā)環(huán)境1. el-arm-820教學(xué)實(shí)驗(yàn)箱,pentiumii以上的pc機(jī),仿真器電纜。2. pc操作系統(tǒng)win98或win2000或winxp,arm ads1.2集成開發(fā)環(huán)境,h-jtag調(diào)試代理軟件。2 ads集成開發(fā)環(huán)境介紹ads全稱為arm develo

4、per suite,是arm公司推出的新一代arm集成開發(fā)工具?,F(xiàn)在ads的最新版本是1.2,它取代了早期的ads1.1和ads1.0。在ads工具誕生之前,一直使用的是arm sdt工具,目前arm sdt工具已經(jīng)慢慢被淘汰。ads除了可以安裝在windows nt4、windows 2000、windows 98和windows 95操作系統(tǒng)下,還支持windows xp和windows me操作系統(tǒng)。2.1 ads軟件組成ads由命令行開發(fā)工具、gui(graphics user interface,圖形用戶界面)開發(fā)環(huán)境(code warrior和axd)、實(shí)用程序和支持軟件組成。有了

5、這些部件,用戶就可以為arm系列的risc處理器編寫和調(diào)試自己的開發(fā)應(yīng)用程序了。下面將分別介紹這4個(gè)組成部分。1命令行開發(fā)工具命令行開發(fā)工具在實(shí)際應(yīng)用中相對(duì)比較廣泛,用它最大的好處就是可以將許多編譯命令寫在一個(gè)腳本文件中,然后只執(zhí)行該腳本文件就可以讓工具自動(dòng)完成所有編譯的工作。2gui開發(fā)環(huán)境ads gui開發(fā)環(huán)境包含code warrior和axd兩種,其中code warrior是集成開發(fā)工具,而axd是調(diào)試工具。3實(shí)用程序ads除了提供上述工具外,它還提供以下的實(shí)用工具來配合前面介紹的命令行開發(fā)工具的 使用。(1)flash downloader是用于把二進(jìn)制映像文件下載到arm開發(fā)板上

6、的flash存儲(chǔ)器的工具。(2)fromelf是arm映像文件轉(zhuǎn)換工具。該命令將elf格式的文件作為輸入文件,將該格式轉(zhuǎn)換為各種輸出格式的文件,包括plain binary(bin格式映像文件)、motorola 32-bit s-record format(motorola 32位s格式映像文件)、intel hex 32 format(intel 32位格式映像文件)和verilog-like hex format(verilog 十六進(jìn)制文件)。fromelf命令也能夠?yàn)檩斎胗诚裎募a(chǎn)生文本信息,例如代碼和數(shù)據(jù)長度。(3)armar,arm庫函數(shù)生成器將一系列elf格式的目標(biāo)文件以庫函數(shù)

7、的形式集合在一起,用戶可以把一個(gè)庫傳遞給一個(gè)連接器以代替幾個(gè)elf文件。4支持的軟件ads為用戶提供armulator軟件,使用戶可以在軟件仿真的環(huán)境下或者在基于arm的硬件環(huán)境調(diào)試用戶應(yīng)用程序。armulator是一個(gè)arm指令集仿真器,集成在arm的調(diào)試器axd中,它提供對(duì)arm處理器的指令集的仿真,為arm和thumb提供精確的模擬。用戶可以在硬件尚未做好的情況下,開發(fā)程序代碼。2.2 ads調(diào)試器調(diào)試器本身是一個(gè)軟件,用戶通過這個(gè)軟件使用debug agent可以對(duì)包含有調(diào)試信息的,正在運(yùn)行的可執(zhí)行代碼進(jìn)行比如變量的查看,斷點(diǎn)的控制等調(diào)試操作。ads中包含有3個(gè)調(diào)試器:axd(arm

8、extended debugger):arm擴(kuò)展調(diào)試器;armsd(arm symbolic debugger):arm符號(hào)調(diào)試器;與老版本兼容的windows或unix下的arm調(diào)試工具,adw/adu(application debugger windows/unix)。下面對(duì)在調(diào)試映像文件中所涉及到的一些術(shù)語做一個(gè)簡(jiǎn)單的介紹。debug target在軟件開發(fā)的最初階段,可能還沒有具體的硬件設(shè)備。如果要測(cè)試所開發(fā)的軟件是否達(dá)到了預(yù)期的效果,這可以由軟件仿真來完成。即使調(diào)試器和要測(cè)試的軟件運(yùn)行在同一臺(tái)pc上,也可以把目標(biāo)當(dāng)作一個(gè)獨(dú)立的硬件來看待。當(dāng)然,也可以搭建一個(gè)pcb板,這個(gè)板上可以包

9、含一個(gè)或多個(gè)處理器,在這個(gè)板上可以運(yùn)行和調(diào)試應(yīng)用軟件。只有當(dāng)通過硬件或者是軟件仿真所得到的結(jié)果達(dá)到了預(yù)期的效果,才算是完成了應(yīng)用程序的編寫工作。調(diào)試器能夠發(fā)送以下指令:1. 裝載映像文件到目標(biāo)內(nèi)存;2. 啟動(dòng)或停止程序的執(zhí)行;3. 顯示內(nèi)存,寄存器或變量的值;4. 允許用戶改變存儲(chǔ)的變量值。3 內(nèi)置lcd控制器介紹3.1 概述s3c44b0x內(nèi)置的lcd控制器的作用是將顯示緩存(在系統(tǒng)存儲(chǔ)器中)的lcd數(shù)據(jù)傳輸?shù)酵獠縧cd驅(qū)動(dòng)器,并產(chǎn)生必須的lcd控制信號(hào)。它支持灰度lcd和彩色lcd。在灰度lcd上,使用基于時(shí)間抖動(dòng)算法(time-basedditheringalgorithm)和frc(f

10、rameratecontrol)方法,可以支持單色、4級(jí)灰度和16級(jí)灰度模式的灰度lcd。在彩色lcd上,可以支持256種色彩。不同尺寸的lcd具有不同數(shù)量的垂直和水平象素、數(shù)據(jù)接口、數(shù)據(jù)寬度、接口時(shí)間和刷新率。lcd控制器可以進(jìn)行編程控制相應(yīng)的寄存器值,以適應(yīng)不同的lcd顯示板。3.2 lcd控制器邏輯框圖 圖3.1為lcd控制器的邏輯框圖。從框圖可以看出lcd控制器是用來實(shí)現(xiàn)傳輸顯示數(shù)據(jù)及產(chǎn)生必要的控制信號(hào),如vframe、vline、vclk和vm。除了控制信號(hào),還有顯示數(shù)據(jù)的數(shù)據(jù)端口vd7:0。圖3.1 為lcd控制器的邏輯框圖lcd控制器包括regbank、lcddma、vidprc

11、s和timegen。regbank有18個(gè)可編程寄存器,用于配置lcd控制器。lcddma為專用dma,可以自動(dòng)地將顯示數(shù)據(jù)從幀內(nèi)存?zhèn)魉偷絣cd驅(qū)動(dòng)器中。通過專用dma,可以實(shí)現(xiàn)在不需要cpu介入的情況下顯示數(shù)據(jù)。vidprcs從lcddma接收數(shù)據(jù),將相應(yīng)格式的數(shù)據(jù)通過timegen(包含可編程邏輯),以支持常見的lcd驅(qū)動(dòng)器所需要的不同接口時(shí)間和速率的要求。timegen部分產(chǎn)生vframe,vline,vclk和vm等信號(hào)。3.3 lcd控制器提供的外部接口信號(hào)vframe:lcd控制器和驅(qū)動(dòng)器之間的幀同步信號(hào)。通知lcd屏新的一幀顯示,lcd控制器在一個(gè)完整幀顯示后發(fā)出vframe信號(hào)

12、。vline:lcd控制器和驅(qū)動(dòng)器間同步脈沖信號(hào)。lcd驅(qū)動(dòng)器通過它將水平移位寄存器的內(nèi)容顯示到lcd屏上。lcd控制器在一整行數(shù)據(jù)全部傳輸?shù)絣cd驅(qū)動(dòng)器后發(fā)出vline信號(hào)。vclk:lcd控制器和驅(qū)動(dòng)器之間的象素時(shí)鐘信號(hào)。vm:lcd驅(qū)動(dòng)器所使用的交流信號(hào)。驅(qū)動(dòng)器用vm打開或關(guān)閉象素的行和列電壓極性。vd3:0:lcd象素?cái)?shù)據(jù)輸出端口。vd7:4:lcd象素?cái)?shù)據(jù)輸出端口。4 lcd控制器的寄存器lcd控制器通過18個(gè)可編程寄存器來配置lcd顯示模塊的尺寸、顯示模式、接口數(shù)據(jù)寬度等。4 .1 lcd控制寄存器一(lcdcon1)lcdcon1所在地址:0x01f00000;屬性:r/w;復(fù)位

13、值:0x00000000。lcdcon1中各個(gè)位的意義見表4.1:表4.1 lcdcon1中各個(gè)位的意義4.2 lcd控制寄存器二(lcdcon2)lcdcon2的地址:0x01f00004;屬性:r/w;復(fù)位值:0x00000000。lcdcon2中各個(gè)位的意義見表4.2:表4.2 lcdcon2中各個(gè)位的意義4.3 lcd控制寄存器三(lcdcon3)lcdcon3的地址:0x01f00040;屬性:r/w;復(fù)位值:0x00。lcdcon3中各個(gè)位的意義見表4.3:表4.3 lcdcon3中各個(gè)位的意義4.4 幀緩沖區(qū)開始地址一(lcdsaddr1)lcdsaddr1的地址:0x01f00

14、008;屬性:r/w;復(fù)位值:0x000000。lcdsaddr1中各個(gè)位的意義見表4.4:表4.4 lcdsaddr1中各個(gè)位的意義4.5 幀緩沖區(qū)開始地址二(lcdsaddr2)lcdsaddr2的地址:0x01f0000c;屬性:r/w; 復(fù)位值:0x000000。lcdsaddr2中各個(gè)位的意義見表4.5:表4.5 lcdsaddr2中各個(gè)位的意義用戶通過改變lcdbaseu和lcdbasel的值來滾動(dòng)屏幕,但在幀結(jié)束時(shí),不能改變lcdbaseu和lcdbasel的值,因?yàn)轭A(yù)取下一幀的數(shù)據(jù)優(yōu)先于改變幀,如果這時(shí)改變幀,預(yù)取的數(shù)據(jù)將無效而且顯示不正確。為了檢查linecnt,應(yīng)當(dāng)屏蔽中斷

15、,否則如果在讀linecnt后,任意中斷剛好執(zhí)行,因?yàn)閕sr的執(zhí)行,linecnt的值可能無效。 緩沖區(qū)開始地址三(lcdsaddr3)lcdsaddr3的地址:0x01f00010;屬性:r/w;復(fù)位值:0x000000。lcdsaddr3中各個(gè)位的意義見表6:注:pagewidth和offsize必須在envid=0時(shí)變化。5 內(nèi)置lcd控制器的應(yīng)用lcd控制器能與大多數(shù)lcd顯示模塊接口,例如dmf50081,kcs057qv1aj等。kcs057qv1aj是由kyocera公司生產(chǎn),具有320 240個(gè)象素點(diǎn)、帶cfl背光的stn(超扭曲向列)256色lcd顯示模塊。它不帶lcd控制器

16、,很容易與s3c44b0x內(nèi)置的lcd控制器接口。本節(jié)將詳述它與lcd控制器的硬件接口連線以及它的驅(qū)動(dòng)程序。lcd控制器與kcs057qv1aj接口設(shè)計(jì)kcs057qv1aj提供的外部接口信號(hào)線如下:frm:驅(qū)動(dòng)器掃描的同步信號(hào)線;load:數(shù)據(jù)鎖存信號(hào)線;cp:數(shù)據(jù)移位時(shí)鐘信號(hào)線;disp:顯示控制信號(hào)線;d7:0:8根顯示數(shù)據(jù)輸入線。在kcs057qv1aj與lcd控制器之間接線時(shí),kcs057qv1aj的frm、load、cp、d7:0分別和lcd控制器的vframe、vline、vclk、vd7:0相連。disp引腳與s3c44b0x的gpio的gpc15相連,通過gpc15來控制lc

17、d顯示模塊的打開和關(guān)閉。具體接線如圖5.1。圖5.1 lcd控制器與kcs057qv1aj接線圖kcs057qv1aj驅(qū)動(dòng)程序開發(fā) 驅(qū)動(dòng)程序包括初始化s3c44b0x端口d和端口c的函數(shù),初始化lcd控制器的函數(shù),打開和關(guān)閉lcd顯示模塊的函數(shù),在lcd顯示模塊上顯示條紋的函數(shù),所有的函數(shù)都有詳細(xì)的注釋。初始化端口d和端口c函數(shù)如下:void port_init(void)rpconc=0x5f55ffff;/gpc15為輸出端口,gpc4-gpc7分配給lcd數(shù)據(jù)線vd7-vd4;rpupc=0x0;/端口c所有的引腳上拉允許;rpdatc=0x3fff; /端口c所有的引腳初始化為高電平;

18、rpcond=0xaaaa;/端口d所有的引腳分配給lcd控制器;rpupd=0x0;/端口d所有的引腳上拉允許;rpdatd=0xff;/端口d所有的引腳初始化為高電平。初始化lcd控制器函數(shù)如下:void lcd_init()int i;u32 lcdbaseu,lcdbasel,lcdbank;lcddisplayopen(false);/關(guān)閉lcd;rlcdcon1=(0);/關(guān)閉視頻輸出;rlcdcon2=(239) (11910) (1522;/設(shè)置顯示緩沖區(qū)首地址在系統(tǒng)存儲(chǔ)器中的位置;lcdbaseu=0x0;/設(shè)置緩沖區(qū)的開始地址;lcdbasel=lcdbaseu+(160)

19、 240;rlcdsaddr1=(0x327) (lcdbank21) lcdbaseu; /設(shè)置顯示模塊為彩色模式等;rlcdsaddr2=(029) (021) lcdbasel;rlcdsaddr3=(320/2) (09);/不使用虛屏;rredlut=0xfca86420;/設(shè)置紅色查表寄存器,與特定的顯示要求有關(guān);rgreenlut=0xfca86420;/設(shè)置綠色查表寄存器,與特定的顯示要求有關(guān);rbluelut=0xfffffa50;/設(shè)置蘭查表寄存器,與特定的顯示要求有關(guān);rlcdcon1=lcdcon1_envid 01 02 03 (25)17 (0x38) (0x310

20、) (clkval12);/使能視頻輸出,8位單掃描方式,設(shè)置wdly,wlh,clkval;for(i=0;i80*240;i+)/顯示緩沖區(qū)清零。*(plcdbuffer16+i)=0x0;從圖2知,gpc15用來打開關(guān)閉lcd。打開和關(guān)閉lcd顯示模塊的函數(shù)如下:void lcddisplayopen(u8 isopen)if(isopen)rpdatc =0x8000;/打開lcdelserpdatc&=0x7fff;/關(guān)閉lcd在lcdbank寄存器中已經(jīng)定義了顯示緩沖區(qū)在系統(tǒng)存儲(chǔ)器的段首地址為0xc000000,要顯示字符、圖片只需將字符、圖片取模得到的數(shù)據(jù)送到該緩沖區(qū)就可以了。但

21、是要注意,彩色lcd是8位數(shù)據(jù)表示一個(gè)象素。對(duì)緩沖區(qū)首地址進(jìn)行如下定義:u32 plcdbuffer16=(u32*)0xc000000;下面舉一個(gè)在整個(gè)屏上顯示明暗相間的條紋的程序,顯示明暗條紋函數(shù)如下:void lcdstripe ()int i,lcddata;for(i=0;i(320*240)/4;i+) lcddata0=0x0ffff0000; *(plcdbuffer16+i)=lcddata;/向幀緩沖區(qū)送數(shù)據(jù),每次4個(gè)象素的數(shù)據(jù)。6 主要功能的設(shè)計(jì)與實(shí)現(xiàn)本實(shí)驗(yàn)主要是實(shí)現(xiàn)基于lcd模擬三角形的運(yùn)動(dòng),通過在main()函數(shù)中修改并加入相應(yīng)的實(shí)現(xiàn)代碼,繪圖api函數(shù)在glib.c

22、文件中??梢栽趌cd顯示屏上看到一個(gè)三角形在屏幕的進(jìn)行運(yùn)動(dòng),具體的實(shí)現(xiàn)代碼如下:;* 文件名稱 : main.c;* 文件功能 : 所有應(yīng)用程序的頭文件均加在此文件中;* 補(bǔ)充說明 : #include .incconfig.hextern gui_font gui_font8x16;extern gui_font chinese_font12;extern gui_font chinese_font16;- 函數(shù)名稱 : main(void)- 函數(shù)說明 : 系統(tǒng)的主程序入口- 輸入?yún)?shù) : 無- 輸出參數(shù) : 無void main(void) target_init(); gui_init

23、(); set_color(gui_green); fill_rect(0,0,319,239); delay(1000); set_color(gui_white); delay(1000); fill_rect(0,0,319,239); set_color(gui_black); delay(1000); fill_rect(0,0,319,239); delay(1000); set_color(gui_yellow); fill_rect(0,0,319,239); delay(1000); set_color(gui_blue); fill_rect(0,0,319,239); d

24、elay(1000); set_color(gui_red); draw_circle(100,100,50); delay(1000); draw_point (100, 200); /繪制點(diǎn)api delay(1000);draw_hline (100, 3, 319); /繪制水平線apidelay(1000);draw_vline (0, 150, 239); /繪制豎直線apidelay(1000);draw_line (0,0,319,239);delay(1000);draw_line (319,0,0,239);delay(1000); fill_circle (80, 180

25、, 40); delay(1000);fill_rect (280, 200, 300, 220); /填充區(qū)域api delay(1000); set_font (&gui_font8x16); /設(shè)定字體類型apiset_color(gui_white);set_bkcolor (gui_blue); /設(shè)定背景顏色apifill_rect(0,0,319,3);fill_rect(0,0,3,239);fill_rect(316,0,319,239);fill_rect(0,236,319,239); disp_string (this is a demo,130,70); set_fo

26、nt (&chinese_font12); disp_string (cn_start這是一個(gè)例程cn_end,130,90); set_font (&chinese_font16); disp_string (cn_start這是一個(gè)例程cn_end,130,110); while(1);結(jié)束語通過對(duì)嵌入式系統(tǒng)將近兩個(gè)星期的實(shí)踐學(xué)習(xí),我對(duì)嵌入式有了進(jìn)一步的了解。無論是從概念上還是內(nèi)涵上都達(dá)到了一個(gè)新的高度。通過學(xué)習(xí),我發(fā)現(xiàn)隨著信息技術(shù)的發(fā)展,數(shù)字化產(chǎn)品空前繁榮。嵌入式軟件已經(jīng)成為數(shù)字化產(chǎn)品設(shè)計(jì)創(chuàng)新和軟件增值的關(guān)鍵因素,是未來市場(chǎng)競(jìng)爭(zhēng)力的重要體現(xiàn)。由于數(shù)字化產(chǎn)品具備硬件平臺(tái)多樣性和應(yīng)用個(gè)性化的特點(diǎn),因此嵌入式軟件呈現(xiàn)出一種高度細(xì)分的市場(chǎng)格局,國外產(chǎn)品進(jìn)入也很難壟斷整個(gè)市場(chǎng),這為我國的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論