基于單片機(jī)的溫度數(shù)據(jù)采集控制課程設(shè)計(jì)報(bào)告_第1頁(yè)
基于單片機(jī)的溫度數(shù)據(jù)采集控制課程設(shè)計(jì)報(bào)告_第2頁(yè)
基于單片機(jī)的溫度數(shù)據(jù)采集控制課程設(shè)計(jì)報(bào)告_第3頁(yè)
基于單片機(jī)的溫度數(shù)據(jù)采集控制課程設(shè)計(jì)報(bào)告_第4頁(yè)
基于單片機(jī)的溫度數(shù)據(jù)采集控制課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩18頁(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、 課程設(shè)計(jì)報(bào)告課程名稱(chēng): 微機(jī)原理課程設(shè)計(jì) 課 題: 基于單片機(jī)的溫度數(shù)據(jù)采集控制 專(zhuān)業(yè)班級(jí): 計(jì)算機(jī)系12101班 學(xué) 號(hào): 2 姓 名: 余智文 指導(dǎo)老師: 周慧燦 日 期: 2015年7 月2 日 教師評(píng)語(yǔ):成績(jī)?cè)u(píng)定: 指導(dǎo)教師(簽名): 目 錄1.課題簡(jiǎn)介(黑體小4)12.設(shè)計(jì)方案13.具體設(shè)計(jì)1 3.1電路原理13.2 程序原理1 3.3關(guān)鍵代碼段源碼及分析24.測(cè)試11 4.1測(cè)試過(guò)程中遇到的問(wèn)題記錄11 4.2測(cè)試結(jié)果115.總結(jié)11設(shè)計(jì)體會(huì)12參考文獻(xiàn)12基于單片機(jī)的溫度控制一、課題簡(jiǎn)介 本課題是關(guān)于8個(gè)字節(jié)超長(zhǎng)整型數(shù)據(jù),實(shí)現(xiàn)其運(yùn)算( 加、減、乘)功能及二個(gè)數(shù)相比較的功能,滿(mǎn)足

2、其用戶(hù)在進(jìn)行數(shù)據(jù)計(jì)算時(shí)的需要,增大了數(shù)據(jù)的使用范圍,解決了在實(shí)際中數(shù)據(jù)的越界。二設(shè)計(jì)題目及具體要求1基于單片機(jī)的溫度監(jiān)控系統(tǒng)2溫度測(cè)算范圍-20-703分辨率小于0.54所測(cè)的溫度值可以由LCD液晶直接顯示可以任意設(shè)置上下限溫度的報(bào)警功能 5顯示日期和時(shí)間到LCD液晶, 使用proteus,protel軟件的功能仿真和畫(huà)原理圖三設(shè)計(jì)目的1.通過(guò)本次課程設(shè)計(jì)加深對(duì)單片機(jī)課程的全面認(rèn)識(shí)復(fù)習(xí)和掌握,對(duì)單片機(jī)課程的應(yīng)用進(jìn)一步的了解。2.掌握采用8051單片機(jī)控制溫度傳感器DS18B20、時(shí)鐘芯片DS1302和編程原理。3.通過(guò)此次課程設(shè)計(jì)能夠?qū)纹瑱C(jī)軟硬件結(jié)合起來(lái),對(duì)程序進(jìn)行編輯,校驗(yàn)。四設(shè)計(jì)的意義該

3、次設(shè)計(jì)通過(guò)應(yīng)用所學(xué)單片機(jī)的理論基礎(chǔ)知識(shí),解決現(xiàn)實(shí)生活上的問(wèn)題。設(shè)計(jì)溫度控制系統(tǒng)五設(shè)計(jì)方案設(shè)計(jì)思路總體設(shè)計(jì)大致可分為兩部分組成:一溫度采集模塊。二實(shí)時(shí)時(shí)鐘電路模塊。該設(shè)計(jì)通過(guò)單片機(jī)和溫度傳感器及相關(guān)部件實(shí)現(xiàn)溫度的測(cè)量和數(shù)字顯示。采用數(shù)字溫度芯片DS18B20 測(cè)量溫度,輸出信號(hào)全數(shù)字化,便于單片機(jī)處理及控制,省去傳統(tǒng)的測(cè)溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測(cè)溫元件,此元件線形較好。在0100 攝氏度時(shí),最大線形偏差小于1 攝氏度。DS18B20 的最大特點(diǎn)之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計(jì)DS18B20和微控制器AT89S51構(gòu)成的溫度測(cè)量裝置,它直接輸出溫度的數(shù)

4、字信號(hào),可直接與計(jì)算機(jī)連接。溫度傳感器DS18B20進(jìn)行實(shí)時(shí)溫度檢測(cè)并顯示,能夠?qū)崿F(xiàn)快速測(cè)量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報(bào)警溫度。該系統(tǒng)擴(kuò)展性非常強(qiáng),它可以在設(shè)計(jì)中加入時(shí)鐘芯片DS1302以獲取時(shí)間數(shù)據(jù),在數(shù)據(jù)處理同時(shí)顯示時(shí)間。設(shè)計(jì)方框圖此方案的測(cè)溫裝置電路簡(jiǎn)單、精確度較高、實(shí)現(xiàn)方便、軟件設(shè)計(jì)也比較簡(jiǎn)單,故本次設(shè)計(jì)采用此方案。設(shè)計(jì)原理溫度傳感器DS18B20DALLAS 最新單線數(shù)字溫度傳感器DS18B20是一種新型的“一線器件”其體積更小、更適用于多種場(chǎng)合、且適用電壓更寬、更經(jīng)濟(jì)。DALLAS 半導(dǎo)體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。溫

5、度測(cè)量范圍為-55+125 攝氏度,可編程為9位12 位轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0.0625攝氏度,分辨率設(shè)定參數(shù)以及用戶(hù)設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM 中,掉電后依然保存。被測(cè)溫度用符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出;其工作電源既可以在遠(yuǎn)端引入,也可以采用寄生電源方式產(chǎn)生;多個(gè)DS18B20可以并聯(lián)到3 根或2 根線上,CPU只需一根端口線就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。DS18B20 的性能特點(diǎn)如下:獨(dú)特的單線接口方式,DS18B20在與微處理

6、器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊DS18B20支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)溫DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)適應(yīng)電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由數(shù)據(jù)線供電溫范圍55125,在-10+85時(shí)精度為0.5 零待機(jī)功耗可編程的分辨率為912位,對(duì)應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實(shí)現(xiàn)高精度測(cè)溫在9位分辨率時(shí)最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度

7、更快用戶(hù)可定義報(bào)警設(shè)置報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以一線總線串行傳送給CPU,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作以上特點(diǎn)使DS18B20非常適用與多點(diǎn)、遠(yuǎn)距離溫度檢測(cè)系統(tǒng)。 DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS1302的介紹2002 是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作

8、電壓為2.5V5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)318的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。引腳功能及結(jié)構(gòu)圖1示出DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc10.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS130

9、2由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:初始化、ROM操作指令、存儲(chǔ)器

10、操作指令。必須先啟動(dòng)DS18B20開(kāi)始轉(zhuǎn)換,再讀出溫度轉(zhuǎn)換值。設(shè)計(jì)電路圖論是內(nèi)部寄生電源還是外部供電,I/O口線要接5K左右的上拉電。在這里采用前者方式供電。六、設(shè)計(jì)流程圖七仿真結(jié)果仿真結(jié)果分析(1)能數(shù)字顯示被測(cè)溫度,測(cè)量溫度范圍可以達(dá)到0100(2)分辨率不低于0.5 ;(3)帶有計(jì)時(shí)和時(shí)間顯示功能;(4)高、低兩路限溫控制點(diǎn)可在0100 范圍內(nèi)獨(dú)立設(shè)置 ;(5)當(dāng)溫度達(dá)到高、低限溫控制點(diǎn)發(fā)出聲光報(bào)警。八程序代碼源程序/DS1302頭文件/ #ifndef _REAL_TIMER_DS1302_2003_7_21_sbit DS1302_CLK = P16; /實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳sbit

11、DS1302_IO = P17; /實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳sbit DS1302_RST = P15; /實(shí)時(shí)時(shí)鐘復(fù)位線引腳sbit ACC0 = ACC0;sbit ACC7 = ACC7;typedef struct _SYSTEMTIME_unsigned char Second;unsigned char Minute;unsigned char Hour;unsigned char Week;unsigned char Day;unsigned char Month;unsigned char Year;unsigned char DateString9;unsigned char Ti

12、meString9;SYSTEMTIME; /定義的時(shí)間類(lèi)型#define AM(X) X#define PM(X) (X+12) / 轉(zhuǎn)成24小時(shí)制#define DS1302_SECOND 0x80#define DS1302_MINUTE 0x82#define DS1302_HOUR 0x84#define DS1302_WEEK 0x8A#define DS1302_DAY 0x86#define DS1302_MONTH 0x88#define DS1302_YEAR 0x8C#define DS1302_RAM(X) (0xC0+(X)*2) /用于計(jì)算DS1302_RAM 地址

13、的宏 void DS1302InputByte(unsigned char d) /實(shí)時(shí)時(shí)鐘寫(xiě)入一字節(jié)(內(nèi)部函數(shù)) unsigned char i;ACC = d;for(i=8; i0; i-)DS1302_IO = ACC0; /相當(dāng)于匯編中的 RRCDS1302_CLK = 1;DS1302_CLK = 0;ACC = ACC 1;unsigned char DS1302OutputByte() /實(shí)時(shí)時(shí)鐘讀取一字節(jié)(內(nèi)部函數(shù)) unsigned char i;for(i=8; i0; i-)ACC = ACC 1;ACC7 = DS1302_IO;DS1302_CLK = 1;DS13

14、02_CLK = 0;return(ACC);void Write1302(unsigned char ucAddr, unsigned char ucDa) /ucAddr: DS1302地址, ucData: 要寫(xiě)的數(shù)據(jù)DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr); / 地址,命令DS1302InputByte(ucDa); / 寫(xiě)1Byte數(shù)據(jù)DS1302_CLK = 1;DS1302_RST = 0;unsigned char Read1302(unsigned char ucAddr) /讀取

15、DS1302某地址的數(shù)據(jù) unsigned char ucData;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr|0x01); / 地址,命令ucData = DS1302OutputByte(); / 讀1Byte數(shù)據(jù)DS1302_CLK = 1;DS1302_RST = 0;return(ucData);void DS1302_SetProtect(bit flag) /是否寫(xiě)保護(hù)if(flag)Write1302(0x8E,0x10);elseWrite1302(0x8E,0x00);void DS

16、1302_SetTime(unsigned char Address, unsigned char Value) / 設(shè)置時(shí)間函數(shù)DS1302_SetProtect(0);Write1302(Address, (Value/10)Second = (ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MINUTE);Time-Minute = (ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_HOUR);Time-Hou

17、r = (ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_DAY);Time-Day = (ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_WEEK);Time-Week = (ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MONTH);Time-Month = (ReadValue&0x70)4)*10 + (ReadVal

18、ue&0x0F); ReadValue = Read1302(DS1302_YEAR);Time-Year = (ReadValue&0x70)4)*10 + (ReadValue&0x0F); void DateToStr(SYSTEMTIME *Time)Time-DateString0 = Time-Year/10 + 0;Time-DateString1 = Time-Year%10 + 0;Time-DateString2 = -;Time-DateString3 = Time-Month/10 + 0;Time-DateString4 = Time-Month%10 + 0;Tim

19、e-DateString5 = -;Time-DateString6 = Time-Day/10 + 0;Time-DateString7 = Time-Day%10 + 0;Time-DateString8 = 0;void TimeToStr(SYSTEMTIME *Time)Time-TimeString0 = Time-Hour/10 + 0;Time-TimeString1 = Time-Hour%10 + 0;Time-TimeString2 = :;Time-TimeString3 = Time-Minute/10 + 0;Time-TimeString4 = Time-Minu

20、te%10 + 0;Time-TimeString5 = :;Time-TimeString6 = Time-Second/10 + 0;Time-TimeString7 = Time-Second%10 + 0;Time-DateString8 = 0;void Initial_DS1302()unsigned char Second=Read1302(DS1302_SECOND);if(Second&0x80)DS1302_SetTime(DS1302_SECOND,0);#endif/LCD1602頭文件/ #ifndef LCD_CHAR_1602_2005_4_9#include /

21、Port Definitions* sbit LcdRs = P20;sbit LcdRw = P21;sbit LcdEn = P22;sfr DBPort = 0xB0; /P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口/內(nèi)部等待函* unsigned char LCD_Wait()LcdRs=0;LcdRw=1; _nop_();LcdEn=1; _nop_();LcdEn=0;return DBPort;/向LCD寫(xiě)入命令或數(shù)*#define LCD_COMMAND 0 / Command#define LCD_DATA 1 / Data#define LCD

22、_CLEAR_SCREEN 0x01 / 清屏#define LCD_HOMING 0x02 / 光標(biāo)返回原點(diǎn)void LCD_Write(bit style, unsigned char input)LcdEn=0;LcdRs=style;LcdRw=0; _nop_();DBPort=input; _nop_();/注意順序LcdEn=1; _nop_();/注意順序LcdEn=0; _nop_();LCD_Wait();/設(shè)置顯示模式* #define LCD_SHOW 0x04 /顯示開(kāi)#define LCD_HIDE 0x00 /顯示關(guān)#define LCD_CURSOR 0x02

23、/顯示光標(biāo)#define LCD_NO_CURSOR 0x00 /無(wú)光標(biāo)#define LCD_FLASH 0x01 /光標(biāo)閃動(dòng)#define LCD_NO_FLASH 0x00 /光標(biāo)不閃動(dòng)void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND, 0x08|DisplayMode);/設(shè)置輸入模式* #define LCD_AC_UP 0x02#define LCD_AC_DOWN 0x00 / default#define LCD_MOVE 0x01 / 畫(huà)面可平移#define LCD_NO_MOVE 0x0

24、0 /defaultvoid LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND, 0x04|InputMode);/初始化LCD* void LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38); /8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣 LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /開(kāi)啟顯示, 無(wú)光標(biāo)LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏LCD_

25、SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC遞增, 畫(huà)面不動(dòng) void GotoXY(unsigned char x, unsigned char y)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0xC0|x);if(y=2)LCD_Write(LCD_COMMAND,0x90|x);if(y=3)LCD_Write(LCD_COMMAND,0XD0|x);void Print(unsigned char *str)while(*str!=0)LCD_Write(LCD_DATA

26、,*str);str+;#endif/C文件/ #include#include#include#define uchar unsigned char#define uint unsigned intsbit DQ=P26;sbit RS=P20;sbit RW=P21;sbit EN=P22;sbit alarm=P13;unsigned char code str1=H:30C L:10C;char t,f1;uchar data disdata10=0,0,0,0x2e,0,0x43,0x20,0x20,0x20,0x20;uint tvalue,temp1;uchar tflag; /溫度正負(fù)標(biāo)志uchar flagdat;void delay1ms(uint ms)uint i;while(ms-)for(i=0;i0

溫馨提示

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