

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘要</b></p><p> 隨著現(xiàn)代計算機技術的飛速發(fā)展和互聯(lián)網技術的廣泛應用,從PC時代過渡到了以個人數(shù)字處理、手持個人電腦和信息家電為代表的3C(計算機、通信、消費電子)一體的后PC時代。后PC時代里,嵌入式系統(tǒng)扮演了越來越重要的角色,被廣泛應用于信息電器、移動設備、網絡設備和工控仿真等領域。</p><p> 本文討論了基于
2、ARM微處理器和嵌入式系統(tǒng)的應用開發(fā),主要以波形采集、LCD顯示和嵌入式系統(tǒng)μC/OS-II為主要研究對象。描述了三星S3C44B0X微處理器及μC/OS-II實時操作系統(tǒng)的特點,搭建了一個以S3C44B0X處理器為核心的通用嵌入式系統(tǒng)平臺,并在此平臺基礎上實現(xiàn)了LCD顯示波形、GUI繪圖、多任務系統(tǒng)等典型應用。對ARM微處理器和嵌入式系統(tǒng)的進一步教學和研究開發(fā)有一定的指導價值。</p><p> 關鍵詞:AR
3、M微處理器 嵌入式系統(tǒng)μC/OS-II GUI繪圖 多任務系統(tǒng)</p><p> Based on ARM Applications Development—LCD Show Waveform</p><p><b> Abstract</b></p><p> With the development of the modern
4、computer technology and the widely application of the Internet technology, We transited from the PC time to the latter PC time which is taking individual digital processing,grasping the personal computing and the informa
5、tion electrical appliances as representative's 3C (computer, correspondence, expense electron) a body .In the latter PC time, the inserted type system which acts the more and more important role, is widely applied in
6、 the information electric app</p><p> This article discussed the application development based on the inserted type system and the ARM microprocessor, mainly by profile gathering, LCD demonstrated and the i
7、nserted type system μC/OS-II is the main research object. Described the Sumsang S3C44B0X microprocessor and The characteristic of the real-time operating system μC/OS-II. build a general inserted system platform take the
8、 S3C44B0X processor as the core, and has realized LCD model application, GUI cartography, multi- duties system a</p><p> Keywords:ARM microprocessor The inserted type system μC/OS-II GUI cartography Mul
9、ti- duties system</p><p><b> 目錄</b></p><p><b> 摘要I</b></p><p> AbstractII</p><p><b> 目錄III</b></p><p><b>
10、 1 前言1</b></p><p> 1.1 研究的目的、意義1 </p><p> 1.2 國內外研究概況1 </p><p> 1.3 研究的主要內容3 </p><p> 2 總體方案設計4 </p><p> 2.1 嵌入式系統(tǒng)的定義及特點4 </p><
11、p> 2.2 基于ARM核的微處理器S3C44B0X簡介4 </p><p> 2.3 硬件系統(tǒng)的設計5 </p><p> 3 硬件單元電路的設計實現(xiàn)6 </p><p> 3.1 CPU核心板的硬件資源6 </p><p> 3.1.1 電源模塊6 </p><p> 3.1.2 JTA
12、G單元6 </p><p> 3.2 存儲器單元7 </p><p> 3.2.1 線形flash存儲器單元7 </p><p> 3.2.2 NAND_FLASH海量存儲器單元7 </p><p> 3.2.3 同步動態(tài)存儲器單元。7 </p><p> 3.3 LCD單元8 </p>
13、;<p> 3.4 A/D轉換單元9 </p><p> 3.5 信號調理單元10 </p><p> 3.6 CPLD擴展單元11 </p><p> 3.7 4×4鍵盤12 </p><p> 4 嵌入式系統(tǒng)μC/OS—II在ARM上的移植14 </p><p> 4.
14、1 移植前的準備工作14 </p><p> 4.2 μC/OS—Ⅱ的移植14 </p><p> 4.3 移植的具體實現(xiàn)15 </p><p> 4.3.1 設置OS_ CPU.h中與處理器和編譯器相關的代碼15 </p><p> 4.3.2 用匯編語言編寫4 個與處理器相關的函數(shù)16 </p><p
15、> 4.3.3 用C語言編寫6個操作系統(tǒng)相關的函數(shù)(OS_ CPU_ C.C)18 </p><p> 4.3.4 測試移植是否成功20 </p><p> 5 嵌入式系統(tǒng)μC/OS-II的具體應用實現(xiàn)21 </p><p> 5.1 多任務系統(tǒng)21 </p><p> 5.1.1 多任務21 </p>
16、<p> 5.1.2 任務21 </p><p> 5.1.4 空閑任務(Idle Task)22 </p><p> 5.1.4 任務切換(Context Switch or Task Switch)22 </p><p> 5.1.5 任務調度(Task Scheduling)23 </p><p> 5.1
17、.6 任務優(yōu)先級及分配23 </p><p> 5.1.7 任務間的通訊(Intertask Communication)23 </p><p> 5.2 任務管理24 </p><p> 5.2.1 建立任務24 </p><p> 5.2.2 任務堆棧24 </p><p> 5.2.3 刪除任
18、務24 </p><p> 5.2.5 恢復任務24 </p><p> 5.3 時間管理25 </p><p> 5.3.1 任務延時函數(shù)25 </p><p> 5.3.2 任務延時函數(shù)25 </p><p> 6 圖形用戶界面GUI的具體實現(xiàn)26 </p><p>
19、 6.1 圖形設備接口26 </p><p> 6.2 內存管理26 </p><p> 6.3 窗體管理27 </p><p> 6.4 事件管理27 </p><p> 7 軟件流程與算法分析28 </p><p> 7.1 主程序流程圖28 </p><p> 7.
20、2 主要算法分析29 </p><p> 7.2.1 算法原理29 </p><p> 7.2.2 畫圓算法的具體實現(xiàn)30 </p><p><b> 8 總結31 </b></p><p><b> 參考文獻32 </b></p><p> 附錄 主電路
21、原理圖34 </p><p><b> 1 前言</b></p><p> 1.1 研究的目的、意義</p><p> 隨著現(xiàn)代計算機技術的飛速發(fā)展和互聯(lián)網技術的廣泛應用,從PC時代過渡到了以個人數(shù)字處理、手持個人電腦和信息家電為代表的3C(計算機、通信、消費電子)一體的后PC時代。嵌入式系統(tǒng)的快速發(fā)展使之成為當前微電子與計算機技術中的
22、一個重要分支。嵌入式系統(tǒng)的應用遍及航天、電信、網絡、信息家電、醫(yī)療、工業(yè)控制等各個領域。</p><p> 嵌入式系統(tǒng)由硬件和軟件兩大部分組成。從硬件方面來講,嵌入式系統(tǒng)的核心部件是各類嵌入式微處理器;對軟件而言,嵌入式系統(tǒng)的軟件一般由嵌入式操作系統(tǒng)和應用軟件組成,而嵌入式系統(tǒng)的功能軟件則集成于硬件系統(tǒng)中,系統(tǒng)的應用軟件與硬件一體化。就目前的嵌入式微處理器而言,主要有PowerPC、X86、MIPS、ARM/S
23、trong、ARM等系列,其中ARM處理器以其低成本、低功耗、高性能成為嵌入式系統(tǒng)設計的首選。一般地,一個嵌入式系統(tǒng)可能同時控制/監(jiān)視很多外設,要求實時響應,有很多任務要處理,各任務之間有很多消息傳遞,采用原有的程序設計不能滿足要求。因此,實時多任務操作系統(tǒng)(RTOS)就成為嵌入式系統(tǒng)的一個基本要求。在諸如pSOS、Linux、Windows CE、VxWorks、EPOC、μC/OS-II等眾多知名RTOS中,μC/OS-II以其源碼
24、公開、可移植性好、簡單易學等優(yōu)點可作為高校指導教學和初學者的首選。</p><p> 1.2 國內外研究概況</p><p> 國外實時操作系統(tǒng)已經從簡單走向成熟,有代表性的產品主要有VxWorks,ONX,Palm OS,Windows CE等,它占據(jù)了機頂盒、PDA等絕大部分市場。</p><p> 20世紀80年代,商業(yè)化的嵌入式操作系統(tǒng)開始得到蓬勃發(fā)展
25、。目前國內外已有幾十種商業(yè)操作系統(tǒng)可供選擇,如VxWorks、pSOS、Palm OS、Neculeus、WindowsCE 和“女媧Hopen”等。在中國,嵌入式操作系統(tǒng)可分為兩大類型:一類是自主版權的操作系統(tǒng),另一類是基于Linux 的操作系統(tǒng)。自主版權的操作系統(tǒng)方面,國內有“女媧Hopen”操作系統(tǒng)、桑夏2000 操作系統(tǒng)和DeltaOS 操作系統(tǒng)等?!芭畫zHopen”是凱思集團推出的產品,目前已進入產業(yè)化階段,它能支持所有主流的
26、嵌入式芯片。凱思與聯(lián)想、TCL、Motorola、Winbond、上海貝爾等國內外知名廠商合作開發(fā)出了多種產品:聯(lián)想“天璣810”、天璣e卡通、“天璣911”、TCL 集團家庭信息顯示器HiD、天億股票機頂盒、VOD 視頻點播機頂盒等。桑夏2000操作系統(tǒng)是深圳桑夏公司推出的產品,是一個面向嵌入式應用的實時操作系統(tǒng),具備文件系統(tǒng)和嵌入式數(shù)據(jù)庫引擎,提供了基本的圖形用戶接口,支持層次化、模塊化的軟件模型,可運行在“龍珠‘等三種系列的CPU
27、上,支持包括TCP/IP 協(xié)議在內的網絡通訊協(xié)議。DeltaOS</p><p> 近年來,嵌入式Linux 進展較快。在中國,以Linux為基礎的嵌入式操作系統(tǒng)比較活躍,其中,中軟Linux、紅旗Linux、東方Linux 是業(yè)界的代表。中軟總公司以數(shù)控平臺為背景, 推出了中軟Linux3.0。中軟嵌入式Linux是實時系統(tǒng),這套基于Linux的嵌入式系統(tǒng)不僅滿足了數(shù)控機床的需求,同時也可以應用于其他工業(yè)控制
28、領域。紅旗Linux 把工控和信息家電作為主要的發(fā)展領域。紅旗Linux 為用戶提供了Windows 風格的控件集、圖形中文環(huán)境和嵌入式數(shù)據(jù)庫的開發(fā)工具。中科紅旗公司開發(fā)出了針對工控領域的嵌入式Linux 系統(tǒng)。東方Linux 是凱思集團推出的產品。凱思通過與中芯微合作,已經推出了網絡計算機(NC)。采用東方Linux的NC 系列產品除具有傳統(tǒng)終端的功能之外,還具有本地計算能力,用戶可以通過NC 使用安裝在服務器上的應用程序,并可以使用
29、多種本地軟件。該產品工作方式基于集中與開放網絡服務的運算模式,兼容多種網絡協(xié)議標準,用戶可以在任意地點通過網絡連接設備,實時訪問服務器端的應用程序。該產品可應用于政府、國防、教育、商業(yè)、金融等領域。</p><p> 在國內的嵌入式產品的市場,嵌入式系統(tǒng)也逐漸地嶄露頭角。</p><p> 智能手機:2004 年中國手機產量為1. 7 億部,出口上升到1. 05 億部。據(jù)測算,智能手機
30、市場每年以300 %的速度快速增長,預計到2006 年,智能手機的保有量將達到2500 萬臺。2006 年之后,由于3G網絡商用的推動作用,智能手機仍將快速增長。</p><p> 數(shù)碼相機:2004 年中國數(shù)碼相機市場也開始呈現(xiàn)強勁的增長勢頭,并且需求開始集中到320 萬像素以上數(shù)碼相機。根據(jù)CCID 的市場調查報告,2004 年全年中國數(shù)碼相機市場銷量達到了264. 7 萬臺,銷售額達到了49. 52 億元
31、,同比增長95. 49 %和69. 0 %。</p><p> 數(shù)字電視:2004 年中國數(shù)字電視用戶達到了120 多萬戶。CCID 的預測數(shù)據(jù)顯示,2008 年中國數(shù)字有線電視用戶為3373 萬,普及率將達到24 %。近期來, IPTV 備受關注。IPTV 是一種集互聯(lián)網、多媒體、通訊等多種技術于一體,向用戶提供包括數(shù)字電視在內的多種交互式服務的新技術。來自IDC(中國) 的數(shù)字顯示,近年我國的IPTV ST
32、B 用戶年復合增長率將達到245 % ,到2008 年將達到855 萬。目前,國內已有十八個城市試點IPTV。</p><p> 汽車電子:隨著汽車電子化程度的不斷提高,汽車電子產值增長迅速。2004 年全球汽車電子總產值為1240 億美元,預計2005 年將達到1340 億美元。中國的汽車產值正以每年30 %的速度增長,2004 年全國汽車產量超過500 萬輛。據(jù)CCID - MRD 統(tǒng)計,汽車電子的增長率將
33、達到20 % ,到2005年,中國汽車電子市場的規(guī)模將突破2500 億元。聯(lián)想控股、康佳集團、創(chuàng)維、新科電子、TCL、長虹都開始或已經進入汽車電子領域??梢?隨著汽車產業(yè)的快速發(fā)展,汽車電子產業(yè)將成為支持制造業(yè)發(fā)展的大產業(yè)。</p><p> 1.3 研究的主要內容</p><p> 本文基于S3C44B0X微處理器和嵌入式實時操作系統(tǒng)建立的平臺實現(xiàn)如下應用設計:</p>
34、<p> 建立圖形化界面,實現(xiàn)嵌入式多任務系統(tǒng);</p><p> 采集模擬信號并通過LCD實時顯示波形,信號頻率范圍:10Hz~10kHz;</p><p> 在LCD實現(xiàn)GUI繪圖;</p><p><b> 2 總體方案設計</b></p><p> 2.1 嵌入式系統(tǒng)的定義及特點</p
35、><p> 嵌入式系統(tǒng)是嵌入到對象體系中的專用計算機系統(tǒng)。以嵌入式計算機為核心的嵌入式系統(tǒng)是繼IT網絡技術之后,又一個新的發(fā)展方向。IEEE(國際電氣和電子工程師協(xié)會)對嵌入式系統(tǒng)的定義為:嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機器和設備的裝置”(原文為Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or
36、 Plants)。這主要是從應用對象上加以定義,涵蓋了軟硬件及輔助機械設備。國內普遍認同的嵌入式系統(tǒng)定義為:以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統(tǒng)。</p><p> 嵌入式系統(tǒng)有如下顯著特點:(1)嵌入式系統(tǒng)是面向特定任務的,不同于一般通用PC計算平臺,是“專用”的計算機系統(tǒng);(2)嵌入式系統(tǒng)運行環(huán)境差異很大;(3)嵌入式系統(tǒng)比通
37、用PC系統(tǒng)資源少;(4)嵌入式系統(tǒng)功耗低、體積小、集成度高、成本低;(5)嵌入式系統(tǒng)具有系統(tǒng)測試和可靠性評估體系;(6)嵌入式系統(tǒng)具有較長的生命周期;(7)嵌入式系統(tǒng)具有固化在非易失性存儲器中的代碼;(8)嵌入式系統(tǒng)使用的操作系統(tǒng)一般是實時操作系統(tǒng)RTOS;(9)嵌入式系統(tǒng)需要專用開發(fā)工具和方法進行設計。</p><p> μC/OS—Ⅱ是一種源碼公開的實時嵌入式操作系統(tǒng)。它完全是占先式的實時內核,是基于優(yōu)先級
38、的,即總是讓就緒態(tài)中優(yōu)先級最高的任務先運行,因此實時性比非占先式的內核要好。它包含了實時內核、任務管理、時間管理、任務間通信同步(信號量、郵箱、消息隊列)和內存管理等功能;它的絕大部分代碼是用C語言編寫的,可移植性強。目前,μC/OS—II絕大多數(shù)可以在8位、16位、32位以至64位微處理器、微控制器、數(shù)字信號處理器DSP上運行。</p><p> 2.2 基于ARM核的微處理器S3C44B0X簡介</p
39、><p> S3C44B0X微處理器是三星公司專門為手持設備和一般應用提供的高性價比和高性能的微處理器解決方案,它使用ARM公司的16/32位ARM7TDMI RISC核,采用0.25μm CMOS工藝制造,最大工作頻率為66MHz。這款芯片內部集成了8KB Cache、內部SRAM、LCD控制器、帶自動握手的2通道UART、4通道DMA、系統(tǒng)管理器(片選邏輯,F(xiàn)P/EDO/SDRAM控制器)、帶PWM功能的5通道
40、定時器和一個內部定時器,I/O端口,RTC,8通道10位ADC,IIC總線接口,IIS總線接口,同步SIO接口和PLL倍頻器。這些都起到了降低系統(tǒng)總成本和減少外圍器件的作用。ARM7TDMI RISC處理器(66MHz),包括了Thumb代碼壓縮器、片上ICE斷點調試支持和32位的硬件乘法器。</p><p> 2.3 硬件系統(tǒng)的設計</p><p> 整體系統(tǒng)的硬件框圖如圖2-1所示
41、,系統(tǒng)主要包括以下幾個模塊:</p><p><b> 圖2-1 系統(tǒng)結構</b></p><p> Fig.2-1 Configuration of the system</p><p> 整個硬件系統(tǒng)主要分為CPU單元、存儲器單元、LCD單元、A/D轉換單元、信號調理單元、CPLD擴展單元、鍵盤等七個單元。</p>&l
42、t;p> 3 硬件單元電路的設計實現(xiàn)</p><p> 3.1 CPU核心板的硬件資源</p><p> 核心CPU板上主要包括以下單元和芯片,32位ARM7TDMI的處理器,即三星的S3C44B0X芯片,一個UART接口,完成串口通信,最高波特率為115200bps,一個RTC實時時鐘,一個5V轉3.3V和2.5V的電源管理模塊,一個20針的JTAG調試接口。</p&g
43、t;<p> 3.1.1 電源模塊</p><p> 在S3C44B0X CPU板上由于其內核采用2.5V,I/O接口采用采用3.3V供電,因此需要將通用的5V轉換成2.5V和3.3V。下圖為使用LM117電源轉換芯片把5V轉換成3.3V和2.5V的轉換電路。</p><p> 圖3-1 電源轉換電路</p><p> Fig.3-1 Powe
44、r conversion circuits</p><p> 3.1.2 JTAG單元</p><p> JTAG(Joint Test Action Group,聯(lián)合測試行動小組)是一種國際標準測試協(xié)議,主要用于芯片內部測試及對系統(tǒng)進行仿真、調試,JTAG技術是一種嵌入式調試技術,它在芯片內部封裝了專門的測試電路TAP(Test Access Port,測試訪問口),通過專用的JTA
45、G測試工具對內部節(jié)點進行測試。目前大多數(shù)比較復雜的器件都支持JTAG協(xié)議,如ARM、DSP、FPGA器件等。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為測試模式選擇、測試時鐘、測試數(shù)據(jù)輸入和測試數(shù)據(jù)輸出。</p><p> 表3-1 JTAG接口定義</p><p> Tab3-1 The JTAG of Interface definition</p>
46、<p><b> 3.2 存儲器單元</b></p><p> 存儲器單元主要由三部分組成:線形flash存儲器單元、NAND_FLASH海量存儲器單元和同步動態(tài)存儲器單元。</p><p> 3.2.1 線形flash存儲器單元</p><p> 該存儲器單元選用2MB字節(jié)的SST39VF160,16位數(shù)據(jù)總線,片連接N
47、GCS0,CPU分配給它的地址空間為0x00000000—0x001fffff,也就是S3C44B0CPU的bank0區(qū)。啟動代碼部分則放在從0x00000000開始的地址空間內。程序代碼可以在里面執(zhí)行。</p><p> 3.2.2 NAND_FLASH海量存儲器單元</p><p> 該存儲單元選用16MB芯片K9F2808。8位數(shù)據(jù)總線傳輸,GPC9接其片選信號,CPU分配給它的
48、地址空間為0x04000000—0x005fffff,也就是S3C44B0CPU的bank2區(qū)。GPE0接NAND_FLASH的狀態(tài)監(jiān)測腳,GPC14接ALE地址鎖存器使能,GPC15接CLE命令鎖存使能。NECS2也接入該單元。</p><p> 3.2.3 同步動態(tài)存儲器單元。</p><p> 該存儲單元選用兩片8MB字節(jié)的HY57V641620,16位數(shù)據(jù)總線。片選NSCS0和
49、NSCS1分別接U10和U11兩個單元,CPU分配給U10單元的地址空間為0x0C000000—0x0C7fffff,也就是S3C44B0CPU的bank6區(qū)。CPU分配給U11單元的地址空間為0x0E000000—0x0E7fffff,也就是S3C44B0CPU的bank7區(qū)。</p><p><b> 3.3 LCD單元</b></p><p> LCD液晶屏
50、選用的是5.7寸,320×240像素,256色的彩屏,其電源范圍寬(2.7V to 5.5V),低功耗可滿足產品的省電要求。由于S3C44B0X上的LCD控制器可以支持這種類型的LCD顯示屏,所以可以大大節(jié)省外圍電路,直接通過VFRAME、VLINE、VCLK、VM、VD等信號線與LCD相接進行視頻數(shù)據(jù)的傳輸和產生必要的控制信號。硬件結構圖如下:</p><p> 圖3-2 LCD硬件結構圖<
51、;/p><p> Fig.3-2 The Hardware chart of LCD</p><p> 關于S3C44B0X的LCD控制器的幾點說明:</p><p> 1、S3C44B0X的外部接口信號VFRAME是LCD控制器和LCD驅動器之間的幀同步信號端;VLINE是控制LCD控制器和LCD驅動器之間的行同步信號端;VCLK是LCD控制器和LCD驅動器之間
52、的像素時鐘信號端;VM是LCD驅動器所使用的交流信號;VD[7:0]是LCD像素數(shù)據(jù)輸入端口。</p><p> 2、LCDCON1/2控制寄存器主要配置VFRAME、VCLK、VLINE和VM控制信號,LCDCON3控制LCD刷新模式。</p><p> 3、LCDADDR1/2/3為幀緩沖區(qū)起始地址寄存器,主要是用來選擇黑白、灰度、彩色模式,指定視頻緩沖區(qū)在系統(tǒng)存儲器內的Bank地
53、址和指示幀緩沖區(qū)或在掃描LCD時的上幀緩沖區(qū)的開始地址。</p><p> 4、紅綠藍查找表寄存器分別為REDVAL、GREENVAL、BLUEVAL,分別可以定義8種紅色,8種綠色和4種藍色;</p><p> 5、除此之外,不同紅色的差異,是通過時間抖動的算法及幀率控制的方法實現(xiàn)的。因此在LCD初始化的程序中還要對抖動模式控制寄存器進行設置。</p><p>
54、; 3.4 A/D轉換單元</p><p> A/D轉換單元選用芯片AD7822,單極性輸入,采樣分辨率8BIT,并行輸出;內涵取樣保持電路,以及可選擇使用內部或外部參考電壓源,具有轉換后自動Power-Down的模式,電流消耗可降低至5μA以下。轉換時間最大為420ns, SNR可達48dB,INL及DNL都在±0.75 LSB以內。參考電壓源 + 2.5V,偏置電壓輸入引腳Vmid = + 2.
55、5V。</p><p> AD7822的控制時序圖如下圖3-3所示:</p><p> 圖3-3 AD7822控制時序圖</p><p> Fig.3-3 The control time series chart of AD7822</p><p> AD7822與ARM連接的電路原理圖如下圖3-4所示</p><
56、;p> 圖3-4 AD7822與ARM連接的電路原理圖</p><p> Fig.3-4 The circuit theory of ARM links with AD7822</p><p> 3.5 信號調理單元</p><p> 信號調理單元主要是由LF356組成的二級運算放大電路,其主要作用是使信號符合A/D輸入的要求,模擬輸入信號經過運放處理
57、后輸入到AD7822,輸入電壓范圍-12V~+12V。電路原理圖如下圖3-5所示:</p><p> 圖3-5 信號調理單元電路原理圖</p><p> Fig.3-5 The circuit theory of the signal conditioning modules</p><p> 3.6 CPLD擴展單元</p><p>
58、 由于實驗箱上的資源眾多,幾乎每一個設備資源都要使用片選信號或中斷信號或一些串口的信號,以及一些寄存器的地址等等,所以實驗箱通過加入了一片CPLD芯片,用來完成各資源所需的地址譯碼,片選信號,以及一些高低電平的模擬。</p><p> 本設計主要在應用鍵盤電路上應用到CPLD擴展單元,用來控制HD7279A。CPLD單元使用S3C44B0X的片選NGCS4,地址是0x08000000—0x0a000000;我
59、們通過給CPLD地址里寫入相應的數(shù)據(jù)以產生相應的信號。例如:</p><p> #define clrcs1 (*(volatile unsigned *)0x08200004) = 0x01;</p><p> #define setcs1 (*(volatile unsigned *)0x08200004) = 0x02;</p>
60、<p> 利用宏定義來代替置高、置低;給相應得地址里寫1,表示該CPLD的相應引腳輸出低電平,給相應得地址里寫2,表示該CPLD的相應引腳輸出高電平。有的地址需要寫入8位數(shù)據(jù)。</p><p> 在這里設置標號s_clr來實現(xiàn)HD7279向CPLD發(fā)數(shù)據(jù),其地址為0x08800000,實現(xiàn)方法是在地址里寫0x01;設置標號s_set來實現(xiàn)CPLD向HD7279發(fā)數(shù)據(jù),其地址為0x08800000,實
61、現(xiàn)方法是在地址里寫0x02。</p><p> 3.7 4×4鍵盤 </p><p> 鍵盤接口是由芯片HD7279A控制的,HD7279A是一片具有串行接口的,可同時驅動8位共陰式數(shù)碼管或(64只獨立LED)的智能顯示驅動芯片,該芯片同時還可以連接64鍵的鍵盤矩陣,單片即可完成LED顯示,鍵盤接口的全部功能。HD7279A內含有譯碼器,可直接接受BCD碼或16進制碼,并同時
62、具有兩種譯碼方式。此外,還具有多種控制指令如消隱、閃爍、左移、右移、段尋址等,具有片選信號可方便地實現(xiàn)多于8位的顯示或多于64鍵的鍵盤接口。</p><p> 鍵盤的連接示意圖如下圖3-6所示</p><p> 圖3-6 鍵盤接口連接圖</p><p> Fig.3-6 Keyboard interface Figure</p><p>
63、; 讀鍵盤數(shù)據(jù)指令15H從HD7279A讀出當前的按鍵代碼。與其他代碼不同,此命令的前一個字節(jié)00010101B為微控制器傳送給HD7279A的指令,而后一個字節(jié)d0-d7則為HD7279A返回的按鍵代碼,其范圍是0-3FH(0xFF)。此指令的前半段,HD7279A的DATA引腳處于輸入狀態(tài),以接受來自微處理器的指令;在指令的后半段,DATA引腳從輸入狀態(tài)轉為輸出狀態(tài),輸出鍵盤代碼的值。</p><p>
64、串行接口在讀鍵盤指令的時序圖如下圖3-7所示:</p><p> 圖3-7 HD7279A讀鍵盤指令時序圖</p><p> Fig.3-7 The reading keyboard commands time series chart of HD7279</p><p> 4 嵌入式系統(tǒng)μC/OS—Ⅱ在ARM上的移植</p><p>
65、 4.1 移植前的準備工作</p><p> S3C44B0X的0x00 ~0x1c 地址是ARM7TDMI的7種異常中斷的入口, 上電復位的時候PC指針是指向地址0x00處, 通常在這里放置一條跳轉指令, 讓PC指向復位初始化子程序。它首先完成目標板上的硬件初始化, 一般包括: CPU 時鐘、SDRAM存儲器、堆棧、中斷等。</p><p> 以下介紹初始化程序的具體編寫。<
66、/p><p> 目標板上電, 首先要禁止看門狗、禁止所有中斷、設置時鐘控制寄存器、設置鎖相環(huán)倍頻、設置存儲器控制器、堆棧、中斷處理和數(shù)據(jù)段初始化等, 具體程序如下所示:</p><p> ResetHandler;</p><p><b> 禁止看門狗;</b></p><p><b> 禁止所有中斷;&l
67、t;/b></p><p> 設置時鐘控制寄存器;</p><p><b> 設置鎖相環(huán)倍頻;</b></p><p> 設置存儲器控制寄存器;</p><p><b> 堆棧初始化;</b></p><p><b> 設置中斷處理;</b&g
68、t;</p><p> 初始化完畢就從匯編進入C語言代碼空間,在這里, 繼續(xù)完成I/O端口設置、串口甚至網口等的初始化, 并定義一個自動裝載定時器中斷(通常選擇在毫秒級) , 在它的中斷處理程序里面調用μC /OS-Ⅱ的OSTimeTick函數(shù)。這樣它的時鐘節(jié)拍就成為了系統(tǒng)的“脈搏”, 在每一個定時中斷到來的時候, 完成任務切換。</p><p> 4.2 μC/OS—Ⅱ的移植<
69、/p><p> μC/OS-Ⅱ的大部分源代碼是用C語言寫成的, 仍需要C語言和匯編語言完成一些與處理器相關的代碼。</p><p> μC/OS-Ⅱ的結構以及它與硬件的關系如圖4-1所示。</p><p> 圖4-1 μC/OS-Ⅱ的結構與硬件的關系</p><p> Fig.4-1 The structure and the relat
70、ionship between hardware of μC/OS-Ⅱ</p><p> 移植工作包括以下幾個內容:</p><p> 1、用#define設置一些常量的值OS_CPU.h</p><p> 2、聲明10個數(shù)據(jù)類型(OS_CPU.H)</p><p> 3、用#define聲明三個宏(OS_CPU.H)</p&g
71、t;<p> 4、用C語言編寫六個簡單的函數(shù)(OS_CPU_C.H)</p><p> 5、編寫四個匯編語言函數(shù)(OS_CPU_A.ASM)</p><p> 4.3 移植的具體實現(xiàn)</p><p> 4.3.1 設置OS_ CPU.h中與處理器和編譯器相關的代碼</p><p> ?。?) 定義與編譯器相關的數(shù)據(jù)類型&
72、lt;/p><p> 不同的處理器有不同的字長, 所以μC/OS-Ⅱ的移植包括了一系列的數(shù)據(jù)類型定義以確保其可移植性。μC/OS-Ⅱ代碼從不采用C的short, int和long等數(shù)據(jù)類型, 因為它們是與編譯器相關的,不可移植。</p><p> 用戶必須將任務堆棧的數(shù)據(jù)類型告訴給μC/OS-Ⅱ。這個過程是通過聲明OS_ STK為正確的C數(shù)據(jù)類型來完成的。S3C44B0Ⅹ的堆棧成員是16位
73、, 所以將OS_ STK聲明為無符號整形數(shù)。所有的任務堆棧都必須用OS_ STK聲明數(shù)據(jù)類型。</p><p> 同時要添加CPU 狀態(tài)寄存器數(shù)據(jù)寬度的定義為32位。</p><p> ?。?)定義OS_ ENTER_ CRITICAL ( ) 和OS_ EXIT_ CRITICAL ( )</p><p> μC/OS-II需要先禁止中斷再訪問代碼的臨界區(qū),
74、并且在訪問完畢后重新允許中斷。μC/OS-Ⅱ能夠保護臨界區(qū)代碼免受多任務或中斷服務例程(ISR)的破壞。S3C44B0X是通過兩個函數(shù)(OS_CPU_A.S) 實現(xiàn)開關中斷的。</p><p> ?。?)OS_STK_GROWTH </p><p> 堆棧結構有兩種, 一種是至上而下的堆棧, 一種是至下而上的。μC/OS-II被設計成兩種情況都可以處理。只要在結構常量OS_ STK_ G
75、ROWTH中指定堆棧的增長方式就可以了。</p><p> 置OS_ STK_ GROWTH為0表示堆棧從下往上增長。</p><p> 置OS_ STK_ GROWTH為1表示堆棧從上往下增長。</p><p> 我們這里定義堆棧是從上往下增長的。</p><p> 4.3.2 用匯編語言編寫4 個與處理器相關的函數(shù)</p&g
76、t;<p> ?。?)OSStartHighRdy ( ) 函數(shù)</p><p> 由OSStart函數(shù)調用, 程序結構如下:</p><p> BL OSTaskSwHook;</p><p> 調用用戶自定義的任務切換鉤子函數(shù)</p><p> OSRunning = TRUE;</p><p&g
77、t; 表明多任務環(huán)境已經建立</p><p> R4 = addr_ OSTCBHighRdy</p><p> 取得優(yōu)先級最高任務的任務控制塊的地址</p><p> SP = [R4 ]: OSTCBHighRdy -> OSTCBStkPtr</p><p> 將優(yōu)先級最高的任務的堆棧指針保存到SP</p>
78、<p> SP -> SPSR, CPSR, R0 - R12, LR, PC</p><p> 從新任務堆棧中恢復出所有處理器的寄存器,執(zhí)行中斷返回指令。</p><p> (2)OS_ TASK_ SW ( ) 函數(shù)</p><p> 由OS_ TASK_ SW 宏調用, 該宏被OSSched任務間的切換函數(shù)調用, 程序結構如下:<
79、;/p><p> LR ( PC) , LR, R0 - R12, CPSR, SPSR - >{SP}</p><p> 保存當前的處理器寄存器到堆棧中</p><p> OSTCBCur -> OSTCBStkPtr = SP</p><p> 保存當前任務的堆棧指針到當前任務TCB的0偏址內存</p>&l
80、t;p> BL OSTaskSwHook</p><p> 調用任務切換的功能擴展的函數(shù)</p><p> OSTCBCur = OSTCBHighRdy</p><p> OSPrioCur = OSPrioHighRdy</p><p> SP = OSPTCBCur -> OSTCBStkPtr</p>
81、<p> SP指向當前新任務的堆棧指針</p><p> SP -> SPSR, CPSR, R0 - R12, LR, PC</p><p> 從新任務堆棧中恢復出所有處理器的寄存器,執(zhí)行中斷返回指令。</p><p> ?。?)OSTick ISR ( ) 時鐘節(jié)拍中斷處理函數(shù)</p><p> LR ( PC
82、) , LR, R0 - R12, CPSR, SPSR -> {SP}</p><p> 保存當前的處理器寄存器到堆棧中</p><p> BL OSIntEnter ( )</p><p> BL Timer0 interrup t ( )</p><p> BL OSIntExit ( )</p><p
83、> SP - > SPSR, CPSR, R0 - R12, LR, PC</p><p> 從新任務堆棧中恢復出所有處理器的寄存器,執(zhí)行中斷返回指令。</p><p> ?。?)OSIntCtxSw ( ) 中斷級任務切換函數(shù)</p><p> 由OSIntExit函數(shù)調用, OSIntExit函數(shù)由OSTick ISR調用, 程序結構如下:&l
84、t;/p><p> BL OSTaskSwHook</p><p> OSTCBCur = OSTCBHighRdy</p><p> OSPrioCur = OSPrioHighRdy</p><p> SP = OSPTCBCur - >OSTCBStkPtr</p><p> SP -> SPS
85、R, CPSR, R0 - R12, LR, PC</p><p> 從新任務堆棧中恢復出所有處理器的寄存器,執(zhí)行中斷返回指令。</p><p> 4.3.3 用C語言編寫6個操作系統(tǒng)相關的函數(shù)(OS_ CPU_ C.C)</p><p> ?。?)OSTaskStk Init ( )</p><p> OSTaskCreate ( )
86、 和OSTaskCreateExt ( ) 通過調用OSTaskStk Init ( ) 來初始化任務的堆棧結構。</p><p> 在用戶建立任務的時候, 用戶傳遞任務的地址, pdata指針, 任務的堆棧棧頂和任務的優(yōu)先級給OSTaskCreate ( ) 和OSTaskCreateExt ( ) 。一旦用戶初始化了堆棧, OSTaskStk Init ( ) 就需要返回堆棧指針所指的地址。OSTaskCr
87、eate ( ) 和OSTaskCreateExt ( ) 會獲得該地址并將它保存到任務控制塊(OS_TCB) 中。</p><p> OS_STK* OSTaskStk Init(void(*task)(void*pd),void *pdata,OS_STK *ptos,INT16U opt)</p><p> { unsigned int *stk;</p><
88、p> stk = ( unsigned int * ) ptos; /* 裝載堆棧指針 */</p><p> opt ++ ; /* 為新任務建立堆棧 */</p><p> * - - stk = ( unsigned int ) task; /* pc */</p><p> * - - stk = ( unsigned int ) task
89、; /* lr */</p><p> * - - stk = 12; /* r12 */</p><p> ??save ARM’s R0 - R12 into stk</p><p> * - - stk = 1; /* r1 */</p><p> * - - stk = ( unsigned int ) pdata; /* r
90、0 */</p><p> * - - stk = ( SUPMODE);</p><p> * - - stk = ( SUPMODE);</p><p> return ( (OS_STK *) stk);}</p><p> ?。?)OSTaskCreateHook ( )</p><p> OSTask
91、Create ( ) 和OSTaskCreateExt ( ) 創(chuàng)建任務的時就調用OSTaskCreateHook ( )。該函數(shù)允許用戶擴展μC/OS-II功能。當μC/OS-II設置完內部結構, 在調用任務調度程序之前調用OSTaskCreateHook ( ) 。調用該函數(shù)時候是禁止中斷,用戶應盡量減少函數(shù)執(zhí)行時間。</p><p> 當OSTaskCreateHook ( ) 被調用的時候, 它會收到指
92、向已建立任務的OS_ TCB的指針, 它能訪問所有的結構成員。</p><p> (3)OSTaskDelHook ( )</p><p> 任務刪除時會調用OSTaskDelHook ( ) 它在任務從μC/OS-II的內部任務鏈表中刪除前調用。當調用OSTaskDelHook ( ) 時, 它會收到指向正被刪除任務的OS_ TCB的指針, 訪問所有的結構成員。OSTaskDelHo
93、ok ( ) 可以來檢驗TCB 擴展是否被建立(一個非空指針) 并進行一些清除操作。</p><p> ?。?)OSTaskSwHook ( )</p><p> 當發(fā)生任務切換的時候就會調用OSTaskSwHook ( ) 。OSTaskSwHook ( ) 可以直接訪問OSTCBCur和OSTCBHighRdy , 因為它們是全局變量。OSTCBCur指向被切換出去的任務OS_ TC
94、B, 而OSTCBHighRdy指向新任務OS_ TCB。注意在調用OSTaskSwHook ( ) 期間中斷一直是被禁止的。因此用戶應盡量減少該函數(shù)中的代碼以縮短中斷的響應時間。</p><p> (5)OSTaskStatHook ( )</p><p> OSTaskStatHook ( ) 每秒鐘都會被OSTaskStat( ) 調用一次。用戶可以用OSTaskStatHook
95、 ( ) 來擴展統(tǒng)計功能。例如, 用戶可以保持并顯示每個任務的執(zhí)行時間, 每個任務所用的CPU 份額, 以及每個任務執(zhí)行的頻率等。</p><p> ?。?)OSTimeTickHook ( )</p><p> OSTimeTickHook ( ) 在每個時鐘節(jié)拍都會被OSTaskTick ( ) 調用。實際上, OSTimeTickHook( ) 是在節(jié)拍被μC/OS-Ⅱ真正處理,
96、并通知用戶的移植實例或應用程序之前被調用的。</p><p> 后5個函數(shù)為鉤子函數(shù), 可以不加代碼。只有當OS_ CFG1H 中的OS_ CPU_ HOOKS_ EN 被置為1 時才會產生這些函數(shù)的代碼。</p><p> 完成了上述工作以后, μC/OS-Ⅱ就可以運行在S3C44B0X處理器上了。</p><p> 4.3.4 測試移植是否成功</p
97、><p> 為了使μC/OS-Ⅱ可以正常運行, 除了上述必須的移植工作外, 硬件初始化和配置文件也是必須的。STARTUP 目錄下的文件還包括中斷處理,時鐘, 串口通信等基本功能函數(shù)。在文件main.c中包括初始化和多任務的創(chuàng)建、啟動等, 概要如下:</p><p> ARMTargetInit ( ); //目標板初始化</p>&l
98、t;p> OSInit( ); //μC/OS-Ⅱ初始化</p><p> OSTimeSet(0); //設置系統(tǒng)時鐘</p><p> OSTaskCreate…… //創(chuàng)建任務1</p><p> OST
99、askCreate…… //創(chuàng)建任務2</p><p> OSStatInit( ); //μC/OS-Ⅱ狀態(tài)初始化</p><p> uHAL r_ InstallSystemTimer ( ); //啟動定時器時鐘節(jié)拍</p><p> OSStart
100、( ); //啟動μC /OS - Ⅱ</p><p> 在上面的代碼中, 創(chuàng)建兩個簡單的任務, 分別通過串口在超級終端上輸出run task1 和run task2。系統(tǒng)時鐘啟動和多任務切換是由函數(shù)uHALr_InstallSystemTimer ( ) 來完成的。將程序目標代碼燒寫入Flash的0地址運行即可驗證移植是否成功。</p><
101、p> 5 嵌入式系統(tǒng)μC/OS-Ⅱ的具體應用實現(xiàn)</p><p><b> 5.1 多任務系統(tǒng)</b></p><p><b> 5.1.1 多任務</b></p><p> 多任務運行的實現(xiàn)實際上是靠CPU(中央處理單元)在許多任務之間轉換、調度。CPU只有一個,輪番服務于一系列任務中的某一個。多任務運行很
102、像前后臺系統(tǒng),但后臺任務有多個。多任務運行使CPU的利用率得到最大的發(fā)揮,并使應用程序模塊化。在實時應用中,多任務化的最大特點是,開發(fā)人員可以將很復雜的應用程序層次化。使用多任務,應用程序將更容易設計與維護。</p><p><b> 5.1.2 任務</b></p><p> 一個任務,也稱作一個線程,是一個簡單的程序,該程序可以認為CPU完全只屬該程序自己。實
103、時應用程序的設計過程,包括如何把問題分割成多個任務,每個任務都是整個應用的某一部分,每個任務被賦予一定的優(yōu)先級,有它自己的一套CPU寄存器和棧空間。</p><p> 典型地、每個任務都是一個無限的循環(huán)。每個任務都處在以下5種狀態(tài)之一的狀態(tài)下,這5種狀態(tài)是休眠態(tài),就緒態(tài)、運行態(tài)、掛起態(tài)(等待某一事件發(fā)生)和被中斷態(tài)(參見圖2.3)休眠態(tài)相當于該任務駐留在內存中,但并不被多任務內核所調度。就緒意味著該任務已經準備
104、好,可以運行了,但由于該任務的優(yōu)先級比正在運行的任務的優(yōu)先級低,還暫時不能運行。運行態(tài)的任務是指該任務掌握了CPU的控制權,正在運行中。掛起狀態(tài)也可以叫做等待事件態(tài)WAITING,指該任務在等待,等待某一事件的發(fā)生,(例如等待某外設的I/O操作,等待某共享資源由暫不能使用變成能使用狀態(tài),等待定時脈沖的到來或等待超時信號的到來以結束目前的等待,等等)。最后,發(fā)生中斷時,CPU提供相應的中斷服務,原來正在運行的任務暫不能運行,就進入了被中斷
105、狀態(tài)。圖5-1表示μC/OS-Ⅱ中一些函數(shù)提供的服務,這些函數(shù)使任務從一種狀態(tài)變到另一種狀態(tài)。</p><p> 圖5-1 任務的狀態(tài)</p><p> Fig.5-1 State mandate</p><p> 5.1.4 空閑任務(Idle Task)</p><p> μC/OS-Ⅱ總是建立一個空閑任務,這個任務在沒有其它任務
106、進入就緒態(tài)時投入運行。這個空閑任務[OSTaskIdle()]永遠設為最低優(yōu)先級,即OS_LOWEST_PRI0。空閑任務OSTaskIdle()什么也不做,只是在不停地給一個32位的名叫OSIdleCtr的計數(shù)器加1,統(tǒng)計任務使用這個計數(shù)器以確定現(xiàn)行應用軟件實際消耗的CPU時間。程序清單L3.11是空閑任務的代碼。在計數(shù)器加1前后,中斷是先關掉再開啟的,因為8位以及大多數(shù)16位微處理器的32位加1需要多條指令,要防止高優(yōu)先級的任務或中
107、斷服務子程序從中打入??臻e任務不可能被應用軟件刪除。</p><p> 5.1.4 任務切換(Context Switch or Task Switch)</p><p> Context Switch的含義是任務切換,或CPU寄存器內容切換。當多任務內核決定運行另外的任務時,它保存正在運行任務的當前狀態(tài)(Context),即CPU寄存器中的全部內容。這些內容保存在任務的當前狀況保存區(qū)
108、(Task’s Context Storage area),也就是任務自己的棧區(qū)之中。入棧工作完成以后,就是把下一個將要運行的任務的當前狀況從該任務的棧中重新裝入CPU的寄存器,并開始下一個任務的運行。這個過程叫做任務切換。任務切換過程增加了應用程序的額外負荷。CPU的內部寄存器越多,額外負荷就越重。做任務切換所需要的時間取決于CPU有多少寄存器要入棧。實時內核的性能不應該以每秒鐘能做多少次任務切換來評價。</p><
109、;p> 5.1.5 任務調度(Task Scheduling)</p><p> μC/OS-Ⅱ總是運行進入就緒態(tài)任務中優(yōu)先級最高的那一個。確定哪個任務優(yōu)先級最高,下面該哪個任務運行了的工作是由調度器(Scheduler)完成的。任務級的調度是由函數(shù)OSSched()完成的。任務切換主要由兩步完成,首先將被掛起任務的微處理器寄存器推入堆棧,然后將較高優(yōu)先級的任務的寄存器值從棧中恢復到寄存器中。μC/OS
110、-Ⅱ運行就緒態(tài)的任務所要做的一切,只是恢復所有的CPU寄存器并運行中斷返回指令。為了做任務切換,運行OS_TASK_SW(),人為模仿了一次中斷。多數(shù)微處理器有軟中斷指令或者陷阱指令TRAP來實現(xiàn)上述操作。</p><p> 5.1.6 任務優(yōu)先級及分配</p><p> 每個任務都有其優(yōu)先級。任務越重要,賦予的優(yōu)先級應越高。任務優(yōu)先級根據(jù)應用程序執(zhí)行過程中是否可變分為靜態(tài)優(yōu)先級和動態(tài)
111、優(yōu)先級。在靜態(tài)優(yōu)先級系統(tǒng)中,諸任務以及它們的時間約束在程序編譯時是已知的。而在動態(tài)優(yōu)先級系統(tǒng)中,實時內核則應當避免出現(xiàn)優(yōu)先級反轉問題。</p><p> 給任務定優(yōu)先級可不是件小事,因為實時系統(tǒng)相當復雜。許多系統(tǒng)中,并非所有的任務都至關重要。不重要的任務自然優(yōu)先級可以低一些。實時系統(tǒng)大多綜合了軟實時和硬實時這兩種需求。軟實時系統(tǒng)只是要求任務執(zhí)行得盡量快,并不要求在某一特定時間內完成。硬實時系統(tǒng)中,任務不但要執(zhí)行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于arm的lcd顯示設計與實現(xiàn)
- 畢業(yè)設計-lcd液晶顯示設計
- 基于ARM的LCD顯示驅動的設計與實現(xiàn).pdf
- 基于arm嵌入式系統(tǒng)的lcd顯示
- 基于arm7的lcd顯示電路仿真
- 畢業(yè)設計--lcd數(shù)字顯示體溫計設計
- 基于arm7的lcd顯示電路仿真-課程設計報告
- 基于arm7的lcd顯示電路仿真-課程設計報告
- 基于fpga的lcd顯示畢設計
- lcd顯示設計
- 畢業(yè)設計lcd電子顯示屏的控制和界面設計
- 畢業(yè)設計開題報告--據(jù)預置和lcd顯示軟件設計
- 畢業(yè)設計--tft-lcd顯示技術電路設計和仿真
- 畢業(yè)設計--電熱水器lcd顯示屏設計
- 【設計+論文】1602lcd顯示的秒表)lcd顯示的秒表
- 畢業(yè)論文-數(shù)字顯示lcd屏設計
- 數(shù)字顯示lcd屏設計畢業(yè)論文
- 基于arm的led顯示畢業(yè)論文
- 基于ARM的列車顯示系統(tǒng)開發(fā).pdf
- 電氣應用系統(tǒng)設計報告--lcd顯示系統(tǒng)
評論
0/150
提交評論