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

下載本文檔

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

文檔簡介

1、溫度測控儀設(shè)計學(xué)生:XXX 指導(dǎo)教師:XXX內(nèi)容摘要:本文主要介紹了智能溫度測量儀的設(shè)計,包括硬件和軟件的設(shè)計。先對該測量儀進行概括性介紹,然后介紹該測量儀在硬件設(shè)計上的主要器件:“Pt100熱電阻”、AT89C51單片機和LCD顯示器以及描述測量儀的總體結(jié)構(gòu)原理。在本設(shè)計中,是以鉑電阻PT100作為溫度傳感器,采用恒流測溫的方法,通過單片機進行控制,用放大器、A/D轉(zhuǎn)換器進行溫度信號的采集。總體來說,該設(shè)計是切實可行的。 關(guān)鍵詞:溫度 Pt100熱電阻 AT89C51單片機 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è)計11.1 溫度傳感器的放大電路設(shè)計21.2 TLC549 模數(shù)轉(zhuǎn)化電路設(shè)計41.3 顯示電路設(shè)計51.4 無線發(fā)送與接收模塊的選擇與設(shè)計51.5 鍵盤設(shè)計62 總體的軟件程序的設(shè)計62.1 溫度數(shù)據(jù)采集和數(shù)據(jù)處理子程序的設(shè)計62.2 溫度顯示、保存處理的子程序設(shè)計72.3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

21、了耐心的指導(dǎo)和幫助,提出嚴格要求,引導(dǎo)我不斷開闊思路,為我答疑解惑,鼓勵我大膽創(chuàng)新,使我在這一段寶貴的時光中,既增長了知識、開闊了視野、鍛煉了心態(tài),又培養(yǎng)了良好的實驗習(xí)慣和科研精神。在此,我向我的指導(dǎo)老師表示最誠摯的謝意!附錄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;/定義兩個變量,分別存

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

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

25、 輸入 : 溫度電壓對應(yīng)average(void)* 輸出 : AD590采集的溫度值*/double average(void)/定義一個數(shù)組,存放25個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輸出時8位的數(shù)據(jù),所以要分成255份。 average1i=j; delay(1);/采樣間隔隨要求定。

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

27、反了!需要轉(zhuǎn)過來 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ù)指針地址* 輸出 : 無*/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液晶上* 輸入 : 字符* 輸出 : 無*/void shuju(uchar s) RS=1; RW=0; P0=convert(s);/一定要放在en=0前面 否則會出現(xiàn)亂碼。 E=0; delay(5); E=1; delay(5); RS=0;/* 名稱 : init()* 功能 : 液晶屏初始化* 輸入 : 無* 輸出 : 無*/void init(void) uchar i; order(0x38);/設(shè)置16*2顯示,5*7點陣,8位數(shù)據(jù)接口 order(0x06);/當讀寫一個字符后地址指針

29、加1,光標向后移1 order(0x0c);/開顯示屏,不顯示光標 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ù)部分* 輸入 : 無* 輸出 : 無*/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)計算發(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ù)部分* 輸入 : 無* 輸出 : 無*/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)* 功能 : 啟動I2C總線* 輸入 : 無* 輸出 : 無*/void start(void)/I2C開始 sda=1; _nop_(

32、); scl=1; _nop_(); sda=0; _nop_();/* 名稱 : stop()* 功能 : 停止I2C總線* 輸入 : 無* 輸出 : 無*/void stop(void)/I2C停止 sda=0; _nop_(); scl=1; _nop_(); sda=1; _nop_();/* 名稱 : write_data(uchar date)* 功能 : 寫一個字節(jié)* 輸入 : date(需要寫入的值)* 輸出 : 無*/void write_data(uchar date)/AT24C02SC中I2C總線寫數(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()* 功能 : 讀一個字節(jié)* 輸入 : 無* 輸出 : 讀出的值*/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總線時鐘* 輸入 : 無* 輸出 : 無*/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中寫值* 輸入 : address(要在這個地址讀取值)* 輸出 : 無*/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(地址)* 輸出 : 地址對應(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(地址)* 輸出 : 無*/void readwendu

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

38、0+temp1); shuju(0xa5);/小數(shù)點 temp1=part4;/顯示溫度 小數(shù)位 shuju(0x30+temp1);/* 主函數(shù)*/main() double temperature; uchar temp,s; init();/液晶初始化 EA=1;/開中斷 EX0=1; IT0=1;/外部中斷0設(shè)置成下降沿觸發(fā) cishu=0; while(1) temperature=average();/可以對temperature進行適當?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ù)點 shuju(0x30+temp); /*將溫度保存在AT24C02中*/ writedata(s,zhengshu); s+; delay(100);/給寫數(shù)據(jù)一點反應(yīng)時間 writedata(s,xiaoshu); s+; if(s=20) s=0;

溫馨提示

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

評論

0/150

提交評論