《智能儀器》課程設(shè)計(jì)說(shuō)明書(shū)-智能溫度測(cè)量?jī)x表方案設(shè)計(jì)_第1頁(yè)
《智能儀器》課程設(shè)計(jì)說(shuō)明書(shū)-智能溫度測(cè)量?jī)x表方案設(shè)計(jì)_第2頁(yè)
《智能儀器》課程設(shè)計(jì)說(shuō)明書(shū)-智能溫度測(cè)量?jī)x表方案設(shè)計(jì)_第3頁(yè)
《智能儀器》課程設(shè)計(jì)說(shuō)明書(shū)-智能溫度測(cè)量?jī)x表方案設(shè)計(jì)_第4頁(yè)
《智能儀器》課程設(shè)計(jì)說(shuō)明書(shū)-智能溫度測(cè)量?jī)x表方案設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 TOC o 1-3 h z u HYPERLINK l _Toc264232311 前言 PAGEREF _Toc264232311 h 2 HYPERLINK l _Toc264232312 第一章 智能溫度測(cè)量?jī)x表方案設(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 溫度值粗測(cè)理論推導(dǎo) PAGEREF _Toc264232317 h 6 HYPERLINK l _Toc264232318 1.3.3 根據(jù)T1確定差分局部的理論推導(dǎo) PAGEREF _Toc264232318 h 7 HYPERLINK l _Toc264232319 第二章 智能溫度測(cè)量?jī)x表的硬件設(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 快速測(cè)量溫度粗值函數(shù)設(shè)計(jì) PAGEREF _Toc264232331 h 13 HYPERLINK l _Toc264232332 上位機(jī)軟件設(shè)計(jì) PAGEREF _Toc264232332 h 13 HYPERLINK l _Toc264232333 第四章 智能溫度測(cè)量系統(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)試過(guò)程 PAGEREF _Toc264232336 h 15 HYPERLINK l _Toc264232337 第五章 設(shè)計(jì)體會(huì)與小結(jié) PAGEREF _Toc264232337 h 16 HYPERLINK l _Toc264232338 參考文

7、獻(xiàn) PAGEREF _Toc264232338 h 17 HYPERLINK l _Toc264232339 附錄 PAGEREF _Toc264232339 h 18前言隨著時(shí)代的進(jìn)步和開(kāi)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研、各個(gè)領(lǐng)域,已經(jīng)成為一種比擬成熟的技術(shù), 本文主要介紹了一個(gè)基于AT89C51單片機(jī)的測(cè)溫系統(tǒng),描述了利用溫度傳感器PT100測(cè)溫系統(tǒng)的過(guò)程,對(duì)傳感器在單片機(jī)下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了分析,對(duì)各局部的電路也一一進(jìn)行了介紹,該系統(tǒng)可以方便的實(shí)現(xiàn)溫度采集和顯示,靈敏度高、體積小、功耗低等優(yōu)點(diǎn),適合于我們?nèi)粘I詈凸?、農(nóng)業(yè)生產(chǎn)中的溫度測(cè)量,也可以當(dāng)作

8、溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴(kuò)展。第一章 智能溫度測(cè)量?jī)x表方案設(shè)計(jì)與論證1.1 功能與要求功能基于單片機(jī)的溫度測(cè)控系統(tǒng)分為上位機(jī)和下位機(jī)兩局部。其中上位機(jī)應(yīng)可通過(guò)虛擬儀器的前置面板界面顯示溫度數(shù)據(jù),假設(shè)溫度超過(guò)設(shè)定溫度,在顯示屏上進(jìn)行報(bào)警提示。而下位機(jī)那么是可以利用單片機(jī)對(duì)溫度傳感器采集到的溫度數(shù)據(jù)及時(shí)采樣,并在數(shù)碼管上顯示,用矩陣鍵盤(pán)來(lái)控制和設(shè)定溫度值,并將采集到的溫度數(shù)據(jù)通過(guò)串口傳到上位PC機(jī)。要求:.學(xué)生自行設(shè)計(jì)硬件電路并焊接電路板.編寫(xiě)上位機(jī)虛擬儀器和下位機(jī)程序.實(shí)現(xiàn)溫度測(cè)控并進(jìn)行系統(tǒng)功能測(cè)試1.2 方案的論證與比擬方案一:通過(guò)運(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)定的電壓輸出,輸出電壓的范圍相對(duì)較大且線(xiàn)性度好但缺點(diǎn)是每次輸出的電壓中有無(wú)用電壓,且在溫度小于300時(shí),其無(wú)用電壓約占50%,從而導(dǎo)致放大倍數(shù)不高,測(cè)量精度偏低。方案二:利用1K的電阻與PT100構(gòu)成電橋采集電路,將采集信號(hào)經(jīng)過(guò)儀用放大器放大后在由固定的差分放大電路進(jìn)行二級(jí)放大,然后將放大信號(hào)經(jīng)過(guò)A/D轉(zhuǎn)換,最后傳給單片機(jī)。PT100電橋采集電路儀用放大器固定差分放大器A/D轉(zhuǎn)換單片機(jī)圖2 方案二的系統(tǒng)框圖 本方案的優(yōu)點(diǎn)是有較大的

10、電壓輸出范圍,溫度低于100度時(shí),測(cè)量精度可到達(dá)1度。但缺點(diǎn)是溫度較高時(shí),線(xiàn)性度不好,測(cè)量精度達(dá)不到1度,且不能自動(dòng)換擋。方案三:由PT100和10K電阻組成電橋采集電路,將采集信號(hào)傳送給儀用放大器放大,然后將放大的信號(hào)經(jīng)過(guò)差分電路進(jìn)行二級(jí)放大,由于放大倍數(shù)的因素需對(duì)二級(jí)放大參加補(bǔ)償,然后進(jìn)行A/D轉(zhuǎn)換,最后將數(shù)字量傳送給單片機(jī)。PT100組成電橋10K儀用放大器INA114差分電路A/D轉(zhuǎn)換ADC0809CD4051DA5615 單片機(jī) 89C51圖3 方案三的系統(tǒng)框圖 在軟件上,通過(guò)改變儀用放大器的倍數(shù),從而實(shí)現(xiàn)自動(dòng)換擋,即可以測(cè)量較大范圍內(nèi)的電信號(hào)。當(dāng)初步測(cè)量出被測(cè)信號(hào)后,就可也綜合考慮

11、,選擇出適宜的儀用放大器的放大倍數(shù)和差分電路所需的DA輸出電壓。這樣就可以實(shí)現(xiàn)精確測(cè)量。本方案的優(yōu)點(diǎn)是有較好的線(xiàn)性電壓輸出,可自動(dòng)選擇量程,有較高的測(cè)量精度,測(cè)量范圍較大。但缺點(diǎn)是抗干擾能力相對(duì)較弱,需要加必要的抗干擾設(shè)計(jì),否那么干擾太強(qiáng)同樣達(dá)不到設(shè)計(jì)要求的精度。方案確實(shí)定綜合比擬以上各種方案的性能后,決定采用方案三。 數(shù)據(jù)采集通道的理論計(jì)算溫度傳感器:為溫度,為比例系數(shù),為常系數(shù)在精確測(cè)量時(shí),和的值會(huì)根據(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ù)值為測(cè)量值或設(shè)計(jì)值,均為國(guó)際單位BA2582010000502020201020AD輸入輸出關(guān)系:數(shù)字量輸出: =51 6那么由123456得: T = + - +A (7) 溫度值粗測(cè)理論推導(dǎo)由于每次測(cè)量時(shí)不知道溫度大概值,于是有必要先粗測(cè)出溫度值,根據(jù)7讓 - +A = 0 8 表2 參數(shù)取值及對(duì)應(yīng)值 25850201015730126 從而 T 1= 9表3 參數(shù)取值及對(duì)應(yīng)值 258502010 根據(jù)T1確定差分局部的

13、理論推導(dǎo)要確保精度到達(dá)0.1度,那么有約為0.04時(shí)能被AD識(shí)別出來(lái),于是 /(4R)5* 9那么40000;取=258, =20。由123得=0.0129*T1 +0.6450 0.645與B有很大關(guān)系又實(shí)測(cè)出最大約為4.6V,測(cè)出希望有一定的輸出14.2V之間,那么由(4) (5) 得3.145*T1+98.7393.145*T1+144 10第二章 智能溫度測(cè)量?jī)x表的硬件設(shè)計(jì)2.1 系統(tǒng)硬件框圖本設(shè)計(jì)選用PT100作為溫度傳感器,采用三線(xiàn)制接法,與10K電阻構(gòu)成電橋,將輸出電壓依次送入儀用放大器,一階低通濾波器,差動(dòng)放大器,一階低通濾波器,ADC0809轉(zhuǎn)換,最后將轉(zhuǎn)換后的數(shù)字信號(hào)經(jīng)單片

14、機(jī)進(jìn)行數(shù)字濾波,得到溫度值。同時(shí)可以通過(guò)矩陣鍵盤(pán)進(jìn)行控制,通過(guò)LED進(jìn)行顯示。系統(tǒng)硬件方框圖如圖3所示。PT100組成電橋10K儀用放大器INA114LPF、差分電路A/D轉(zhuǎn)換ADC0809CD4051DA5615單片機(jī) 89C51MAX232上位機(jī)CH4514*4鍵盤(pán)4位LED圖3系統(tǒng)硬件框圖系統(tǒng)的輸入通道設(shè)計(jì)本系統(tǒng)輸入通道作用是將溫度轉(zhuǎn)換為電壓信號(hào),再轉(zhuǎn)換為數(shù)字信號(hào)傳給單片機(jī)。其組成包括:電橋儀用放大器、程控差分放大器,A/D轉(zhuǎn)換及低通濾波器。具體電路如圖4所示。 圖4 系統(tǒng)輸出通道電路圖單片機(jī)最小系統(tǒng)本局部的作用是處理數(shù)據(jù),控制各器件。組成包括89c52單片機(jī),時(shí)鐘電路,復(fù)位電路。其具體

15、電路如圖5所示。圖5 單片機(jī)最小系統(tǒng)電路圖人機(jī)接口電路本電路的作用是實(shí)現(xiàn)溫度顯示,溫度設(shè)定。組成模塊有4位集成數(shù)碼顯示,4*4鍵盤(pán)等。具體電路如圖6所示。圖6 人機(jī)接口電路圖 串口電路本電路的作用是實(shí)現(xiàn)單片機(jī)與上位機(jī)的通訊。其組成包括:MAX232,串口通訊接口等。具體電路如圖7所示。圖7 串口通訊電路 執(zhí)行電路本局部的作用是通過(guò)三極管推動(dòng)繼電器工作。組成包括:三極管,繼電器,發(fā)光二極管等,具體電路如圖8所示。圖8 執(zhí)行電路第三章 軟件設(shè)計(jì)下位機(jī)軟件的設(shè)計(jì) 下位機(jī)主程序設(shè)計(jì) 系統(tǒng)的軟件設(shè)計(jì)可以分為幾個(gè)局部,首先是各個(gè)模塊的底層驅(qū)動(dòng)程序編寫(xiě),然后是系統(tǒng)的聯(lián)機(jī)調(diào)試,編寫(xiě)上層系統(tǒng)程序。本系統(tǒng)軟件程序

16、主要包括:模數(shù)轉(zhuǎn)換ADC0809的底層驅(qū)動(dòng)模塊,數(shù)模轉(zhuǎn)換TLC5615的底層驅(qū)動(dòng)模塊,人機(jī)交互CH451的底層驅(qū)動(dòng)模塊包含鍵盤(pán)掃描和數(shù)碼管顯示,串口通信MAX232的底層驅(qū)動(dòng)等。系統(tǒng)的軟件流程如圖9。圖9 主程序流程圖 CH451中斷子程序設(shè)計(jì)選用高速線(xiàn)串行接口可節(jié)省I/O口,其操作命令均為位, 其中高位為標(biāo)識(shí)碼, 低位為參數(shù),其會(huì)自動(dòng)掃描,這就可以省去單片機(jī)的大量工作。CH451中斷子程序流程如圖10。圖10 CH451中斷子程序流程圖 數(shù)字濾波函數(shù)和ADC0809讀函數(shù)設(shè)計(jì)屢次采樣,然后將采樣值按順序排列,再將中間值作為最終輸出,這樣通過(guò)運(yùn)用中值濾波可以去掉偶然因素引起的波動(dòng)或采樣不穩(wěn)定這

17、里ADC0809的時(shí)鐘約1.3M,超過(guò)其設(shè)計(jì)最大值,極有可能并不穩(wěn)定,通過(guò)求平均值,消除脈沖性干擾,得到相對(duì)平滑的波形。程序流程如圖11。ADC0809為8位并口輸出,8通道,逐次逼近,8位模數(shù)變換器。程序流程如圖12。開(kāi)始對(duì)數(shù)據(jù)按大小排序讀取n個(gè)平均數(shù)據(jù)輸出中間值圖11 數(shù)字濾波函數(shù)流程圖 圖12 ADC0809讀函數(shù)流程圖 快速測(cè)量溫度粗值函數(shù)設(shè)計(jì) 由于剛開(kāi)始測(cè)量時(shí)不知道被測(cè)溫度的大概值,于是這里設(shè)計(jì)了自動(dòng)換擋測(cè)量出溫度的粗值,從而可以計(jì)算出差分電壓局部所需要的被減電壓,從而通過(guò)TLC5615輸出,進(jìn)而實(shí)現(xiàn)精確測(cè)量??焖贉y(cè)量溫度粗值函數(shù)程序流程如圖13。圖13 快速測(cè)量溫度粗值函數(shù)流程圖上

18、位機(jī)軟件設(shè)計(jì) 通過(guò)MAX232實(shí)現(xiàn)串口通訊,下位機(jī)將數(shù)據(jù)發(fā)送到到上位機(jī)。上位機(jī)可以利用其相對(duì)強(qiáng)大的數(shù)據(jù)處理能力將數(shù)據(jù)進(jìn)一步處理,讓后輸出顯示,也可以實(shí)現(xiàn)遠(yuǎn)程控制。本出只是將數(shù)據(jù)上傳,讓后以波形,數(shù)字和溫度計(jì)形式顯示出來(lái)。此處運(yùn)用LABVIEW軟件實(shí)現(xiàn),其程序圖如圖14。前置面板如圖15。 圖14 上位機(jī)程序圖 圖15 上位機(jī)前置面板第四章 智能溫度測(cè)量系統(tǒng)的安裝與調(diào)試4.1 硬件調(diào)試將硬件設(shè)計(jì)好后,通過(guò)軟件將采集局部的模擬電路進(jìn)行調(diào)試,讓其輸出入一定的模擬量測(cè),在測(cè)量其輸出,看是否與理論值相當(dāng)。再加一定的干擾,在側(cè)其出處是否穩(wěn)定。經(jīng)過(guò)這樣必要的軟件仿真后,在焊接實(shí)際器件,由于沒(méi)有印刷電路板,那

19、么得花費(fèi)較多時(shí)間焊接,并檢查是否虛焊,短路等。排除一些列問(wèn)題后,在進(jìn)行輸入輸出測(cè)試。看與理論值有多大的誤差,是否可用。測(cè)試順序依次是:電橋,儀用放大器,差動(dòng)放大器。4.2 軟件調(diào)試先編寫(xiě)好ADC0809的驅(qū)動(dòng)程序,在其輸入端接上標(biāo)準(zhǔn)電壓,對(duì)其進(jìn)行A轉(zhuǎn)換,讓其輸出以8位二進(jìn)制代碼形式,通過(guò)8個(gè)發(fā)光二極管顯示,看起是否有輸出,輸出值是否準(zhǔn)確。這樣將其調(diào)通。再編寫(xiě)TLC5615的驅(qū)動(dòng)程序,通過(guò)萬(wàn)用表測(cè)量其輸出,看其是否有輸出,其輸出值是否與程序中的設(shè)定值相當(dāng)。這樣將其調(diào)通。最后寫(xiě)CH451的驅(qū)動(dòng)程序,按照PDF芯片資料,編寫(xiě)程序,在檢查無(wú)誤后,看起是否可以控制數(shù)碼管,鍵盤(pán)是否有限。此芯片的操作比擬難

20、,不容易檢查控制上的問(wèn)題,我主要是通過(guò),在程序中加延時(shí),加死循環(huán),然后觀(guān)察其現(xiàn)象,用萬(wàn)用表測(cè)量其電壓,看是否正常。這樣將其調(diào)通。所有驅(qū)動(dòng)完成后在編主程序,按照需要調(diào)用相應(yīng)函數(shù),協(xié)調(diào)其中的變量關(guān)系等。最終實(shí)現(xiàn)完全調(diào)通。整機(jī)調(diào)試過(guò)程將所有的硬件組裝起來(lái),下載軟件,啟動(dòng)智能溫度測(cè)量系統(tǒng),在溫度下測(cè)量,看其輸出是否正常,繪制出輸入輸出關(guān)系圖,并與標(biāo)準(zhǔn)溫度變化曲線(xiàn)進(jìn)行比擬,進(jìn)而根據(jù)標(biāo)準(zhǔn)溫度變化的圖計(jì)算出修正參數(shù),然后修改源程序中由原來(lái)理論值得到的參數(shù)。再次啟動(dòng)系統(tǒng)看是否滿(mǎn)足要求,如不行,那么再次修正。如此往復(fù)幾遍前方才滿(mǎn)足要求。第五章 設(shè)計(jì)體會(huì)與小結(jié)到達(dá)設(shè)計(jì)要求,且在一定范圍內(nèi)其精度可以到達(dá)0.1攝氏度

21、。很累!但是學(xué)到了知識(shí),也得到了快樂(lè)!設(shè)計(jì)時(shí)要查閱相關(guān)書(shū)籍 ,一本本的攤開(kāi)在桌上,看芯片資料,就一個(gè)CH451的資料就有15頁(yè),它不像小說(shuō)一目十行幾分鐘就可以讀完,要用這種器件就必須一絲不茍的了解其功能,一點(diǎn)錯(cuò)誤就可能導(dǎo)致數(shù)據(jù)出不來(lái),然后設(shè)計(jì)局部電路圖,再將所有模塊連接起來(lái)。設(shè)計(jì)時(shí)還算輕松,初次完全自主進(jìn)行系統(tǒng)設(shè)還是有許多問(wèn)題都沒(méi)考慮到,如理論值,理論狀態(tài),往往與實(shí)際有一定的差距,這些差異如何決絕是以前從來(lái)沒(méi)考慮過(guò)的。有些心里想的雖然頭頭是道,但實(shí)際上存在許多問(wèn)題。就連一個(gè)簡(jiǎn)單的電阻都會(huì)有問(wèn)題,理論上要多大就有多大,而實(shí)際上首先是只有固定的電阻,且還有一定的誤差。如果用電位器,其大小是可以調(diào)節(jié)

22、,但是它所溫度和電磁干擾影響較大。在做電橋時(shí)由于以上兩種電阻的缺點(diǎn),輸入電源又不穩(wěn)定,以及輸出的電壓又小毫伏級(jí),使得輸出電壓相對(duì)噪音很大.比擬難以處理。在用不同電阻打結(jié)電路,接不同電源,發(fā)現(xiàn)以上問(wèn)題后,最終解決方案是采用固定電阻,對(duì)電源加以濾波,再加屏蔽。由于選擇的是10K電阻,相對(duì)誤差有10%,即絕對(duì)值有1000,而Pt100才一兩百歐姆,這就不能隨便接,而要具體測(cè)量數(shù)個(gè)電阻阻值后,從中選出能和Pt100構(gòu)成對(duì)稱(chēng)電橋,即使這樣最后還是有約2mv的電壓誤差,而它看似小,實(shí)際上卻可以代表30讀攝氏度。如不考慮,必將導(dǎo)致最后設(shè)計(jì)上的失敗。其實(shí)剛開(kāi)始時(shí),心里是沒(méi)有多大把握能做出個(gè)什么東西的,畢竟從來(lái)

23、就沒(méi)進(jìn)行過(guò)系統(tǒng)設(shè)計(jì),但是覺(jué)得總會(huì)有這一天的,不可能什么事只有到會(huì)了才去做。設(shè)計(jì)過(guò)程比擬長(zhǎng),人也一直覺(jué)得比擬累,但是它就像一次跋涉,每次穿過(guò)了荊棘,登上一座山坡,總會(huì)有的美景可以欣賞,人的視野也更開(kāi)闊,往腳下一看,會(huì)覺(jué)得沒(méi)想到能爬上來(lái);同時(shí)也增加信心,敢于向更高的山峰進(jìn)軍。參考文獻(xiàn)1.?單片微型計(jì)數(shù)機(jī)與接口技術(shù)?(第2版) 李群芳,張士軍,黃 建 編著,電子工業(yè)出版社,20052 ?微機(jī)原理試驗(yàn)指導(dǎo)書(shū)? 武漢理工大學(xué)華夏學(xué)院 20063 ?傳感與檢測(cè)技術(shù)? 戴卓 主編, 武漢理工大學(xué)出版社 20034 ?測(cè)控電路? 張國(guó)雄 主編 機(jī)械工業(yè)出版社 20215 ?LabVIEW8.20程序設(shè)計(jì)從入門(mén)

24、到精通? 陳錫輝,張銀鴻 編著 清華大學(xué)出版社 2007附錄源程序#define CH451_RESET 0 x0201 /復(fù)位#define CH451_LEFTMOV 0 x0300 /設(shè)置移動(dòng)方式-作移#define CH451_LEFTCYC 0 x0301 /設(shè)置移動(dòng)方式-左循#define CH451_RIGHTMOV 0 x0302 /設(shè)置移動(dòng)方式-右移#define CH451_RIGHTCYC 0 x0303 /設(shè)置移動(dòng)方式-右循#define CH451_SYSOFF 0 x0400 /關(guān)顯示、鍵盤(pán)、看門(mén)狗#define CH451_SYSON1 0 x0401 /開(kāi)顯示#

25、define CH451_SYSON2 0 x0403 /開(kāi)顯示、鍵盤(pán)#define CH451_SYSON3 0 x0407 /開(kāi)顯示、鍵盤(pán)、看門(mén)狗功能#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 /如果使用鍵盤(pán)中斷請(qǐng)定義#define USE_KEY 1#define uchar unsigned char/*/須主程序定義的參數(shù)/*sbit relay=P20;sbit c

27、h451_dclk=P21; /串行數(shù)據(jù)時(shí)鐘上升延激活sbit ch451_din=P22; / 串行數(shù)據(jù)輸出,接CH451的數(shù)據(jù)輸入sbit ch451_load=P23;sbit ch451_dout=P33; /INT1,鍵盤(pán)中斷和鍵值數(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;/ 存放鍵盤(pán)中斷中讀取的鍵值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;/用于存儲(chǔ)設(shè)定的溫度數(shù)據(jù) 高位在前unsigned char gettemp4;/存儲(chǔ)采樣到的溫度/*/* /延時(shí)程序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ù)名稱(chēng):uart_init功能: uart初始化函數(shù)參數(shù):無(wú)返回值:無(wú)*/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ù)名稱(chēng):uart_send功能: 發(fā)送數(shù)據(jù)參數(shù):dat(待發(fā)送數(shù)據(jù))返回值:無(wú)*/ /定義一無(wú)符號(hào)整型變量存儲(chǔ)12字節(jié)的命令字。void ch451_write(unsigned int command) unsigned char i;#ifdef USE_KEY EX1=0; /禁止鍵盤(pán)中斷 #endif ch451_load=0; /命令開(kāi)始 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線(xiàn)輸入 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)先級(jí) EX1=1; /開(kāi)中斷 #endif/*/*/輸入命令子程序,MCU從451讀一字節(jié)/*/void Set_temp(void) /設(shè)定保溫點(diǎn) unsigned char i; ch451_write(CH451_DIG0|showtemp0)

33、;/顯示原來(lái)設(shè)定溫度 ch451_write(CH451_DIG1|showtemp1); ch451_write(CH451_DIG2|showtemp2); /設(shè)定溫度 ch451_write(CH451_TWINKLE|1); /閃爍 EX1=1; /允許鍵盤(pán)中斷 while(flag=0); EX1=0; /禁止鍵盤(pán)中斷 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; /允許鍵盤(pán)中斷 while(flag=0); EX1=0; /禁止鍵盤(pán)中斷 flag=0; showtemp1=ch451_key; ch451_write(CH451_DIG1|showtemp1); ch451_write(CH451_TWINKLE); ch451_write(CH451_TWINKLE|4); EX1=1; /允許鍵盤(pán)中斷 while(flag=0); EX1=0; /禁止鍵盤(pán)中斷 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ù)存儲(chǔ)器/EA=0; / EX1=0; /關(guān)中段 keycode1=0 x07; /輸入讀451命令字 ch451_load=0; for(i=0;i=1; /往右移一位 ch451_dclk=1; /產(chǎn)生時(shí)鐘上升沿鎖通知CH451輸入位數(shù)據(jù) ch451_load=1;/產(chǎn)生加載上升沿通知CH451處理命令數(shù)? keycode=0; /去除keycode key

36、code1=0; ch451_dclk=0; /產(chǎn)生時(shí)鐘下升沿通知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ì)算鍵值換算成編號(hào) return(keycode); /#/*/鍵盤(pán)中斷 讀取鍵

37、值并且轉(zhuǎn)換為二進(jìn)制代碼 void ch451_inter() interrupt 2 using 1 unsigned char i; unsigned char keycode1,keycode;/定義命令字,和數(shù)據(jù)存儲(chǔ)器 EA=0; keycode1=0 x07; /輸入讀451命令字 ch451_load=0; for(i=0;i=1; /往右移一位 ch451_dclk=1; /產(chǎn)生時(shí)鐘上升沿鎖通知CH451輸入位數(shù)據(jù) ch451_load=1;/產(chǎn)生加載上升沿通知CH451處理命令數(shù)? keycode=0; /去除keycode keycode1=0; ch451_dclk=0; /

38、產(chǎn)生時(shí)鐘下升沿通知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ì)算鍵值換算成編號(hào) 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開(kāi)始 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;/開(kāi)始下一次轉(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個(gè)平均數(shù) 對(duì)其排序 取其中間值輸出

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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論