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

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

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

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

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

      單片機(jī)課程設(shè)計(jì)報(bào)告

      時(shí)間:2019-05-15 11:44:06下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《單片機(jī)課程設(shè)計(jì)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《單片機(jī)課程設(shè)計(jì)報(bào)告》。

      第一篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告

      課程設(shè)計(jì)報(bào)告

      題 目: 自動(dòng)滴灌系統(tǒng)設(shè)計(jì)

      課程名稱(chēng): 單片機(jī)原理及應(yīng)用 學(xué) 院: 信息工程學(xué)院

      專(zhuān) 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí): 2014 級(jí)計(jì)本 1 班

      學(xué)生姓名: *** 學(xué) 號(hào): 201403031 指導(dǎo)教師: 巫 宗 賓

      成 績(jī):

      開(kāi)課時(shí)間: 2016~2017 學(xué)年 2 學(xué)期

      目錄

      第一章 系統(tǒng)概要.........................................................................................................................2 1.1系統(tǒng)背景............................................................................................................................2 1.2系統(tǒng)功能............................................................................................................................2 1.3設(shè)計(jì)要求............................................................................................................................2 第二章 系統(tǒng)硬件原理...............................................................................................................3 2.1AW60主要模塊和特點(diǎn)........................................................................................................3 2.2 LCD模塊............................................................................................................................3 2.3 LED模塊............................................................................................................................4 第三章 系統(tǒng)軟件設(shè)計(jì).................................................................................................................6 3.1系統(tǒng)流程............................................................................................................................6 3.2主程序(main.c)............................................................................................................7 3.2中斷處理程序(isr.c)..................................................................................................7 3.3構(gòu)件組成............................................................................................................................9 第四章 系統(tǒng)測(cè)試.......................................................................................................................27 4.1測(cè)試結(jié)果..........................................................................................................................27 第五章 總結(jié)展望........................................................................................................................31 5.1總結(jié)..................................................................................................................................31 5.2展望..................................................................................................................................31 參考文獻(xiàn).....................................................................................................................................32

      第一章 系統(tǒng)概要

      1.1系統(tǒng)背景

      隨著科學(xué)技術(shù)的發(fā)展電子技術(shù)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整,單片機(jī)開(kāi)始迅速發(fā)展,由于單片機(jī)本身的易于控制,精度高,自動(dòng)化全面,市場(chǎng)對(duì)于智能控制系統(tǒng)的需求也越來(lái)越大。自動(dòng)滴灌系統(tǒng),就是在單片機(jī)程序的控制下實(shí)現(xiàn)濕度監(jiān)測(cè)、滴灌控制的設(shè)備。單片機(jī)系統(tǒng)座位一種典型的嵌入式系統(tǒng),其系統(tǒng)設(shè)計(jì)包括硬件設(shè)計(jì)和軟件設(shè)計(jì)編程設(shè)計(jì)兩個(gè)方面,其調(diào)試過(guò)程一般分為軟件調(diào)試,硬件調(diào)試,系統(tǒng)調(diào)試。自動(dòng)滴灌系統(tǒng)需要實(shí)現(xiàn)濕度采集,A/D轉(zhuǎn)換,濕度顯示,工作狀態(tài)顯示,電機(jī)驅(qū)動(dòng)的功能。

      1.2系統(tǒng)功能

      首先要進(jìn)行濕度監(jiān)測(cè),每隔固定的時(shí)間就采集一次濕度,在內(nèi)部轉(zhuǎn)換后與標(biāo)準(zhǔn)值進(jìn)行比較如果濕度值低于給定值的話(huà)就切換至工作狀態(tài),滴灌結(jié)束時(shí)自動(dòng)切換至結(jié)束模式,繼續(xù)監(jiān)測(cè)濕度。

      仿真狀態(tài)下濕度監(jiān)測(cè)采用軟件模擬實(shí)現(xiàn),采集濕度信息使用LED顯示,每隔5s采集一次。工作狀態(tài)由LCD顯示。分別有滴灌開(kāi)始(“Drip-irrigation is starting..”),和滴灌結(jié)束(“Drip-irrigation has ended..”)。滴灌時(shí)間為5s。結(jié)束后切換至結(jié)束模式。

      1.3設(shè)計(jì)要求

      學(xué)生在設(shè)計(jì)中可以引用所需的參考資料,避免重復(fù)工作,加快設(shè)計(jì)進(jìn)程,但必須和題目的要求相符合,保證設(shè)計(jì)的正確。學(xué)生要在老師的指導(dǎo)下制定好自己各環(huán)節(jié)的詳細(xì)設(shè)計(jì)進(jìn)程計(jì)劃,按給定的時(shí)間計(jì)劃保質(zhì)保量的完成個(gè)階段的設(shè)計(jì)任務(wù)。設(shè)計(jì)中可邊設(shè)計(jì),邊修改,軟件設(shè)計(jì)與硬件設(shè)計(jì)可交替進(jìn)行,問(wèn)題答疑與調(diào)試和方案修改相結(jié)合,提高設(shè)計(jì)的效率,保證按時(shí)完成設(shè)計(jì)工作并交出合格的設(shè)計(jì)報(bào)告。1

      第二章 系統(tǒng)硬件原理

      2.1AW60主要模塊和特點(diǎn)

      AW60系列主要常規(guī)模塊和特點(diǎn):

      (1)最高達(dá)40MHz的CPU工作頻率和20MHz的內(nèi)部總線(xiàn)工作頻率;時(shí)鐘源選項(xiàng)包括晶振,諧振器,外部時(shí)鐘或,內(nèi)部產(chǎn)生的時(shí)鐘。

      (2)相比HC08CPU指令集,S08CPU增加了BGND指令。

      (3)單線(xiàn)后臺(tái)調(diào)試模式接口:增強(qiáng)的斷點(diǎn)能力,允許單一的斷點(diǎn)設(shè)置在線(xiàn)調(diào)試(在片內(nèi)調(diào)試模塊增加了多于兩個(gè)的斷點(diǎn))。

      (4)內(nèi)含32個(gè)中斷/復(fù)位源;內(nèi)含2KB的片內(nèi)RAM;內(nèi)含60KB的片內(nèi)在線(xiàn)可編程的Flash存儲(chǔ)器,帶有 塊保護(hù)和安全選項(xiàng)。

      (5)可選的計(jì)算機(jī)正常操作(COP)復(fù)位;低電壓檢測(cè)與復(fù)位或中斷;非法操作碼檢測(cè)與復(fù)位;非法地址檢測(cè)與復(fù)位。

      (6)ADC:多達(dá)16個(gè)通道,10個(gè)A/D轉(zhuǎn)換器與動(dòng)動(dòng)比較功能;兩個(gè)串行通信接口SCI模塊與可選的13位中斷;一個(gè)串行外設(shè)接口SPI模塊;集成電路互聯(lián)總線(xiàn)IIC模塊運(yùn)行高達(dá)100kbps的最高總線(xiàn)負(fù)載;8引腳鍵盤(pán)中斷KBI模塊。

      (7)Timers:1個(gè)2 通道和一個(gè)6通道16位定時(shí)器/脈沖寬度調(diào)制器模塊。既有輸入捕獲,輸出比較,脈寬調(diào)制功能。AW子系列MCU的4種封裝形式只是引腳數(shù)量和形式有所區(qū)別,其他方面是一致的。

      2.2 LCD模塊

      LCD作為電子信息產(chǎn)品的主要顯示器件,相對(duì)于其他類(lèi)型的顯示器件來(lái)說(shuō)有其自身的特點(diǎn),主要包括:

      (1)低電壓,低功耗;(2)平板型結(jié)構(gòu);

      (3)使用壽命長(zhǎng);

      (4)被動(dòng)顯示;

      (5)顯示信息量大且易于彩色化; 1

      (6)無(wú)電磁輻射。

      點(diǎn)陣字符型LCD是專(zhuān)門(mén)用于顯示數(shù)字,字母,圖形符號(hào)及少量自定義符號(hào)的液晶顯示器。這類(lèi)顯示器把LCD控制器,點(diǎn)陣驅(qū)動(dòng)器,字符存儲(chǔ)器,顯示體及少量的阻容元件等集成一個(gè)液晶顯示模板。鑒于字符型液晶顯示模塊目前在國(guó)際上已經(jīng)規(guī)范化,其電特性及接口特性是統(tǒng)一的,只要設(shè)計(jì)出一種型號(hào)的接口電路,在指令上稍加修改即可使用各種規(guī)格的字符型液晶顯示器模塊。

      字符型液晶顯示器模塊的特點(diǎn)如下:

      (1)液晶顯示屏是以若干5*8或5*11點(diǎn)陣塊等組成的顯示字符群。每個(gè)點(diǎn)陣塊塊為一個(gè)字符位,字符間距和行間距都是一個(gè)點(diǎn)的寬度。

      (2)主控制電路為HD44780(HITACHI及其他公司的兼容電路。從程序員的角度來(lái)看LCD顯示接口與編程是面向HD44780的,只要了解HD44780的編程結(jié)構(gòu)即可進(jìn)行LCD的顯示編程。

      (3)內(nèi)部具有字符發(fā)生器ROM,可顯示192種字符。

      (4)具有64字節(jié)的字符發(fā)生器RAM,可以定義8個(gè)5*8點(diǎn)陣字符或4個(gè)5*11的點(diǎn)陣字符。

      (5)具有64字節(jié)的數(shù)據(jù)顯示RAM,供顯示器編程使用。(6)標(biāo)準(zhǔn)接口特性,與MC9S08系列的MCU容易接口。(7)模塊結(jié)構(gòu)緊湊,輕巧,裝配容易。

      (8)單+5V電源供電(寬溫型需要加-7V驅(qū)動(dòng)電源)。(9)低功耗,高可靠性。

      2.3 LED模塊

      LED發(fā)光二極管分為共陰極和共陽(yáng)極數(shù)碼管,若為共陰極數(shù)碼管則公共端接地,若為共陽(yáng)極數(shù)碼管則公共端接電源正極。如圖1: 1

      圖1

      實(shí)際應(yīng)用中是多個(gè)LED共同使用,MCU通過(guò)一個(gè)稱(chēng)為數(shù)據(jù)口的8位數(shù)據(jù)端口來(lái)控制位段而原來(lái)8段數(shù)碼管的公共端,原來(lái)接到公共電平,現(xiàn)在接MCU的一個(gè)引腳,由MCU來(lái)控制,通常叫做位選信號(hào),這樣MCU的8?jìng)€(gè)端口就可以控制8連排的數(shù)碼管了。若要控制更多數(shù)碼管則需加一個(gè)譯碼芯片。每個(gè)時(shí)刻只讓一個(gè)數(shù)碼管有效,由于人的視覺(jué)暫留效應(yīng)(100ms)可以達(dá)到同時(shí)顯示的效果。

      圖2是MCU與4排8段數(shù)碼管的連接:

      圖2 1

      第三章 系統(tǒng)軟件設(shè)計(jì)

      3.1系統(tǒng)流程

      開(kāi)始初始化土壤濕度數(shù)據(jù)采集顯示濕度N小于設(shè)定值Y顯示滴灌開(kāi)始計(jì)時(shí)結(jié)束,結(jié)束滴灌顯示滴灌結(jié)束 圖3 圖3是系統(tǒng)流程圖,開(kāi)始時(shí)先初始化各個(gè)部件,LCD顯示結(jié)束滴灌信息,LED顯示為全零。后每隔五秒采集一次濕度數(shù)據(jù)用LED顯示濕度。判斷濕度值是否低于設(shè)定值,低于設(shè)定值的話(huà)立即啟動(dòng)滴灌,此時(shí)濕度上升,結(jié)束滴灌。若沒(méi)有低于設(shè)定值的話(huà),則繼續(xù)監(jiān)測(cè)。LED不斷刷新顯示當(dāng)前濕度值。1

      3.2主程序(main.c)

      #include “includes.h” //包涵總頭文件 int main(void){ work = 0;shidu = 75;enter_critical();LEDInit();//LED初始化 LCDInit();//LCD初始化 tpm_init(TPM0,TPM_CLKSRC_PLL,1000);//初始化TPM模塊,1ms中斷一次

      light_init(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_OFF);light_init(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_OFF);tpm_enable_int(0);init_critical();for(;;){

      }

      } return 0;3.2中斷處理程序(isr.c)

      //================== //文件名稱(chēng):isr.c //功能概要: 中斷底層驅(qū)動(dòng)構(gòu)件源文件

      //版權(quán)所有:蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)1

      //================== #include “includes.h” void tpm0_isr(void){ static uint_32 TPMCounter = 0;//計(jì)時(shí)器 static uint_8 LEDindex=0;//位選口聲明 uint_8 LEDDataBuffer[4];//LED顯示緩沖區(qū)

      changeCode(shidu,LEDDataBuffer);//將濕度值轉(zhuǎn)化為對(duì)應(yīng)字符輸出 uint_8 i;uint_8 * working;uint_8 * stop;working =(uint_8 *)“Drip-irrigation is starting......”;stop =(uint_8 *)“Drip-irrigation has ended......”;if((TPM_SC_REG(TPM0_BASE_PTR)TPM_SC_TOF_MASK){ TPMCounter++;

      &

      TPM_SC_TOF_MASK)

      == } BSET(TPM_SC_TOF_SHIFT,TPM_SC_REG(TPM0_BASE_PTR));//中斷置標(biāo)志位寫(xiě)1清0 LEDindex++;//位選位+1 if(LEDindex>=4)LEDindex=0;//大于4位選口置0 i=LEDchangeCode(LEDDataBuffer[LEDindex]-'0');//轉(zhuǎn)碼 LEDshow1(LEDindex,i);if(TPMCounter>5000){

      shidu = sdmn(shidu);if(shidu <= 65){ 1

      } changeState(&work);//改變工作狀態(tài)

      if(work == 0)

      { LCDShow(stop);TPMCounter = 0;light_control(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_ON);light_control(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_OFF);} if(work == 1){

      LCDShow(working);

      TPMCounter = 0;shidu = 80;light_control(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_ON);light_control(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_OFF);changeState(&work);}

      } }

      3.3構(gòu)件組成

      1、TPM構(gòu)件:

      //=================== //文件名稱(chēng):tpm.c //功能概要:tpm底層驅(qū)動(dòng)構(gòu)件源文件 1

      //版權(quán)所有:蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)//====================== #include “tpm.h” //定時(shí)器模塊0,1,2地址映射 Const TPM_MemMapPtr TPM_ARR[]={TPM0_BASE_PTR,TPM1_BASE_PTR,TPM2_BASE_PTR};//====================== //函數(shù)名稱(chēng):tpm_enable_int //功能概要:使能tpm模塊中斷。

      //參數(shù)說(shuō)明:tpmModule:模塊號(hào):0、1、2 //函數(shù)返回:無(wú)

      //====================== void tpm_enable_int(uint_8 tpmModule){ } //====================== //函數(shù)名稱(chēng):tpm_disable_int //功能概要:禁止tpm模塊初始化。enable_irq(tpm0_irq_no + tpmModule);//參數(shù)說(shuō)明:tpmModule:模塊號(hào):0、1、2 //函數(shù)返回:無(wú)

      //====================== void tpm_disable_int(uint_8 tpmModule){ } //====================== //函數(shù)名稱(chēng):tpm_init //功能概要:初始化tpm模塊.1

      disable_irq(tpm0_irq_no + tpmModule);

      //參數(shù)說(shuō)明:tpmModule:模塊號(hào):0、1、2 //clk_src_sel:時(shí)鐘源選擇:1:PLL/FLL(推薦)、2:晶振、3:內(nèi)部參考時(shí)鐘。1,2可用

      // int_us:中斷毫秒數(shù),中斷時(shí)間間隔,單位為毫秒,10ms=10000 //函數(shù)返回:函數(shù)執(zhí)行狀態(tài):0=正常;非0=異常

      //====================== uint_8 tpm_init(uint_8 tpmModule,uint_8 clk_src_sel,uint_32 int_us){

      if(tpmModule>2)//防止越界值 { } //開(kāi)啟SIM時(shí)鐘門(mén) tpmModule=2;BSET(SIM_SCGC6_TPM0_SHIFT+tpmModule,SIM_SCGC6);//使能TPM時(shí)鐘

      //中斷時(shí)間計(jì)算:(48000/8)*10000/1000=0x7530 10ms中斷一次 switch(clk_src_sel){ case 1: //MCGPLL/2或者M(jìn)CGFLL作為時(shí)鐘源 BSET(SIM_SOPT2_PLLFLLSEL_SHIFT,SIM_SOPT2);

      //使能PLL為時(shí)鐘源

      int_us=(48000/8)*int_us/1000;break;case 2: //晶振作為時(shí)鐘源

      int_us=(8000/8)*int_us/1000;OSC0_CR|=OSC_CR_ERCLKEN_MASK;//開(kāi)啟晶振輸出時(shí)鐘

      break;case 3: //內(nèi)部參考時(shí)鐘,由MCG決定 break;

      default: 1

      } return 1;//傳參錯(cuò)誤,返回

      SIM_SOPT2 |= SIM_SOPT2_TPMSRC(clk_src_sel);//使能時(shí)鐘選擇 TPM_ARR[tpmModule]->CNT=0x00;TPM_ARR[tpmModule]->MOD=int_us;//TOF寫(xiě)1清0,TOIE中斷使能,CMOD選擇每次時(shí)鐘加1,PS=0x011 選擇8分頻;TPM_ARR[tpmModule]->SC=TPM_SC_TOF_MASK|TPM_SC_TOIE_MASK|TPM_SC_CMOD(1)|TPM_SC_PS(3);return 0;} //====================== //函數(shù)名稱(chēng):tpm_stop //功能概要:禁止tpm模塊。

      //參數(shù)說(shuō)明:tpmModule:模塊號(hào):0、1、2 //函數(shù)返回:無(wú)

      //====================== void tpm_stop(uint_8 tpmModule){ } Tpm.h //====================== //文件名稱(chēng):tpm.c //功能概要:tpm底層驅(qū)動(dòng)構(gòu)件源文件

      //版權(quán)所有:蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)//====================== #ifndef TPM_H 1

      TPM_ARR[tpmModule]->SC&=~TPM_SC_CMOD(3);

      #define TPM_H

      #include “common.h” #include “sysinit.h” //中斷號(hào)

      #define tpm0_irq_no 17 #define tpm1_irq_no 18 #define tpm2_irq_no 19 //時(shí)鐘選擇

      #define TPM_CLKSRC_PLL 1 #define TPM_CLKSRC_OSC 2 #define TPM_CLKSRC_IRC 3 //模塊號(hào) #define TPM0 0 #define TPM1 1 #define TPM2 2

      //====================== //函數(shù)名稱(chēng):tpm_enable_int //功能概要:使能tpm模塊中斷。

      //參數(shù)說(shuō)明:tpmModule:模塊號(hào):0、1、2 //函數(shù)返回:無(wú)

      //====================== void tpm_enable_int(uint_8 tpmModule);//====================== //函數(shù)名稱(chēng):tpm_disable_int //功能概要:禁止tpm模塊初始化。

      //參數(shù)說(shuō)明:tpmModule:模塊號(hào):0、1、2 //函數(shù)返回:無(wú) 1

      //====================== void tpm_disable_int(uint_8 tpmModule);//====================== //函數(shù)名稱(chēng):tpm_init //功能概要:初始化tpm模塊.//參數(shù)說(shuō)明:tpmModule:模塊號(hào):0、1、2 //clk_src_sel:時(shí)鐘源選擇:1:PLL/FLL(推薦)、2:晶振、3:內(nèi)部參考時(shí)鐘。1,2可用

      // int_us:中斷毫秒數(shù),中斷時(shí)間間隔,單位為毫秒,10ms=10000 //函數(shù)返回:函數(shù)執(zhí)行狀態(tài):0=正常;非0=異常

      //====================== uint_8 tpm_init(uint_8 tpmModule,uint_8 clk_src_sel,uint_32 int_us);//====================== //函數(shù)名稱(chēng):tpm_stop //功能概要:禁止tpm模塊。

      //參數(shù)說(shuō)明:tpmModule:模塊號(hào):0、1、2 //函數(shù)返回:無(wú)

      //====================== void tpm_stop(uint_8 tpmModule);#endif

      2、LED構(gòu)件

      //===================== // 文件名稱(chēng):led.c // 功能概要:led構(gòu)件源文件

      // 版權(quán)所有: 蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)//====================== #include “l(fā)ed.h” //led位選端口 struct GPIO led_cs[4]= 1

      {

      {LED_CS0_PORT,LED_CS0}, {LED_CS1_PORT,LED_CS1}, {LED_CS2_PORT,LED_CS2}, {LED_CS3_PORT,LED_CS3}, };//led數(shù)據(jù)端口 struct GPIO led_d[8]= {

      {LED_D1_PORT,LED_D1}, {LED_D2_PORT,LED_D2}, {LED_D3_PORT,LED_D3}, {LED_D4_PORT,LED_D4}, {LED_D5_PORT,LED_D5}, {LED_D6_PORT,LED_D6}, {LED_D7_PORT,LED_D7}, {LED_D8_PORT,LED_D8}, };

      //====================== //函數(shù)名稱(chēng):LEDInit //函數(shù)返回:無(wú) //參數(shù)說(shuō)明:無(wú) //功能概要:LED初始化。

      //====================== void LEDInit(){ uint_8 i = 0;//定義8根數(shù)據(jù)線(xiàn)為輸出,初始輸出0 for(i = 0;i < 8;i++)gpio_init(led_d[i].gpio_port, led_d[i].gpio_pin, 1, 0);1

      //定義4位選線(xiàn)定義為輸出,初始輸出0 for(i = 0;i < 4;i++)gpio_init(led_cs[i].gpio_port, led_cs[i].gpio_pin, 1, 0);} //====================== //函數(shù)名稱(chēng):LEDshow1 //函數(shù)返回:無(wú)

      //參數(shù)說(shuō)明:i:指定LED哪一位顯示,c:顯示的內(nèi)容 //功能概要:指定LED的第i位顯示c。

      //====================== void LEDshow1(uint_8 i, uint_8 c){ uint_8 temp;uint_8 j;//位選全部置0 for(j=0;j<=3;j++)gpio_set(led_cs[j].gpio_port, led_cs[j].gpio_pin, 0);//數(shù)據(jù)上線(xiàn) for(j=0;j<=7;j++){ temp =(c>>j)& 0x01;

      gpio_set(led_d[j].gpio_port, led_d[j].gpio_pin, temp);} //選擇的位選置1 gpio_set(led_cs[i].gpio_port, led_cs[i].gpio_pin, 1);}

      //顯示碼表

      const uint_8 Dtable[24] = 1

      // 0 1 2 3 4 5 6 7 8 9 {0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F, // 11 12 13 14 15 16 17 18 19 20 // 0.1.2.3.4.5.6.7.8.9.0xBF,0x86,0xDB,0x4F,0x66, 0x6D,0x7D,0x07,0xFF,0x6F, // 21 22 23(全亮)24(全滅)// E F 0x79,0x71, 0xFF, 0x00};//====================== //函數(shù)名稱(chēng):LEDchangeCode //函數(shù)返回:返回?cái)?shù)據(jù)num對(duì)應(yīng)的顯示碼 //參數(shù)說(shuō)明:num:需要轉(zhuǎn)換成顯示碼的數(shù)字 //功能概要:數(shù)字轉(zhuǎn)成顯示碼

      //===================== uint_8 LEDchangeCode(uint_8 num){ return Dtable[num];} LED.h //====================== // 文件名稱(chēng):led.h // 功能概要:led構(gòu)件頭文件

      // 版權(quán)所有: 蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)//======================

      #ifndef led_H //防止重復(fù)定義(開(kāi)頭)#define led_H #include “GPIOapp.h” //LED數(shù)據(jù)口分別接PORTB的{11,10,9,8,3,2,1,0}引腳 1

      #define LED_D1_PORT PORTB #define LED_D1 11 #define LED_D2_PORT PORTB #define LED_D2 10 #define LED_D3_PORT PORTB #define LED_D3 9 #define LED_D4_PORT PORTB #define LED_D4 8 #define LED_D5_PORT PORTB #define LED_D5 3 #define LED_D6_PORT PORTB #define LED_D6 2 #define LED_D7_PORT PORTB #define LED_D7 1 #define LED_D8_PORT PORTB #define LED_D8 0 //LED位選口分別接PORTB的{19,18,17,16}引腳 #define LED_CS0_PORT PORTB #define LED_CS0 19 #define LED_CS1_PORT PORTB #define LED_CS1 18 #define LED_CS2_PORT PORTB #define LED_CS2 17 #define LED_CS3_PORT PORTB #define LED_CS3 16 //====================== //函數(shù)名稱(chēng):LEDInit //函數(shù)返回:無(wú) //參數(shù)說(shuō)明:無(wú) 1

      //功能概要:LED初始化。

      //====================== void LEDInit();//====================== //函數(shù)名稱(chēng):LEDshow1 //函數(shù)返回:無(wú)

      //參數(shù)說(shuō)明:i:指定LED哪一位顯示,c:顯示的內(nèi)容 //功能概要:指定LED的第i位顯示c。

      //====================== void LEDshow1(uint_8 i, uint_8 c);//====================== //函數(shù)名稱(chēng):LEDchangeCode //函數(shù)返回:返回?cái)?shù)據(jù)num對(duì)應(yīng)的顯示碼 //參數(shù)說(shuō)明:num:需要轉(zhuǎn)換成顯示碼的數(shù)字 //功能概要:數(shù)字轉(zhuǎn)成顯示碼

      //====================== uint_8 LEDchangeCode(uint_8 num);#endif //防止重復(fù)定義(結(jié)尾)

      3、LCD構(gòu)件

      //====================== // 文件名稱(chēng):lcd.c // 功能概要:lcd構(gòu)件頭文件

      // 版權(quán)所有: 蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)//====================== #include “l(fā)cd.h”//lcd控制位和數(shù)據(jù)位端口及引腳號(hào) struct GPIO LCD[11]= { {LCD_RS_PORT,LCD_RS}, 1

      {LCD_RW_PORT,LCD_RW}, {LCD_E_PORT,LCD_E}, {LCD_D0_PORT,LCD_D0}, {LCD_D1_PORT,LCD_D1}, {LCD_D2_PORT,LCD_D2}, {LCD_D3_PORT,LCD_D3}, {LCD_D4_PORT,LCD_D4}, {LCD_D5_PORT,LCD_D5}, {LCD_D6_PORT,LCD_D6}, {LCD_D7_PORT,LCD_D7}, };//內(nèi)部函數(shù)原型說(shuō)明

      extern void LCDCommand(uint_8 cmd);//====================== //函數(shù)名稱(chēng):LCDInit //函數(shù)返回:無(wú) //參數(shù)說(shuō)明:無(wú)

      //功能概要:LCD初始化。

      //====================== void LCDInit(){ uint_32 i = 0; //定義數(shù)據(jù)口和控制口為輸出 for(i = 0;i < 11;i++){ gpio_init(LCD[i].gpio_port, LCD[i].gpio_pin, 1,0);} //設(shè)置指令,RS,R/W = 00, 寫(xiě)指令代碼

      gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 0);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);1

      //功能設(shè)置-//設(shè)置指令

      LCDCommand(0x38);//5*7點(diǎn)陣模式,2行顯示,8位數(shù)據(jù)總線(xiàn) LCDCommand(0x08);//關(guān)顯示,關(guān)光標(biāo)顯示,不閃爍

      LCDCommand(0x01);//清屏

      for(i=0;i<40000;i++)asm(“NOP”);//延時(shí) LCDCommand(0x06);LCDCommand(0x14);//光標(biāo)右移一個(gè)字符位,AC自動(dòng)加1 LCDCommand(0x0C);//開(kāi)顯示,關(guān)光標(biāo)顯示,不閃爍 } //====================== //函數(shù)名稱(chēng):LCDShow //函數(shù)返回:無(wú)

      //參數(shù)說(shuō)明:需要顯示的數(shù)據(jù) //功能概要:液晶顯示data中的數(shù)據(jù)。

      //====================== void LCDShow(uint_8 data[32]){ uint_8 i;LCDInit();//LCD初始化 //顯示第1行16個(gè)字符

      gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 0);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//后7位為DD RAM地址(0x00)LCDCommand(0x80);//寫(xiě)16個(gè)數(shù)據(jù)到DD RAM gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 1);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//將要顯示在第1行上的16個(gè)數(shù)據(jù)逐個(gè)寫(xiě)入DD RAM中 1

      for(i = 0;i < 16;i++){ } //顯示第2行16個(gè)字符

      gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 0);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//后7位為DD RAM地址(0x40)LCDCommand(0xC0);gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 1);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//將要顯示在第2行上的16個(gè)數(shù)據(jù)逐個(gè)寫(xiě)入DD RAM中 for(i = 16;i < 32;i++){ } } //====================== //函數(shù)名稱(chēng):LCDCommand //函數(shù)返回:無(wú)

      //參數(shù)說(shuō)明:cmd:待執(zhí)行的命令

      //功能概要:執(zhí)行給定的cmd命令,且延時(shí)。

      //====================== void LCDCommand(uint_8 cmd){

      uint_8 i;uint_16 j;uint_8 temp;LCDCommand(data[i]);LCDCommand(data[i]);//等待延遲防止重復(fù)調(diào)用此函數(shù)而LCD卡死 1

      for(j=0;j<1600;j++);asm(“NOP”);//數(shù)據(jù)送到LCD的數(shù)據(jù)線(xiàn)上 for(i = 3;i < 11;i++){ gpio_set(LCD[i].gpio_port, LCD[i].gpio_pin, 0);} for(i = 3;i < 11;i++){ temp = 0x01 &(cmd>>(i-3));gpio_set(LCD[i].gpio_port, LCD[i].gpio_pin, temp);} //給出E信號(hào)的下降沿(先高后低),使數(shù)據(jù)寫(xiě)入LCD gpio_set(LCD[2].gpio_port, LCD[2].gpio_pin, 1);for(j=0;j<25;j++)asm(“NOP”);gpio_set(LCD[2].gpio_port, LCD[2].gpio_pin, 0);} LCD.h //====================== // 文件名稱(chēng):lcd.h // 功能概要:lcd構(gòu)件頭文件

      // 版權(quán)所有: 蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)// 版本更新: 2013-03-17 V1.2 //====================== #ifndef LCD_H #define LCD_H #include “GPIOapp.h” //LCD寄存器選擇信號(hào)引腳 #define LCD_RS_PORT PORTD #define LCD_RS 7 //LCD讀寫(xiě)信號(hào)引腳 1

      #define LCD_RW_PORT PORTD #define LCD_RW 6 //LCD讀寫(xiě)信號(hào)引腳

      #define LCD_E_PORT PORTD #define LCD_E 5 //LCD數(shù)據(jù)引腳

      #define LCD_D0_PORT PORTD #define LCD_D0 4 #define LCD_D1_PORT PORTD #define LCD_D1 3 #define LCD_D2_PORT PORTD #define LCD_D2 2 #define LCD_D3_PORT PORTD #define LCD_D3 1 #define LCD_D4_PORT PORTD #define LCD_D4 0 #define LCD_D5_PORT PORTC #define LCD_D5 17 #define LCD_D6_PORT PORTC #define LCD_D6 16 #define LCD_D7_PORT PORTC #define LCD_D7 13 //====================== //函數(shù)名稱(chēng):LCDInit //函數(shù)返回:無(wú) //參數(shù)說(shuō)明:無(wú)

      //功能概要:LCD初始化。

      //====================== extern void LCDInit();1

      //====================== //函數(shù)名稱(chēng):LCDShow //函數(shù)返回:無(wú)

      //參數(shù)說(shuō)明:data[32]:需要顯示的數(shù)組 //功能概要:LCD顯示數(shù)組的內(nèi)容。

      //====================== extern void LCDShow(uint_8 data[32]);#endif //防止重復(fù)定義(結(jié)尾)

      4、輔助函數(shù) /* * qzh.h * * Created on: Jun 5, 2017 * Author: administrator */

      #ifndef QZH_H_ #define QZH_H_ #include “GPIOapp.h” void changeState(int*);//改變工作狀態(tài)函數(shù) int sdmn(int);//濕度變化模擬函數(shù)

      void changeCode(int,uint_8 s[4]);//LED顯示轉(zhuǎn)碼函數(shù) #endif /* QZH_H_ */ /* * fun.c * * Created on: Jun 5, 2017 1

      * Author: administrator */ #include“qzh.h” void changeState(int *a){

      } int sdmn(int a){ } void changeCode(int a,uint_8 s[4]){

      } 1

      if(*a == 0){ } else { } *a = 0;*a = 1;return a-=5;uint_8 c[10] = {'0','1','2','3','4','5','6','7','8','9'};s[3] = c[a%10];s[2] = c[a/10];s[1] = c[a/100];s[0] = c[a/1000];

      第四章 系統(tǒng)測(cè)試

      4.1測(cè)試結(jié)果

      圖4 圖4 是開(kāi)始是濕度顯示是72%,工作狀態(tài)顯示為停止。1

      圖5 圖5 是第二次采集濕度顯示為69%,工作狀態(tài)顯示為停止。1

      圖6 圖6 是第三次采集濕度顯示為66%度,已經(jīng)逼近設(shè)定值65%,此時(shí)工作狀態(tài)顯示為停止。1

      圖7 再次采集時(shí)濕度低于65%,滴灌立即開(kāi)始,濕度上升至75%。1

      第五章 總結(jié)展望

      5.1總結(jié)

      通過(guò)本次課程設(shè)計(jì),對(duì)中斷處理有了更加深入的理解。對(duì)于計(jì)時(shí)器,LED和LCD的工作原理也有了更深的認(rèn)識(shí)。LCD在試驗(yàn)中遇到的問(wèn)題不大,主要問(wèn)題在于中斷處理函數(shù)的編寫(xiě)和LED顯示上,LED顯示是每次中斷顯示一個(gè)數(shù),所以要每次中斷顯示,才能使得四個(gè)值看起來(lái)是同時(shí)顯示的且沒(méi)有閃爍效果。

      其次LED的顯示是要求是字符,所以在顯示濕度是加上了轉(zhuǎn)碼函數(shù)加以轉(zhuǎn)換。這里又涉及到了參數(shù)為數(shù)組的函數(shù)的寫(xiě)法,因?yàn)閷W(xué)過(guò)好幾種語(yǔ)言,其傳遞方式偶所不同所以在這里也出現(xiàn)了不少問(wèn)題。

      通過(guò)此次課程設(shè)計(jì)不僅對(duì)單片機(jī)應(yīng)用有了很好的實(shí)踐經(jīng)驗(yàn),而且也幫助鞏固了以前的知識(shí)。

      5.2展望

      1、滴灌系統(tǒng)可以增加通信模塊,使得所有者可以實(shí)時(shí)監(jiān)測(cè)農(nóng)作物生長(zhǎng)環(huán)境,也可以遠(yuǎn)程操控進(jìn)行滴灌等功能。

      2、滴灌系統(tǒng)可以增加溫度監(jiān)測(cè),土壤酸堿性監(jiān)測(cè),空氣CO2濃度監(jiān)測(cè),并配套處理設(shè)備使得對(duì)農(nóng)作物的管理更加智能化。

      1

      參考文獻(xiàn)

      [1] 王宜懷、張書(shū)奎、王林、吳瑾著.嵌入式技術(shù)基礎(chǔ)與實(shí)踐(第3版),北京:清華大學(xué) 出版社,2011.[2] 田澤.嵌入式系統(tǒng)開(kāi)發(fā)與應(yīng)用.北京:北京航天航空大學(xué)出版社,[3] 王宜懷、陳建明、蔣銀珍著.基于32位ColdFire構(gòu)建嵌入式系統(tǒng).北京:電子工業(yè)出

      版社,2006.[4] 王粉花、王志良.嵌入式系統(tǒng)與單片機(jī)實(shí)踐教程.北京:清華大學(xué)出版社,2010.32 1

      第二篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告

      單片機(jī)課程設(shè)計(jì)報(bào)告

      ? 課程名稱(chēng):?jiǎn)纹瑱C(jī)原理及接口課程設(shè)計(jì)

      ? 題目:基于

      ? 學(xué)院:電氣信息學(xué)院

      ? 專(zhuān)業(yè)班級(jí):測(cè)控技術(shù)與儀器

      ? 姓名:江讓

      ? 學(xué)號(hào):

      ? 指導(dǎo)老師:劉升老師

      ? 時(shí)間:

      C51單片機(jī)的ADC0809數(shù)模轉(zhuǎn)換103班1090640772013/1/16

      第三篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告

      單片機(jī)課程設(shè)計(jì)報(bào)告

      題目:小直流電機(jī)調(diào)速實(shí)驗(yàn)

      教學(xué)單位: 機(jī) 電 工 程 系

      專(zhuān)業(yè): 機(jī)械設(shè)計(jì)制造及其自動(dòng)化

      班級(jí): 0803班學(xué)號(hào): 0811050342姓名: 程懷虎

      2011 年 11月

      (以下內(nèi)容用宋體,五號(hào),單倍行距)

      第四篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告

      DS18B20測(cè)溫及按鍵控制

      課 程 設(shè) 計(jì)

      課程名稱(chēng) 單片機(jī)基礎(chǔ)課程設(shè)計(jì) 題目名稱(chēng) 18B20測(cè)溫及按鍵控制 學(xué)生學(xué)院 **** 專(zhuān)業(yè)班級(jí) **** 班號(hào) **** 學(xué)生組員 ****** 指導(dǎo)教師 *****

      DS18B20測(cè)溫及按鍵控制

      第一章系統(tǒng)的概述及設(shè)計(jì)任務(wù)書(shū)

      摘要和關(guān)鍵詞【摘要】:

      本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)控制器使用單片機(jī)STC89C52,測(cè)溫傳感器使用DS18B20,用4位共陽(yáng)極LED數(shù)碼管以串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求。

      【關(guān)鍵詞】:?jiǎn)纹瑱C(jī),數(shù)字控制,溫度計(jì),DS18B20,STC89C52 設(shè)計(jì)任務(wù)與技術(shù)指標(biāo)

      要求:1.基本范圍-50℃-125℃

      2.精度誤差小于0.5℃ 3.LED數(shù)碼直讀顯示

      總體設(shè)計(jì)方案

      數(shù)字溫度計(jì)設(shè)計(jì)方案論證

      方案一

      由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類(lèi)的器件利用其感溫效應(yīng),在將隨被測(cè)溫度變化的電壓或電流采集過(guò)來(lái),進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來(lái),這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。方案二

      進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿(mǎn)足設(shè)計(jì)要求。

      從以上兩種方案,很容易看出,采用方案二,電路比較簡(jiǎn)單,軟件設(shè)計(jì)也比較簡(jiǎn)單,故采用了方案二。

      方案二的總體設(shè)計(jì)框圖

      溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖1所示,控制器采用單片機(jī)AT89S51,溫度傳感器采用DS18B20,用3位LED數(shù)碼管以串口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示。

      第二章 單元模塊的設(shè)計(jì)與分析

      主控制器:

      單片機(jī)STC89C52,具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿(mǎn)足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用。

      DS18B20測(cè)溫及按鍵控制

      個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式,DS18B20出廠(chǎng)時(shí)該位被設(shè)置為0,用戶(hù)要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率。

      系統(tǒng)軟件算法分析

      系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序等。

      主程序

      主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見(jiàn)圖7所示。3.2讀出溫度子程序

      讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。其程序流程圖如圖8示

      3.3溫度轉(zhuǎn)換命令子程序

      溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開(kāi)始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖9所示

      3.4 計(jì)算溫度子程序

      計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖10所示。

      DS18B20測(cè)溫及按鍵控制

      第三章 實(shí)驗(yàn)程序

      else

      { b=0-b;

      if(b%10==1)f-=1;b=10-(b%10);/*zhwy.c*/ if(b==10)b=0;

      for(i=16;i>0;i--)#include

      led(a,b,c,d);} #include“DS18B20.h” return f;unsigned char table[]= } {0xC0,0xF9,0xA4,0xB0, void main(void)

      0x99,0x92,0x82,0xF8, { unsigned int Sum,k;0x80,0x90,};//不帶小數(shù)點(diǎn)的編碼

      signed int h,j;extern unsigned int temp;LED_init();extern float f_temp;h=0;j=0;unsigned int i;while(1)void LED_init(void){tempchange();{ P2=0x0f;Sum=get_temp();P0=0x00;P2=0xff;} for(k=0;k<100;k++)void led(signed int m,signed int { n,signed int p,signed int q)if(P2==0xf7){ P2=0xef;

      {delay(10);

      P0=table[q];

      if(P2==0xf7)

      delay(5);

      h+=1;

      P2=0xdf;h=display(Sum,h,j);

      P0=table[p];

      }

      delay(5);if(P2==0xfb)

      P2=0xbf;

      {delay(10);

      P0=table[n]+0x80;

      if(P2==0xfb)

      delay(5);

      h-=1;

      P2=0x7f;

      h=display(Sum,h,j);

      P0=table[m];

      }

      delay(5);if(P2==0xfd)}

      {delay(10);unsigned int display(unsigned int

      if(P2==0xfd)y,signed int f,signed int g)

      j+=1;{ signed int a,b,c,d;

      h=display(Sum,h,j);

      a=y/1000;

      } b=(y%1000)/100+f;if(P2==0xfe)c=(y%100)/10+g;

      {delay(10);d=(y%10)/1;

      if(P2==0xfe)if(b<=9&&b>=0)

      j-=1;for(i=16;i>0;i--)

      h=display(Sum,h,j);

      led(a,b,c,d);

      } else if(b>9)

      } {a+=b/10;b=b%10;

      display(Sum,h,j);for(i=16;i>0;i--)} }

      led(a,b,c,d);} void delay(unsigned int z)//延 時(shí)函數(shù)

      /*DS18B20.h */ {unsigned int x,y;sbit ds=P3^5;//溫度傳感器信號(hào)線(xiàn) for(x=z;x>0;x--)unsigned int temp;for(y=110;y>0;y--);float f_temp;} unsigned int warn_l1=260;void dsreset(void)//18B20復(fù)位,unsigned int warn_l2=250;初始化函數(shù) unsigned int warn_h1=300;{unsigned int i;unsigned int warn_h2=320;ds=0;

      i=103;

      DS18B20測(cè)溫及按鍵控制

      總電路圖結(jié)構(gòu)圖

      4總結(jié)與體會(huì)

      經(jīng)過(guò)將近四周的單片機(jī)課程設(shè)計(jì),我終于在參考了眾多程序之后完成了我的數(shù)字溫度計(jì)的設(shè)計(jì),雖然沒(méi)有完全達(dá)到設(shè)計(jì)要求,但我還是高興的,畢竟這次設(shè)

      第五篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告

      《單片機(jī)原理與接口技術(shù)》

      課程設(shè)計(jì)報(bào)告

      設(shè)計(jì)題目: 基于80C51單片機(jī)系統(tǒng)實(shí)驗(yàn)板的制作

      與程序設(shè)計(jì)

      專(zhuān)

      業(yè):應(yīng)用電子專(zhuān)業(yè)

      級(jí): 11應(yīng)電班

      名: 丁文俊

      指導(dǎo)教師: 余靜老師

      2013 年 5 月20 日

      目錄 前 言………………………………………………………………… 2 課程設(shè)計(jì)的目的及要求…………………………………………… 3 硬件電路設(shè)計(jì)……………………………………………………… 4 軟件程序設(shè)計(jì)…………………………………………………… 5 小結(jié)………………………………………………………………

      參考文獻(xiàn) 附錄A 電路總圖 附錄B 程序清單

      基于80C51單片機(jī)系統(tǒng)實(shí)驗(yàn)板的制作與程序設(shè)計(jì)

      1.前言

      2、課程設(shè)計(jì)的目的及要求 2.1課程設(shè)計(jì)目的

      2.2課程設(shè)計(jì)要求

      3、系統(tǒng)主要硬件電路設(shè)計(jì)

      3.1 STC89C51單片機(jī)簡(jiǎn)介

      MCS-51是美國(guó)Intel公司生產(chǎn)的一系列單片機(jī)的總稱(chēng),包括多個(gè)品種,如8031、8051、8751、8032、80C52、8752等。其中8051是最典型的產(chǎn)品,其他單片機(jī)都是在其基礎(chǔ)上進(jìn)行功能增減而來(lái)的,所以人們習(xí)慣于用8051來(lái)稱(chēng)呼MCS-51系列單片機(jī)。Intel公司將MCS-51的核心技術(shù)授權(quán)給了多家公司,這些廠(chǎng)家生產(chǎn)的單片機(jī)在功能上或多或少有些改變,以滿(mǎn)足不同的需求,其中美國(guó)的ATMEL公司生產(chǎn)的AT89C51是曾經(jīng)在我國(guó)非常流行的51單片機(jī)。當(dāng)前AT89C51/52已經(jīng)停產(chǎn),其替代產(chǎn)品為AT89S51/52。深圳宏晶公司出品的STC89C51可以直接代替?zhèn)鹘y(tǒng)的AT89S51和AT89C51芯片,也可以代替菲利普、華幫等其他公司的89C51,由于時(shí)代的發(fā)展,工藝的進(jìn)步,STC89C51功能更強(qiáng),壽命更長(zhǎng)(4K字節(jié)Flash存儲(chǔ)器、128字節(jié)片內(nèi)RAM、支持ISP下載編程)

      圖2.1 STC89c51單片機(jī)

      單片機(jī)的時(shí)鐘信號(hào)用來(lái)提供單片機(jī)片內(nèi)各種微操作的時(shí)間基準(zhǔn),時(shí)鐘信號(hào)通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩。MCS-51單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反向放大器,引腳XTALl和XTAL2分別是此放大電器的輸入端和輸出端,由于采用內(nèi)部方式時(shí),電路簡(jiǎn)單,所得的時(shí)鐘信號(hào)比較穩(wěn)定,實(shí)際使用中常采用這種方式,如圖2-2所示在其外接晶體振蕩器(簡(jiǎn)稱(chēng)晶振)或陶瓷諧振器就構(gòu)成了內(nèi)部振蕩方式,片內(nèi)高增益反向放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起可構(gòu)成一個(gè)自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。

      圖2-2中外接晶體以及電容C2和C1構(gòu)成并聯(lián)諧振電路,它們起穩(wěn)定振蕩頻率、快速起振的作用,其值均為30P左右,晶振頻率選11.0592MHz。

      為了初始化單片機(jī)內(nèi)部的某些特殊功能寄存器,必須采用復(fù)位的方式,復(fù)位后可使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初始狀態(tài)開(kāi)始正常工作。單片機(jī)的復(fù)位是靠外電路來(lái)實(shí)現(xiàn)的,在正常運(yùn)行情況下,只要RST引腳上出現(xiàn)兩個(gè)機(jī)器周期時(shí)間以上的高電平,即可引起系統(tǒng)復(fù)位,但如果RST引腳上持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。復(fù)位后系統(tǒng)將輸入/輸出(1/0)端口寄存器置為FFH,堆棧指針SP置為07H, SBUF內(nèi)置為不定值,其余的寄存器全部清0,內(nèi)部RAM的狀態(tài)不受復(fù)位的影響,在系統(tǒng)上電時(shí)RAM的內(nèi)容是不定的。復(fù)位操作有兩種情況,即上電復(fù)位和手動(dòng)(開(kāi)關(guān))復(fù)位。本系統(tǒng)采用上電復(fù)位方式。圖2-2中R9和Cl組成上電復(fù)位電路,其值R取為10K, C取為10μF.4

      圖2.2 最小系統(tǒng)結(jié)構(gòu)圖

      3.2 電平轉(zhuǎn)換電路 3.3

      4、軟件程序設(shè)計(jì)

      5、小結(jié)

      參考文獻(xiàn)

      [1] 張偉,《單片機(jī)原理及應(yīng)用》,機(jī)械工業(yè)出版社,2005(這是格式)

      附錄

      江西工業(yè)職業(yè)技術(shù)學(xué)院電子與信息工程系

      課程設(shè)計(jì)指導(dǎo)教師評(píng)語(yǔ)

      班級(jí):

      學(xué)生姓名:

      學(xué)號(hào):

      指導(dǎo)教師評(píng)語(yǔ)(包括工作態(tài)度,遵守紀(jì)律;基本理論、知識(shí)、技能;獨(dú)立工作能力和分析解決問(wèn)題的能力;完成任務(wù)情況及水平):

      學(xué)生成績(jī)(五級(jí)分制):

      指導(dǎo)教師簽名:

      ****年**月**日

      下載單片機(jī)課程設(shè)計(jì)報(bào)告word格式文檔
      下載單片機(jī)課程設(shè)計(jì)報(bào)告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        單片機(jī)課程設(shè)計(jì)實(shí)習(xí)報(bào)告

        單片機(jī)課程設(shè)計(jì)實(shí)習(xí)報(bào)告 課程 2009-06-09 23:23:55 閱讀1900 評(píng)論2 字號(hào):大中小 訂閱 實(shí)訓(xùn)任務(wù): 做單一燈的左移右移,八個(gè)發(fā)光二極管L1-L8分別接在單片機(jī)的P1.0→P1.2→P1.3......

        單片機(jī)課程設(shè)計(jì)報(bào)告[5篇]

        《單片機(jī)課程設(shè)計(jì)報(bào)告》 學(xué)校:專(zhuān)業(yè):班級(jí): 姓名: 學(xué)號(hào): 指導(dǎo)教師: 摘要 由于單片機(jī)體積小、成本低、使用方便,所以被廣泛地應(yīng)用于儀器儀表、現(xiàn)場(chǎng)數(shù)據(jù)的采集和控制。通過(guò)本次課程......

        單片機(jī)計(jì)算器課程設(shè)計(jì)報(bào)告

        大連民族學(xué)院2007級(jí)電子信息工程專(zhuān)業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告 機(jī)電信息工程學(xué)院 單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告 完成日期:2010年5月31日 系: 專(zhuān)業(yè): 班級(jí): 設(shè)計(jì)題目: 學(xué)生姓名: 指導(dǎo)教師:......

        單片機(jī)課程設(shè)計(jì)報(bào)告(范文)

        片 機(jī) 課 程 設(shè) 計(jì) 報(bào)學(xué)號(hào)、姓名:年級(jí)、專(zhuān)業(yè):培養(yǎng)層次:課程名稱(chēng):授課學(xué)時(shí)學(xué)分:考試成績(jī):授課或主講教師簽字:?jiǎn)?告1 單片機(jī)最小系統(tǒng)功能說(shuō)明單片機(jī)的最小系統(tǒng)是由組成單片機(jī)系統(tǒng)必......

        單片機(jī)課程設(shè)計(jì)實(shí)習(xí)報(bào)告

        單片機(jī)課程設(shè)計(jì)實(shí)習(xí)報(bào)告本文由xiexiebang.com004km.cn小編推薦給大家參考閱讀!實(shí)訓(xùn)任務(wù):做單一燈的左移右移,八個(gè)發(fā)光二極管l1-l8分別接在單片機(jī)的p1.0→p1.2→p1.3......

        單片機(jī)課程設(shè)計(jì)報(bào)告--高云

        臨沂師范學(xué)院信息學(xué)院07級(jí)電子信息科學(xué)與技術(shù)高云200707840111一、實(shí)驗(yàn)?zāi)康模?.掌握在8031系統(tǒng)中擴(kuò)展8279鍵盤(pán)顯示接口的方法。2.掌握8279的工作原理和編程方法。3.進(jìn)一步掌握......

        PIC單片機(jī)課程設(shè)計(jì)報(bào)告

        河北聯(lián)合大學(xué)輕工學(xué)院QINGGONG COLLEGE, HEBEI UNITED UNIVERSITY《PIC單片機(jī)課程設(shè)計(jì)》學(xué)生姓名: 學(xué)號(hào): 學(xué)部:專(zhuān)業(yè)班級(jí):指導(dǎo)教師:年月日一、課程設(shè)計(jì)目的本課程設(shè)計(jì)是在《PIC單......

        單片機(jī)課程設(shè)計(jì)報(bào)告規(guī)范

        《單片機(jī)原理與應(yīng)用》課程設(shè)計(jì)規(guī)范1.課程設(shè)計(jì)說(shuō)明書(shū)的組成A.封面:采用學(xué)院統(tǒng)一規(guī)定的封面。題目不超過(guò)25個(gè)字,要簡(jiǎn)練準(zhǔn)確,可分兩行書(shū)寫(xiě)。B.課程設(shè)計(jì)任務(wù)書(shū):采用學(xué)院規(guī)定的統(tǒng)一格式,......