2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  溫度測量系統(tǒng)</b></p><p><b>  1.1 系統(tǒng)概要</b></p><p><b>  1.1.1 引言</b></p><p>  溫度是表征物體冷熱程度的物理量。溫度通過物體隨溫度變化的某些特性來間接測量。溫度的測量和控制在激光器、光纖光柵的使用及其他

2、的工農(nóng)業(yè)生產(chǎn)和科學研究中應用廣泛。溫度檢測的傳統(tǒng)方法是使用諸如熱電偶、熱電阻、半導體PN結(jié)之類的模擬溫度傳感器。信號經(jīng)取樣、放大后通過模數(shù)轉(zhuǎn)換,再交自單片機處理。被測溫度信號從溫敏元件到單片機,經(jīng)過眾多器件,易受干擾、不易控制且精度不高。因此,本設計介紹了一種溫度傳感器選用LM35、單片機選用MC908GP32的溫度測量系統(tǒng)。它能通過與單片機,完成溫度采集和數(shù)據(jù)處理。該系統(tǒng)的溫度測量范圍為0~99℃,可以精確到一位小數(shù),可適用于工業(yè)場合

3、及日常生活中[6]。</p><p>  1.1.2 系統(tǒng)結(jié)構(gòu)分析</p><p>  本測溫系統(tǒng)由溫度傳感器電路、信號放大電路、A/D轉(zhuǎn)換電路、單片機系統(tǒng)、溫度顯示系統(tǒng)構(gòu)成,如圖1所示。其基本工作原理:溫度傳感器電路將測量到的溫度信號轉(zhuǎn)換成電壓信號輸出到信號放大電路,與溫度值對應的電壓信號經(jīng)放大后輸出至A/D轉(zhuǎn)換電路,把電壓信號轉(zhuǎn)換成數(shù)字量送給單片機系統(tǒng),單片機系統(tǒng)根據(jù)顯示需要對數(shù)字量進

4、行處理,再送溫度顯示系統(tǒng)進行顯示。如圖2所示[2]。1.2 硬件電路設計</p><p>  1.2.1 硬件電路圖</p><p>  1.2.2 溫度傳感器電路 </p><p>  溫度傳感器采用的是NS公司生產(chǎn)的LM35,它具有很高的工作精度和較寬的線性工作范圍,它的輸出電壓與攝氏溫度線性成比例,且無需外部校準或微調(diào),可以提供±1/4℃的常用的室溫

5、精度。LM35的輸出電壓與攝氏溫度的線形關(guān)系可用下面公式表示,0℃時輸出為0 V,每升高1℃,輸出電壓增加10 mV。其電源供應模式有單電源與正負雙電源兩種,其接法如圖3與圖4所示。正負雙電源的供電模式可提供負溫度的測量,單電源模式在25℃下電流約為50 mA,非常省電。本系統(tǒng)采用的是單電源模式。</p><p>  1.2.3 信號放大電路</p><p>  由于溫度傳感器LM35輸出

6、的電壓范圍為0~0.99 V,雖然該電壓范圍在A/D轉(zhuǎn)換器的輸入允許電壓范圍內(nèi),但該電壓信號較弱,如果不進行放大直接進行A/D轉(zhuǎn)換則會導致轉(zhuǎn)換成的數(shù)字量太小、精度低。系統(tǒng)中選用通用型放大器μA741對LM35輸出的電壓信號進行幅度放大,還可對其進行阻抗匹配、波形變換、噪聲抑制等處理。系統(tǒng)采取同相輸入,電壓放大倍數(shù)為5倍,電路圖如圖5所示[5]。</p><p>  1.2.4 A/D轉(zhuǎn)換模塊</p>

7、<p>  A/D轉(zhuǎn)換模塊(Analog To Digital Convert Module),即模數(shù)轉(zhuǎn)換,是將電壓信號轉(zhuǎn)換為對應的數(shù)字信號。</p><p>  1.2.4.1 進行A/D轉(zhuǎn)換的基本問題: </p><p>  (1)采樣精度 數(shù)字量變化一個最小量時模擬信號的變化量,即采樣位數(shù)。 </p><p> ?。?)采樣速率 完成一次A/D采

8、樣所要花費的時間。 </p><p>  (3)濾波 對采樣的數(shù)據(jù)進行篩選去掉誤差較大的毛刺。 </p><p> ?。?)物理量回歸 把A/D采樣值與實際物理量對應起來。 </p><p>  1.2.4.2 A/D轉(zhuǎn)換模塊的基本編程方法</p><p> ?。?)A/D轉(zhuǎn)換初始化 對ADCLK寫入控制字節(jié),決定時鐘輸入源是內(nèi)部總線還是外

9、部晶振,決定分頻系數(shù)等。 </p><p> ?。?)啟動A/D轉(zhuǎn)換 對ADSCR寫入控制字節(jié),選取要轉(zhuǎn)換的通道、決定轉(zhuǎn)換結(jié)束數(shù)據(jù)獲取的方式、設置是連續(xù)轉(zhuǎn)換還是一次轉(zhuǎn)換等。 </p><p>  (3)獲A/D轉(zhuǎn)換結(jié)果 若是中斷方式,在A/D中斷程序中取得,若是查詢方式,通過ADSCR的第7位(COCO位)取得,當COCO=1時可從ADR中取數(shù)。 </p><p&g

10、t;  1.2.4.3 A/D芯片TCL2543概述</p><p> ?。?)TLC2543的引腳說明</p><p>  圖 6 TLC2543引腳圖</p><p>  (2) TLC2543的編程要點,控制字的格式控制字為從DATA INPUT端串行輸入TLC2543芯片內(nèi)部的8位數(shù)據(jù),它告訴TLC2543要轉(zhuǎn)換的模擬量通道、轉(zhuǎn)換后的輸出數(shù)據(jù)長度、輸出數(shù)據(jù)

11、的格式。 </p><p> ?。?) TLC2543的內(nèi)部寄存器,輸入數(shù)據(jù)寄存器存放從DATA INPUT端移入的控制字。輸出數(shù)據(jù)寄存器存放轉(zhuǎn)換好的數(shù)據(jù),以供從DATA OUT端移出。轉(zhuǎn)換過程上電后,片選CS必須從高到低,才能開始一次工作周期,此時EOC為高,輸入數(shù)據(jù)寄存器被置0,輸出數(shù)據(jù)寄存器內(nèi)容是隨機的。開始時,片選CS為高,I/O CLOCK、DATA INPUT被禁止,DATA OUT呈高阻態(tài),EOC

12、為高。使CS變低,I/O CLOCK、DATA INPUT使能,DATA OUT脫離高阻態(tài)。12個時鐘信號從I/O CLOCK端依次加入,控制字從DATA INPUT一位一位地在時鐘信號的上升沿時被送入TLC2543(高位先送入),同時上一周期轉(zhuǎn)換的A/D數(shù)據(jù),即輸出數(shù)據(jù)寄存器中的數(shù)據(jù)從DATA OUT一位一位地移出。TLC2543收到第4個時鐘信號后,通道號也已收到,因此,此時TLC2543開始對選定通道的模擬量進行采樣,并保持到第1

13、2個時鐘的下降沿。在第12個時鐘下降沿,EOC變低,開始對本次采樣的模擬量進行A/D轉(zhuǎn)換,轉(zhuǎn)換時間約需10μs,轉(zhuǎn)換完成EOC變高,轉(zhuǎn)換的數(shù)據(jù)在輸出數(shù)據(jù)寄存器中,待下一個工作周</p><p>  (4)TLC2543與MCU的接口方法,TLC2543與微處理器芯片的接口部分有五個引腳,分別是:時鐘輸入(I/O CLOCK)、串行控制字輸入(DATA INPUT)、片選輸入(CS)、A/D轉(zhuǎn)換串行數(shù)據(jù)輸出(DAT

14、A OUTPUT) 、轉(zhuǎn)換結(jié)束電平輸出(EOC)。經(jīng)分析TLC2543的工作時序,可以通過軟件估計轉(zhuǎn)換結(jié)束,免去EOC接線。TLC2543與具有SPI或相同接口能力的MCU可以直接連接,對于沒有SPI接口的MCU可以通過軟件編程合成SPI操作。擴展電路設計,SPI模塊與TLC2543的接口擴展。如下圖[1]。</p><p>  1.2.5 單片機系統(tǒng)</p><p>  單片機選用的是F

15、reescale公司的MC908GP32,主要完成對A/D轉(zhuǎn)換電路的控制、對轉(zhuǎn)換后的數(shù)字量的處理以及對顯示模塊的控制,并且為ADC0809提供工作時鐘。其具體連接電路。如圖2所示。</p><p>  1.2.5.1 MC908GP32單片機性能概述</p><p>  MC908GP32有40腳、42腳、44腳三種封裝形式; MC908GP32的主要特點概述如下:</p>

16、<p> ?。?)512B片內(nèi)RAM;32K片內(nèi)Flash程序存儲器,具有在線編程能力和保密功能</p><p> ?。?)時鐘發(fā)生器模塊,具有32KHz晶振PLL電路,可產(chǎn)生各種工作頻率;8MHz內(nèi)部總線頻率 </p><p> ?。?)系統(tǒng)保護特性:計算機工作正常(COP)復位;低電壓檢測復位,可選為3V或5V操作;非法指令碼檢測復位;非法地址檢測復位。 </p>

17、<p> ?。?)優(yōu)化用于控制應用;優(yōu)化支持C語言。</p><p> ?。?)33根通用I/O腳,包括26根多功能I/O腳和5或7根專用I/O腳;PTA、PTC和PTD的輸入口有可選擇的上拉電阻;PTC0—PTC4有15mA吸流和放流能力,其他口有10mA吸流和放流能力 (總體驅(qū)動電流應小于150mA);所有口有最高5mA輸入電流保護功能 </p><p> ?。?)增強型

18、串行通訊口SCI;串行外圍接口SPI;兩個16位雙通道定時器接口模塊(TIM1和TIM2),每個通道可選擇為輸入捕捉、輸出比較和PWM,其時鐘可分別選為內(nèi)部時鐘的1、2、4、8、6、32和64的分頻值;帶時鐘預分頻的定時基模塊有8種周期性實時中斷(1、4、16、256、512、1024、2048和4096Hz),可在STOP方式時使用外部32KHz晶振周期性喚醒CPU;8位鍵盤喚醒口。</p><p>  1.2

19、.5.2 MC908GP32結(jié)構(gòu)框圖(44Pin)</p><p>  圖8 MC908GP32結(jié)構(gòu)圖</p><p>  1.2.5.3 GP32內(nèi)部有以下主要部分:</p><p>  存儲器 定時接口模塊 定時基模塊 看門狗模塊</p><p>  斷點模塊 串行通信接口SCI 串行外設接口SPI 并行

20、I/O接口 A/D轉(zhuǎn)換模塊 鍵盤中斷模塊系統(tǒng)設置模塊 低電壓禁止模塊 CPU08 </p><p>  時鐘發(fā)生模塊及鎖相環(huán)電路 復位與中斷模塊 監(jiān)控模塊MON </p><p>  1.2.5.4 GP32最小系統(tǒng)</p><p>  硬件結(jié)構(gòu),但僅有一個MCU是無法工作的,它必須與以MC908GP32單片機為原型的HC08系列MCU

21、的其他相應的外圍電路一起,才能構(gòu)成一個最小系統(tǒng)。MC908GP32芯片(以40腳封裝為例)最小系統(tǒng)的外圍支撐電路包括電源與濾波電路、晶振電路和復位電路。</p><p>  1.2.5.5 MC908GP32最小系統(tǒng)電路圖</p><p>  圖 9 MC908GP32最小系統(tǒng)電路圖</p><p>  1.2.5.6 MC908GP32CB核心板實物圖 <

22、/p><p>  圖 10 MC908GP32CB核心板實物圖 </p><p>  1.2.6 溫度顯示系統(tǒng)</p><p>  該溫度顯示系統(tǒng)較為簡單,由可編程并行輸入輸出芯片8255A的A,B,C端口外接3個8段LED顯示器來實現(xiàn)。MC908GP32的P2.6為8255提供片選信號,74LS373的Q7,Q6接8255的A1,A0,可得到8255的A,B,C及控

23、制口的地址為BF3FH,BF7FH,BFBFH,BFFFH。MC908GP32處理好的溫度數(shù)據(jù)輸出至8255,并由MC908GP32對8255編程控制其A,B,C端口輸出高電平或低電平,以便從8段LED顯示器顯示實際溫度。8段LED顯示器選用共陽極,8255的A,B,C端口與8段LED顯示器之間接限流電阻,圖2中只畫出了PA口,PB,PC口的接法類似[4]。</p><p>  1.2.7 異步串行通信的格式&l

24、t;/p><p>  SCI通常采用NRZ數(shù)據(jù)格式,即:standard non-return-zero mark/space data format,譯為:“標準不歸零傳號/空號數(shù)據(jù)格式”?!安粴w零”的最初含義是:用正、負電平表示二進制值,不使用零電平。“mark/space”即“傳號/空號”分別是表示兩種狀態(tài)的物理名稱,邏輯名稱記為“1/0”。 </p><p>  1.2.7.1 RS-

25、232C總線標準</p><p>  (1)MCU引腳一般輸入/輸出使用TTL電平,而TTL電平的“1”和“0”的特征電壓分別為2.4V和0.4V,適用于板內(nèi)數(shù)據(jù)傳輸。為了使信號傳輸?shù)酶h,美國電子工業(yè)協(xié)會EIA(Electronic Industry Association) 制訂了串行物理接口標準RS-232C。RS-232C采用負邏輯,-3V~-15V為邏輯“1”,+3V~+15V為邏輯“0”。RS-232

26、C最大的傳輸距離是30m,通信速率一般低于20Kbps。 </p><p>  (2)RS-232接口,簡稱“串口”,它主要用于連接具有同樣接口的室內(nèi)設備。目前幾乎所有計算機上的串行口都是9芯接口。下圖給出了9芯串行接口的排列位置,相應引腳含義見下表[3]</p><p>  圖 11 9芯串行接口排列圖</p><p>  1.2.7.2 SCI的外圍硬件電路

27、</p><p>  具有SCI接口的MCU,一般具有發(fā)送引腳(TxD)與接收引腳(RxD),不同公司或不同系列的MCU,使用的引腳縮寫名可能不一致,但含義相同。SCI的外圍硬件電路,主要目的是將MCU的發(fā)送引腳TxD與接收引腳RxD的TTL電平,通過RS-232電平轉(zhuǎn)換芯片轉(zhuǎn)換為RS-232電平。下圖給出一個基本SCI電平轉(zhuǎn)換電路</p><p>  圖 12 基本SCI電平轉(zhuǎn)換電路&l

28、t;/p><p>  1.3 系統(tǒng)軟件設計</p><p>  系統(tǒng)的軟件部分用C語言編程,采用模塊化結(jié)構(gòu),主要由A/D轉(zhuǎn)換模塊、單片機內(nèi)部數(shù)據(jù)處理模塊、溫度顯示模塊等3部分構(gòu)成,便于修改和維護。</p><p>  1.3.1 A/D轉(zhuǎn)換模塊</p><p>  根據(jù)測量系統(tǒng)要求不同以及單片機的忙閑程度,通常可采用3種軟件編程方式:程序查詢方式

29、,延時方式和中斷方式。本系統(tǒng)采用延時方式。延時程序?qū)嶋H上是無條件傳送I/O方式,當向A/D轉(zhuǎn)換器發(fā)出啟動命令后,即進行軟件延時,延時時間稍大于進行一次A/D轉(zhuǎn)換所需要的時間,之后打開A/D轉(zhuǎn)換器的輸出緩沖器讀數(shù)即為轉(zhuǎn)換好的數(shù)字量。A/D轉(zhuǎn)換時間為64個時鐘周期,因為系統(tǒng)中ADC0809的工作時鐘為500 kHz,故A/D轉(zhuǎn)換時間為128 μs,延時時間可大致選擇160μs。程序段如下[1]:</p><p>  

30、//[ADC.h]A/D轉(zhuǎn)換頭文件------------------------------------------------------</p><p>  #include "GP32C.h" //GP32 MCU映像寄存器名定義</p><p>  #include "Type.h"

31、 //類型別名定義</p><p>  #define COCOBit 7</p><p>  void ADCinit(void); //A/D轉(zhuǎn)換初始化 </p><p>  INT8U ADCvalue(INT8U ch

32、annel); //1路A/D轉(zhuǎn)換函數(shù)</p><p>  INT8U ADCmid(INT8U channel); //1路A/D轉(zhuǎn)換函數(shù)(中值濾波) </p><p>  INT8U ADCave(INT8U channel, INT8U n); //1路A/D轉(zhuǎn)換函數(shù)(均值濾波)</p><p>  //[AD

33、C.c]A/D轉(zhuǎn)換-----------------------------------------------------------*</p><p>  //硬件連接: </p><p>  // PTB0/AD0 接模擬量輸入端

34、 </p><p>  //-------------------------------------------------------------------------*</p><p>  #include "ADC.h"</p><p>  //ADCinit:A/D轉(zhuǎn)換初始

35、化----------------------------------------------------*</p><p>  //功能:設置A/D轉(zhuǎn)換時鐘頻率為1MHz </p><p>  //------------------------------------------------------

36、-------------------*</p><p>  void ADCinit(void)</p><p><b>  {</b></p><p>  ADCLK = 0b00110000; </p><p>  //||||||||_______不用</p><p>  //||

37、||___________選擇內(nèi)部總線時鐘</p><p>  //|||____________分頻系數(shù)為2 </p><p><b>  }</b></p><p>  //ADCave:1路A/D轉(zhuǎn)換函數(shù)(均值濾波)------------------------------------------*</p><

38、p>  //功能:通道channel進行n次中值濾波,求和再作均值,得出均值濾波結(jié)果 </p><p>  //-------------------------------------------------------------------------*</p><p>  INT8U ADCave(INT8U channel, INT8U n) <

39、/p><p><b>  {</b></p><p><b>  INT8U i;</b></p><p><b>  INT16U j;</b></p><p><b>  j = 0;</b></p><p>  for (i =

40、 0; i < n; i++)</p><p>  j += ADCmid(channel);</p><p><b>  j = j/n;</b></p><p>  return (INT8U)j;</p><p><b>  }</b></p><p>  //A

41、DCmid:1路A/D轉(zhuǎn)換函數(shù)(中值濾波)------------------------------------------*</p><p>  //功能:獲取通道channel中值濾波后的A/D轉(zhuǎn)換結(jié)果 </p><p>  //-------------------------------------------------

42、------------------------*</p><p>  INT8U ADCmid(INT8U channel) </p><p><b>  {</b></p><p>  INT8U i,j,k,tmp;</p><p>  //1.取三次A/D轉(zhuǎn)換結(jié)果</p><p>  i

43、= ADCvalue(channel);</p><p>  j = ADCvalue(channel);</p><p>  k = ADCvalue(channel);</p><p>  if (i > j) </p><p><b>  {</b></p><p><b>

44、  tmp = i;</b></p><p><b>  i = j;</b></p><p>  j = tmp;</p><p><b>  }</b></p><p>  if (k > i)</p><p><b>  {</

45、b></p><p>  if (k > j)</p><p><b>  {</b></p><p><b>  tmp = j;</b></p><p><b>  }</b></p><p><b>  else</b&

46、gt;</p><p><b>  {</b></p><p><b>  tmp = k;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else&l

47、t;/b></p><p><b>  {</b></p><p><b>  tmp = i;</b></p><p><b>  }</b></p><p>  return tmp;</p><p><b>  }</b>

48、;</p><p>  //ADCvalue:1路A/D轉(zhuǎn)換函數(shù)--------------------------------------------------*</p><p>  //功能:獲取通道channel的A/D轉(zhuǎn)換結(jié)果 </p><p>  //-------------

49、------------------------------------------------------------*</p><p>  INT8U ADCvalue(INT8U channel)</p><p><b>  {</b></p><p>  INT8U tmp;</p><p>  //1. 選取通

50、道號ADch4-ADch0 = 00000-00111:AD0引腳 ~ AD7引腳</p><p>  channel &= 0b00011111; //取通道號變量的低五位(實際通道號)</p><p>  tmp = ADSCR & 0b11100000; //取ADSCR的高三位(取上電復位默認值000)</p><p>  

51、ADSCR = tmp | channel; //合并上述8位</p><p>  //2. 取A/D轉(zhuǎn)換結(jié)果</p><p>  while ((ADSCR & (1<<COCOBit)) == 0);</p><p>  return ADR;</p><p><b>  }</b>&

52、lt;/p><p><b>  //總頭文件</b></p><p>  #include "Includes.h"</p><p><b>  //主程序</b></p><p>  void main(void)</p><p><b>  {&

53、lt;/b></p><p>  DisableMCUint(); //禁止總中斷</p><p>  //1. 芯片初始化</p><p>  MCUinit(); </p><p>  //2. 模塊初始化</p><p>  SCIinit(); //(1) 串行口初始化

54、</p><p>  ADCinit(); //(2) A/D轉(zhuǎn)換初始化</p><p><b>  while (1)</b></p><p><b>  {</b></p><p>  //在通道0做A/D轉(zhuǎn)換,200次中值濾波,串口發(fā)送均值濾波結(jié)果</p><p>

55、;  SCIsend1(ADCave(0, 200));</p><p><b>  }</b></p><p><b>  }</b></p><p>  注:為了使采樣數(shù)據(jù)更穩(wěn)定可靠,系統(tǒng)還采用了采樣平均值的方法以消除干擾。 </p><p>  1.3.2 單片機內(nèi)部數(shù)據(jù)處理模塊</p&

56、gt;<p>  1.3.2.1 內(nèi)部數(shù)據(jù)處理</p><p>  系統(tǒng)通過TLC2543轉(zhuǎn)換的數(shù)字量是與實際溫度成正比的數(shù)字量,但系統(tǒng)最后顯示的是實際溫度值,因此需要對數(shù)據(jù)進行處理再通過8255輸出到LED顯示。設所測溫度值為T,A/D轉(zhuǎn)換后的數(shù)字量為X,則有:</p><p>  VOUT=0.01 V/℃×T℃</p><p>  VO

57、UT為LM35的輸出電壓,即運放μA741的輸入電壓,μA741的輸出電壓用V1表示。因為μA741的放大倍數(shù)為5,則有:</p><p>  V1=5×VOUT=0.05×T</p><p>  根據(jù)系統(tǒng)設置,溫度傳感器輸出電壓0~5 V對應于轉(zhuǎn)換后的數(shù)字量0~255,則有: 0.05T/5=X/255</p><p

58、>  可以近似寫為: 0.05T/5=X/256</p><p>  這樣除以256可通過把被除數(shù)右移8位來實現(xiàn)。由此可以得出X和T的關(guān)系:</p><p>  T=100×X/256</p><p>  1.3.2.2 串口子程序</p><p>  //[SCI.h]串行通信頭文件---------------

59、----------- </p><p>  #include "GP32C.h" //GP32 MCU映像寄存器名定義</p><p>  #include "Type.h" //類型別名定義</p><p>  #define ReSendStatusR SCS1

60、 //SCI狀態(tài)寄存器</p><p>  #define ReTestBit 5 //接收緩沖區(qū)滿標志位</p><p>  #define SendTestBit 7 //發(fā)送緩沖區(qū)空標志位</p><p>  #define ReSendDataR SCDR //數(shù)據(jù)寄存器</p><p>

61、  void SCIinit(void); //串行口初始化</p><p>  void SCIsend1(INT8U o); //發(fā)送1字節(jié)</p><p>  void SCIsendN(INT8U n, INT8U ch[]); //發(fā)送n字節(jié)</p><p>  INT8U SCIre1(INT

62、8U *p); //接收1字節(jié)</p><p>  INT8U SCIreN(INT8U n, INT8U ch[]); //接收n字節(jié)</p><p>  _____________________________________________</p><p>  串行通信驅(qū)動文件包括SCI初始化、接收1字節(jié)、發(fā)送1字節(jié)、接收n

63、字節(jié)和發(fā)送n字節(jié)函數(shù)。讀者可以直接使用這些函數(shù)進行MCU的串行通信編程。</p><p>  //[SCI.c]串行通信----------------------------------------------------------*</p><p>  //硬件連接:

64、 </p><p>  // MCU的串口與PC方的串口相連 </p><p>  //-------------------------------------------------------------------------*</p><p>  #incl

65、ude "SCI.h"</p><p>  //SCIinit:串行口初始化----------------------------------------*</p><p>  //功能:對串行口進行初始化,默認為允許SCI,正常碼輸出,8位數(shù) *</p><p>  據(jù),無校驗,

66、 *</p><p>  //允許發(fā)送器,允許接收器.查詢方式收發(fā),波特率為9600(設fBUS *</p><p>  = 2.4576MHz) *</p><p>  //--------------------

67、----------------------------------------*</p><p>  void SCIinit(void)</p><p><b>  {</b></p><p>  //1.總線頻率fBUS = 2.4576MHz,定義波特率Bt = 9600</p><p>  SCBR = 0b0

68、0000010;</p><p>  //2.設置允許SCI,正常碼輸出,8位數(shù)據(jù),無校驗</p><p>  SCC1 = 0b01000000; </p><p>  //3.設置允許發(fā)送,允許接收,查詢方式收發(fā)</p><p>  SCC2 = 0b00001100;</p><p><b>  }&l

69、t;/b></p><p>  //SCIsend1:串行發(fā)送1個字節(jié)-----------------------------*</p><p>  //功能:串行發(fā)送1個字節(jié) *</p><p>  //---------------------------------------------

70、--------*</p><p>  void SCIsend1(INT8U o)</p><p><b>  {</b></p><p>  //判斷ReStatusR的第SendTestBit位是否為1,是1可以發(fā)送</p><p><b>  while (1)</b></p>

71、<p>  if ((ReSendStatusR & (1<<SendTestBit)) != 0)</p><p><b>  {</b></p><p>  ReSendDataR = o;</p><p><b>  break;</b></p><p><

72、;b>  }</b></p><p><b>  }</b></p><p>  //SCIsendN:串行發(fā)送N個字節(jié)-----------------------------------*</p><p>  //功能:發(fā)送數(shù)組中的N個字節(jié)數(shù)據(jù) *</p&g

73、t;<p>  //-----------------------------------------------------------*</p><p>  void SCIsendN(INT8U n, INT8U ch[])</p><p><b>  {</b></p><p><b>  int i;</

74、b></p><p>  for(i=0; i<n; i++)</p><p>  SCIsend1(ch[i]);</p><p><b>  }</b></p><p>  //SCIre1:串行收一個字節(jié)數(shù)據(jù)------------------------------------------------

75、*</p><p>  //功能:從串行口接收1個字節(jié)的數(shù)據(jù) </p><p>  //-------------------------------------------------------------------------*</p><p>  INT8U SCIre1(

76、INT8U *p)</p><p><b>  {</b></p><p><b>  INT16U k;</b></p><p><b>  INT8U i;</b></p><p>  //ReStatusR第ReTestBit位為1表示可接收數(shù)據(jù)</p>

77、<p>  for(k=0; k < 0xfbbb; k++)</p><p>  if ((ReSendStatusR & (1<<ReTestBit)) != 0)</p><p><b>  {</b></p><p>  i = ReSendDataR;</p><p>  

78、*p = 0x00;</p><p><b>  break;</b></p><p><b>  } </b></p><p><b>  //接受失敗</b></p><p>  if (k >= 0xfbbb)</p><p><b&g

79、t;  {</b></p><p>  i = 0xff;</p><p>  *p = 0x01;</p><p><b>  }</b></p><p><b>  return i;</b></p><p><b>  }</b>&l

80、t;/p><p>  //SCIreN:HC08串行接收N個字節(jié)-----------------------------------------*</p><p>  //功能:接收N個字節(jié)數(shù)據(jù),并存放在ch數(shù)組中 </p><p>  //-----------------------------------

81、--------------------------------*</p><p>  INT8U SCIreN(INT8U n, INT8U ch[])</p><p><b>  {</b></p><p><b>  int m;</b></p><p><b>  INT8U fp

82、;</b></p><p><b>  m = 0;</b></p><p>  while (m < n)</p><p><b>  {</b></p><p>  ch[m] = SCIre1(&fp);</p><p>  if (fp ==

83、 1)</p><p><b>  {</b></p><p><b>  return 1;</b></p><p><b>  }</b></p><p><b>  m++;</b></p><p><b>  }&

84、lt;/b></p><p><b>  return 0;</b></p><p><b>  }[2]</b></p><p>  1.3.3 溫度顯示模塊 </p><p>  單片機處理好的溫度數(shù)據(jù)通過8255的3個端口輸出到3個LED上顯示,8255的A,B,C口的工作方式均設置為方

85、式0,輸出。編程時只需分別從40H,41H,42H單元取數(shù)據(jù)送A,B,C口輸出即可。</p><p><b>  1.4 結(jié)語</b></p><p>  該測溫系統(tǒng)經(jīng)過多次測試,工作穩(wěn)定可靠,體積小、集成度高、靈敏度高、響應時間短、抗干擾能力強等特點。此外該系統(tǒng)成本低廉,器件均為常規(guī)元件,有很高的工程價值。如稍加改動,該系統(tǒng)可以很方便地擴展為集溫度測量、控制為一體的

86、產(chǎn)品,具有一定工程應用價值。如對該系統(tǒng)進一步擴展,還可以實現(xiàn)利用USB協(xié)議標準與PC機進行數(shù)據(jù)通信,能夠把監(jiān)測到的溫度值保存到PC機中。</p><p>  雖然時間倉促,但此次設計能完成基本的測量溫度的功能。在此次設計過程中,學到了一些新的知識,在此基礎(chǔ)上,對MC908GP32單片機又有了進一步的了解與認識。但畢竟知識與時間有限,這次自己對設計還有未認清與未能完善的地方,在老師的指導下現(xiàn)在基本上是完成了設計的要

87、求。</p><p><b>  參考文獻:</b></p><p>  【1】王宜懷,劉曉升.嵌入式技術(shù)基礎(chǔ)與實踐.北京:清華大學出版社,2007.</p><p>  【2】譚浩強.C語言程序設計(第二版).北京:清華大學出版社,2006.</p><p>  【3】趙晶.Protel99高級應用 北京:人民郵電出版

溫馨提示

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

評論

0/150

提交評論