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

正文內(nèi)容

linux下的單片機(jī)lcd驅(qū)動的設(shè)計(doc畢業(yè)設(shè)計論文)-預(yù)覽頁

2025-07-16 12:09 上一頁面

下一頁面
 

【正文】 的統(tǒng)稱。Linux得名于計算機(jī)業(yè)余愛好者Linus Torvalds。他通過USENET(就是新聞組)宣布這是一個免費(fèi)的系統(tǒng),主要在x86電腦上使用,希望大家一起來將它完善,并將源代碼放到了芬蘭的FTP站點(diǎn)上任人免費(fèi)下載。Linux在GNU的GPL公共許可權(quán)下免費(fèi)獲得。由于linux的開源性以及免費(fèi)性,很多廠家都選擇應(yīng)用linux開發(fā),以降低成本,在增強(qiáng)競爭力的同時也推進(jìn)了linux系統(tǒng)的發(fā)展。至于說Linux是基于Unix的,很大程度上也是因為這兩者的基本思想十分相近。根據(jù)2005年11月號的TOP500超級電腦列表,顯示世上最快速的兩組超級電腦都是使用Linux作為其操作系統(tǒng)。它能夠在PC計算機(jī)上實現(xiàn)全部的Unix特性,具有多任務(wù)、多用戶的能力??偟膩碚f,Linux由于有著諸多windows操作系統(tǒng)所缺乏的優(yōu)點(diǎn),能夠讓我們在嵌入式應(yīng)用中如魚得水。 下載文件使用ftpget [option] remotehost localfile remotefile 例: 設(shè) 置或顯示網(wǎng)絡(luò)接口 ifconfig [接口名稱] 參數(shù) 地址信息 文件 tar jxvf *.壓縮成 *. 文件tar cjxf [destfilename] [srcfilename]ls s特別在Unix下的軟件編譯,你就不能不自己寫makefile 了,會不會寫makefile,從一個側(cè)面說明了一個人是否具備完成大型工程的能力。:還可以是 一個標(biāo)簽。第五節(jié) 嵌入式系統(tǒng)的定義及特點(diǎn)在當(dāng)今中國嵌入式系統(tǒng)領(lǐng)域,對嵌入式系統(tǒng)的定義可以說是五花八門。嵌入式系統(tǒng)主要有以下幾個特點(diǎn):系統(tǒng)內(nèi)核小。系統(tǒng)精簡。多任務(wù)化。其中尤其是介紹的Linux命令和Makefile的編寫是一定會用到的知識。該屏的自帶中文字庫,對我們顯示文字很方便。 交叉編譯工具的安裝: 由于gcc,glibc,binutils等工具是獨(dú)立開發(fā)和維護(hù)的,所以他們之間的版本兼容性比較復(fù)雜,使用crosstool則可簡化三部分的版本匹配和構(gòu)造。 3. : ,就是結(jié)果存放在/work/tools/ 。PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/tools/第四節(jié) 配置和編譯uClinux運(yùn)行 uCLinux 之前要有程序來加載其內(nèi)核,bootloader 就是完成在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。我們這里選擇簡單的NandFlash的存儲方法,可以隨時更改保存。將uClinux ARMSYS z拷貝到/home/ 下,運(yùn)行解壓命令:tar xvzf 。終端將首先進(jìn)入內(nèi)核配置選單。我們自己編寫的應(yīng)用程序就可以放在用戶選項菜單中。第五節(jié) 本章小結(jié) 本章對開發(fā)所需的硬件器件和軟件平臺都作了一個簡單的介紹,并敘述了配置linux工具鏈和配置uClinux內(nèi)核的過程,為后面程序的設(shè)計與實現(xiàn)提供了良好的條件。由于片選信號CS2都是高有效,所以這里我們將這個CS2始終拉高,保證有效。在其過程中,我們先將程序在Linux編譯,然后又下載到arm板上,由arm板控制LCD進(jìn)行顯示,最后數(shù)據(jù)將在LCD上顯示成相應(yīng)的文字和圖片,具體的流程如下: 圖42第三節(jié) 程序的設(shè)計 由于是基于arm7的開發(fā),所以在整個程序中,我們必須先對arm7的端口進(jìn)行配置,將我們所選取的PG、PD端口配置成我們需要的GPIO端口。這些函數(shù)的層次結(jié)構(gòu)用圖表示如下:圖43在上圖中,我們能清楚的看到我們需要的各個函數(shù)之間的關(guān)系,只要將這些函數(shù)各個擊破,我們就能達(dá)到我們的將LCD顯示出來的目的。本章第一節(jié)主要是考慮到LCD的控制方式,指定出相應(yīng)的硬件連接圖,然后第二節(jié)、第三節(jié)主要是針對軟件層次結(jié)構(gòu)做出相應(yīng)的設(shè)計。下面我們就分析一下我們怎么實現(xiàn)我們的初始化函數(shù)。 //初始化PG的各位都是輸出狀態(tài) rPAPG = 0x00。0x01)==1 ) h_db0()。 else l_db1()。 if( (datamp。0x10)==16 ) h_db4()。 else l_db5()。 if( (datamp。 l_cs1()。 h_rst()。下面我們來看我們的LCD初始化函數(shù):void lcd_inital(){ LCD_CmdWrite(WLCR)。 LCD_CmdWrite(ADSR)。 LCD_CmdWrite(WCCR)。 LCD_CmdWrite(MAMR)。 LCD_CmdWrite(DWWR)。 LCD_CmdWrite(DWHR)。 LCD_CmdWrite(AWTR)。 LCD_CmdWrite(BGSG)。 LCD_CmdWrite(CURY)。 LCD_CmdWrite(EDCM)。 LCD_CmdWrite(ITCR)。 LCD_CmdWrite(FNCR)。}只有保證初始化正確,我們才能順利的進(jìn)行顯示函數(shù)的開發(fā),否則初始化沒有正確的話,后面的一切函數(shù)都將無法發(fā)揮預(yù)期的功能。深圳卓立恩電子有限公司的ZLG240128F型號的液晶屏遵循的是intel的8080總線時序要求,具體的時序圖如下:按照以上時序圖,我們的讀寫函數(shù)如下:unsigned char LCD_CmdRead(unsigned char Addr)該函數(shù)主要是實現(xiàn)對寄存器的數(shù)據(jù)的讀取,以此來觀察液晶的狀態(tài),其具體的實現(xiàn)如下:unsigned char LCD_CmdRead(unsigned char Addr){ unsigned char Data。 //讀信號無效l_rd()。 //將寫信號再置為無效rPCOND = 0x0000。 //寫信號無效l_wr()。 //讀信號無效return Data。 //寫命令端口 l_rd()。 //寫信號關(guān)閉 h_cs1()。 //寫數(shù)據(jù)端口 l_rd()。 //寫信號關(guān)閉 h_cs1()。如果用戶需要其它顯示的函數(shù)完全可以由以上這些函數(shù)組合而成。利用linux內(nèi)核的驅(qū)動方法本文將在第六章詳述。frame buffer 設(shè)備是圖形硬件的抽象,它代表了圖形硬件的偵緩沖區(qū),允許應(yīng)用程序通過指定的接口訪問圖形硬件。最后,驅(qū)動程序?qū)@存的起始地址和長度傳給LCD控制器的寄存器,LCD控制器會自動的將顯存中的數(shù)據(jù)顯示在LCD屏上。對于fbinfo結(jié)構(gòu),最主要的是它的fs_ops成員,需要針對具體設(shè)備實現(xiàn)fs_ops中的接口。在linux內(nèi)核中,F(xiàn)rame Buffer設(shè)備驅(qū)動的源碼主要在以下兩個文件中,它們處于frame buffer驅(qū)動體系結(jié)構(gòu)的中間層,它為上層的用戶程序提供系統(tǒng)調(diào)用,也為底層特定硬件驅(qū)動提供了接口:linux/include/、linux/drivers/video/。fb_info代表video card的當(dāng)前狀態(tài),所有的fb_info結(jié)構(gòu)都放在數(shù)組中。 int (*setup)(void)。static struct file_operations fb_ops ={ owner: THIS_MODULE, read: fb_read, write: fb_write, ioctl: fb_ioctl, mmap: fb_mmap, open: fb_open, release: fb_release}。底層驅(qū)動程序的工作基本上是填充 fb_info結(jié)構(gòu),然后注冊它。這塊系統(tǒng)內(nèi)存的起始地址和長度之后會被存放在fb_fix_screeninfo的smem_start和smem_len域中。fb_ops結(jié)構(gòu)中定義的方法為這些操作提供支持。而對應(yīng)于接口的實現(xiàn),我們可以參考下 linux/drivers/video目錄下的驅(qū)動程序。過程至此,一個簡單的LCD的驅(qū)動程序基本上就已經(jīng)完成。其次就是對arm開發(fā)板的陌生,由于是第一次用arm板,并且是由于這塊LCD之前是在c8051f0 單片機(jī)上開發(fā)的,因單片機(jī)出現(xiàn)毛病才轉(zhuǎn)到arm板開發(fā),所以在此過程中遇到了不小的困難。第八章 收獲和體會在這次畢業(yè)設(shè)計中,我收獲了很多。 但是,由于硬件知識的不足和缺乏對嵌入式知識的掌握,我的程序還停留于最低級的階段,希望在以后的工作和學(xué)習(xí)中加倍努力,將該程序加以完善。他不厭其煩的給我修改論文中的錯誤和不嚴(yán)謹(jǐn)之處。參考文獻(xiàn)[1] 杭州立宇泰電子有限公司著,ARMSYS44B0P 嵌入式系統(tǒng)開發(fā)板使用說明書。[3] 瑞佑科技著,RA8806雙圖層 文字/圖形LCD控制器規(guī)格書,廣東:瑞佑科技股份有限公司,2008。[11]宋寶華.Linux設(shè)備驅(qū)動開發(fā)詳解[M].北京:人民郵電出版社,2008 [12]Jonathan Corbet,Alessandro Rubini,Greg KroahHartman. Linux Device Drivers,Third Edition 【M].USA.O Reilly Media, Inc.2005 [13]Cirrus Logic EP9315 User S Guide【Z】.USA:Cirrus Logic,2004 [14]Cirrus Logic.Using the EP93xx S Raster Engine[z].USA:ir— rus Logic.2005 [15]Zheng Shaoheng.CU O57VA01Cw Specification【Z】.Taiwan, Chunghwa Picture Tubes Ltd,2007附錄“”ifndef __44B0X_H__define __44B0X_H__ifdef __cplusplusextern C {endifinclude define rPCOND (*(volatile unsigned *)0x1d2001c)define rPDATD (*(volatile unsigned *)0x1d20020)define rPUPD (*(volatile unsigned *)0x1d20024)define rPCONG (*(volatile unsigned *)0x1d20040)define rPDATG (*(volatile unsigned *)0x1d20044)define rPUPG (*(volatile unsigned *)0x1d20048)//define rs PG0define h_rs() PDATG || = (unsigned int)0x01define l_rs() PDATG amp。 = (unsigned int)0xfd //define rd PG2define h_rd() PDATG || = (unsigned int)0x04define l_rd() PDATG amp。 = (unsigned int)0xf7//define busy PG4define h_busy() PDATG || = (unsigned int)0x10define l_busy() PDATG amp。 = (unsigned int)0xdf//define rst PG6define h_rst() PDATG || = (unsigned int)0x40define l_rst() PDATG amp。 = (unsigned int)0xfe//define db1 PD1define h_db1() PDATD || = (unsigned int)0x02define l_db1() PDATD amp。 = (unsigned int)0xfb//define db3 PD3define h_db3() PDATD || = (unsigned int)0x08define l_db3() PDATD amp。 = (unsigned int)0xef//define db5 PD5define h_db5() PDATD || = (unsigned int)0x20define l_db5() PDATD amp。 = (unsigned int)0xbf//define db7 PD7define h_db7() PDATD || = (unsigned int)0x80define l_db7() PDATD amp。 rPCONG = 0x0000。ims。 for(k=0。unsigned char d,h,m,s。 else l_db0()。 if( (datamp。0x08)==1 ) h_db3()。 else l_db4()。 if( (datamp。0x80)==1 ) h_db7()。 h_rd()。 delay_nms(5)。h_wr()。h_rd()。h_rd(
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1