溫測(cè)控儀設(shè)計(jì)畢業(yè)設(shè)計(jì)_第1頁(yè)
溫測(cè)控儀設(shè)計(jì)畢業(yè)設(shè)計(jì)_第2頁(yè)
溫測(cè)控儀設(shè)計(jì)畢業(yè)設(shè)計(jì)_第3頁(yè)
溫測(cè)控儀設(shè)計(jì)畢業(yè)設(shè)計(jì)_第4頁(yè)
溫測(cè)控儀設(shè)計(jì)畢業(yè)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、溫度測(cè)控儀設(shè)計(jì)學(xué)生:XXX 指導(dǎo)教師:XXX內(nèi)容摘要:本文主要介紹了智能溫度測(cè)量?jī)x的設(shè)計(jì),包括硬件和軟件的設(shè)計(jì)。先對(duì)該測(cè)量?jī)x進(jìn)行概括性介紹,然后介紹該測(cè)量?jī)x在硬件設(shè)計(jì)上的主要器件:“Pt100熱電阻”、AT89C51單片機(jī)和LCD顯示器以及描述測(cè)量?jī)x的總體結(jié)構(gòu)原理。在本設(shè)計(jì)中,是以鉑電阻PT100作為溫度傳感器,采用恒流測(cè)溫的方法,通過(guò)單片機(jī)進(jìn)行控制,用放大器、A/D轉(zhuǎn)換器進(jìn)行溫度信號(hào)的采集??傮w來(lái)說(shuō),該設(shè)計(jì)是切實(shí)可行的。 關(guān)鍵詞:溫度 Pt100熱電阻 AT89C51單片機(jī) LCD顯示器Design of and control instrumentAbstract: This paper

2、describes the design of the intelligent temperature measuring instrument, including hardware and software design. Be the first general description of the measuring instrument, and then describes the hardware design of the measuring instrument's main device: "Pt100 thermal resistance",

3、AT89C51 microcontroller and LCD display, and describe the principle of measuring the overall structure. In this design, as is the PT100 platinum resistance temperature sensor, temperature measurement using constant current method, through the microcontroller to control, amplifier, A/D converter for

4、temperature signal acquisition. Overall, the design is feasible. Keywords: temperature Pt100 thermal resistance AT89C51 microcontroller LCD monitor.目 錄前言11 總體硬件方案設(shè)計(jì)11.1 溫度傳感器的放大電路設(shè)計(jì)21.2 TLC549 模數(shù)轉(zhuǎn)化電路設(shè)計(jì)41.3 顯示電路設(shè)計(jì)51.4 無(wú)線發(fā)送與接收模塊的選擇與設(shè)計(jì)51.5 鍵盤(pán)設(shè)計(jì)62 總體的軟件程序的設(shè)計(jì)62.1 溫度數(shù)據(jù)采集和數(shù)據(jù)處理子程序的設(shè)計(jì)62.2 溫度顯示、保存處理的子程序設(shè)計(jì)72.3

5、 無(wú)線發(fā)送與接受的子程序的設(shè)計(jì)72.4 十組溫度查詢的子程序設(shè)計(jì)93 調(diào)試與結(jié)果分析103.1 調(diào)試儀器及方法103.3 軟、硬件調(diào)試與故障原因分析104 結(jié)束語(yǔ)10附錄1:硬件原理圖及PCB板12附錄2:軟件程序代碼13參考文獻(xiàn)34溫度測(cè)控儀的設(shè)計(jì)前言隨著工業(yè)生產(chǎn)效率的不斷提高,自動(dòng)化水平與范圍也不斷擴(kuò)大,因而對(duì)溫度檢測(cè)技術(shù)的要求也愈來(lái)愈高, 現(xiàn)在工業(yè)上通用的溫度檢測(cè)范圍為2003000,而今后要求能測(cè)量超高溫度與超低溫度。尤其是液化氣體的極低溫度測(cè)量更為迫切,入10K以下溫度測(cè)量為當(dāng)今研究的重要課題。溫度檢測(cè)技術(shù)將會(huì)由點(diǎn)測(cè)溫發(fā)展到線、面,甚至立體的測(cè)溫。應(yīng)用范圍已經(jīng)從土業(yè)領(lǐng)域延伸到環(huán)境保護(hù)

6、、家用電器、汽車工業(yè)以及航天工業(yè)領(lǐng)域。發(fā)展新型產(chǎn)品利用以前的檢測(cè)技術(shù)生產(chǎn)處適應(yīng)于不同場(chǎng)合、不同工況要求的新型產(chǎn)品,以滿足用戶需要。同時(shí)利用新的檢測(cè)技術(shù)制造出新的產(chǎn)品。對(duì)許多場(chǎng)合中的溫度檢測(cè)器有特殊要求,入防硫、防爆、耐磨等性能要求;又如移動(dòng)物體和高速旋轉(zhuǎn)物體的測(cè)溫、鋼水的連續(xù)測(cè)溫、火焰溫度檢測(cè)等。因此,本設(shè)計(jì)方向就是在溫度測(cè)量遠(yuǎn)距離傳送和保存方面進(jìn)行有效的探索。1 總體硬件方案設(shè)計(jì)本系統(tǒng)分為兩大部分,一部分為溫度采集模塊、51單片機(jī)及發(fā)送模塊,另一部分為遠(yuǎn)距離數(shù)據(jù)的接收模塊與51單片機(jī)。溫度采集及發(fā)送部分:本設(shè)計(jì)利用AD590進(jìn)行溫度的測(cè)量,在經(jīng)過(guò)電壓跟隨器,放大電路放大、調(diào)整之后通過(guò)A/D轉(zhuǎn)

7、換器TLC549將模擬電壓信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),A/D轉(zhuǎn)換之后的數(shù)據(jù)送到單片機(jī)1進(jìn)行處理,單片機(jī)1控制液晶顯示器,將溫度值在液晶顯示器上進(jìn)行顯示,在通過(guò)PT2262進(jìn)行無(wú)線發(fā)送。接收及顯示部分:用SC2272進(jìn)行無(wú)線接收,接收后的數(shù)據(jù)送到單片機(jī)2,單片機(jī)2控制液晶顯示器進(jìn)行顯示。單片機(jī)1顯示模塊A/D采集模塊AD590溫度測(cè)量PT2262發(fā)送 圖1-1 發(fā)送模塊框架圖 顯示模塊單片機(jī)2PT2272接收 圖1-2 接收模塊框架圖1.1 溫度傳感器的放大電路設(shè)計(jì)AD590是美國(guó)模擬器件公司生產(chǎn)的單片集成兩端感溫電流源,它會(huì)將溫度轉(zhuǎn)換為電流,在8051的各種課本中經(jīng)常看到。其規(guī)格如下: 度每增加1,它

8、會(huì)增加1A輸出電流 可測(cè)量范圍-55至150 供電電壓范圍+4V至+30VAD590的管腳圖及元件符號(hào)如下圖所示: 圖 1.1-1 AD590管腳圖AD590的輸出電流值說(shuō)明如下: 其輸出電流是以絕對(duì)溫度零度(-273)為基準(zhǔn),每增加1,它會(huì)增加1A輸出電流,因此在室溫25時(shí),其輸出電流Iout=(273+25)=298A。AD590基本應(yīng)用電路: 圖 1.1-2 基本應(yīng)用電路 AD590的輸出電流I=(273+T)uA(T為攝氏溫度),因此測(cè)量的電壓為(273+T)A×10K=(2.73+T/100)V。為了將電壓測(cè)量出來(lái)又務(wù)須使輸出電流I不分流出來(lái),我們使用電壓跟隨器其輸出電壓V

9、2等于輸入電壓V。 由于一般電源供應(yīng)教多器件之后,電源是帶雜波的,因此我們使用齊納二極管作為穩(wěn)壓元件,再利用可變電阻分壓,其輸出電壓V1需調(diào)整至2.73V。 接下來(lái)我們使用差動(dòng)放大器其輸出Vo1為(100K/10K)×(V2-V1)=T/10,如果現(xiàn)在為攝氏28,輸出電壓為2.8V,輸出電壓接AD轉(zhuǎn)換器,那么AD轉(zhuǎn)換輸出的數(shù)字量就和攝氏溫度成線形比例關(guān)系。 通過(guò)R9和R12進(jìn)行分壓,V0=T/20,因?yàn)闇y(cè)試溫度不大于100,使得最終輸出最大Vo為(1/2)×10=5V;能在A/D轉(zhuǎn)換器TCL549的輸入電壓范圍輸入0.3VVCC +0.3V之內(nèi)。溫度采集電路圖采用智能化間歇

10、數(shù)據(jù)采集,即首先把溫度變化值分為報(bào)警溫度、預(yù)警溫度、準(zhǔn)預(yù)警溫度、正常溫度四個(gè)檔次。當(dāng)溫度處于正常情況下時(shí),溫度采集周期為30min,若某一點(diǎn)的溫度有變化,當(dāng)接近準(zhǔn)預(yù)警點(diǎn)時(shí),采集周期變化為10min,若溫度仍有提高達(dá)到預(yù)警溫度,則采集周期為3min,一旦出現(xiàn)報(bào)警溫度,系統(tǒng)進(jìn)入實(shí)時(shí)采集狀態(tài),并發(fā)出報(bào)警。 圖1-3 溫度采集電路 1.2 TLC549 模數(shù)轉(zhuǎn)化電路設(shè)計(jì)TLC549是8位串行A/D轉(zhuǎn)換器芯片,可與通用微處理器、控制器通過(guò)CLK、CS、DATA OUT三條口線進(jìn)行串行接口。具有4MHz片內(nèi)系統(tǒng)時(shí)鐘和軟、硬件控制電路,轉(zhuǎn)換時(shí)間最長(zhǎng)17s, TLC549為40 000次/s??偸д{(diào)誤差最大為

11、±0.5LSB,典型功耗值為6mW。采用差分參考電壓高阻輸入,抗干擾,可按比例量程校準(zhǔn)轉(zhuǎn)換范圍,VREF-接地,VREF+VREF-1V,可用于較小信號(hào)的采樣。 其工作原理為:TLC549均有片內(nèi)系統(tǒng)時(shí)鐘,該時(shí)鐘與I/O CLOCK是獨(dú)立工作的,無(wú)須特殊的速度或相位匹配。其工作時(shí)序如圖2所示。當(dāng)CS為高時(shí),數(shù)據(jù)輸出(DATA OUT)端處于高阻狀態(tài),此時(shí)I/O CLOCK不起作用。這種CS控制作用允許在同時(shí)使用多片TLC549時(shí),共用I/O CLOCK,以減少多路(片)A/D并用時(shí)的I/O控制端口。將V0的電壓值輸入TLC549進(jìn)行AD轉(zhuǎn)換,從芯片的DO腳輸出,然后由單片機(jī)讀取。兩個(gè)

12、4148二極管是進(jìn)行電源穩(wěn)壓的,R7,R8進(jìn)行參考電壓設(shè)置,基本上等于5V。圖1.2-1 模數(shù)轉(zhuǎn)換電路1.3 顯示電路設(shè)計(jì)1602液晶已經(jīng)包括在單片機(jī)學(xué)習(xí)板內(nèi)了,在這里只稍微介紹它的引腳功能。D0D7是命令/數(shù)據(jù)口,接單片機(jī)的P1口,由單片機(jī)讀(寫(xiě))命令(數(shù)據(jù)),RS是命令/數(shù)據(jù)的選擇端口,RW是讀/寫(xiě)的選擇端口,E是1602的使能端。1602有它自己的字庫(kù),用戶只需寫(xiě)入相應(yīng)的代碼并控制好1602給出的時(shí)序就可以在液晶屏上顯示希望得到的字符或圖像了。圖1.3-1 液晶顯示屏1.4 無(wú)線發(fā)送與接收模塊的選擇與設(shè)計(jì)PT2262 、SC2272是一種CMOS工藝制造的編碼電路。采集的溫度信號(hào)可以通過(guò)

13、PT2262編碼,通過(guò)17腳輸出到射頻發(fā)射模塊的數(shù)據(jù)輸入端發(fā)射出去,與此同時(shí)射頻接收模塊接收后將數(shù)據(jù)送到解碼芯片SC2272,其地址經(jīng)過(guò)核對(duì)與SC2272的地址匹配后,SC2272的VT腳才輸出高電平,與此同時(shí)PT2262相應(yīng)的數(shù)據(jù)腳也輸出高電平。圖1.4-1 PT2262引腳圖圖1.4-2 PT2262時(shí)序圖1.5 鍵盤(pán)設(shè)計(jì)獨(dú)立鍵盤(pán)也包括在單片機(jī)學(xué)習(xí)板內(nèi),P3.2接單片機(jī)的外部中斷。 圖1.5-1 獨(dú)立鍵盤(pán)引腳圖2 總體的軟件程序的設(shè)計(jì)2.1 溫度數(shù)據(jù)采集和數(shù)據(jù)處理子程序的設(shè)計(jì)經(jīng)AD590采集的溫度轉(zhuǎn)化為了電壓值,然后經(jīng)放大電路處理后,使輸出電壓V=T/20,這樣才能保證TLC549的輸入電

14、壓不大于基準(zhǔn)電壓。在硬件調(diào)試時(shí),基準(zhǔn)電壓設(shè)置成5V,所以在程序處理時(shí)要將從TLC549得到的數(shù)字值乘以5/255才能得到電壓V,然后再乘以20才能得到溫度(此時(shí)的溫度是雙精度型的)。中值濾波是為了得到很短時(shí)間的溫度平均值,有穩(wěn)定數(shù)值的作用。開(kāi)啟轉(zhuǎn)換 將轉(zhuǎn)換的結(jié)果進(jìn)行中值濾波將得到的電壓轉(zhuǎn)換為溫度返回圖2.1-1 溫度采集和處理流程圖2.2 溫度顯示、保存處理的子程序設(shè)計(jì)每一次溫度采集后將溫度的百位、十位、個(gè)位、小數(shù)位(一位)分離出來(lái)(一位)部分分離出來(lái)將溫度的整數(shù)部分和小數(shù)(一位)部分分離出來(lái)調(diào)用溫度顯示模塊的子程序,寫(xiě)百、十、個(gè)、小數(shù)的地址和它們的值將得到的整數(shù)和小數(shù)放入AT24C02的中相

15、鄰的兩個(gè)單元中,總共分配20個(gè)單元,一輪后,放入的數(shù)值將覆蓋前面的數(shù)值。 圖2.2-1 溫度顯示和保存流程圖因?yàn)椴杉降拿總€(gè)溫度值都是0100攝氏度之間的任意值,為了使精度達(dá)到0.1,我們只保留一位小數(shù)(在二進(jìn)制表示中只占低4位)。將溫度分解成整數(shù)部分和小數(shù)部分,是為了方便存儲(chǔ)和發(fā)送。本設(shè)計(jì)只保存10組溫度。2.3 無(wú)線發(fā)送與接受的子程序的設(shè)計(jì)因?yàn)檫x用的發(fā)送模塊是集成PT2262無(wú)線射頻芯片PC-T2A,所以只能利用其6位數(shù)據(jù)口中的4位,將溫度分解發(fā)送。經(jīng)計(jì)算每編碼發(fā)送都需要發(fā)送34次接收端才能接收到有效數(shù)據(jù),所以在程序中適當(dāng)對(duì)發(fā)送使能端置高進(jìn)行延時(shí)。發(fā)送完4位數(shù)據(jù)后也需要延時(shí),給接收端處理數(shù)

16、據(jù)時(shí)間,防止亂碼。調(diào)用發(fā)射子程序發(fā)送整數(shù)的高四位延時(shí)給接收端數(shù)據(jù)處理一些時(shí)間防止亂碼發(fā)送整數(shù)的低四位延時(shí)給接收端數(shù)據(jù)處理一些時(shí)間防止亂碼發(fā)送小數(shù)的低四位延時(shí)給接收端數(shù)據(jù)處理一些時(shí)間防止亂碼返回圖2.3-1 無(wú)線發(fā)送流程圖選用的接收模塊是與集成SC2272的PCR1B-2芯片。當(dāng)接收到的編碼地址與之相匹配的時(shí)候,SC2272的VT端從低電平變?yōu)楦唠娖?,然后馬上恢復(fù)低電平。所以利用其下降沿可以觸發(fā)單片機(jī)2的外部中斷0進(jìn)行溫度接受處理。SC2272需要接收三次才能得到一個(gè)完整的溫度值。VT端的下降沿觸發(fā)外部中斷0進(jìn)行中斷次數(shù)判斷 1 2 3重新計(jì)數(shù)讀取整數(shù)低四位并和高四位合并讀取整數(shù)高四位調(diào)用顯示子

17、程序顯示溫度讀取小數(shù)低四位返回圖2.3-2 無(wú)線接收處理流程圖2.4 十組溫度查詢的子程序設(shè)計(jì)因?yàn)楠?dú)立鍵盤(pán)接的是單片機(jī)1的外部中斷0,所以當(dāng)它按下去時(shí)的產(chǎn)生的下降沿觸發(fā)外部中斷,在中斷處理程序中根據(jù)中斷次數(shù)讀取儲(chǔ)存的溫度。在中斷處理程序中關(guān)中斷是為了消除按鍵抖動(dòng)觸發(fā)另一次中斷。鍵盤(pán)觸發(fā)中斷關(guān)中斷根據(jù)中斷次數(shù)讀取相應(yīng)的溫度調(diào)用液晶顯示子函數(shù)顯示溫度開(kāi)中斷返回 圖2.4-1 溫度查詢流程3 調(diào)試與結(jié)果分析3.1 調(diào)試儀器及方法 測(cè)試儀器:數(shù)字萬(wàn)用表,示波器,函數(shù)信號(hào)發(fā)生器測(cè)試方法:硬件調(diào)試時(shí),利用函數(shù)信號(hào)發(fā)生器,與示波器根據(jù)原理調(diào)相應(yīng)的線路的電壓值,達(dá)到與AD590采到的溫度,及TLC549轉(zhuǎn)化進(jìn)

18、行相對(duì)應(yīng)。根據(jù)理論原理的分析,輸入一信號(hào),利用示波器去跟蹤觀察PT2262 ,SC2272各引腳的高低電平是否合理正確,即意味著在無(wú)線傳輸中兩芯片的地址是否匹配?達(dá)到正確的發(fā)送與接受。3.3 軟、硬件調(diào)試與故障原因分析調(diào)試過(guò)程:一開(kāi)始測(cè)試的溫度誤差很大,經(jīng)檢查發(fā)現(xiàn)是采溫部分的TLC549的參考電壓與程序處理中的參考電壓不匹配,經(jīng)調(diào)試硬件和程序,得出誤差較小的溫度值。發(fā)送后,發(fā)現(xiàn)接受模塊無(wú)法顯示,經(jīng)檢查發(fā)現(xiàn)接收模塊的SC-2272的VT端驅(qū)動(dòng)能力較差,不能與單片機(jī)的TTL電平匹配,于是我們就用C9018三極管增強(qiáng)它的驅(qū)動(dòng)能力,使得接受模塊有溫度顯示,但是發(fā)現(xiàn)接受顯示亂碼,經(jīng)示波器檢查發(fā)現(xiàn)在發(fā)送溫

19、度時(shí)由于PT2262芯片的發(fā)送使能端默認(rèn)接地,導(dǎo)致不受單片機(jī)控制,接受模塊無(wú)法正確接收溫度數(shù)據(jù)。所以我們將PT2262的發(fā)送使能端與默認(rèn)的地剪斷,讓其受單片機(jī)控制。最終實(shí)現(xiàn)了溫度的無(wú)線傳送。4 結(jié)束語(yǔ)本次課程設(shè)計(jì)完成的是基于集成溫度傳感器AD590的溫度測(cè)量及其無(wú)線傳送的設(shè)計(jì),并通過(guò)LCD1602顯示溫度值,通過(guò)半個(gè)月的不斷努力、克服各種困難,最終實(shí)現(xiàn)了任務(wù)目標(biāo)。本次設(shè)計(jì)主要是對(duì)在溫度測(cè)量的智能化、集成化方面的探索,這也是溫度測(cè)試發(fā)展的趨勢(shì)。同時(shí),也是測(cè)控技術(shù)未來(lái)發(fā)展的趨勢(shì)。設(shè)計(jì)是理論知識(shí)與實(shí)踐的完美結(jié)合,對(duì)于現(xiàn)代大學(xué)生的實(shí)踐能力是個(gè)很好的培養(yǎng)。短短的半個(gè)月的設(shè)計(jì)雖然短暫,但是它給我們的收獲確

20、實(shí)難忘,不僅僅在智能儀器方面有了很大的進(jìn)步,而且在傳感器,單片機(jī)等方面也學(xué)到了不少在上課學(xué)不到的知識(shí)。這段時(shí)間我們查閱到很多關(guān)于課程設(shè)計(jì)的書(shū)籍,對(duì)我們幫助也很大。以前很盲目的東西,現(xiàn)在明白了很多。也對(duì)我們專業(yè)動(dòng)手實(shí)踐的興趣提高了很多。有了這些經(jīng)歷對(duì)于我們?nèi)蘸蠊ぷ饕欢〞?huì)有很大幫助。令我們終身受益。在課程設(shè)計(jì)的過(guò)程中也可以看到我們的不足,如原理知識(shí)掌握不實(shí),曾經(jīng)學(xué)過(guò)的知識(shí)如今卻不會(huì)應(yīng)用,軟件的應(yīng)用也不熟練,希望日后提供給我們更多的鍛煉機(jī)會(huì)來(lái)培養(yǎng)我們的實(shí)踐能力。本設(shè)計(jì)是在XX老師的悉心指導(dǎo)下完成的。孫活老師作為一名優(yōu)秀的、經(jīng)驗(yàn)豐富的教師,具有豐富的知識(shí)和經(jīng)驗(yàn),在整個(gè)論文實(shí)驗(yàn)和論文寫(xiě)作過(guò)程中,對(duì)我進(jìn)行

21、了耐心的指導(dǎo)和幫助,提出嚴(yán)格要求,引導(dǎo)我不斷開(kāi)闊思路,為我答疑解惑,鼓勵(lì)我大膽創(chuàng)新,使我在這一段寶貴的時(shí)光中,既增長(zhǎng)了知識(shí)、開(kāi)闊了視野、鍛煉了心態(tài),又培養(yǎng)了良好的實(shí)驗(yàn)習(xí)慣和科研精神。在此,我向我的指導(dǎo)老師表示最誠(chéng)摯的謝意!附錄1:硬件原理圖及PCB板附錄2:軟件程序代碼發(fā)送模塊代碼:#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int/*TLC549引腳設(shè)置*/sbit SCLK=P20;sbit DO=P21;sbit CS=P22;/*1602

22、引腳設(shè)置*/sbit RS=P25;sbit RW=P26;sbit E=P27;/*PT2262引腳設(shè)置*/sbit D1=P10;sbit D2=P11;sbit D3=P12;sbit D4=P13;sbit TE=P23;/*AT24C02引腳設(shè)置*/sbit scl=P15;sbit sda=P36;/*按鍵設(shè)置*/sbit front=P32;uchar code lie1="NOW T:"uchar code lie2="10PreT:"uchar xdata xiaoshu,zhengshu,cishu,xuhao;/定義兩個(gè)變量,分別存

23、放溫度的整數(shù)部分和小數(shù)部分/* 溫度采集模塊子函數(shù)*/* 名稱 : delay(uint z)* 功能 : 延時(shí),延時(shí)時(shí)間大概為z毫秒。* 輸入 : 無(wú)* 輸出 : 無(wú)*/void delay(uint z) uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-);/* 名稱 : ad549(void)* 功能 : 將AD590采集的溫度電壓化為8位的數(shù)字量。* 輸入 : 溫度電壓* 輸出 : 對(duì)應(yīng)TLC549中參考電壓的數(shù)字量*/uint TLC549(void)/把模擬量轉(zhuǎn)換成數(shù)字量,參考的是REF。僅僅是數(shù)字量,不是真實(shí)電壓值。 uchar t

24、emp,i;/定義存放數(shù)據(jù)和變量 CS=1; SCLK=0;/初始化 CS=0;/DO輸出最高位 _nop_(); _nop_();/兩個(gè)機(jī)器周期滿足了1.4微秒 for(i=0;i<8;i+)/串行數(shù)據(jù)移位輸入 temp<<=1; temp|=DO; SCLK=1; _nop_();/時(shí)序控制看芯片資料 SCLK=0; _nop_(); CS=1; for(i=0;i<17;i+) _nop_(); return(temp);/* 名稱 : average(void)* 功能 : 將TLC549轉(zhuǎn)換完成的數(shù)字量換成電壓值,并通過(guò)一定的關(guān)系,化為溫度值,精度為0.1。*

25、 輸入 : 溫度電壓對(duì)應(yīng)average(void)* 輸出 : AD590采集的溫度值*/double average(void)/定義一個(gè)數(shù)組,存放25個(gè)AD采樣的數(shù)據(jù),然后取平均值,這種方法叫做中值濾波,作用是使輸出穩(wěn)定,并把數(shù)據(jù)換成電壓。 uchar i; uint temp; double temp1,j,average125; for(i=0;i<25;i+) temp=TLC549(); j=(double)temp)*20*5/255;/根據(jù)電路圖可知REF=5V,AD輸出時(shí)8位的數(shù)據(jù),所以要分成255份。 average1i=j; delay(1);/采樣間隔隨要求定。

26、for(i=0;i<25;i+) temp1+=average1i; temp1=temp1/25;/一定要注意不同類型間的賦值和計(jì)算必須用強(qiáng)制轉(zhuǎn)換。還有一個(gè)特別重要的C51FPS.LIB文件必須要在安裝目錄下的LIB文件夾內(nèi)。 return(temp1);/* 液晶顯示模塊子函數(shù)*/* 名稱 : convert(uchar input)* 功能 : 實(shí)驗(yàn)板上把D0D7的位置弄反了!需要轉(zhuǎn)過(guò)來(lái)* 輸入 : 需在液晶屏上顯示的值,或是1602的命令值* 輸出 : 對(duì)應(yīng)實(shí)驗(yàn)板上的"正常值"*/uchar convert(uchar input)/實(shí)驗(yàn)板上把D0D7的位置弄

27、反了!需要轉(zhuǎn)過(guò)來(lái) uchar i,temp,output; for(i=0;i<8;i+) temp=input&0x01; input>>=1; output|=temp; if(i<7) output<<=1; return(output);/* 名稱 : order(uchar o)* 功能 : 控制1602液晶顯示功能* 輸入 : 1602液晶的命令值或數(shù)據(jù)指針地址* 輸出 : 無(wú)*/void order(uchar o) RS=0; RW=0; P0=convert(o); E=0; delay(5); E=1; delay(5); RS=

28、1;/* 名稱 : shuju(uchar s)* 功能 : 將需顯示的數(shù)值顯示在1602液晶上* 輸入 : 字符* 輸出 : 無(wú)*/void shuju(uchar s) RS=1; RW=0; P0=convert(s);/一定要放在en=0前面 否則會(huì)出現(xiàn)亂碼。 E=0; delay(5); E=1; delay(5); RS=0;/* 名稱 : init()* 功能 : 液晶屏初始化* 輸入 : 無(wú)* 輸出 : 無(wú)*/void init(void) uchar i; order(0x38);/設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口 order(0x06);/當(dāng)讀寫(xiě)一個(gè)字符后地址指針

29、加1,光標(biāo)向后移1 order(0x0c);/開(kāi)顯示屏,不顯示光標(biāo) order(0x01);/數(shù)據(jù)指針清零,顯示屏清空 /*在液晶屏上顯示的上行為"NOW T: °C",下行為"10Pre T: °C"*/ order(0x80); for(i=0;i<6;i+) shuju(lie1i); order(0x80+0x40); for(i=0;i<7;i+) shuju(lie2i); order(0x80+0x0c); shuju(0xdf);/ shuju(0x43);/C order(0x80+0x40+0x0e);

30、 shuju(0xdf);/ shuju(0x43);/C/* 名稱 : fasongzhengshu(uchar s)* 功能 : 發(fā)送溫度的整數(shù)部分* 輸入 : 無(wú)* 輸出 : 無(wú)*/void fasongzhengshu(uchar s) P1=s; /1=0x37; /TE=0; /while(1); P1=_cror_(P1,4);/先發(fā)高四位 TE=0; /允許PT2262發(fā)送數(shù)據(jù) delay(300); /經(jīng)計(jì)算發(fā)45次需要80s TE=1; delay(950); P1=_cror_(P1,4);/再發(fā)第四位 TE=0;/允許PT2262發(fā)送數(shù)據(jù) delay(300); TE=

31、1; delay(950);/* 名稱 : fasongxiaoshu(uchar s)* 功能 : 發(fā)送溫度的小數(shù)部分* 輸入 : 無(wú)* 輸出 : 無(wú)*/void fasongxiaoshu(uchar s)/09只有4位 /P1=0xaa; /TE=0; /while(1); P1=s; TE=0;/允許PT2262發(fā)送數(shù)據(jù) delay(300); TE=1; delay(950);/* AT24C02斷電保存子函數(shù)*/* 名稱 : start(void)* 功能 : 啟動(dòng)I2C總線* 輸入 : 無(wú)* 輸出 : 無(wú)*/void start(void)/I2C開(kāi)始 sda=1; _nop_(

32、); scl=1; _nop_(); sda=0; _nop_();/* 名稱 : stop()* 功能 : 停止I2C總線* 輸入 : 無(wú)* 輸出 : 無(wú)*/void stop(void)/I2C停止 sda=0; _nop_(); scl=1; _nop_(); sda=1; _nop_();/* 名稱 : write_data(uchar date)* 功能 : 寫(xiě)一個(gè)字節(jié)* 輸入 : date(需要寫(xiě)入的值)* 輸出 : 無(wú)*/void write_data(uchar date)/AT24C02SC中I2C總線寫(xiě)數(shù)據(jù)程序規(guī)則 uchar i; scl=0; for(i=0;i<

33、8;i+) _nop_(); _nop_(); date<<=1; sda=CY; _nop_(); _nop_(); scl=1; _nop_(); _nop_(); scl=0; _nop_(); _nop_(); sda=1; _nop_(); _nop_();/* 名稱 : read_data()* 功能 : 讀一個(gè)字節(jié)* 輸入 : 無(wú)* 輸出 : 讀出的值*/uchar read_data(void)/AT24C02SC中I2C總線讀數(shù)據(jù)程序規(guī)則 uchar k,j,i; scl=0; _nop_(); _nop_(); sda=1; for(i=0;i<8;i+)

34、 _nop_(); _nop_(); scl=1; _nop_(); _nop_(); if(sda=1) j=1; else j=0; k=(k<<1)|j; scl=0; _nop_(); _nop_(); return(k);/* 名稱 : yingda(void)* 功能 : I2C總線時(shí)鐘* 輸入 : 無(wú)* 輸出 : 無(wú)*/void yingda(void) uchar i=0; scl=1; _nop_(); _nop_(); _nop_(); _nop_(); while(sda=1&&i<250) i+; scl=0; _nop_(); _no

35、p_(); _nop_(); _nop_();/* 名稱 : writedata(uchar address,uchar info)* 功能 : 向24c02中寫(xiě)值* 輸入 : address(要在這個(gè)地址讀取值)* 輸出 : 無(wú)*/void writedata(uchar address,uchar info) start(); write_data(0xa0); yingda(); write_data(address); yingda(); write_data(info); yingda(); stop();/* 名稱 : readdata(uchar address)* 功能 : 從

36、AT24c02中讀出數(shù)據(jù)* 輸入 : address(地址)* 輸出 : 地址對(duì)應(yīng)的值*/uchar readdata(uchar address) uchar t; start(); write_data(0xa0); yingda(); write_data(address); yingda(); start(); write_data(0xa1); yingda(); t=read_data(); stop(); return(t);/* 名稱 : readwendu()* 功能 : 在按鍵中斷中讀出溫度* 輸入 : address(地址)* 輸出 : 無(wú)*/void readwendu

37、(void) uchar part3,part4,temp1,i; part3=readdata(cishu); part4=readdata(cishu+1); temp1=cishu/2; /*溫度在1602上顯示*/ order(0x80+0x40+7);/顯示序號(hào) shuju(0x30+temp1); order(0x80+0x40+9);/顯示溫度 百位 temp1=part3/100; shuju(0x30+temp1); temp1=part3%100/10;/顯示溫度 十位 shuju(0x30+temp1); temp1=part3%10;/顯示溫度 個(gè)位 shuju(0x3

38、0+temp1); shuju(0xa5);/小數(shù)點(diǎn) temp1=part4;/顯示溫度 小數(shù)位 shuju(0x30+temp1);/* 主函數(shù)*/main() double temperature; uchar temp,s; init();/液晶初始化 EA=1;/開(kāi)中斷 EX0=1; IT0=1;/外部中斷0設(shè)置成下降沿觸發(fā) cishu=0; while(1) temperature=average();/可以對(duì)temperature進(jìn)行適當(dāng)?shù)恼{(diào)節(jié) zhengshu=(uchar)temperature;/需發(fā)送的整數(shù)部分 xiaoshu=(uint)(temperature*10)%

39、10;/需發(fā)送的小數(shù)部分 /*溫度在1602上顯示*/ order(0x80+6); temp=(uchar)temperature)/100; shuju(0x30+temp); temp=(uchar)temperature)%100/10; shuju(0x30+temp); temp=(uchar)temperature)%10; shuju(0x30+temp); temp=(uint)(temperature*10)%10; shuju(0xa5);/小數(shù)點(diǎn) shuju(0x30+temp); /*將溫度保存在AT24C02中*/ writedata(s,zhengshu); s+; delay(100);/給寫(xiě)數(shù)據(jù)一點(diǎn)反應(yīng)時(shí)間 writedata(s,xiaoshu); s+; if(s=20) s=0;

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論