MSP430單片機(jī)溫度單片機(jī)課程設(shè)計(jì)報(bào)告書_第1頁
MSP430單片機(jī)溫度單片機(jī)課程設(shè)計(jì)報(bào)告書_第2頁
MSP430單片機(jī)溫度單片機(jī)課程設(shè)計(jì)報(bào)告書_第3頁
MSP430單片機(jī)溫度單片機(jī)課程設(shè)計(jì)報(bào)告書_第4頁
MSP430單片機(jī)溫度單片機(jī)課程設(shè)計(jì)報(bào)告書_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

..XX理工大學(xué)計(jì)算機(jī)學(xué)院課程設(shè)計(jì)單片機(jī)系統(tǒng)設(shè)計(jì)班級(jí)計(jì)科1104姓名學(xué)號(hào)指導(dǎo)教師李業(yè)德韓慧二○一四年十一月日課程設(shè)計(jì)任務(wù)書及成績?cè)u(píng)定課題名稱_______溫度測試系統(tǒng)設(shè)計(jì)_______題目的目的和要求:利用溫度傳感器和MSP430單片機(jī)設(shè)計(jì)一個(gè)溫度測試系統(tǒng),將測試結(jié)果<十進(jìn)制>在LED上顯示出來,并定義一個(gè)保持按鍵,當(dāng)按下該鍵時(shí),將當(dāng)前測試值保持不變<按鍵不動(dòng)作時(shí)為正常測量顯示>。溫度顯示格式為:XXX℃。設(shè)計(jì)進(jìn)度及完成情況日期內(nèi)容11.10選取題目,進(jìn)行資料搜集和系統(tǒng)分析工作11.14進(jìn)行單獨(dú)程序設(shè)計(jì)以及完成單獨(dú)接口電路11.16將全部程序綜合并進(jìn)行整體程序調(diào)試和連接整體接口電路11.18書寫課程設(shè)計(jì)報(bào)告并寫下相關(guān)問題總結(jié)11.20進(jìn)行課程設(shè)計(jì)答辯,并打印上交主要參考文獻(xiàn)及資料MSP430系列16位低功耗單片機(jī)原理及應(yīng)用DS18B20溫度傳感器的使用智能儀器原理及應(yīng)用學(xué)科部主任李業(yè)德Ⅵ、成績?cè)u(píng)定:設(shè)計(jì)成績:〔教師填寫指導(dǎo)〔簽字二○年月日目錄I、題目的目的和要求:2II、設(shè)計(jì)進(jìn)度及完成情況2III、主要參考文獻(xiàn)及資料3Ⅵ、成績?cè)u(píng)定:3目錄4本次課程設(shè)計(jì)的目的和意義5設(shè)計(jì)題目6系統(tǒng)的主要功能、作用以及主要技術(shù)性能指標(biāo)7總體設(shè)計(jì)方案、工作和組成原理8系統(tǒng)設(shè)計(jì)11設(shè)計(jì)總結(jié)26作品的使用或操作說明27設(shè)計(jì)圖紙或圖表28本次課程設(shè)計(jì)的目的和意義課程設(shè)計(jì)是讓我熟練掌握了課本上的一些理論知識(shí),課程設(shè)計(jì)也是一個(gè)學(xué)習(xí)新知識(shí)、鞏固加深所學(xué)課本理論知識(shí)的過程,它培養(yǎng)了我們綜合運(yùn)用知識(shí)的能力,獨(dú)立思考和解決問題的能力。加深我們對(duì)單片機(jī)原理與應(yīng)用課程的理解設(shè)計(jì)題目溫度測試系統(tǒng)設(shè)計(jì):利用溫度傳感器DS18B20和MSP430單片機(jī)設(shè)計(jì)一個(gè)溫度測試系統(tǒng),將測試結(jié)果<十進(jìn)制>在LED上顯示出來,并定義一個(gè)保持按鍵,當(dāng)按下該鍵時(shí),將當(dāng)前測試值保持不變<按鍵不動(dòng)作時(shí)為正常測量顯示>。溫度顯示格式為:XXX℃。系統(tǒng)的主要功能、作用以及主要技術(shù)性能指標(biāo)系統(tǒng)的主要功能是單片機(jī)實(shí)時(shí)從溫度傳感器讀取溫度數(shù)據(jù)信息,并在數(shù)碼管顯示,同時(shí)掃描是否有保持按鍵按下,如果按下則不再繼續(xù)從溫度傳感器讀取溫度數(shù)據(jù)信息,保持溫度值不變。作用是可以實(shí)時(shí)讀取環(huán)境中的溫度信息,供用戶查看,同時(shí)當(dāng)用戶需要觀察某溫度時(shí),可以按下按鍵保持溫度不變。主要技術(shù)指標(biāo):1.基本范圍0℃-99℃2.精度誤差小于0.5℃3.LED數(shù)碼直讀顯示4.掃描按鍵保持?jǐn)?shù)值總體設(shè)計(jì)方案、工作和組成原理數(shù)字溫度計(jì)設(shè)計(jì)方案論證方案一

由于本設(shè)計(jì)是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。

方案二

進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計(jì)要求。

從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設(shè)計(jì)也比較簡單,故采用了方案二。主控制器單片機(jī)采用MSP430單片機(jī),處理能力強(qiáng),功耗低,實(shí)現(xiàn)該功能僅需一個(gè)按鍵,8位數(shù)碼管顯示,以及DS18B20溫度傳感器。顯示電路:顯示電路采用8位共陰LED數(shù)碼管,從P4口輸出段碼。圖一總體設(shè)計(jì)框圖溫度傳感器:DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實(shí)際要求通過簡單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:

●獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;

●多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;

●無須外部器件;

●可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;

●零待機(jī)功耗;

●溫度以9或12位數(shù)字;

●用戶可定義報(bào)警設(shè)置;

●報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度〔溫度報(bào)警條件的器件;

●負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作;

DS18B20內(nèi)部結(jié)構(gòu)框圖如圖2所示。64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入戶報(bào)警上下限。DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖3所示。頭2個(gè)字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測試模式,DS18B20出廠時(shí)該位被設(shè)置為0,用戶要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。溫度傳感器連接如下圖所示,DQ引腳與單片機(jī)的P5.3相連:系統(tǒng)設(shè)計(jì)接口電路設(shè)計(jì),程序設(shè)計(jì)〔程序框圖和程序清單及注釋其他有關(guān)的理論分析和計(jì)算接口電路設(shè)計(jì):主控制器MSP430溫度傳感器保持按鍵數(shù)碼管電路程序框圖:總體設(shè)計(jì)流程圖讀取溫度傳感器數(shù)據(jù)流程圖數(shù)碼管溫度顯示程序設(shè)計(jì)://*************************定義引腳**********************************#defineLED8PORTP2OUT//P2接8個(gè)LED燈#defineLED8SELP2SEL//P2接8個(gè)LED燈#defineLED8DIRP2DIR//P2接8個(gè)LED燈#defineDATAPORT P4OUT//數(shù)據(jù)口所在端口P4#defineDATASELP4SEL//數(shù)據(jù)口功能寄存器,控制功能模式#defineDATADIRP4DIR//數(shù)據(jù)口方向寄存器#defineCTRPORT P6OUT//控制線所在的端口P6#defineCTRSELP6SEL//控制口功能寄存器,控制功能模式#defineCTRDIRP6DIR//控制口方向寄存器#defineDCTR0 P6OUT&=~BIT4//數(shù)碼管段控制位信號(hào)置低#defineDCTR1P6OUT|=BIT4//數(shù)碼管段控制位信號(hào)置高#defineWCTR0 P6OUT&=~BIT3//數(shù)碼管位控制位信號(hào)置低#defineWCTR1P6OUT|=BIT3//數(shù)碼管位控制位信號(hào)置高#defineKEYPORT P1OUT//按鍵所在的端口P1#defineKEYSELP1SEL//控制口功能寄存器,控制功能模式#defineKEYDIRP1DIR//控制口方向寄存器#defineKEYINP1IN//鍵盤掃描判斷需要讀取IO口狀態(tài)值ucharkey=0xFF;//鍵值變量uinttemp_value;floattruetemp;uinttemp,A1,A2,A3; //定義的變量,顯示數(shù)據(jù)處理//*******************共陰數(shù)碼管顯示的斷碼表************************uchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//*******************系統(tǒng)時(shí)鐘初始化***************************voidClock_Init<>{uchari;BCSCTL1&=~XT2OFF;//打開XT2振蕩器BCSCTL2|=SELM1+SELS;//MCLK為8MHZ,SMCLK為8MHZdo{IFG1&=~OFIFG;//清楚振蕩器錯(cuò)誤標(biāo)志for<i=0;i<100;i++>_NOP<>;}while<<IFG1&OFIFG>!=0>;//如果標(biāo)志位1,則繼續(xù)循環(huán)等待IFG1&=~OFIFG;}//*******************MSP430內(nèi)部看門狗初始化***********************voidWDT_Init<>{WDTCTL=WDTPW+WDTHOLD;//關(guān)閉看門狗}//*******************MSP430IO口初始化*****************************voidPort_Init<>{LED8SEL=0x00;//設(shè)置IO口為普通I/O模式,此句可省LED8DIR=0xFF;//設(shè)置IO口方向?yàn)檩敵鯨ED8PORT=0xFF;//P2口初始設(shè)置為FFDATASEL=0x00;//設(shè)置IO口為普通I/O模式,此句可省DATADIR=0xFF;//設(shè)置IO口方向?yàn)檩敵鯠ATAPORT=0xFF;//P4口初始設(shè)置為FFCTRSEL=0x00;//設(shè)置IO口為普通I/O模式,此句可省CTRDIR|=BIT3+BIT4+BIT2;//設(shè)置IO口方向?yàn)檩敵?控制口在P63,P64CTRPORT=0xFF;//P6口初始設(shè)置為FFKEYSEL=0x00;//設(shè)置IO口為普通I/O模式,此句可省KEYDIR=0x0F;//高四位輸入模式,低四位輸出模式,外部上拉電阻KEYPORT=0xF0;//初始值0xF0}//*************74HC573控制數(shù)碼管動(dòng)態(tài)掃描鍵值顯示函數(shù)******************voidDisplay_Key<ucharnum>{uchari,j;j=0x01;//此數(shù)據(jù)用來控制位選for<i=0;i<8;i++>//8個(gè)數(shù)碼管依次顯示{DCTR1;//控制數(shù)碼管段數(shù)據(jù)的74HC573的LE管腳置高WCTR1;//控制數(shù)碼管位的74HC573的LE管腳置高DATAPORT=~j;//設(shè)置要顯示的位,也就是哪一個(gè)數(shù)碼管亮WCTR0;//鎖存位數(shù)據(jù),下面送上段數(shù)據(jù)以后,就顯示出來了DATAPORT=table[num];//送要顯示的數(shù)據(jù),這里是鍵值DCTR0;//鎖存段數(shù)據(jù),數(shù)碼管亮一個(gè)時(shí)間片刻j=j<<1;//移位,準(zhǔn)備進(jìn)行下一位的顯示delay_us<500>;//顯示一個(gè)時(shí)間片刻,會(huì)影響亮度和閃爍性}Close_LED<>;//顯示完8個(gè)數(shù)碼管后關(guān)閉數(shù)碼管顯示,否則可能導(dǎo)致各個(gè)數(shù)碼管亮度不一致}//*****************鍵盤掃描子程序,采用逐鍵掃描的方式******************ucharKey_Scan<void>{ucharkey_check;ucharkey_checkin;key_checkin=KEYIN; //讀取IO口狀態(tài),判斷是否有鍵按下key_checkin&=0xF0; //屏蔽掉低四位的不確定值if<key_checkin!=0xF0> //IO口值發(fā)生變化則表示有鍵按下{delay_ms<20>; //鍵盤消抖,延時(shí)20MSkey_checkin=KEYIN;//再次讀取IO口狀態(tài)if<key_checkin!=0xF0>//確定是否真正的有鍵按下{key_check=KEYIN;//有鍵按下,讀取端口值switch<key_check&0xF0>//判斷是哪個(gè)鍵按下{case0xE0:key=1;break;case0xD0:key=2;break;case0xB0:key=3;break;case0x70:key=4;break;}}}else{key=0xFF;//無鍵按下,返回FF}returnkey;}//******74HC573控制數(shù)碼管動(dòng)態(tài)掃描顯示函數(shù),顯示采集到的溫度**************voidDisplay_DS18B20<uintdata_b,uintdata_s,uintdata_g>{uchari,j;j=0x01;//此數(shù)據(jù)用來控制位選for<i=0;i<3;i++>//用后3位數(shù)碼管來顯示{DCTR1;WCTR1;DATAPORT=~j;WCTR0;j=<j<<1>;DATAPORT=0x00;//前5位都不顯示,送數(shù)據(jù)00即可DCTR0;delay_ms<2>;}DCTR1;//開始顯示第6位,即十位WCTR1;DATAPORT=~j;WCTR0;j=<j<<1>;//DATAPORT=table[A1];DATAPORT=table[data_b];DCTR0;delay_ms<1>;DCTR1;//開始顯示個(gè)位WCTR1;DATAPORT=~j;WCTR0;j=<j<<1>;//DATAPORT=table[A2]|0x80;//顯示小數(shù)點(diǎn)DATAPORT=table[data_s]|0x80;//顯示小數(shù)點(diǎn)DCTR0;delay_ms<1>;DCTR1;//開始顯示小數(shù)點(diǎn)后面的數(shù)據(jù)WCTR1;DATAPORT=~j;WCTR0;j=<j<<1>;//DATAPORT=table[A3];DATAPORT=table[data_g];DCTR0;delay_ms<1>;DCTR1;//開始顯示溫度單位WCTR1;DATAPORT=~j;WCTR0;j=<j<<1>;//DATAPORT=table[A3];DATAPORT=0x63;DCTR0;delay_ms<1>;DCTR1;//開始顯示溫度單位WCTR1;DATAPORT=~j;WCTR0;j=<j<<1>;//DATAPORT=table[A3];DATAPORT=0x39;DCTR0;delay_ms<1>;DCTR1;WCTR1;DATAPORT=0xff;WCTR0;}//************************DS18B20初始化*******************************unsignedcharDS18B20_Reset<void>//初始化和復(fù)位{unsignedchari;DQ_OUT;DQ_CLR;delay_us<500>; //延時(shí)500uS<480-960>DQ_SET;DQ_IN;delay_us<80>; //延時(shí)80uSi=DQ_R;delay_us<500>; //延時(shí)500uS<保持>480uS>if<i>{return0x00;}else{return0x01;}}//**********************DS18B20讀一個(gè)字節(jié)函數(shù)****************************unsignedchards1820_read_byte<void>{unsignedchari;unsignedcharvalue=0;for<i=8;i!=0;i-->{value>>=1;DQ_OUT;DQ_CLR;delay_us<4>; //*延時(shí)4uS DQ_SET;DQ_IN;delay_us<10>; //*延時(shí)10uS if<DQ_R>{value|=0x80; }delay_us<60>; //*延時(shí)60uS }return<value>;}//**********************向18B20寫一個(gè)字節(jié)函數(shù)************************/*DS18B20字節(jié)寫入函數(shù)*/voidds1820_write_byte<unsignedcharvalue>{unsignedchari;for<i=8;i!=0;i-->{DQ_OUT;DQ_CLR;delay_us<4>; //延時(shí)4uSif<value&0x01>{DQ_SET; }delay_us<80>; //延時(shí)80uSDQ_SET; //位結(jié)束value>>=1; }}//********************發(fā)送溫度轉(zhuǎn)換命令*********************************/*啟動(dòng)ds1820轉(zhuǎn)換*/voidds1820_start<void>{DS18B20_Reset<>;ds1820_write_byte<0xCC>; //勿略地址ds1820_write_byte<0x44>; //啟動(dòng)轉(zhuǎn)換}//***********************DS8B20讀取溫度信息************************unsignedintds1820_read_temp<void>{unsignedinti;unsignedcharbuf[9];DS18B20_Reset<>;ds1820_write_byte<0xCC>; //勿略地址ds1820_write_byte<0xBE>; //讀取溫度for<i=0;i<9;i++>{buf[i]=ds1820_read_byte<>; }i=buf[1];i<<=8;i|=buf[0];temp_value=i;temp_value=<uint><temp_value*0.625>;//不是乘以0.0625的原因是為了把小數(shù)點(diǎn)后一位數(shù)據(jù)也轉(zhuǎn)化為可以顯示的數(shù)據(jù) //比如溫度本身為27.5度,為了在后續(xù)的數(shù)據(jù)處理程序中得到BCD碼,我們先放大到275//然后在顯示的時(shí)候確定小數(shù)點(diǎn)的位置即可,就能顯示出27.5度了returni;}//*********************溫度數(shù)據(jù)處理函數(shù)****************************voiddata_do<uinttemp_d>{A3=temp_d%10;//分出百,十,和個(gè)位temp_d/=10;A2=temp_d%10;A1=temp_d/10;}//***********************處理溫度數(shù)據(jù)*********************voidhandletemp<>{ds1820_start<>; //啟動(dòng)一次轉(zhuǎn)換ds1820_read_temp<>; //讀取溫度數(shù)值data_do<temp_value>;//處理數(shù)據(jù),得到要顯示的值truetemp=0.1*temp_value;//judgeAlarm<>;//判斷是否觸發(fā)警報(bào)//已將其添加至按鍵程序}//***********************顯示溫度**********************voidshowtemp<>{ucharj;for<j=0;j<100;j++>{ Display_DS18B20<A1,A2,A3>;//顯示溫度值} //delay_ms<100>;//延時(shí)100ms}//***************************主程序************************voidmain<void>{ucharflag1,flag2,flag3,flag4;//uintkey_store=0x00;//沒有按鍵按下時(shí),默認(rèn)顯示1WDT_Init<>;//看門狗初始化Clock_Init<>;//時(shí)鐘初始化Port_Init<>;//端口初始化,用于控制IO口輸入或輸出//Close_LED<>;DS18B20_Reset<>; //復(fù)位D18B20delay_ms<100>;//延時(shí)100mswhile<1>{Key_Scan<>;//鍵盤掃描,看是否有按鍵按下if<key!=0xff>

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論