欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      黃靖嵌入式系統(tǒng)實(shí)習(xí)報(bào)告

      時(shí)間:2019-05-14 04:41:52下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《黃靖嵌入式系統(tǒng)實(shí)習(xí)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《黃靖嵌入式系統(tǒng)實(shí)習(xí)報(bào)告》。

      第一篇:黃靖嵌入式系統(tǒng)實(shí)習(xí)報(bào)告

      嵌入式系統(tǒng)實(shí)習(xí)報(bào)告

      課題: LCD顯示秒表 班級(jí): 計(jì)本12-3班 學(xué)號(hào): 3110717215 姓名: 黃靖 指導(dǎo)老師: 金紅老師

      一、緒論

      嵌入式計(jì)算機(jī)的真正發(fā)展是在微處理器問(wèn)世之后。1971年11月,Intel公司成功地把算術(shù)運(yùn)算器和控制器電路集成在一起,推出了第一款微處理器Intel 4004,其后各廠(chǎng)家陸續(xù)推出了許多8位、16位的微處理器,包括Intel 8080/8085、8086,Motorola 的6800、68000,以及Zilog的Z80、Z8000等。以這些微處理器作為核心所構(gòu)成的系統(tǒng),廣泛地應(yīng)用于儀器儀表、醫(yī)療設(shè)備、機(jī)器人、家用電器等領(lǐng)域。微處理器的廣泛應(yīng)用形成了一個(gè)廣闊的嵌入式應(yīng)用市場(chǎng),計(jì)算機(jī)廠(chǎng)家開(kāi)始大量地以插件方式向用戶(hù)提供OEM產(chǎn)品,再由用戶(hù)根據(jù)自己的需要選擇一套適合的CPU板、存儲(chǔ)器板以及各式I/O插件板,從而構(gòu)成專(zhuān)用的嵌入式計(jì)算機(jī)系統(tǒng),并將其嵌入到自己的系統(tǒng)設(shè)備中。本次試驗(yàn)課題是基于UC/OS-II嵌入式操作系統(tǒng)進(jìn)行的1602顯示秒表設(shè)計(jì)。

      二、嵌入式概述

      1、何為嵌入式:

      何謂嵌入式系統(tǒng), 嵌入式系統(tǒng)是用來(lái)控制或者監(jiān)視機(jī)器、裝置、工廠(chǎng)等大規(guī)模設(shè)備的系統(tǒng)。國(guó)內(nèi)普遍認(rèn)同的嵌入式系統(tǒng)定義為:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng).通常,嵌入式系統(tǒng)是一個(gè)控制程序存儲(chǔ)在ROM中的嵌入式處理器控制板。事實(shí)上,所有帶有數(shù)字接口的設(shè)備,如手表、微波爐、錄像機(jī)、汽車(chē)等,都使用嵌入式系統(tǒng),有些嵌入式系統(tǒng)還包含操作系統(tǒng),但大多數(shù)嵌入式系統(tǒng)都是由單個(gè)程序?qū)崿F(xiàn)整個(gè)控制邏輯。

      而uC/OS-II由Micrium公司提供,是一個(gè)源代碼開(kāi)放、可移植、可固化、可裁剪、搶先式的多任務(wù)實(shí)時(shí)操作系統(tǒng)。它主要用于中小型嵌入式系統(tǒng)中,執(zhí)行效率高,占用空間小,可移植性強(qiáng),具有良好的實(shí)時(shí)性和可擴(kuò)展性。

      2、嵌入式歷史:

      從20世紀(jì)七十年代單片機(jī)的出現(xiàn)到各式各樣的嵌入式微處理器,微控制器的大規(guī)模應(yīng)用,嵌入式系統(tǒng)已經(jīng)有了近30年的發(fā)展歷史。

      嵌入式系統(tǒng)的出現(xiàn)最初是基于單片機(jī)的。70年代單片機(jī)的出現(xiàn),使得汽車(chē)、家電、工業(yè)機(jī)器、通信裝置以及成千上萬(wàn)種產(chǎn)品可以通過(guò)內(nèi)嵌電子裝置來(lái)獲得更佳的使用性能:更容易使用、更快、更便宜。這些裝置已經(jīng)初步具備了嵌入式的應(yīng)用特點(diǎn),但是這時(shí)的應(yīng)用只是使用8位的芯片,執(zhí)行一些單線(xiàn)程的程序,還談不上“系統(tǒng)”的概念。

      最早的單片機(jī)是Intel公司的 8048,它出現(xiàn)在1976年。Motorola同時(shí)推出了68HC05,Zilog公司推出了Z80系列,這些早期的單片機(jī)均含有256字節(jié)的RAM、4K的ROM、4 個(gè)8位并口、1個(gè)全雙工串行口、兩個(gè)16位定 時(shí) 器。之后在80年代初,Intel又進(jìn)一步完善了8048,在它的基礎(chǔ)上研制成功了8051,這在單片機(jī)的歷史上是值得紀(jì)念的一頁(yè),迄今為止,51系列的單片機(jī)仍然是最為成功的單片機(jī)芯片,在各種產(chǎn)品中有著非常廣泛的應(yīng)用。

      從80年代早期開(kāi)始,嵌入式系統(tǒng)的程序員開(kāi)始用商業(yè)級(jí)的“操作系統(tǒng)”編寫(xiě)嵌入式應(yīng)用軟件,這使得可以獲取更短的開(kāi)發(fā)周期,更低的開(kāi)發(fā)資金和更高的開(kāi)發(fā)效率,“嵌入式系統(tǒng)”真正出現(xiàn)了。確切點(diǎn)說(shuō),這個(gè)時(shí)候的操作系統(tǒng)是一個(gè)實(shí)時(shí)核,這個(gè)實(shí)時(shí)核包含了許多傳統(tǒng)操作系統(tǒng)的特征,包括任務(wù)管理、任務(wù)間通訊、同步與相互排斥、中斷支持、內(nèi)存管理等功能。其中比較著名的有Ready System 公司的VRTX、Integrated System Incorporation(ISI)的PSOS和IMG的VxWorks、QNX公司的QNX 等。這些嵌入式操作系統(tǒng)都具有嵌入式的典型特點(diǎn):它們均采用占先式的調(diào)度,響應(yīng)的時(shí)間很短,任務(wù)執(zhí)行的時(shí)間可以確定;系統(tǒng)內(nèi)核很小,具有可裁剪,可擴(kuò)充和可移植性,可以移植到各種處理器上;較強(qiáng)的實(shí)時(shí)和可靠性,適合嵌入式應(yīng)用。這些嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)的出現(xiàn),使得應(yīng)用開(kāi)發(fā)人員得以從小范圍的開(kāi)發(fā)解放出來(lái),同時(shí)也促使嵌入式有了更為廣闊的應(yīng)用空間。

      90年代以后,隨著對(duì)實(shí)時(shí)性要求的提高,軟件規(guī)模不斷上升,實(shí)時(shí)核逐漸發(fā)展為實(shí)時(shí)多任務(wù)操作系統(tǒng)(RTOS),并作為一種軟件平臺(tái)逐步成為目前國(guó)際嵌入式系統(tǒng)的主流。這時(shí)候更多的公司看到了嵌入式系統(tǒng)的廣闊發(fā)展前景,開(kāi)始大力發(fā)展自己的嵌入式操作系統(tǒng)。除了上面的幾家老牌公司以外,還出現(xiàn)了Palm OS,WinCE,嵌入式Linux,Lynx,Nucleux,以及國(guó)內(nèi)的Hopen,Delta Os等嵌入式操作系統(tǒng)。隨著嵌入式技術(shù)的發(fā)展前景日益廣闊,相信會(huì)有更多的嵌入式操作系統(tǒng)軟件出現(xiàn)。

      3、現(xiàn)狀:

      今天嵌入式系統(tǒng)帶來(lái)的工業(yè)年產(chǎn)值已超過(guò)了1萬(wàn)億美元,1997年來(lái)自美國(guó)嵌入式系統(tǒng)大會(huì)(Embedded System Conference)的報(bào)告指出,未來(lái)5年僅基于嵌入式計(jì)算機(jī)系統(tǒng)的全數(shù)字電視產(chǎn)品,就將在美國(guó)產(chǎn)生一個(gè)每年1500億美元的新市場(chǎng)。美國(guó)汽車(chē)大王福特公司的高級(jí)經(jīng)理也曾宣稱(chēng),“福特出售的‘計(jì)算能力’已超過(guò)了IBM”,由此可以想見(jiàn)嵌入式計(jì)算機(jī)工業(yè)的規(guī)模和廣度。1998年11月在美國(guó)加州舉行的嵌入式系統(tǒng)大會(huì)上,基于RTOS的Embedded Internet成為一個(gè)技術(shù)新熱點(diǎn)。在國(guó)內(nèi),“維納斯計(jì)劃”和“女鍋計(jì)劃”一度鬧得沸沸揚(yáng)揚(yáng),機(jī)頂盒、信息j家電這兩年更成了IT熱點(diǎn),而實(shí)際上這些都是嵌入式系統(tǒng)在特定環(huán)境下的一個(gè)特定應(yīng)用。據(jù)調(diào)查,目前國(guó)際上已有兩百多種嵌入式操作系統(tǒng),而各種各樣的開(kāi)發(fā)工具、應(yīng)用于嵌入式開(kāi)發(fā)的儀器設(shè)備更是不可勝數(shù)。在國(guó)內(nèi),雖然嵌入式應(yīng)用、開(kāi)發(fā)很廣,但該領(lǐng)域卻幾乎還是空白,只有三兩家公司和極少數(shù)人員在從事這方面工作。由此可見(jiàn),嵌入式系統(tǒng)技術(shù)發(fā)展的空間真是無(wú)比廣大。

      三、課題設(shè)計(jì)內(nèi)容:

      1、課題所需材料及工具

      材料:1062LCD顯示器、電路板、IAP15F2K61S2系統(tǒng)板、數(shù)據(jù)線(xiàn)、三個(gè)按鈕、若干電線(xiàn)等

      工具:USB串口驅(qū)動(dòng)、Keil_uvision_

      4、STC_ISP Ver6.82B等

      2、課題設(shè)計(jì)要求及總體思路

      要求秒表可以實(shí)現(xiàn)三個(gè)功能:秒表的顯示功能,秒表的控制功能:開(kāi)始、暫停、清零,秒表的LED閃爍功能。

      總體思路:

      1、查閱與課題相關(guān)的資料了解uC/OS-II嵌入式系統(tǒng)移植已有的主要技術(shù)方案,應(yīng)用軟件設(shè)計(jì)及系統(tǒng)調(diào)試的方法;

      2、在IAP15F2K61S2單片機(jī)系統(tǒng)板上移植uC/OS-II嵌入式系統(tǒng),完成系統(tǒng)調(diào)試。

      3、完成對(duì)秒表的功能進(jìn)行總體的設(shè)計(jì)和規(guī)劃,根據(jù)自己的總體設(shè)計(jì)和規(guī)劃進(jìn)行軟件設(shè)計(jì),焊接電路。

      4、系統(tǒng)功能調(diào)試。

      3、uC/OS-II嵌入式系統(tǒng)的移植

      uC/OS-II代碼中大部分都是用C語(yǔ)言寫(xiě)的,但是涉及到數(shù)據(jù)類(lèi)型的重定義、堆棧結(jié)構(gòu)的設(shè)計(jì)、任務(wù)切換時(shí)狀態(tài)的保存和恢復(fù)等問(wèn)題的大部分代碼由于與處理器有關(guān),是用匯編語(yǔ)言實(shí)現(xiàn)的。移植所要做的工作,就是在不同的處理器上用匯編語(yǔ)言來(lái)改寫(xiě)與處理器有關(guān)的代碼及其他與處理器特性相關(guān)的部分。

      在uC/OS-II移植過(guò)程中涉及以上問(wèn)題的代碼都包含在文件 OS_CPU.H、OS_CPU.C、OS_CPU_A.ASM中。因此移植的主要工作也在源代碼的基礎(chǔ)上圍繞著這三個(gè)文件的改寫(xiě)展開(kāi)。

      OS_CPU.H的改寫(xiě):其中主要定義了一些與編譯器有關(guān)的數(shù)據(jù)類(lèi)型、堆棧的生長(zhǎng)方向、臨界代碼區(qū)的保護(hù)方式。因?yàn)椴煌奶幚砥饔胁煌淖珠L(zhǎng),所以O(shè)S_CPU.H中需要針對(duì)具體的處理器字長(zhǎng)重新定義一系列數(shù)據(jù)類(lèi)型以確保系統(tǒng)的可移植性。特別需要注意的是MCS-51的棧寬度是8位的,所以將堆棧的數(shù)據(jù)類(lèi)型聲明為8 位無(wú)符號(hào)字符類(lèi)型,即unsigned char OS_STK。第二,為了避免臨界區(qū)代碼被中斷,在臨界區(qū)操作時(shí)必須用C語(yǔ)言開(kāi)放和關(guān)閉中斷。對(duì)于51單片機(jī),在中斷控制中使用EA = 0關(guān)中斷,EA = 1開(kāi)中斷。由于51堆棧自低地址往高地址生長(zhǎng),所以堆棧增長(zhǎng)方向的設(shè)置必須更改。采用語(yǔ)句#define OS_STK_GROWTH 0。最后,由于MCS-51沒(méi)有軟中斷指令,所以用程序調(diào)用代替,定義任務(wù)切換宏OS_TASK_SW():#define OS_TASK_SW()OSCtxSw()。

      OS_CPU_C.C需要改寫(xiě)的六個(gè)鉤掛函數(shù)分別是 OSTaskStkInit()

      //初始化任務(wù)堆棧函數(shù) OSTaskCreateHook()//任務(wù)創(chuàng)建鉤掛函數(shù) OSTaskDelHook()

      //任務(wù)刪除鉤掛函數(shù) OSTaskSwHook()

      //任務(wù)切換鉤掛函數(shù) OSTaskStatHook()

      //統(tǒng)計(jì)任務(wù)鉤掛函數(shù) OSTimeTickHook()//定時(shí)鉤掛函數(shù)

      OS_CPU_A.ASM需要改寫(xiě)的四個(gè)函數(shù)分別是: OSStartHighRdy()//運(yùn)行優(yōu)先級(jí)最高的就緒任務(wù) OSCtxSw()

      //任務(wù)級(jí)的切換函數(shù)

      OSIntCtxSw()

      //中斷級(jí)的任務(wù)切換函數(shù) OSTickISR()

      //時(shí)鐘節(jié)拍中斷服務(wù)函數(shù)

      移植過(guò)程要留意的問(wèn)題:

      當(dāng)調(diào)用OSTaskCreate()或OSTaskCreateExt()創(chuàng)建一個(gè)新任務(wù)時(shí),需要傳遞的參數(shù)是:任務(wù)代碼的起使地址,參數(shù)指針(pdata),任務(wù)堆棧頂端的地址,任務(wù)的優(yōu)先級(jí)。OSTaskCreateExt()還需要一些其他參數(shù),但與OSTask-StkInit()沒(méi)有關(guān)系。OSTaskStkInit()只需要以上提到的3個(gè)參數(shù)(task, pdata,和ptos)。在這個(gè)堆棧初始化函數(shù)中要清楚堆棧中都要保存哪些東西,要留多大的空間,這些都很重要,否則會(huì)發(fā)生很?chē)?yán)重的錯(cuò)誤。

      4、課題程序功能設(shè)計(jì)及代碼

      如下圖所示,整個(gè)秒表以STC15為核心,按下停止鍵或啟動(dòng)鍵控制秒表的停止和開(kāi)始,清零鍵負(fù)責(zé)清零,同時(shí)反映給STC15,再經(jīng)過(guò)處理顯示在1602液晶顯示器上,進(jìn)行計(jì)時(shí):

      LCD1602液晶顯示器啟動(dòng)鍵key1STC15停止鍵key3清零鍵key2

      系統(tǒng)設(shè)計(jì)圖:

      系統(tǒng)總的原理圖如上圖所示,按下暫停、啟動(dòng)和清零按鍵,秒表開(kāi)始計(jì)時(shí)或清零并顯示在LCD1602液晶顯示器上。

      功能流程圖:

      開(kāi)始單片機(jī)、LED初始化trueIf(key==0)false定時(shí)器開(kāi)啟TR1=1定時(shí)中斷計(jì)數(shù)值累加屏幕顯示定時(shí)器關(guān)閉TR1=0結(jié)束 主要函數(shù)代碼:

      void main(void)

      //主函數(shù)

      { OSInit();

      //初始化uc/os-||

      InitTime0();

      //定時(shí)器初始化

      OSTaskCreate(Task1,(void*)0,&Task1Stk[0],4);

      //任務(wù)1 OSTaskCreate(Task2,(void*)0,&Task2Stk[0],1);

      //任務(wù)2

      OSStart();

      //開(kāi)始多任務(wù)調(diào)度 } void Task2(void *ppdata)reentrant

      // 任務(wù)2,LED閃爍, { ppdata=ppdata;while(1)

      {

      P55 = ~P55;

      OSTimeDly(OS_TICKS_PER_SEC);

      }

      } void Task1(void xdata * ppdata)reentrant

      //任務(wù)1,三個(gè)按鍵功能以及字幕的顯示 {

      ppdata = ppdata;

      TR1=0;count=0;

      //中斷次數(shù)

      while(1){

      init();

      //1602初始化

      if(key1==0)

      //開(kāi)始

      {

      TR1=1;

      //定時(shí)器開(kāi)啟

      }

      if(key3==0)

      //暫停

      { TR1=0;

      //定時(shí)器關(guān)閉

      }

      if(key2==0&&TR1==0)

      //清零

      { zong=0;

      //時(shí)間清零

      }

      lcd_pos(0x46);

      //顯示的地址

      Display_int(zong/60);

      //顯示分鐘

      lcd_date(':');

      //顯示

      Display_int(zong%60);

      //顯示秒

      lcd_pos(0x00);

      //字符輸出地址

      Display_string(time);//輸出”times start:”

      OSTimeDly(OS_TICKS_PER_SEC/40);} }

      //中斷函數(shù)

      void Time1()interrupt 3

      //定時(shí)器T1的中斷編號(hào)為1 { TH1 =(65536-50000)/256;

      //定時(shí)器T0高8位重新賦初值0.05s TL1 =(65536-50000)%256;

      //定時(shí)器T0低8位重新賦初值

      count++;if(count%20==0)

      //調(diào)整數(shù)字變化速度

      {

      zong++;// } }

      void Display_int(int a){

      //顯示

      int tmp[2]={0,0};int t = 0;

      while(a!=0){

      tmp[t++] = a%10;

      a = a/10;}

      t=2;while(t>0){

      lcd_date('0' + tmp[--t]);} } void Display_string(char *str){

      int i = 0;

      while(str[i]!= '