

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 溫度測(cè)量系統(tǒng)</b></p><p><b> 1.1 系統(tǒng)概要</b></p><p><b> 1.1.1 引言</b></p><p> 溫度是表征物體冷熱程度的物理量。溫度通過(guò)物體隨溫度變化的某些特性來(lái)間接測(cè)量。溫度的測(cè)量和控制在激光器、光纖光柵的使用及其他
2、的工農(nóng)業(yè)生產(chǎn)和科學(xué)研究中應(yīng)用廣泛。溫度檢測(cè)的傳統(tǒng)方法是使用諸如熱電偶、熱電阻、半導(dǎo)體PN結(jié)之類的模擬溫度傳感器。信號(hào)經(jīng)取樣、放大后通過(guò)模數(shù)轉(zhuǎn)換,再交自單片機(jī)處理。被測(cè)溫度信號(hào)從溫敏元件到單片機(jī),經(jīng)過(guò)眾多器件,易受干擾、不易控制且精度不高。因此,本設(shè)計(jì)介紹了一種溫度傳感器選用LM35、單片機(jī)選用MC908GP32的溫度測(cè)量系統(tǒng)。它能通過(guò)與單片機(jī),完成溫度采集和數(shù)據(jù)處理。該系統(tǒng)的溫度測(cè)量范圍為0~99℃,可以精確到一位小數(shù),可適用于工業(yè)場(chǎng)合
3、及日常生活中[6]。</p><p> 1.1.2 系統(tǒng)結(jié)構(gòu)分析</p><p> 本測(cè)溫系統(tǒng)由溫度傳感器電路、信號(hào)放大電路、A/D轉(zhuǎn)換電路、單片機(jī)系統(tǒng)、溫度顯示系統(tǒng)構(gòu)成,如圖1所示。其基本工作原理:溫度傳感器電路將測(cè)量到的溫度信號(hào)轉(zhuǎn)換成電壓信號(hào)輸出到信號(hào)放大電路,與溫度值對(duì)應(yīng)的電壓信號(hào)經(jīng)放大后輸出至A/D轉(zhuǎn)換電路,把電壓信號(hào)轉(zhuǎn)換成數(shù)字量送給單片機(jī)系統(tǒng),單片機(jī)系統(tǒng)根據(jù)顯示需要對(duì)數(shù)字量進(jìn)
4、行處理,再送溫度顯示系統(tǒng)進(jìn)行顯示。如圖2所示[2]。1.2 硬件電路設(shè)計(jì)</p><p> 1.2.1 硬件電路圖</p><p> 1.2.2 溫度傳感器電路 </p><p> 溫度傳感器采用的是NS公司生產(chǎn)的LM35,它具有很高的工作精度和較寬的線性工作范圍,它的輸出電壓與攝氏溫度線性成比例,且無(wú)需外部校準(zhǔn)或微調(diào),可以提供±1/4℃的常用的室溫
5、精度。LM35的輸出電壓與攝氏溫度的線形關(guān)系可用下面公式表示,0℃時(shí)輸出為0 V,每升高1℃,輸出電壓增加10 mV。其電源供應(yīng)模式有單電源與正負(fù)雙電源兩種,其接法如圖3與圖4所示。正負(fù)雙電源的供電模式可提供負(fù)溫度的測(cè)量,單電源模式在25℃下電流約為50 mA,非常省電。本系統(tǒng)采用的是單電源模式。</p><p> 1.2.3 信號(hào)放大電路</p><p> 由于溫度傳感器LM35輸出
6、的電壓范圍為0~0.99 V,雖然該電壓范圍在A/D轉(zhuǎn)換器的輸入允許電壓范圍內(nèi),但該電壓信號(hào)較弱,如果不進(jìn)行放大直接進(jìn)行A/D轉(zhuǎn)換則會(huì)導(dǎo)致轉(zhuǎn)換成的數(shù)字量太小、精度低。系統(tǒng)中選用通用型放大器μA741對(duì)LM35輸出的電壓信號(hào)進(jìn)行幅度放大,還可對(duì)其進(jìn)行阻抗匹配、波形變換、噪聲抑制等處理。系統(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)換,是將電壓信號(hào)轉(zhuǎn)換為對(duì)應(yīng)的數(shù)字信號(hào)。</p><p> 1.2.4.1 進(jìn)行A/D轉(zhuǎn)換的基本問(wèn)題: </p><p> ?。?)采樣精度 數(shù)字量變化一個(gè)最小量時(shí)模擬信號(hào)的變化量,即采樣位數(shù)。 </p><p> (2)采樣速率 完成一次A/D采
8、樣所要花費(fèi)的時(shí)間。 </p><p> ?。?)濾波 對(duì)采樣的數(shù)據(jù)進(jìn)行篩選去掉誤差較大的毛刺。 </p><p> (4)物理量回歸 把A/D采樣值與實(shí)際物理量對(duì)應(yīng)起來(lái)。 </p><p> 1.2.4.2 A/D轉(zhuǎn)換模塊的基本編程方法</p><p> ?。?)A/D轉(zhuǎn)換初始化 對(duì)ADCLK寫入控制字節(jié),決定時(shí)鐘輸入源是內(nèi)部總線還是外
9、部晶振,決定分頻系數(shù)等。 </p><p> (2)啟動(dòng)A/D轉(zhuǎn)換 對(duì)ADSCR寫入控制字節(jié),選取要轉(zhuǎn)換的通道、決定轉(zhuǎn)換結(jié)束數(shù)據(jù)獲取的方式、設(shè)置是連續(xù)轉(zhuǎn)換還是一次轉(zhuǎn)換等。 </p><p> ?。?)獲A/D轉(zhuǎn)換結(jié)果 若是中斷方式,在A/D中斷程序中取得,若是查詢方式,通過(guò)ADSCR的第7位(COCO位)取得,當(dāng)COCO=1時(shí)可從ADR中取數(shù)。 </p><p&g
10、t; 1.2.4.3 A/D芯片TCL2543概述</p><p> ?。?)TLC2543的引腳說(shuō)明</p><p> 圖 6 TLC2543引腳圖</p><p> ?。?) TLC2543的編程要點(diǎn),控制字的格式控制字為從DATA INPUT端串行輸入TLC2543芯片內(nèi)部的8位數(shù)據(jù),它告訴TLC2543要轉(zhuǎn)換的模擬量通道、轉(zhuǎn)換后的輸出數(shù)據(jù)長(zhǎng)度、輸出數(shù)據(jù)
11、的格式。 </p><p> ?。?) TLC2543的內(nèi)部寄存器,輸入數(shù)據(jù)寄存器存放從DATA INPUT端移入的控制字。輸出數(shù)據(jù)寄存器存放轉(zhuǎn)換好的數(shù)據(jù),以供從DATA OUT端移出。轉(zhuǎn)換過(guò)程上電后,片選CS必須從高到低,才能開(kāi)始一次工作周期,此時(shí)EOC為高,輸入數(shù)據(jù)寄存器被置0,輸出數(shù)據(jù)寄存器內(nèi)容是隨機(jī)的。開(kāi)始時(shí),片選CS為高,I/O CLOCK、DATA INPUT被禁止,DATA OUT呈高阻態(tài),EOC
12、為高。使CS變低,I/O CLOCK、DATA INPUT使能,DATA OUT脫離高阻態(tài)。12個(gè)時(shí)鐘信號(hào)從I/O CLOCK端依次加入,控制字從DATA INPUT一位一位地在時(shí)鐘信號(hào)的上升沿時(shí)被送入TLC2543(高位先送入),同時(shí)上一周期轉(zhuǎn)換的A/D數(shù)據(jù),即輸出數(shù)據(jù)寄存器中的數(shù)據(jù)從DATA OUT一位一位地移出。TLC2543收到第4個(gè)時(shí)鐘信號(hào)后,通道號(hào)也已收到,因此,此時(shí)TLC2543開(kāi)始對(duì)選定通道的模擬量進(jìn)行采樣,并保持到第1
13、2個(gè)時(shí)鐘的下降沿。在第12個(gè)時(shí)鐘下降沿,EOC變低,開(kāi)始對(duì)本次采樣的模擬量進(jìn)行A/D轉(zhuǎn)換,轉(zhuǎn)換時(shí)間約需10μs,轉(zhuǎn)換完成EOC變高,轉(zhuǎn)換的數(shù)據(jù)在輸出數(shù)據(jù)寄存器中,待下一個(gè)工作周</p><p> ?。?)TLC2543與MCU的接口方法,TLC2543與微處理器芯片的接口部分有五個(gè)引腳,分別是:時(shí)鐘輸入(I/O CLOCK)、串行控制字輸入(DATA INPUT)、片選輸入(CS)、A/D轉(zhuǎn)換串行數(shù)據(jù)輸出(DAT
14、A OUTPUT) 、轉(zhuǎn)換結(jié)束電平輸出(EOC)。經(jīng)分析TLC2543的工作時(shí)序,可以通過(guò)軟件估計(jì)轉(zhuǎn)換結(jié)束,免去EOC接線。TLC2543與具有SPI或相同接口能力的MCU可以直接連接,對(duì)于沒(méi)有SPI接口的MCU可以通過(guò)軟件編程合成SPI操作。擴(kuò)展電路設(shè)計(jì),SPI模塊與TLC2543的接口擴(kuò)展。如下圖[1]。</p><p> 1.2.5 單片機(jī)系統(tǒng)</p><p> 單片機(jī)選用的是F
15、reescale公司的MC908GP32,主要完成對(duì)A/D轉(zhuǎn)換電路的控制、對(duì)轉(zhuǎn)換后的數(shù)字量的處理以及對(duì)顯示模塊的控制,并且為ADC0809提供工作時(shí)鐘。其具體連接電路。如圖2所示。</p><p> 1.2.5.1 MC908GP32單片機(jī)性能概述</p><p> MC908GP32有40腳、42腳、44腳三種封裝形式; MC908GP32的主要特點(diǎn)概述如下:</p>
16、<p> ?。?)512B片內(nèi)RAM;32K片內(nèi)Flash程序存儲(chǔ)器,具有在線編程能力和保密功能</p><p> ?。?)時(shí)鐘發(fā)生器模塊,具有32KHz晶振PLL電路,可產(chǎn)生各種工作頻率;8MHz內(nèi)部總線頻率 </p><p> ?。?)系統(tǒng)保護(hù)特性:計(jì)算機(jī)工作正常(COP)復(fù)位;低電壓檢測(cè)復(fù)位,可選為3V或5V操作;非法指令碼檢測(cè)復(fù)位;非法地址檢測(cè)復(fù)位。 </p>
17、<p> ?。?)優(yōu)化用于控制應(yīng)用;優(yōu)化支持C語(yǔ)言。</p><p> ?。?)33根通用I/O腳,包括26根多功能I/O腳和5或7根專用I/O腳;PTA、PTC和PTD的輸入口有可選擇的上拉電阻;PTC0—PTC4有15mA吸流和放流能力,其他口有10mA吸流和放流能力 (總體驅(qū)動(dòng)電流應(yīng)小于150mA);所有口有最高5mA輸入電流保護(hù)功能 </p><p> (6)增強(qiáng)型
18、串行通訊口SCI;串行外圍接口SPI;兩個(gè)16位雙通道定時(shí)器接口模塊(TIM1和TIM2),每個(gè)通道可選擇為輸入捕捉、輸出比較和PWM,其時(shí)鐘可分別選為內(nèi)部時(shí)鐘的1、2、4、8、6、32和64的分頻值;帶時(shí)鐘預(yù)分頻的定時(shí)基模塊有8種周期性實(shí)時(shí)中斷(1、4、16、256、512、1024、2048和4096Hz),可在STOP方式時(shí)使用外部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> 存儲(chǔ)器 定時(shí)接口模塊 定時(shí)基模塊 看門狗模塊</p><p> 斷點(diǎn)模塊 串行通信接口SCI 串行外設(shè)接口SPI 并行
20、I/O接口 A/D轉(zhuǎn)換模塊 鍵盤中斷模塊系統(tǒng)設(shè)置模塊 低電壓禁止模塊 CPU08 </p><p> 時(shí)鐘發(fā)生模塊及鎖相環(huán)電路 復(fù)位與中斷模塊 監(jiān)控模塊MON </p><p> 1.2.5.4 GP32最小系統(tǒng)</p><p> 硬件結(jié)構(gòu),但僅有一個(gè)MCU是無(wú)法工作的,它必須與以MC908GP32單片機(jī)為原型的HC08系列MCU
21、的其他相應(yīng)的外圍電路一起,才能構(gòu)成一個(gè)最小系統(tǒng)。MC908GP32芯片(以40腳封裝為例)最小系統(tǒng)的外圍支撐電路包括電源與濾波電路、晶振電路和復(fù)位電路。</p><p> 1.2.5.5 MC908GP32最小系統(tǒng)電路圖</p><p> 圖 9 MC908GP32最小系統(tǒng)電路圖</p><p> 1.2.5.6 MC908GP32CB核心板實(shí)物圖 <
22、/p><p> 圖 10 MC908GP32CB核心板實(shí)物圖 </p><p> 1.2.6 溫度顯示系統(tǒng)</p><p> 該溫度顯示系統(tǒng)較為簡(jiǎn)單,由可編程并行輸入輸出芯片8255A的A,B,C端口外接3個(gè)8段LED顯示器來(lái)實(shí)現(xiàn)。MC908GP32的P2.6為8255提供片選信號(hào),74LS373的Q7,Q6接8255的A1,A0,可得到8255的A,B,C及控
23、制口的地址為BF3FH,BF7FH,BFBFH,BFFFH。MC908GP32處理好的溫度數(shù)據(jù)輸出至8255,并由MC908GP32對(duì)8255編程控制其A,B,C端口輸出高電平或低電平,以便從8段LED顯示器顯示實(shí)際溫度。8段LED顯示器選用共陽(yáng)極,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,譯為:“標(biāo)準(zhǔn)不歸零傳號(hào)/空號(hào)數(shù)據(jù)格式”?!安粴w零”的最初含義是:用正、負(fù)電平表示二進(jìn)制值,不使用零電平。“mark/space”即“傳號(hào)/空號(hào)”分別是表示兩種狀態(tài)的物理名稱,邏輯名稱記為“1/0”。 </p><p> 1.2.7.1 RS-
25、232C總線標(biāo)準(zhǔn)</p><p> ?。?)MCU引腳一般輸入/輸出使用TTL電平,而TTL電平的“1”和“0”的特征電壓分別為2.4V和0.4V,適用于板內(nèi)數(shù)據(jù)傳輸。為了使信號(hào)傳輸?shù)酶h(yuǎn),美國(guó)電子工業(yè)協(xié)會(huì)EIA(Electronic Industry Association) 制訂了串行物理接口標(biāo)準(zhǔn)RS-232C。RS-232C采用負(fù)邏輯,-3V~-15V為邏輯“1”,+3V~+15V為邏輯“0”。RS-232
26、C最大的傳輸距離是30m,通信速率一般低于20Kbps。 </p><p> ?。?)RS-232接口,簡(jiǎn)稱“串口”,它主要用于連接具有同樣接口的室內(nèi)設(shè)備。目前幾乎所有計(jì)算機(jī)上的串行口都是9芯接口。下圖給出了9芯串行接口的排列位置,相應(yīng)引腳含義見(jiàn)下表[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電平,通過(guò)RS-232電平轉(zhuǎn)換芯片轉(zhuǎn)換為RS-232電平。下圖給出一個(gè)基本SCI電平轉(zhuǎn)換電路</p><p> 圖 12 基本SCI電平轉(zhuǎn)換電路&l
28、t;/p><p> 1.3 系統(tǒng)軟件設(shè)計(jì)</p><p> 系統(tǒng)的軟件部分用C語(yǔ)言編程,采用模塊化結(jié)構(gòu),主要由A/D轉(zhuǎn)換模塊、單片機(jī)內(nèi)部數(shù)據(jù)處理模塊、溫度顯示模塊等3部分構(gòu)成,便于修改和維護(hù)。</p><p> 1.3.1 A/D轉(zhuǎn)換模塊</p><p> 根據(jù)測(cè)量系統(tǒng)要求不同以及單片機(jī)的忙閑程度,通??刹捎?種軟件編程方式:程序查詢方式
29、,延時(shí)方式和中斷方式。本系統(tǒng)采用延時(shí)方式。延時(shí)程序?qū)嶋H上是無(wú)條件傳送I/O方式,當(dāng)向A/D轉(zhuǎn)換器發(fā)出啟動(dòng)命令后,即進(jìn)行軟件延時(shí),延時(shí)時(shí)間稍大于進(jìn)行一次A/D轉(zhuǎn)換所需要的時(shí)間,之后打開(kāi)A/D轉(zhuǎn)換器的輸出緩沖器讀數(shù)即為轉(zhuǎn)換好的數(shù)字量。A/D轉(zhuǎn)換時(shí)間為64個(gè)時(shí)鐘周期,因?yàn)橄到y(tǒng)中ADC0809的工作時(shí)鐘為500 kHz,故A/D轉(zhuǎn)換時(shí)間為128 μs,延時(shí)時(shí)間可大致選擇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> //功能:設(shè)置A/D轉(zhuǎn)換時(shí)鐘頻率為1MHz </p><p> //------------------------------------------------------
36、-------------------*</p><p> void ADCinit(void)</p><p><b> {</b></p><p> ADCLK = 0b00110000; </p><p> //||||||||_______不用</p><p> //||
37、||___________選擇內(nèi)部總線時(shí)鐘</p><p> //|||____________分頻系數(shù)為2 </p><p><b> }</b></p><p> //ADCave:1路A/D轉(zhuǎn)換函數(shù)(均值濾波)------------------------------------------*</p><
38、p> //功能:通道channel進(jìn)行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、道號(hào)ADch4-ADch0 = 00000-00111:AD0引腳 ~ AD7引腳</p><p> channel &= 0b00011111; //取通道號(hào)變量的低五位(實(shí)際通道號(hào))</p><p> tmp = ADSCR & 0b11100000; //取ADSCR的高三位(取上電復(fù)位默認(rèn)值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 單片機(jī)內(nèi)部數(shù)據(jù)處理模塊</p&
56、gt;<p> 1.3.2.1 內(nèi)部數(shù)據(jù)處理</p><p> 系統(tǒng)通過(guò)TLC2543轉(zhuǎn)換的數(shù)字量是與實(shí)際溫度成正比的數(shù)字量,但系統(tǒng)最后顯示的是實(shí)際溫度值,因此需要對(duì)數(shù)據(jù)進(jìn)行處理再通過(guò)8255輸出到LED顯示。設(shè)所測(cè)溫度值為T,A/D轉(zhuǎn)換后的數(shù)字量為X,則有:</p><p> VOUT=0.01 V/℃×T℃</p><p> VO
57、UT為L(zhǎng)M35的輸出電壓,即運(yùn)放μA741的輸入電壓,μA741的輸出電壓用V1表示。因?yàn)棣藺741的放大倍數(shù)為5,則有:</p><p> V1=5×VOUT=0.05×T</p><p> 根據(jù)系統(tǒng)設(shè)置,溫度傳感器輸出電壓0~5 V對(duì)應(yīng)于轉(zhuǎn)換后的數(shù)字量0~255,則有: 0.05T/5=X/255</p><p
58、> 可以近似寫為: 0.05T/5=X/256</p><p> 這樣除以256可通過(guò)把被除數(shù)右移8位來(lái)實(shí)現(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ū)滿標(biāo)志位</p><p> #define SendTestBit 7 //發(fā)送緩沖區(qū)空標(biāo)志位</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ū)動(dòng)文件包括SCI初始化、接收1字節(jié)、發(fā)送1字節(jié)、接收n
63、字節(jié)和發(fā)送n字節(jié)函數(shù)。讀者可以直接使用這些函數(shù)進(jìn)行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> //功能:對(duì)串行口進(jìn)行初始化,默認(rèn)為允許SCI,正常碼輸出,8位數(shù) *</p><p> 據(jù),無(wú)校驗(yàn),
66、 *</p><p> //允許發(fā)送器,允許接收器.查詢方式收發(fā),波特率為9600(設(shè)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.設(shè)置允許SCI,正常碼輸出,8位數(shù)據(jù),無(wú)校驗(yàn)</p><p> SCC1 = 0b01000000; </p><p> //3.設(shè)置允許發(fā)送,允許接收,查詢方式收發(fā)</p><p> SCC2 = 0b00001100;</p><p><b> }&l
69、t;/b></p><p> //SCIsend1:串行發(fā)送1個(gè)字節(jié)-----------------------------*</p><p> //功能:串行發(fā)送1個(gè)字節(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個(gè)字節(jié)-----------------------------------*</p><p> //功能:發(fā)送數(shù)組中的N個(gè)字節(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:串行收一個(gè)字節(jié)數(shù)據(jù)------------------------------------------------
75、*</p><p> //功能:從串行口接收1個(gè)字節(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個(gè)字節(jié)-----------------------------------------*</p><p> //功能:接收N個(gè)字節(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> 單片機(jī)處理好的溫度數(shù)據(jù)通過(guò)8255的3個(gè)端口輸出到3個(gè)LED上顯示,8255的A,B,C口的工作方式均設(shè)置為方
85、式0,輸出。編程時(shí)只需分別從40H,41H,42H單元取數(shù)據(jù)送A,B,C口輸出即可。</p><p><b> 1.4 結(jié)語(yǔ)</b></p><p> 該測(cè)溫系統(tǒng)經(jīng)過(guò)多次測(cè)試,工作穩(wěn)定可靠,體積小、集成度高、靈敏度高、響應(yīng)時(shí)間短、抗干擾能力強(qiáng)等特點(diǎn)。此外該系統(tǒng)成本低廉,器件均為常規(guī)元件,有很高的工程價(jià)值。如稍加改動(dòng),該系統(tǒng)可以很方便地?cái)U(kuò)展為集溫度測(cè)量、控制為一體的
86、產(chǎn)品,具有一定工程應(yīng)用價(jià)值。如對(duì)該系統(tǒng)進(jìn)一步擴(kuò)展,還可以實(shí)現(xiàn)利用USB協(xié)議標(biāo)準(zhǔn)與PC機(jī)進(jìn)行數(shù)據(jù)通信,能夠把監(jiān)測(cè)到的溫度值保存到PC機(jī)中。</p><p> 雖然時(shí)間倉(cāng)促,但此次設(shè)計(jì)能完成基本的測(cè)量溫度的功能。在此次設(shè)計(jì)過(guò)程中,學(xué)到了一些新的知識(shí),在此基礎(chǔ)上,對(duì)MC908GP32單片機(jī)又有了進(jìn)一步的了解與認(rèn)識(shí)。但畢竟知識(shí)與時(shí)間有限,這次自己對(duì)設(shè)計(jì)還有未認(rèn)清與未能完善的地方,在老師的指導(dǎo)下現(xiàn)在基本上是完成了設(shè)計(jì)的要
87、求。</p><p><b> 參考文獻(xiàn):</b></p><p> 【1】王宜懷,劉曉升.嵌入式技術(shù)基礎(chǔ)與實(shí)踐.北京:清華大學(xué)出版社,2007.</p><p> 【2】譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第二版).北京:清華大學(xué)出版社,2006.</p><p> 【3】趙晶.Protel99高級(jí)應(yīng)用 北京:人民郵電出版
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式控制系統(tǒng)畢業(yè)論文
- 嵌入式開(kāi)發(fā)畢業(yè)論文
- 嵌入式系統(tǒng)的設(shè)計(jì)、開(kāi)發(fā)畢業(yè)論文
- 基于嵌入式開(kāi)發(fā)畢業(yè)論文
- 基于嵌入式開(kāi)發(fā)畢業(yè)論文
- 基于嵌入式linux視頻監(jiān)控系統(tǒng)畢業(yè)論文
- 基于嵌入式linux視頻監(jiān)控系統(tǒng)畢業(yè)論文
- 嵌入式模糊pid溫度控制實(shí)現(xiàn)設(shè)計(jì)【自動(dòng)化畢業(yè)論文】
- 嵌入式電機(jī)控制系統(tǒng)設(shè)計(jì)(硬件)畢業(yè)論文
- 嵌入式模糊pid溫度控制實(shí)現(xiàn)設(shè)計(jì)【自動(dòng)化畢業(yè)論文】
- 畢業(yè)論文—arm9嵌入式系統(tǒng)編程
- 基于嵌入式的網(wǎng)站設(shè)計(jì)【畢業(yè)論文】
- 測(cè)控技術(shù)與儀器 畢業(yè)論文范文——嵌入式溫度測(cè)試儀
- 嵌入式課程設(shè)計(jì)報(bào)告畢業(yè)論文
- 嵌入式課程設(shè)計(jì)報(bào)告畢業(yè)論文
- 基于嵌入式指紋識(shí)別系統(tǒng)設(shè)計(jì)-畢業(yè)論文
- 嵌入式web服務(wù)器畢業(yè)論文
- 嵌入式linux移動(dòng)數(shù)據(jù)采集系統(tǒng)硬件設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文--嵌入式linux移動(dòng)數(shù)據(jù)采集系統(tǒng)硬件設(shè)計(jì)
- 畢業(yè)論文--基于arm的嵌入式車燈檢測(cè)系統(tǒng)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論