《機(jī)電系統(tǒng)綜合課程設(shè)計(jì)》_第1頁(yè)
《機(jī)電系統(tǒng)綜合課程設(shè)計(jì)》_第2頁(yè)
《機(jī)電系統(tǒng)綜合課程設(shè)計(jì)》_第3頁(yè)
《機(jī)電系統(tǒng)綜合課程設(shè)計(jì)》_第4頁(yè)
《機(jī)電系統(tǒng)綜合課程設(shè)計(jì)》_第5頁(yè)
已閱讀5頁(yè),還剩23頁(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、中原工學(xué)院機(jī)電學(xué)院機(jī)電系統(tǒng)綜合課程設(shè)計(jì)說(shuō)明書(shū)(2014-2015學(xué)年第 1 學(xué)期)專(zhuān) 業(yè): 機(jī)械電子工程 課設(shè)題目: 大氣溫度檢測(cè)系統(tǒng) 姓 名: 學(xué) 號(hào): 班 級(jí) 所在小組: 大氣溫度檢測(cè)組 小組分工: 軟件的編程和調(diào)試 指導(dǎo)教師: 完成日期: 2015 年 1 月 14 日機(jī)械電子工程教研室目 錄設(shè)計(jì)任務(wù)書(shū)11.設(shè)計(jì)目的與意義22.設(shè)計(jì)內(nèi)容和要求22.1方案確定22.2設(shè)計(jì)內(nèi)容42.3設(shè)計(jì)要求43.設(shè)計(jì)進(jìn)度安排44.機(jī)電系統(tǒng)設(shè)計(jì)的分析和說(shuō)明5 4.1控制設(shè)計(jì)54.2機(jī)電系統(tǒng)的調(diào)試165.機(jī)電綜合課設(shè)結(jié)論176.機(jī)電綜合課設(shè)的收獲、體會(huì)和建議187.參考文獻(xiàn)188.附錄19設(shè)計(jì)任務(wù)書(shū)題 目設(shè)計(jì)

2、大氣溫度檢測(cè)系統(tǒng)設(shè)計(jì)任務(wù)要求設(shè)計(jì)合理可行的方案來(lái)實(shí)時(shí)準(zhǔn)確的檢測(cè)大氣的溫度,可以采用數(shù)字顯示,也可采用模擬信號(hào)進(jìn)行指針顯示等,只要設(shè)計(jì)符合要求即可。時(shí)間進(jìn)度1月1日決定方案采用數(shù)字顯示;1月2日進(jìn)行硬件的選?。?月3日進(jìn)行原理圖的繪;1月4日進(jìn)行PROTUESE的繪制;1月5日1月7日進(jìn)行寫(xiě)編程;1月8日1月9日進(jìn)行編程的調(diào)試和仿真;1月10日1月11日進(jìn)行硬件的焊接;1月12日到1月14日進(jìn)行設(shè)計(jì)說(shuō)明書(shū)的書(shū)寫(xiě);1月15日進(jìn)行課設(shè)答辯;主要參考書(shū)籍和資料1張俊.匠人手記M. 北京航空航天大學(xué)出版社,2014.12劉海威.單片機(jī)及應(yīng)用系統(tǒng)設(shè)計(jì)原理與實(shí)踐M.北京航空航天大學(xué)出版社,2009.73王守

3、中.DIY玩轉(zhuǎn)51單片機(jī)M. 電子工業(yè)出版社,2013.24張?jiān)?,張炎,趙延軍.微電子學(xué)J.2007,37(5)任務(wù)分工備 注 大氣溫度檢測(cè)課程設(shè)計(jì)說(shuō)明書(shū)1.設(shè)計(jì)目的與意義微機(jī)測(cè)量和控制技術(shù)在經(jīng)濟(jì)迅速發(fā)展的今天,已被廣泛應(yīng)用于人類(lèi)生活中,如工業(yè)控制、自動(dòng)檢測(cè)、智能儀器儀表、家用電器、等各個(gè)方面。而主控制器是每個(gè)控制系統(tǒng)不可或缺的部分,正因?yàn)閱纹瑱C(jī)有體積小,重量輕,抗干擾能力強(qiáng),環(huán)境要求不高,價(jià)格低廉,可靠性高,靈活性好,開(kāi)發(fā)較為容易等優(yōu)點(diǎn),所以它是很多設(shè)計(jì)人員的首選控制器。而在人們的日常生活或工業(yè)生產(chǎn)中,經(jīng)常要對(duì)溫度進(jìn)行檢測(cè)及控制。在許多場(chǎng)合器材設(shè)備對(duì)溫度的要求非常高,而傳統(tǒng)的溫度計(jì)反應(yīng)速度慢

4、、讀數(shù)麻煩、測(cè)量精度不高、誤差大,所以需要設(shè)計(jì)一種高精度的溫度計(jì)。為了在很大程度上提高對(duì)溫度的控制水平,因此以單片機(jī)為核心的溫度采集與控制系統(tǒng)很有用研發(fā)和應(yīng)用意義。本文設(shè)計(jì)一個(gè)可以實(shí)時(shí)檢測(cè)并顯示當(dāng)前的溫度數(shù)據(jù)的系統(tǒng),文章以AT89C51單片機(jī), DS18B20溫度傳感器為硬件基礎(chǔ),主要介紹了相關(guān)的硬件電路的連接和相關(guān)應(yīng)用程序。硬件電路主要包括ATC89C51單片機(jī)最小系統(tǒng),測(cè)溫電路、LCD顯示電路等。系統(tǒng)程序主要包括主程序、讀出溫度子程序、計(jì)算溫度子程序、LCD顯示模塊的顯示程序等。2. 設(shè)計(jì)內(nèi)容和要求 2.1方案確定方案一基于熱敏電阻的溫度計(jì)設(shè)計(jì) 方案一主要由熱敏電阻、電橋電路,指

5、針儀器組成。熱敏電阻的電阻值隨溫度升高而迅速下降,因?yàn)闊崦綦娮栌砂雽?dǎo)體制成,在半導(dǎo)體內(nèi)部,自由電子數(shù)目隨溫度的升高增加,導(dǎo)電能力增強(qiáng),雖然原子振動(dòng)會(huì)加劇并阻礙電子的運(yùn)動(dòng)。但作用對(duì)導(dǎo)電性能影響很小,溫度上升會(huì)使電阻下降。其原理圖如圖1所示。 方案二基于DS18B20的數(shù)字溫度計(jì)設(shè)計(jì) 方案二主要也由數(shù)字溫度傳感器、單片機(jī)控制電路、LCD顯示電路組成。DS18B20 測(cè)量溫度采用了特有的溫度測(cè)量技術(shù)。它是通過(guò)計(jì)數(shù)時(shí)鐘周期來(lái)實(shí)現(xiàn)的。低溫度系數(shù)振蕩器輸出的時(shí)鐘信號(hào)通過(guò)由高溫度系數(shù)振蕩器產(chǎn)生的門(mén)周期而被計(jì)數(shù)。計(jì)數(shù)器被預(yù)置在與- 55 相對(duì)應(yīng)的一個(gè)基權(quán)值。如果計(jì)數(shù)器在

6、高溫度系數(shù)振蕩周期結(jié)束前計(jì)數(shù)到零,表示測(cè)量的溫度值高于- 55,被預(yù)置在- 55 的溫度寄存器的值就增加1,然后重復(fù)這個(gè)過(guò)程,直到高溫度系數(shù)振蕩周期結(jié)為止這時(shí)溫度寄存器中的值就是被測(cè)溫度值,這個(gè)值以16 位形式存放在便箋式存貯器中,此溫度值可由主機(jī)通過(guò)發(fā)存貯器讀命令而讀出,讀取時(shí)低位在前,高位在后。斜率累加器用于補(bǔ)償溫度振蕩器的拋物線特性。讀出的二進(jìn)制數(shù)可以直接轉(zhuǎn)換為十進(jìn)制由單片機(jī)驅(qū)動(dòng)數(shù)LCD顯示輸出。其結(jié)構(gòu)框圖如圖2所示。圖2 方案選擇 方案的選擇即是傳感器的選擇。對(duì)比二種方案可以得知,方案一是采用模擬式溫度傳感器并且采用指針輸出,

7、熱敏電阻精度低,其中各種轉(zhuǎn)換電路、放大電路的使用連接電路比較復(fù)雜,同時(shí)指針式儀表讀數(shù)存在誤差沒(méi)有數(shù)字式更為直觀。方案二采用數(shù)字式溫度傳感器。數(shù)字式溫度傳感器輸出的是隨溫度變化的數(shù)字量,更直觀,與模擬輸出相比,它輸出速度響應(yīng)較慢,但容易與MPU接口。其還能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量;能以最簡(jiǎn)方式構(gòu)成高性?xún)r(jià)比、多功能的智能化溫度控制系統(tǒng),并且DS18B20價(jià)格相對(duì)便宜,益于買(mǎi)到。更重要的是該控制系統(tǒng)采用單片機(jī)控制,而單片機(jī)具有靈敏度高、運(yùn)算速度快、穩(wěn)定等優(yōu)點(diǎn),所以我們選擇方案二以DS18B20數(shù)字溫度傳感器進(jìn)行后續(xù)設(shè)計(jì)。其原理圖如圖3所示。圖3 2.2設(shè)計(jì)內(nèi)容本程序的設(shè)計(jì)的內(nèi)容主要包括3大模塊

8、,主程序模塊、DS18b20的溫度轉(zhuǎn)換模塊、AT89C51溫度計(jì)算程序模塊、LCD顯示器的顯示程序模塊。首先,DS18B20進(jìn)行初始化程序,采集大氣的溫度信號(hào)啟動(dòng)轉(zhuǎn)換模塊進(jìn)行數(shù)據(jù)轉(zhuǎn)換,然后將轉(zhuǎn)換后的數(shù)據(jù)傳入單片機(jī)進(jìn)行數(shù)據(jù)的處理程序。待處理完成后送入顯示器。然后顯示器進(jìn)行初始化設(shè)置,讀取數(shù)據(jù)并啟動(dòng)其顯示程序進(jìn)行溫度的顯示。2.3設(shè)計(jì)要求1) DS18B20傳感器,LCD顯示器的初始化設(shè)置;   2)DS18B20傳感器的溫度轉(zhuǎn)化模塊; 3) 單片機(jī)的讀取,寫(xiě)入和處理程序; 4) LCD的顯示程序;5) 各個(gè)程序模塊之間的協(xié)調(diào);6) 仿真調(diào)試程序;7)寫(xiě)說(shuō)明

9、書(shū);3.設(shè)計(jì)進(jìn)度安排1月5日通過(guò)查閱各種資料確定系統(tǒng)程序的整體思路和規(guī)劃。1月6日進(jìn)行DS18B20,LCD的初始化程序、延時(shí)程序、溫度轉(zhuǎn)換程序的編寫(xiě)。1月7日進(jìn)行單片機(jī)數(shù)據(jù)處理程序、顯示程序的編寫(xiě),并進(jìn)行整體的協(xié)調(diào)工作。1月8日進(jìn)行程序的寫(xiě)入,并編譯改正錯(cuò)誤。1月9日進(jìn)行仿真調(diào)試程序。 1月10日進(jìn)行硬件的調(diào)試。1月12日-1月14日進(jìn)行設(shè)計(jì)說(shuō)明書(shū)的書(shū)寫(xiě)。1月15日進(jìn)行課設(shè)答辯。4.機(jī)電系統(tǒng)設(shè)計(jì)的分析與說(shuō)明 4.1控制設(shè)計(jì)整個(gè)系統(tǒng)是由硬件配合軟件來(lái)實(shí)現(xiàn)的,在硬件確定后,編寫(xiě)的軟件的功能也就基本定型了。所以軟件的功能大致可分為兩個(gè)部分:一是監(jiān)控,這也是系統(tǒng)的核心部分,二是執(zhí)行部分,完成各個(gè)具體

10、的功能。 (1)程序的整體方法DS18B20內(nèi)部的比較器以四舍五入的量化方式確定溫度寄存器的最低有效位。在計(jì)數(shù)器2停止計(jì)數(shù)后,比較器將計(jì)數(shù)器1中的計(jì)數(shù)剩余值轉(zhuǎn)換為溫度值后與0.25進(jìn)行比較,若低于0.25,溫度寄存器的最低位就置0;若高于0.25,最低位就置1;若高于0.75時(shí),溫度寄存器的最低位就進(jìn)位然后置0。這樣,經(jīng)過(guò)比較后所得的溫度寄存器的值就是最終讀取的溫度值了,其最后位代表0.5,四舍五入最大量化誤差為±1/2LSB,即0.25。DS18B20溫度采集轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在DS18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于或等于0,

11、這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。其溫度轉(zhuǎn)換計(jì)算方法有正負(fù)之分:例如當(dāng)DS18B20采集到+125的實(shí)際溫度后,輸出為07D0H,則:實(shí)際溫度=07D0H0.0625=20000.0625=1250C。例如當(dāng)DS18B20采集到-55的實(shí)際溫度后,輸出為FC90H,則應(yīng)先將11位數(shù)據(jù)位取反加1得370H(符號(hào)位不變,也不作為計(jì)算),則:實(shí)際溫度=370H0.0625=8800.0625=550C。經(jīng)過(guò)DS18B20處理過(guò)的0、1數(shù)據(jù)送入單片機(jī)后,單片機(jī)將其轉(zhuǎn)化成對(duì)應(yīng)的字符。然后送入

12、LCD假如數(shù)據(jù)為t,則t/100得到十位數(shù)進(jìn)行顯示,t%100/10得到各位數(shù),t%10得到小數(shù)點(diǎn)的后一位。如果得到的溫度在零下,則在前面加“”號(hào),并計(jì)算小數(shù)部分和整數(shù)部分的值。 (2) 主程序 本系統(tǒng)的主程序的主要功能是負(fù)責(zé)溫度的讀取并進(jìn)行實(shí)時(shí)顯示,當(dāng)其讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值時(shí),然后延時(shí)一定的時(shí)間后再次讀取溫度進(jìn)行顯示【9】。其程序流程見(jiàn)圖4-7所示。本系統(tǒng)主程序如下,它包含和編程的準(zhǔn)備工作和調(diào)用子程序功能。這種模塊化編成結(jié)構(gòu),對(duì)于程序的移植再用提供了很大的方便,而且條理清晰,仿真出現(xiàn)錯(cuò)誤時(shí)便于修改。其主程序流程圖如4所示。圖4 (3) 子程序流程圖 數(shù)字溫度計(jì)

13、系統(tǒng)子程序主要包含:讀溫度子程序、轉(zhuǎn)換溫度子程序、計(jì)算溫度子程序。 (a)讀溫度子程序流程讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需要進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。則讀溫度子程序流程圖如圖5所示。圖5(b)轉(zhuǎn)換溫度子程序流程圖 轉(zhuǎn)換溫度子程序流程圖如圖6所示。圖6(c)計(jì)算溫度子程序流程圖 計(jì)算溫度子程序流程圖如7、8圖所示。 圖7 圖8 (4) 各個(gè)模塊的程序(a) LCD顯示模塊程序,調(diào)試如圖9。#include <reg52.h>#include <intrins.h>#define uchar unsigned char#def

14、ine uint unsigned intsbit LCD_RS = P25;sbit LCD_RW = P26;sbit LCD_EN = P27;#define LCD_Data P0 #define delayNOP() _nop_();_nop_();_nop_();_nop_();float M;uchar Min_Flag=0;uchar code Temp_Disp_Title="temperture : "uchar Current_Temp_Display_Buffer="TEMP: "uchar Temp_Value=0x00,0x0

15、0;uchar Display_Digit=0,0,0;void Delay(uint t) while(-t);/*延時(shí)20us*/ void Delay_20us(void) _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /*延時(shí) time20us* */ void delay_20us(uint time) uint i; for (i=0;i<time;i+); void DelayXus(uint t) uchar i;while(t-) for(i=0;i<200;i+);bit LCD_Busy_Check

16、() bit result;LCD_RS = 0; LCD_RW = 1; LCD_EN = 1;delayNOP();result = (bit)(LCD_Data&0x80);LCD_EN=0;return result;void Write_LCD_Command(uchar CMD)while(LCD_Busy_Check();LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();LCD_Data = CMD;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;void Write_LCD_Data

17、(uchar DAT)while(LCD_Busy_Check();LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;LCD_Data = DAT;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;void LCD_Initialise() Write_LCD_Command(0x01); /清屏DelayXus(5); Write_LCD_Command(0x38); /設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口 DelayXus(5);Write_LCD_Command(0x0c); /畫(huà)面開(kāi),禁止光標(biāo)顯示閃爍DelayXus(5);W

18、rite_LCD_Command(0x06); /當(dāng)讀寫(xiě)一個(gè)字節(jié)后,光標(biāo)自動(dòng)加1 DelayXus(5);void Set_LCD_POS(uchar p) Write_LCD_Command(p|0x80); void Display_Temperature(uint num)uchar m,n,q,i; m=num/100; /得到十位 n=num%100/10; /得到個(gè)位 q=num%10; /對(duì)上述整數(shù)求余得到小數(shù)點(diǎn)后第一位 Display_Digit2 = m;Display_Digit1 = n;Display_Digit0 = q; if(Min_Flag) Current_T

19、emp_Display_Buffer7 ='-' else Current_Temp_Display_Buffer7 = ' 'Current_Temp_Display_Buffer11 = Display_Digit0 + '0'Current_Temp_Display_Buffer10 = '.'Current_Temp_Display_Buffer9 = Display_Digit1 + '0'Current_Temp_Display_Buffer8 = Display_Digit2 + '0'

20、;if(Display_Digit2 = 0)Current_Temp_Display_Buffer8 = ' 'Set_LCD_POS(0x00);for(i=0;i<16;i+) Write_LCD_Data(Temp_Disp_Titlei); Set_LCD_POS(0x40);for(i=0;i<16;i+)Write_LCD_Data(Current_Temp_Display_Bufferi); Set_LCD_POS(0x4d);Write_LCD_Data('C'); void main() uint Temperature; LCD

21、_Initialise();Delay(40000);while(1)Temperature=TempValue();Display_Temperature(Temperature);DelayXus(100);(b)DS18B20的采集模塊程序,調(diào)試圖如10.#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit ds18B20_data = P20;#define ds18B20_READ_ROM 0x33 / 讀 ROM 指令#de

22、fine ds18B20_MATCH_ROM 0x55 / 匹配 ROM 指令#define ds18B20_SKIP_ROM 0xCC / 跳過(guò) ROM 指令 #define ds18B20_SEARCH_ROM 0xF0 / 搜索 ROM 指令#define ds18B20_ALARM_SEARCH 0xEC / 報(bào)警搜索指令 #define ds18B20_WRITE_SCRATCHPAD 0x4E / 寫(xiě)暫存寄存器指令 #define ds18B20_READ_SCRATCHPAD 0xBE / 讀暫存寄存器指令#define ds18B20_COPY_SCRATCHPAD 0x48

23、/ 復(fù)制暫存寄存器指令#define ds18B20_CONVERT_T 0x44 / 啟動(dòng)溫度轉(zhuǎn)換指令#define ds18B20_RECALL_E2 0xB8 / 重新調(diào)出 E2PROM 的數(shù)據(jù) #define ds18B20_READ_POWER_SUPPLY 0xB4 / 讀電源 #define delayNOP() _nop_();_nop_();_nop_();_nop_();float M;uchar Min_Flag=0;/*溫度探頭程序*/ bit Rstds18B20(void); / DS18B20 復(fù)位程序, 返回 0-有設(shè)備連接,1-無(wú)設(shè)void Writeds18

24、B20(uchar ); / 寫(xiě)一個(gè)字節(jié) ds18B20 數(shù)據(jù)、命令子程序 uchar Readds18B20(void); / 讀一個(gè)字節(jié)ds18B20 數(shù)據(jù)子程序uint TempValue(void); / 啟動(dòng) ds18B20 溫度轉(zhuǎn)換程序 /*ds18B20 復(fù)位程序*/ bit Rstds18B20(void) / 返回,0-有設(shè)備連接;1-無(wú)設(shè)備連接 uchar i; bit RstFlag; RstFlag = 1; ds18B20_data = 1; _nop_(); ds18B20_data=0; / 發(fā)送復(fù)位脈沖,時(shí)間>480us delay_20us(40); /

25、 延時(shí) 480-960us ds18B20_data = 1; / 拉高總線,延時(shí) 15us-60us 后等待ds18B20 響應(yīng) delay_20us(2); / 15us-60us for (i=0;i<6;i+) / 60us-240us delay_20us(1); if (ds18B20_data=0) RstFlag=0; / 接收 ds18B20 的存在信號(hào) delay_20us(20); / 240us return RstFlag; /*寫(xiě)一個(gè)字節(jié) ds18B20 數(shù)據(jù)、命令子程序*/ void Writeds18B20(uchar ch) uchar i; ds18B

26、20_data = 1; / 拉高總線,延時(shí) 1us,準(zhǔn)備啟動(dòng) _nop_(); for (i=0;i<8;i+) ds18B20_data = 0; / 拉低總線 Delay_20us(); ds18B20_data = ch&0x1; / 發(fā)送待寫(xiě)入的數(shù)據(jù), “1”或“0” delay_20us(2); ds18B20_data = 1; / 拉高總線,延時(shí) 1us 后準(zhǔn)備下一位傳輸 ch = ch>>1; _nop_(); /先寫(xiě)低位,后寫(xiě)高位 /*讀一個(gè)字節(jié) ds18B20 數(shù)據(jù)子程序*/ uchar Readds18B20(void) uchar i,ch;

27、 ch = 0; ds18B20_data = 1; / 拉高總線,延時(shí) 1us,準(zhǔn)備啟動(dòng) _nop_(); for (i=0;i<8;i+) ds18B20_data = 0; / 拉低總線 Delay_20us(); ds18B20_data = 1; / 拉高總線,準(zhǔn)備接收數(shù)據(jù) _nop_(); ch = ch>>1; if (ds18B20_data = 1) / 拉高總線,準(zhǔn)備接收數(shù)據(jù) ch = ch+0x80; delay_20us(2); return ch; /*啟動(dòng) ds18B20 溫度轉(zhuǎn)換程序* /uint TempValue(void) uchar te

28、mp1=0,temp2=0; uint T=0; if(!Rstds18B20() Rstds18B20(); Writeds18B20(ds18B20_SKIP_ROM); Writeds18B20(ds18B20_CONVERT_T); if(!Rstds18B20() Rstds18B20(); Writeds18B20(ds18B20_SKIP_ROM); / 跳過(guò) ROM 操作 Writeds18B20(ds18B20_READ_SCRATCHPAD); /* 發(fā)讀 ds18B20 數(shù)據(jù), 前兩位是溫度值 */ temp1 = Readds18B20(); / 溫度值的低位數(shù)據(jù) te

29、mp2 = Readds18B20(); / 溫度值的高位數(shù)據(jù) T = temp1+(temp2<<8); if(temp2&0xfc)=0xfc) Min_Flag=1;M=T+1; else Min_Flag=0;M=T; return (M*0.625); /將測(cè)量的數(shù)據(jù)轉(zhuǎn)換成實(shí)際溫度 else return 0xffff; else return 0xffff; void main() uint Temperature;Delay(40000);while(1)Temperature=TempValue();DelayXus(100);(3) 主程序,調(diào)試圖如11。

30、void main() uint Temperature; LCD_Initialise();Delay(40000);while(1)Temperature=TempValue();Display_Temperature(Temperature);DelayXus(100);4.2機(jī)電系統(tǒng)的調(diào)試(1)LCD顯示模塊的調(diào)試如圖9所示。圖9(2)DS18B20采取模塊的調(diào)試如圖10所示。圖10(3)整體系統(tǒng)的調(diào)試如圖11所示。圖11(4)將整體程序加載到AT89C51后,硬件顯示圖如圖12所示。圖125.機(jī)電綜合課設(shè)結(jié)論本次課程設(shè)計(jì)是我所做的是大氣溫度檢測(cè)系統(tǒng),總體上來(lái)講它是偏電一方。但是主要用

31、的芯片是單片機(jī),這是在我們以后的工作中比較常用的。通過(guò)對(duì)它的了解和簡(jiǎn)單的運(yùn)用,我知道了課本上學(xué)的知識(shí)遠(yuǎn)遠(yuǎn)不夠??傮w來(lái)講這次課設(shè)是有一個(gè)系統(tǒng)的規(guī)劃,檢測(cè)系統(tǒng)的各個(gè)部分,比如控制部分,檢測(cè)部分,顯示部分等都要綜合考慮。任何一個(gè)模塊出現(xiàn)問(wèn)題都是不行的,這就鍛煉了我們的總體規(guī)劃能力。從老師給定課題后,通過(guò)查閱資料方案的確定,元器件的選取,原理圖的繪制,電路圖的繪制,程序的編程的寫(xiě)入和仿真,還有調(diào)試等等,這都需要我們付出的努力。通過(guò)仿真和實(shí)物的制作還有最后的調(diào)試成功驗(yàn)證了我們方案的可行性,并且能夠合理的檢測(cè)大氣的溫度。并且采用的LCD顯示器,其顯示的內(nèi)容比較多,而且顯示更為直觀,更重要的是解決了傳統(tǒng)的酒

32、精溫度計(jì)和水銀溫度計(jì)讀數(shù)存在偏差的問(wèn)題。如果我們采用4個(gè)DS18B20傳感器進(jìn)行同時(shí)掃描,可以進(jìn)一步的提高其精確度。6.機(jī)電綜合課設(shè)的收獲、體會(huì)和建議通過(guò)這次的課程設(shè)計(jì)作品的制作讓我電子溫度檢測(cè)、單片機(jī)、和一些常用傳感器的理論有了更加深入的了解,同時(shí)在具體的制作過(guò)程中我們發(fā)現(xiàn)理論上的東西和真正做實(shí)物的東西確實(shí)有些不同。書(shū)上的很多是理想化后的結(jié)論,忽略了很多實(shí)際的因素,可在實(shí)際的應(yīng)用時(shí)這些是不能被忽略的,我們不得不考慮這方的問(wèn)題,這讓我們無(wú)法根據(jù)書(shū)上的理論就輕易得到預(yù)想中的結(jié)果,有時(shí)結(jié)果甚至很差別很大。通過(guò)這次課設(shè)和實(shí)際的動(dòng)手操作使我更深刻的體會(huì)到了理論聯(lián)系實(shí)際的重要性,我們?cè)诮窈蟮膶W(xué)習(xí)工作中會(huì)

33、更加的注重實(shí)際,避免只會(huì)紙上談兵。每次課程設(shè)計(jì)是一次難得的鍛煉機(jī)會(huì),讓我們能夠充分利用所學(xué)過(guò)的理論知識(shí)還有自己的想象的能力,另外還讓我們學(xué)習(xí)查找資料的方法,以及自己處理分析電路,設(shè)計(jì)電路的能力。我相信是對(duì)我的一個(gè)很好的提高。平時(shí)在學(xué)習(xí)理論知識(shí)的時(shí)候,我們應(yīng)該更注重實(shí)踐。這次的課程設(shè)計(jì)讓我懂得了它們?cè)趯?shí)際中的用途,還有我們身邊的很多數(shù)字鐘電路,這些都是我們自己可以實(shí)現(xiàn)的,以前那些神秘的東西在不斷的學(xué)習(xí)過(guò)程中變得不再那么神秘,我相信,以后還有更多的謎底被揭開(kāi)。 這次課程設(shè)計(jì)我覺(jué)得收獲不少。當(dāng)調(diào)試過(guò)程中出現(xiàn)問(wèn)題時(shí),應(yīng)該從原理圖開(kāi)始一步一步檢測(cè),然后檢查器件有沒(méi)有插反,每一步都要細(xì)心,要有耐

34、心。當(dāng)我們焊接電路板出現(xiàn)問(wèn)題時(shí),要用電表一點(diǎn)一點(diǎn)的排查??偠灾?,這次的課程設(shè)計(jì)使我學(xué)會(huì)了做事要有耐心,明白了細(xì)節(jié)決定成敗的道理,在平時(shí)的時(shí)候應(yīng)該多動(dòng)手勤思考問(wèn)題。我相信只要我們認(rèn)真努力了,什么事都可以做好的。以后也許我們會(huì)遇到更多問(wèn)題,但只要我們不絕望,不放棄,我們一定會(huì)戰(zhàn)勝困難的。當(dāng)然其中的過(guò)程很辛苦,但看到自己的作品時(shí)卻滿是歡喜。同時(shí)也鍛煉了自己的動(dòng)手能力,希望在以后的學(xué)習(xí)中學(xué)院要多設(shè)置一些課題,讓學(xué)生自己動(dòng)手做一些東西。7.參考文獻(xiàn)1張俊.匠人手記M. 北京航空航天大學(xué)出版社,2014.12劉海威.單片機(jī)及應(yīng)用系統(tǒng)設(shè)計(jì)原理與實(shí)踐M.北京航空航天大學(xué)出版社,2009.73王守中.DIY玩

35、轉(zhuǎn)51單片機(jī)M. 電子工業(yè)出版社,2013.24張涵,任秀華,王全景,張超.基于PROTEUS的電路及單片機(jī)設(shè)計(jì)與仿真M.電子工業(yè)出版社,2012.75周景潤(rùn),張麗娜,丁麗. 基于PROTEUS的電路及單片機(jī)設(shè)計(jì)與仿真M. 北京航空航天大學(xué)出版社,2009.126李學(xué)禮.基于Proteus的8051單片機(jī)教程實(shí)例M.電子工業(yè)出版社,2008.67金發(fā)慶.傳感器技術(shù)與應(yīng)用(第二版)M.機(jī)械工業(yè)出版社,2004.6-18張?jiān)剑瑥堁祝w延軍.微電子學(xué)J.2007,37(5)9王衛(wèi)兵.傳感器技術(shù)及其應(yīng)用實(shí)例M.北京:機(jī)械工業(yè)出版社,2013.410劉鳴,車(chē)立新,陳興梧,趙煜.電測(cè)與儀表J.2001,3

36、8(10)11林伸茂.8051單片機(jī)徹底研究實(shí)習(xí)篇M.北京:人民郵電出版社,2004.58.附錄大氣測(cè)溫系統(tǒng)的整體程序:#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit LCD_RS = P25;sbit LCD_RW = P26;sbit LCD_EN = P27;sbit ds18B20_data = P20; /溫度探頭(DQ)數(shù)據(jù)端口對(duì)應(yīng)的單片機(jī)引腳 #define LCD_Data P0 /定義數(shù)據(jù)指令端口#define

37、ds18B20_READ_ROM 0x33 / 讀 ROM 指令#define ds18B20_MATCH_ROM 0x55 / 匹配 ROM 指令#define ds18B20_SKIP_ROM 0xCC / 跳過(guò) ROM 指令 #define ds18B20_SEARCH_ROM 0xF0 / 搜索 ROM 指令#define ds18B20_ALARM_SEARCH 0xEC / 報(bào)警搜索指令 #define ds18B20_WRITE_SCRATCHPAD 0x4E / 寫(xiě)暫存寄存器指令 #define ds18B20_READ_SCRATCHPAD 0xBE / 讀暫存寄存器指令#d

38、efine ds18B20_COPY_SCRATCHPAD 0x48 / 復(fù)制暫存寄存器指令#define ds18B20_CONVERT_T 0x44 / 啟動(dòng)溫度轉(zhuǎn)換指令#define ds18B20_RECALL_E2 0xB8 / 重新調(diào)出 E2PROM 的數(shù)據(jù) #define ds18B20_READ_POWER_SUPPLY 0xB4 / 讀電源 #define delayNOP() _nop_();_nop_();_nop_();_nop_();float M;uchar Min_Flag=0;uchar code Temp_Disp_Title="Current Te

39、mp : "uchar Current_Temp_Display_Buffer="TEMP: "uchar Temp_Value=0x00,0x00;uchar Display_Digit=0,0,0;void Delay(uint t) while(-t);/*延時(shí)20us*/ void Delay_20us(void) _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /*延時(shí) time20us*/ void delay_20us(uint time) uint i; for (i=0;i<tim

40、e;i+); void DelayXus(uint t) uchar i;while(t-) for(i=0;i<200;i+);bit LCD_Busy_Check() bit result;LCD_RS = 0; LCD_RW = 1; LCD_EN = 1;delayNOP();result = (bit)(LCD_Data&0x80);LCD_EN=0;return result;void Write_LCD_Command(uchar CMD)while(LCD_Busy_Check();LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();

41、_nop_();LCD_Data = CMD;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;void Write_LCD_Data(uchar DAT)while(LCD_Busy_Check();LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;LCD_Data = DAT;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;void LCD_Initialise() Write_LCD_Command(0x01); /清屏DelayXus(5); Write_LCD_Command(0x38);

42、/設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口 DelayXus(5);Write_LCD_Command(0x0c); /畫(huà)面開(kāi),禁止光標(biāo)顯示閃爍DelayXus(5);Write_LCD_Command(0x06); /當(dāng)讀寫(xiě)一個(gè)字節(jié)后,光標(biāo)自動(dòng)加1 DelayXus(5);void Set_LCD_POS(uchar p) Write_LCD_Command(p|0x80); /*溫度探頭程序*/ bit Rstds18B20(void); / DS18B20 復(fù)位程序, 返回 0-有設(shè)備連接,1-無(wú)設(shè)void Writeds18B20(uchar ); / 寫(xiě)一個(gè)字節(jié) ds18B20 數(shù)

43、據(jù)、命令子程序 uchar Readds18B20(void); / 讀一個(gè)字節(jié)ds18B20 數(shù)據(jù)子程序uint TempValue(void); / 啟動(dòng) ds18B20 溫度轉(zhuǎn)換程序 /*ds18B20 復(fù)位程序*/ bit Rstds18B20(void) / 返回,0-有設(shè)備連接;1-無(wú)設(shè)備連接 uchar i; bit RstFlag; RstFlag = 1; ds18B20_data = 1; _nop_(); ds18B20_data=0; / 發(fā)送復(fù)位脈沖,時(shí)間>480us delay_20us(40); / 延時(shí) 480-960us ds18B20_data = 1

44、; / 拉高總線,延時(shí) 15us-60us 后等待ds18B20 響應(yīng) delay_20us(2); / 15us-60us for (i=0;i<6;i+) / 60us-240us delay_20us(1); if (ds18B20_data=0) RstFlag=0; / 接收 ds18B20 的存在信號(hào) delay_20us(20); / 240us return RstFlag; /*寫(xiě)一個(gè)字節(jié) ds18B20 數(shù)據(jù)、命令子程序*/ void Writeds18B20(uchar ch) uchar i; ds18B20_data = 1; / 拉高總線,延時(shí) 1us,準(zhǔn)備啟

45、動(dòng) _nop_(); for (i=0;i<8;i+) ds18B20_data = 0; / 拉低總線 Delay_20us(); ds18B20_data = ch&0x1; / 發(fā)送待寫(xiě)入的數(shù)據(jù), “1”或“0” delay_20us(2); ds18B20_data = 1; / 拉高總線,延時(shí) 1us 后準(zhǔn)備下一位傳輸 ch = ch>>1; _nop_(); /先寫(xiě)低位,后寫(xiě)高位 /*讀一個(gè)字節(jié) ds18B20 數(shù)據(jù)子程序*/ uchar Readds18B20(void) uchar i,ch; ch = 0; ds18B20_data = 1; / 拉高總線,延時(shí) 1us,準(zhǔn)備啟動(dòng) _nop_(); for (i=0;i<8;i+) ds18B20_data = 0; / 拉低總線 Delay_20us(); ds18B20_data = 1; / 拉高總線,準(zhǔn)備接收數(shù)據(jù) _nop_(); ch = ch>>1; if (ds18

溫馨提示

  • 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)論