




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 TOC o 1-3 h z u HYPERLINK l _Toc264232311 前言 PAGEREF _Toc264232311 h 2 HYPERLINK l _Toc264232312 第一章 智能溫度測量儀表方案設(shè)計(jì)與論證 PAGEREF _Toc264232312 h 3 HYPERLINK l _Toc264232313 1.1 功能與要求 PAGEREF _Toc264232313 h 3 HYPERLINK l _Toc264232314 1.2 方案的論證與比擬 PAGEREF _Toc264232314 h 4 HYPERLINK l _Toc264232315 方案確
2、實(shí)定 PAGEREF _Toc264232315 h 5 HYPERLINK l _Toc264232316 1.3.1 數(shù)據(jù)采集通道的理論計(jì)算 PAGEREF _Toc264232316 h 5 HYPERLINK l _Toc264232317 1.3.2 溫度值粗測理論推導(dǎo) PAGEREF _Toc264232317 h 6 HYPERLINK l _Toc264232318 1.3.3 根據(jù)T1確定差分局部的理論推導(dǎo) PAGEREF _Toc264232318 h 7 HYPERLINK l _Toc264232319 第二章 智能溫度測量儀表的硬件設(shè)計(jì) PAGEREF _Toc264
3、232319 h 7 HYPERLINK l _Toc264232320 2.1 系統(tǒng)硬件框圖 PAGEREF _Toc264232320 h 7 HYPERLINK l _Toc264232321 系統(tǒng)的輸入通道設(shè)計(jì) PAGEREF _Toc264232321 h 8 HYPERLINK l _Toc264232322 單片機(jī)最小系統(tǒng) PAGEREF _Toc264232322 h 8 HYPERLINK l _Toc264232323 人機(jī)接口電路 PAGEREF _Toc264232323 h 9 HYPERLINK l _Toc264232324 串口電路 PAGEREF _Toc26
4、4232324 h 9 HYPERLINK l _Toc264232325 2.6 執(zhí)行電路 PAGEREF _Toc264232325 h 10 HYPERLINK l _Toc264232326 第三章 軟件設(shè)計(jì) PAGEREF _Toc264232326 h 10 HYPERLINK l _Toc264232327 下位機(jī)軟件的設(shè)計(jì) PAGEREF _Toc264232327 h 10 HYPERLINK l _Toc264232328 3.1.1 下位機(jī)主程序設(shè)計(jì) PAGEREF _Toc264232328 h 11 HYPERLINK l _Toc264232329 3.1.2 CH
5、451中斷子程序設(shè)計(jì) PAGEREF _Toc264232329 h 11 HYPERLINK l _Toc264232330 3.1.3 數(shù)字濾波函數(shù)和ADC0809讀函數(shù)設(shè)計(jì) PAGEREF _Toc264232330 h 12 HYPERLINK l _Toc264232331 3.1.4 快速測量溫度粗值函數(shù)設(shè)計(jì) PAGEREF _Toc264232331 h 13 HYPERLINK l _Toc264232332 上位機(jī)軟件設(shè)計(jì) PAGEREF _Toc264232332 h 13 HYPERLINK l _Toc264232333 第四章 智能溫度測量系統(tǒng)的安裝與調(diào)試 PAGER
6、EF _Toc264232333 h 14 HYPERLINK l _Toc264232334 4.1 硬件調(diào)試 PAGEREF _Toc264232334 h 14 HYPERLINK l _Toc264232335 4.2 軟件調(diào)試 PAGEREF _Toc264232335 h 15 HYPERLINK l _Toc264232336 整機(jī)調(diào)試過程 PAGEREF _Toc264232336 h 15 HYPERLINK l _Toc264232337 第五章 設(shè)計(jì)體會與小結(jié) PAGEREF _Toc264232337 h 16 HYPERLINK l _Toc264232338 參考文
7、獻(xiàn) PAGEREF _Toc264232338 h 17 HYPERLINK l _Toc264232339 附錄 PAGEREF _Toc264232339 h 18前言隨著時代的進(jìn)步和開展,單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研、各個領(lǐng)域,已經(jīng)成為一種比擬成熟的技術(shù), 本文主要介紹了一個基于AT89C51單片機(jī)的測溫系統(tǒng),描述了利用溫度傳感器PT100測溫系統(tǒng)的過程,對傳感器在單片機(jī)下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了分析,對各局部的電路也一一進(jìn)行了介紹,該系統(tǒng)可以方便的實(shí)現(xiàn)溫度采集和顯示,靈敏度高、體積小、功耗低等優(yōu)點(diǎn),適合于我們?nèi)粘I詈凸?、農(nóng)業(yè)生產(chǎn)中的溫度測量,也可以當(dāng)作
8、溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴(kuò)展。第一章 智能溫度測量儀表方案設(shè)計(jì)與論證1.1 功能與要求功能基于單片機(jī)的溫度測控系統(tǒng)分為上位機(jī)和下位機(jī)兩局部。其中上位機(jī)應(yīng)可通過虛擬儀器的前置面板界面顯示溫度數(shù)據(jù),假設(shè)溫度超過設(shè)定溫度,在顯示屏上進(jìn)行報警提示。而下位機(jī)那么是可以利用單片機(jī)對溫度傳感器采集到的溫度數(shù)據(jù)及時采樣,并在數(shù)碼管上顯示,用矩陣鍵盤來控制和設(shè)定溫度值,并將采集到的溫度數(shù)據(jù)通過串口傳到上位PC機(jī)。要求:.學(xué)生自行設(shè)計(jì)硬件電路并焊接電路板.編寫上位機(jī)虛擬儀器和下位機(jī)程序.實(shí)現(xiàn)溫度測控并進(jìn)行系統(tǒng)功能測試1.2 方案的論證與比擬方案一:通過運(yùn)放構(gòu)成1毫安恒流源,將Pt100加在
9、恒流源上,其輸出接入儀用放大器,然后經(jīng)A/D轉(zhuǎn)換,將數(shù)據(jù)送入單片機(jī)。單片機(jī) AD轉(zhuǎn)換儀用放大器由運(yùn)放構(gòu)成1mA電流源圖1 方案1的系統(tǒng)方框圖本方案的優(yōu)點(diǎn)是有較大的較穩(wěn)定的電壓輸出,輸出電壓的范圍相對較大且線性度好但缺點(diǎn)是每次輸出的電壓中有無用電壓,且在溫度小于300時,其無用電壓約占50%,從而導(dǎo)致放大倍數(shù)不高,測量精度偏低。方案二:利用1K的電阻與PT100構(gòu)成電橋采集電路,將采集信號經(jīng)過儀用放大器放大后在由固定的差分放大電路進(jìn)行二級放大,然后將放大信號經(jīng)過A/D轉(zhuǎn)換,最后傳給單片機(jī)。PT100電橋采集電路儀用放大器固定差分放大器A/D轉(zhuǎn)換單片機(jī)圖2 方案二的系統(tǒng)框圖 本方案的優(yōu)點(diǎn)是有較大的
10、電壓輸出范圍,溫度低于100度時,測量精度可到達(dá)1度。但缺點(diǎn)是溫度較高時,線性度不好,測量精度達(dá)不到1度,且不能自動換擋。方案三:由PT100和10K電阻組成電橋采集電路,將采集信號傳送給儀用放大器放大,然后將放大的信號經(jīng)過差分電路進(jìn)行二級放大,由于放大倍數(shù)的因素需對二級放大參加補(bǔ)償,然后進(jìn)行A/D轉(zhuǎn)換,最后將數(shù)字量傳送給單片機(jī)。PT100組成電橋10K儀用放大器INA114差分電路A/D轉(zhuǎn)換ADC0809CD4051DA5615 單片機(jī) 89C51圖3 方案三的系統(tǒng)框圖 在軟件上,通過改變儀用放大器的倍數(shù),從而實(shí)現(xiàn)自動換擋,即可以測量較大范圍內(nèi)的電信號。當(dāng)初步測量出被測信號后,就可也綜合考慮
11、,選擇出適宜的儀用放大器的放大倍數(shù)和差分電路所需的DA輸出電壓。這樣就可以實(shí)現(xiàn)精確測量。本方案的優(yōu)點(diǎn)是有較好的線性電壓輸出,可自動選擇量程,有較高的測量精度,測量范圍較大。但缺點(diǎn)是抗干擾能力相對較弱,需要加必要的抗干擾設(shè)計(jì),否那么干擾太強(qiáng)同樣達(dá)不到設(shè)計(jì)要求的精度。方案確實(shí)定綜合比擬以上各種方案的性能后,決定采用方案三。 數(shù)據(jù)采集通道的理論計(jì)算溫度傳感器:為溫度,為比例系數(shù),為常系數(shù)在精確測量時,和的值會根據(jù)分段情況有所變化,為電阻變化值。 1電橋輸入輸出關(guān)系:為電橋輸出電壓,為電橋輸入電壓,為由于電橋不平衡而出現(xiàn)的常偏差系數(shù),為10K歐姆電阻。 2儀用放大器輸入輸出關(guān)系:比例系數(shù),輸出電壓。
12、3差分放大輸入輸出關(guān)系:比例系數(shù),為DA輸出電壓,輸出電壓。 =(-) (4)DA輸入輸出關(guān)系:為DA的參考電壓,為DA輸入的數(shù)字量。 =2/1024 (5) 表1 各參數(shù)值為測量值或設(shè)計(jì)值,均為國際單位BA2582010000502020201020AD輸入輸出關(guān)系:數(shù)字量輸出: =51 6那么由123456得: T = + - +A (7) 溫度值粗測理論推導(dǎo)由于每次測量時不知道溫度大概值,于是有必要先粗測出溫度值,根據(jù)7讓 - +A = 0 8 表2 參數(shù)取值及對應(yīng)值 25850201015730126 從而 T 1= 9表3 參數(shù)取值及對應(yīng)值 258502010 根據(jù)T1確定差分局部的
13、理論推導(dǎo)要確保精度到達(dá)0.1度,那么有約為0.04時能被AD識別出來,于是 /(4R)5* 9那么40000;取=258, =20。由123得=0.0129*T1 +0.6450 0.645與B有很大關(guān)系又實(shí)測出最大約為4.6V,測出希望有一定的輸出14.2V之間,那么由(4) (5) 得3.145*T1+98.7393.145*T1+144 10第二章 智能溫度測量儀表的硬件設(shè)計(jì)2.1 系統(tǒng)硬件框圖本設(shè)計(jì)選用PT100作為溫度傳感器,采用三線制接法,與10K電阻構(gòu)成電橋,將輸出電壓依次送入儀用放大器,一階低通濾波器,差動放大器,一階低通濾波器,ADC0809轉(zhuǎn)換,最后將轉(zhuǎn)換后的數(shù)字信號經(jīng)單片
14、機(jī)進(jìn)行數(shù)字濾波,得到溫度值。同時可以通過矩陣鍵盤進(jìn)行控制,通過LED進(jìn)行顯示。系統(tǒng)硬件方框圖如圖3所示。PT100組成電橋10K儀用放大器INA114LPF、差分電路A/D轉(zhuǎn)換ADC0809CD4051DA5615單片機(jī) 89C51MAX232上位機(jī)CH4514*4鍵盤4位LED圖3系統(tǒng)硬件框圖系統(tǒng)的輸入通道設(shè)計(jì)本系統(tǒng)輸入通道作用是將溫度轉(zhuǎn)換為電壓信號,再轉(zhuǎn)換為數(shù)字信號傳給單片機(jī)。其組成包括:電橋儀用放大器、程控差分放大器,A/D轉(zhuǎn)換及低通濾波器。具體電路如圖4所示。 圖4 系統(tǒng)輸出通道電路圖單片機(jī)最小系統(tǒng)本局部的作用是處理數(shù)據(jù),控制各器件。組成包括89c52單片機(jī),時鐘電路,復(fù)位電路。其具體
15、電路如圖5所示。圖5 單片機(jī)最小系統(tǒng)電路圖人機(jī)接口電路本電路的作用是實(shí)現(xiàn)溫度顯示,溫度設(shè)定。組成模塊有4位集成數(shù)碼顯示,4*4鍵盤等。具體電路如圖6所示。圖6 人機(jī)接口電路圖 串口電路本電路的作用是實(shí)現(xiàn)單片機(jī)與上位機(jī)的通訊。其組成包括:MAX232,串口通訊接口等。具體電路如圖7所示。圖7 串口通訊電路 執(zhí)行電路本局部的作用是通過三極管推動繼電器工作。組成包括:三極管,繼電器,發(fā)光二極管等,具體電路如圖8所示。圖8 執(zhí)行電路第三章 軟件設(shè)計(jì)下位機(jī)軟件的設(shè)計(jì) 下位機(jī)主程序設(shè)計(jì) 系統(tǒng)的軟件設(shè)計(jì)可以分為幾個局部,首先是各個模塊的底層驅(qū)動程序編寫,然后是系統(tǒng)的聯(lián)機(jī)調(diào)試,編寫上層系統(tǒng)程序。本系統(tǒng)軟件程序
16、主要包括:模數(shù)轉(zhuǎn)換ADC0809的底層驅(qū)動模塊,數(shù)模轉(zhuǎn)換TLC5615的底層驅(qū)動模塊,人機(jī)交互CH451的底層驅(qū)動模塊包含鍵盤掃描和數(shù)碼管顯示,串口通信MAX232的底層驅(qū)動等。系統(tǒng)的軟件流程如圖9。圖9 主程序流程圖 CH451中斷子程序設(shè)計(jì)選用高速線串行接口可節(jié)省I/O口,其操作命令均為位, 其中高位為標(biāo)識碼, 低位為參數(shù),其會自動掃描,這就可以省去單片機(jī)的大量工作。CH451中斷子程序流程如圖10。圖10 CH451中斷子程序流程圖 數(shù)字濾波函數(shù)和ADC0809讀函數(shù)設(shè)計(jì)屢次采樣,然后將采樣值按順序排列,再將中間值作為最終輸出,這樣通過運(yùn)用中值濾波可以去掉偶然因素引起的波動或采樣不穩(wěn)定這
17、里ADC0809的時鐘約1.3M,超過其設(shè)計(jì)最大值,極有可能并不穩(wěn)定,通過求平均值,消除脈沖性干擾,得到相對平滑的波形。程序流程如圖11。ADC0809為8位并口輸出,8通道,逐次逼近,8位模數(shù)變換器。程序流程如圖12。開始對數(shù)據(jù)按大小排序讀取n個平均數(shù)據(jù)輸出中間值圖11 數(shù)字濾波函數(shù)流程圖 圖12 ADC0809讀函數(shù)流程圖 快速測量溫度粗值函數(shù)設(shè)計(jì) 由于剛開始測量時不知道被測溫度的大概值,于是這里設(shè)計(jì)了自動換擋測量出溫度的粗值,從而可以計(jì)算出差分電壓局部所需要的被減電壓,從而通過TLC5615輸出,進(jìn)而實(shí)現(xiàn)精確測量??焖贉y量溫度粗值函數(shù)程序流程如圖13。圖13 快速測量溫度粗值函數(shù)流程圖上
18、位機(jī)軟件設(shè)計(jì) 通過MAX232實(shí)現(xiàn)串口通訊,下位機(jī)將數(shù)據(jù)發(fā)送到到上位機(jī)。上位機(jī)可以利用其相對強(qiáng)大的數(shù)據(jù)處理能力將數(shù)據(jù)進(jìn)一步處理,讓后輸出顯示,也可以實(shí)現(xiàn)遠(yuǎn)程控制。本出只是將數(shù)據(jù)上傳,讓后以波形,數(shù)字和溫度計(jì)形式顯示出來。此處運(yùn)用LABVIEW軟件實(shí)現(xiàn),其程序圖如圖14。前置面板如圖15。 圖14 上位機(jī)程序圖 圖15 上位機(jī)前置面板第四章 智能溫度測量系統(tǒng)的安裝與調(diào)試4.1 硬件調(diào)試將硬件設(shè)計(jì)好后,通過軟件將采集局部的模擬電路進(jìn)行調(diào)試,讓其輸出入一定的模擬量測,在測量其輸出,看是否與理論值相當(dāng)。再加一定的干擾,在側(cè)其出處是否穩(wěn)定。經(jīng)過這樣必要的軟件仿真后,在焊接實(shí)際器件,由于沒有印刷電路板,那
19、么得花費(fèi)較多時間焊接,并檢查是否虛焊,短路等。排除一些列問題后,在進(jìn)行輸入輸出測試。看與理論值有多大的誤差,是否可用。測試順序依次是:電橋,儀用放大器,差動放大器。4.2 軟件調(diào)試先編寫好ADC0809的驅(qū)動程序,在其輸入端接上標(biāo)準(zhǔn)電壓,對其進(jìn)行A轉(zhuǎn)換,讓其輸出以8位二進(jìn)制代碼形式,通過8個發(fā)光二極管顯示,看起是否有輸出,輸出值是否準(zhǔn)確。這樣將其調(diào)通。再編寫TLC5615的驅(qū)動程序,通過萬用表測量其輸出,看其是否有輸出,其輸出值是否與程序中的設(shè)定值相當(dāng)。這樣將其調(diào)通。最后寫CH451的驅(qū)動程序,按照PDF芯片資料,編寫程序,在檢查無誤后,看起是否可以控制數(shù)碼管,鍵盤是否有限。此芯片的操作比擬難
20、,不容易檢查控制上的問題,我主要是通過,在程序中加延時,加死循環(huán),然后觀察其現(xiàn)象,用萬用表測量其電壓,看是否正常。這樣將其調(diào)通。所有驅(qū)動完成后在編主程序,按照需要調(diào)用相應(yīng)函數(shù),協(xié)調(diào)其中的變量關(guān)系等。最終實(shí)現(xiàn)完全調(diào)通。整機(jī)調(diào)試過程將所有的硬件組裝起來,下載軟件,啟動智能溫度測量系統(tǒng),在溫度下測量,看其輸出是否正常,繪制出輸入輸出關(guān)系圖,并與標(biāo)準(zhǔn)溫度變化曲線進(jìn)行比擬,進(jìn)而根據(jù)標(biāo)準(zhǔn)溫度變化的圖計(jì)算出修正參數(shù),然后修改源程序中由原來理論值得到的參數(shù)。再次啟動系統(tǒng)看是否滿足要求,如不行,那么再次修正。如此往復(fù)幾遍前方才滿足要求。第五章 設(shè)計(jì)體會與小結(jié)到達(dá)設(shè)計(jì)要求,且在一定范圍內(nèi)其精度可以到達(dá)0.1攝氏度
21、。很累!但是學(xué)到了知識,也得到了快樂!設(shè)計(jì)時要查閱相關(guān)書籍 ,一本本的攤開在桌上,看芯片資料,就一個CH451的資料就有15頁,它不像小說一目十行幾分鐘就可以讀完,要用這種器件就必須一絲不茍的了解其功能,一點(diǎn)錯誤就可能導(dǎo)致數(shù)據(jù)出不來,然后設(shè)計(jì)局部電路圖,再將所有模塊連接起來。設(shè)計(jì)時還算輕松,初次完全自主進(jìn)行系統(tǒng)設(shè)還是有許多問題都沒考慮到,如理論值,理論狀態(tài),往往與實(shí)際有一定的差距,這些差異如何決絕是以前從來沒考慮過的。有些心里想的雖然頭頭是道,但實(shí)際上存在許多問題。就連一個簡單的電阻都會有問題,理論上要多大就有多大,而實(shí)際上首先是只有固定的電阻,且還有一定的誤差。如果用電位器,其大小是可以調(diào)節(jié)
22、,但是它所溫度和電磁干擾影響較大。在做電橋時由于以上兩種電阻的缺點(diǎn),輸入電源又不穩(wěn)定,以及輸出的電壓又小毫伏級,使得輸出電壓相對噪音很大.比擬難以處理。在用不同電阻打結(jié)電路,接不同電源,發(fā)現(xiàn)以上問題后,最終解決方案是采用固定電阻,對電源加以濾波,再加屏蔽。由于選擇的是10K電阻,相對誤差有10%,即絕對值有1000,而Pt100才一兩百歐姆,這就不能隨便接,而要具體測量數(shù)個電阻阻值后,從中選出能和Pt100構(gòu)成對稱電橋,即使這樣最后還是有約2mv的電壓誤差,而它看似小,實(shí)際上卻可以代表30讀攝氏度。如不考慮,必將導(dǎo)致最后設(shè)計(jì)上的失敗。其實(shí)剛開始時,心里是沒有多大把握能做出個什么東西的,畢竟從來
23、就沒進(jìn)行過系統(tǒng)設(shè)計(jì),但是覺得總會有這一天的,不可能什么事只有到會了才去做。設(shè)計(jì)過程比擬長,人也一直覺得比擬累,但是它就像一次跋涉,每次穿過了荊棘,登上一座山坡,總會有的美景可以欣賞,人的視野也更開闊,往腳下一看,會覺得沒想到能爬上來;同時也增加信心,敢于向更高的山峰進(jìn)軍。參考文獻(xiàn)1.?單片微型計(jì)數(shù)機(jī)與接口技術(shù)?(第2版) 李群芳,張士軍,黃 建 編著,電子工業(yè)出版社,20052 ?微機(jī)原理試驗(yàn)指導(dǎo)書? 武漢理工大學(xué)華夏學(xué)院 20063 ?傳感與檢測技術(shù)? 戴卓 主編, 武漢理工大學(xué)出版社 20034 ?測控電路? 張國雄 主編 機(jī)械工業(yè)出版社 20215 ?LabVIEW8.20程序設(shè)計(jì)從入門
24、到精通? 陳錫輝,張銀鴻 編著 清華大學(xué)出版社 2007附錄源程序#define CH451_RESET 0 x0201 /復(fù)位#define CH451_LEFTMOV 0 x0300 /設(shè)置移動方式-作移#define CH451_LEFTCYC 0 x0301 /設(shè)置移動方式-左循#define CH451_RIGHTMOV 0 x0302 /設(shè)置移動方式-右移#define CH451_RIGHTCYC 0 x0303 /設(shè)置移動方式-右循#define CH451_SYSOFF 0 x0400 /關(guān)顯示、鍵盤、看門狗#define CH451_SYSON1 0 x0401 /開顯示#
25、define CH451_SYSON2 0 x0403 /開顯示、鍵盤#define CH451_SYSON3 0 x0407 /開顯示、鍵盤、看門狗功能#define CH451_DSP 0 x0500 /設(shè)置默認(rèn)顯示方式#define CH451_BCD 0 x0580 /設(shè)置BCD譯碼方式#define CH451_TWINKLE 0 x0600 /設(shè)置閃爍控制#define CH451_DIG0 0 x0800 /數(shù)碼管位0顯示#define CH451_DIG1 0 x0900 /數(shù)碼管位1顯示 #define CH451_DIG2 0 x0a00 /數(shù)碼管位2顯示#define C
26、H451_DIG3 0 x0b00 /數(shù)碼管位3顯示#define CH451_DIG4 0 x0c00 /數(shù)碼管位4顯示#define CH451_DIG5 0 x0d00 /數(shù)碼管位5顯示#define CH451_DIG6 0 x0e00 /數(shù)碼管位6顯示#define CH451_DIG7 0 x0f00 /數(shù)碼管位7顯示#define CH451_POT 0 x1a00#include #include /如果使用鍵盤中斷請定義#define USE_KEY 1#define uchar unsigned char/*/須主程序定義的參數(shù)/*sbit relay=P20;sbit c
27、h451_dclk=P21; /串行數(shù)據(jù)時鐘上升延激活sbit ch451_din=P22; / 串行數(shù)據(jù)輸出,接CH451的數(shù)據(jù)輸入sbit ch451_load=P23;sbit ch451_dout=P33; /INT1,鍵盤中斷和鍵值數(shù)據(jù)輸入,接CH451的數(shù)據(jù)輸?sbit ad0809_ale=P24;sbit ad0809_EOC=P25;sbit ad0809_ST=P26;sbit ad0809_OE=P27;sbit din5615=P13; sbit sclk5615=P14;sbit cs5615=P15;sbit A4051=P10;sbit B4051=P11;sbi
28、t C4051=P12;sbit abc=P17;unsigned char ch451_key=0;/ 存放鍵盤中斷中讀取的鍵值unsigned int dav=5;unsigned int tfast;bit setb=0;bit chuan=0;unsigned int ad0809_data=0;unsigned char ad0809_flag=70;unsigned char ad0809_i=0;unsigned char flag=0;unsigned char cai=39;/采樣次數(shù)unsigned char getev39=19,1,2,3,5,4,18,17,16,15
29、,14,13,12,11,10,9,8,7,6;/unsigned char showtemp3=0,8,0;/用于存儲設(shè)定的溫度數(shù)據(jù) 高位在前unsigned char gettemp4;/存儲采樣到的溫度/*/* /延時程序void delay(unsigned char m)unsigned char i,j,k; for(i=0;im;i+) for(k=0;k20;k+);/*void da5615(unsigned int a) unsigned char i; a=6;/讓00 0000 1111 1000 11變?yōu)?111 1000 1100 0000 cs5615=1; sc
30、lk5615=1; sclk5615=0; cs5615=0; for(i=0;i12;i+) din5615=a&0 x8000; sclk5615=0;a=1;sclk5615=1; sclk5615=0; cs5615=1; /*/*/*/*函數(shù)名稱:uart_init功能: uart初始化函數(shù)參數(shù):無返回值:無*/void tdata_pc(unsigned char dat) /uart_init(); TI=0;ES=1; ES=0;SBUF=dat; void uart_init()TMOD=0 x20;TH1=0 xef;TL1=0 xef;/2400TR1=1; PCON=P
31、CON|0 x80;REN=1;SM0=0;SM1=1;EA=1;ES=1;/*函數(shù)名稱:uart_send功能: 發(fā)送數(shù)據(jù)參數(shù):dat(待發(fā)送數(shù)據(jù))返回值:無*/ /定義一無符號整型變量存儲12字節(jié)的命令字。void ch451_write(unsigned int command) unsigned char i;#ifdef USE_KEY EX1=0; /禁止鍵盤中斷 #endif ch451_load=0; /命令開始 for(i=0;i=1; ch451_dclk=1; /上升沿有效 ch451_load=1; /加載數(shù)據(jù) #ifdef USE_KEY EX1=1; #endif/
32、*/*/初始化子程序void ch451_init() P1=0 x60;ch451_din=0; ch451_dclk=1; /先低后高,選擇4線輸入 ch451_din=1; ch451_load=1; ch451_dout=1; #ifdef USE_KEY IT1=0; /設(shè)置下降沿觸發(fā) IE1=0; /清中斷標(biāo)志 PX1=1; /設(shè)置低優(yōu)先級 EX1=1; /開中斷 #endif/*/*/輸入命令子程序,MCU從451讀一字節(jié)/*/void Set_temp(void) /設(shè)定保溫點(diǎn) unsigned char i; ch451_write(CH451_DIG0|showtemp0)
33、;/顯示原來設(shè)定溫度 ch451_write(CH451_DIG1|showtemp1); ch451_write(CH451_DIG2|showtemp2); /設(shè)定溫度 ch451_write(CH451_TWINKLE|1); /閃爍 EX1=1; /允許鍵盤中斷 while(flag=0); EX1=0; /禁止鍵盤中斷 flag=0; showtemp0=ch451_key; /保存數(shù)據(jù) ch451_write(CH451_DIG0|showtemp0); /顯示鍵值 ch451_write(CH451_TWINKLE); /停止閃爍 ch451_write(CH451_TWINKL
34、E|2); EX1=1; /允許鍵盤中斷 while(flag=0); EX1=0; /禁止鍵盤中斷 flag=0; showtemp1=ch451_key; ch451_write(CH451_DIG1|showtemp1); ch451_write(CH451_TWINKLE); ch451_write(CH451_TWINKLE|4); EX1=1; /允許鍵盤中斷 while(flag=0); EX1=0; /禁止鍵盤中斷 flag=0; showtemp2=ch451_key; ch451_write(CH451_DIG2|showtemp2); ch451_write(CH451_
35、TWINKLE); /*/*/輸入命令子程序,MCU從451讀一字節(jié)unsigned char ch451_Read() unsigned char i; unsigned char keycode1,keycode;/定義命令字,和數(shù)據(jù)存儲器/EA=0; / EX1=0; /關(guān)中段 keycode1=0 x07; /輸入讀451命令字 ch451_load=0; for(i=0;i=1; /往右移一位 ch451_dclk=1; /產(chǎn)生時鐘上升沿鎖通知CH451輸入位數(shù)據(jù) ch451_load=1;/產(chǎn)生加載上升沿通知CH451處理命令數(shù)? keycode=0; /去除keycode key
36、code1=0; ch451_dclk=0; /產(chǎn)生時鐘下升沿通知CH451輸出下一位 ch451_dclk=1; for(i=0;i3;i+) /輸出行數(shù) 有四行 第一行0keycode1=1;keycode1|=ch451_dout;ch451_dclk=0;ch451_dclk=1;for(i=0;i3;i+) / 輸出列數(shù) 四列 第一列為0keycode=1;keycode|=ch451_dout;ch451_dclk=0;ch451_dclk=1; keycode=keycode1*4+keycode;/計(jì)算鍵值換算成編號 return(keycode); /#/*/鍵盤中斷 讀取鍵
37、值并且轉(zhuǎn)換為二進(jìn)制代碼 void ch451_inter() interrupt 2 using 1 unsigned char i; unsigned char keycode1,keycode;/定義命令字,和數(shù)據(jù)存儲器 EA=0; keycode1=0 x07; /輸入讀451命令字 ch451_load=0; for(i=0;i=1; /往右移一位 ch451_dclk=1; /產(chǎn)生時鐘上升沿鎖通知CH451輸入位數(shù)據(jù) ch451_load=1;/產(chǎn)生加載上升沿通知CH451處理命令數(shù)? keycode=0; /去除keycode keycode1=0; ch451_dclk=0; /
38、產(chǎn)生時鐘下升沿通知CH451輸出下一位 ch451_dclk=1; for(i=0;i3;i+) /輸出行數(shù) 有四行 第一行0keycode1=1;keycode1|=ch451_dout;ch451_dclk=0;ch451_dclk=1;for(i=0;i3;i+) / 輸出列數(shù) 四列 第一列為0keycode=1;keycode|=ch451_dout;ch451_dclk=0;ch451_dclk=1; ch451_key=keycode1*4+keycode;/計(jì)算鍵值換算成編號 if(ch451_key=10) setb=1; else if(ch451_key=11)/b多采樣5
39、次 cai=cai+3; ch451_write(CH451_DIG0|cai/100); ch451_write(CH451_DIG1|cai/10); ch451_write(CH451_DIG2|cai%10); delay(250); delay(200); else if(ch451_key=12)/c少采樣5次 cai=cai-5; ch451_write(CH451_DIG0|cai/100); ch451_write(CH451_DIG1|cai/10); ch451_write(CH451_DIG2|cai%10); delay(250); delay(200); flag=
40、1; /標(biāo)記 IE1=0; /清中斷標(biāo)志 EA=1;/# unsigned char Read_0809(unsigned char channel) unsigned int a=0,b; unsigned char getdata=0,getdata22=0,out=0,j=0; ad0809_ST=0; P0=channel; /選擇采集通道 ad0809_ale=0; /存入通道地址 ad0809_ale=1; ad0809_ale=0; ad0809_OE=0; ad0809_ST=1; ad0809_ST=0; /AD開始 while(jcai) /采樣cai次 delay(1);
41、 if(ad0809_EOC=1) ad0809_OE=1; P0=0 xff; /讀數(shù)據(jù)前置1 getdata=P0; ad0809_OE=0; ad0809_ST=1; ad0809_ST=0;/開始下一次轉(zhuǎn)換 a=a+getdata; j+; out=a/cai; b=a/cai;getdata22=(unsigned char)(8*b+34*dav-3786)/100);/換算為溫度值/if(chuan=1) tdata_pc(getdata22);/發(fā)送到上位機(jī)/ tdata_pc(dav,1);/發(fā)送到上位機(jī)return(out); /*/讀取N個平均數(shù) 對其排序 取其中間值輸出
42、unsigned char doevdata(unsigned char n) unsigned char i,j,a; unsigned int count=0; for(i=0;in;i+) getevi=Read_0809(0); /count=count+getevi; for(i=0;in;i+) for(j=i;jgetevj)/此處有待優(yōu)化 a=getevi; getevi=getevj; getevj=a; /for(i=) /a=count/2/n+getev(n-1)/2/2;a=getev(n-1)/2; return(a); /#/* /一檔 K=2580度10度 0131
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地方高校轉(zhuǎn)型實(shí)踐的策略及實(shí)施路徑
- 二零二五年度車輛借出責(zé)任免除及駕駛規(guī)范合同
- 2025年度商務(wù)協(xié)議翻譯及全球供應(yīng)鏈管理服務(wù)合同
- 水路運(yùn)輸?shù)V石采購合同
- 2024-2030年中國足球用品行業(yè)市場深度分析及投資策略研究報告
- 機(jī)械制造工藝測試題+參考答案
- 包裝設(shè)計(jì)師模擬習(xí)題+答案
- 第六單元課外古詩詞誦讀《卜算子·黃州定慧院寓居作》教學(xué)設(shè)計(jì)-2023-2024學(xué)年統(tǒng)編版語文八年級下冊
- 2025年新型復(fù)合型菌劑合作協(xié)議書
- 2025年阻燃塑料電表箱行業(yè)深度研究分析報告
- 2024建設(shè)工程人工材料設(shè)備機(jī)械數(shù)據(jù)分類和編碼規(guī)范
- 揚(yáng)帆藍(lán)天無人機(jī)法律法規(guī)與應(yīng)用培訓(xùn)教案課件
- 倉庫高位貨架管理制度培訓(xùn)課件
- 工會經(jīng)費(fèi)列支范圍及工會經(jīng)費(fèi)支出范圍
- 道教文化的映射:《三國演義》中的道教元素分析
- 成人高考課件
- 高中英語高考讀后續(xù)寫巧用動作鏈專項(xiàng)練習(xí)(附參考答案和解析)
- 哲學(xué)與人生全套課件146P
- 敬老院設(shè)備采購?fù)稑?biāo)方案(技術(shù)方案)
- 充電樁采購安裝售后服務(wù)方案
- 肝癌個案護(hù)理課件
評論
0/150
提交評論