溫度的采集與顯示資料_第1頁
溫度的采集與顯示資料_第2頁
溫度的采集與顯示資料_第3頁
溫度的采集與顯示資料_第4頁
溫度的采集與顯示資料_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上課 程 設(shè) 計 報 告課程名稱 綜合電子設(shè)計 題目 溫度的采集與顯示_指導教師 設(shè)計起止日期 2015年4月-5月 系 別 自動化 專 業(yè) 自控 學生姓名 班級/學號 成 績 _專心-專注-專業(yè)摘要本系統(tǒng)由單片機控制模塊MSP430f5529,AY-SEB Kit模塊組成,運用模塊MSP430f5529的溫度傳感器與 AY-SEB Kit模塊的顯示屏,通過編程實現(xiàn)對溫度的采集與顯示,并且超過一個預定值可以閃紅燈報警。一、 功能介紹1. 單片機控制模塊MSP430f5529中的溫度傳感器采集當前溫度2. AY-SEB Kit中的LED驅(qū)動模塊顯示采集的攝氏溫度3. AY

2、-SEB Kit中的LED驅(qū)動模塊顯示采集的華氏溫度,華氏溫度由公式計算出4. AY-SEB Kit中的LED驅(qū)動模塊顯示制作者姓名拼音5. 超過設(shè)定報警溫度可以閃爍單片機上的紅燈報警二、 方案論證與比較對采集來的溫度進行顯示的方法有兩種:方案一 用1602顯示屏顯示。1602采用并口傳輸,速度較快。內(nèi)部集成有顯示芯片,可以識別英文字母、阿拉伯數(shù)字和日語片假名。1602總共有兩行每行十格,可以符合本次顯示要求。價格帶背光的藍底白字12元一塊,不帶光和綠光黑字會便宜一些。方案二 用老師提供的口袋電子系統(tǒng)實驗套件AY-SEB Kit中的LED顯示模塊顯示。LED采用恒流驅(qū)動,BUCK斬波電路反饋端

3、的不同接法可以實現(xiàn)恒壓輸出或恒流輸出。FB所接位置不同,輸出情況不同。TPS62260內(nèi)部Vref為0.6V,所以無論何種接法,反饋的最終效果都是VFB=Vref=0.6V。實驗平臺采用集成BUCK斬波芯片TPS62260的恒流輸出來實現(xiàn)LED驅(qū)動。比較:方案二中的模塊顯示效果更好,但是由于老師提供的數(shù)量有限不能滿足每位同學都能用到。而方案一的1602顯示屏更容易獲得,但顯示效果欠佳。三、 系統(tǒng)設(shè)計整個系統(tǒng)可以分為三個部分:溫度采集、LCD液晶顯示、LED報警燈。系統(tǒng)總體的設(shè)計圖如下:MSP430單片機LCD液晶顯示溫度傳感器A/DLED報警燈溫度采集MSP430F5529內(nèi)置溫度傳感器,經(jīng)過

4、A/D模塊采樣,量化,將得到的數(shù)據(jù)送到MSP430F5529控制器處理。經(jīng)過一定的算法,得到溫度的正常值。12864LCD液晶顯示該部分主要是通過程序控制,按照12864LCD液晶模塊的時序,將要顯示的字符數(shù)據(jù)送到12864LCD中,經(jīng)過驅(qū)動程序處理,可以使字符顯示出來。LED報警燈該部分結(jié)果最為簡單,直接使用MSP430F5529單片機的P1.0口控制的LED燈。若溫度超上限,則燈亮報警,否則燈滅,不報警。四、 單元電路設(shè)計12864LCD液晶顯示部分電路RST為復位端,與P36引腳相連;SDA為片選端,與P12引腳相連;SCLK為數(shù)據(jù)/命令選擇端,與P40引腳相連;A0為時鐘信號端,與P3

5、7相連;CS為數(shù)據(jù)端,與P82引腳相連。五、 軟件設(shè)計12864LCD液晶顯示時序圖(串口模式)SPI是串行外設(shè)接口,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB的布局上節(jié)省空間,提供方便。其中SDO 為主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出端口;SDI為主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入端口; SCLK為時鐘信號端口,由主設(shè)備產(chǎn)生;CS為從設(shè)備使能信號,由主設(shè)備控制。CS是控制芯片是否被選中的,也就是說只有片選信號為預先規(guī)定的使能信號時,對此芯片的操作才有效。通訊是通過數(shù)據(jù)交換完成的,數(shù)據(jù)是一位一位的傳輸?shù)摹_@就是SCLK時鐘線存在的原因,由SCL

6、K提供時鐘脈沖,SDI,SDO則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過 SDO線,數(shù)據(jù)在時鐘上升沿時改變,在緊接著的下降沿被讀取,完成一位數(shù)據(jù)傳輸。這樣,在至少8次時鐘信號的改變,就可以完成8位數(shù)據(jù)的傳輸。此外它的傳輸是一位一位的,但不同于普通的串行通信(一次連續(xù)傳輸至少8位),SPI是允許中斷的。初始化控制流程圖數(shù)字轉(zhuǎn)字符判忙寫命令、數(shù)據(jù)得到數(shù)據(jù)首先進行初始化,通過A/D轉(zhuǎn)換采集到溫度傳感器的溫度,經(jīng)過一定算法之后可以得到溫度值,但是此時的是一個數(shù)值型的值,需要將其轉(zhuǎn)換成字符。接下來判忙,等空閑時傳遞命令和數(shù)據(jù),最后在顯示屏上顯示。表1. 清單PC機一臺CCS Edit軟件單片機MSP430f

7、5529一片AY-SEB Kit開發(fā)板一片六、 結(jié)束語基本功能(1)通過單片機內(nèi)部的溫度傳感器獲得當前溫度; (2)顯示所獲溫度(3)可以預設(shè)標準溫度; (4)如果溫度大于預設(shè)值或小于預設(shè)值,用LED通知。能通過串口與上位機通信,傳輸并顯示當前溫度。七、 附錄附錄中主要包含有主要元器件清單,程序清單(要求有中文注釋),印制板圖和系統(tǒng)使用說明1.印制板圖如圖所示,顯示板第一行顯示Celsius 29.85,表示當前攝氏溫度為29.85度;第二行顯示姓名拼音,第三行顯示Fahrenheit 85.7,表示當前華氏溫度為85.7。而當攝氏溫度超過30度時,紅色LED燈會閃爍。2.程序清單:#incl

8、ude "driverlib.h"#include "DAC.h"#include "Template_Driver.h"#include "grlib.h"#include "adc12_a.h"#include "timer_a.h"#define CALADC12_15V_30C *(unsigned int *)0x1A1A) / Temperature Sensor Calibration-30 C /See device datasheet for TLV tab

9、le memory mapping#define CALADC12_15V_85C *(unsigned int *)0x1A1C) / Temperature Sensor Calibration-85 Cunsigned int temp;volatile float temperatureDegC;volatile float temperatureDegF;#define MAX_DAC_DIV8(4096>>3)tContext g_sContext;extern uint16_t ADC12_SingleSample(void);extern void GrString

10、NumberCentered(const tContext *pContext, int16_t Number,uint8_t ui8Dot,uint8_t ui8X, uint8_t ui8Y);unsigned int dCnt4;void main(void)WDTCTL = WDTPW | WDTHOLD;REFCTL0 &= REFMSTR; / Reset REFMSTR to hand over control to / ADC12_A ref control registers ADC12CTL0 = ADC12SHT0_8 + ADC12REFON + ADC12ON

11、; / Internal ref = 1.5V ADC12CTL1 = ADC12SHP; / enable sample timer ADC12MCTL0 = ADC12SREF_1 + ADC12INCH_10; / ADC i/p ch A10 = temp sense i/p ADC12IE = 0x001; / ADC_IFG upon conv result-ADCMEMO _delay_cycles(100); / delay to allow Ref to settle ADC12CTL0 |= ADC12ENC;P2DIR |= BIT0; / 關(guān)閉白光LED燈P2OUT |

12、= BIT0;P3DIR |= BIT4; /打開背光LEDP3OUT |= BIT4;P3OUT &= BIT4;Template_DriverInit();GrContextInit(&g_sContext, &g_sTemplate_Driver);GrContextForegroundSet(&g_sContext, ClrWhite);GrContextBackgroundSet(&g_sContext, ClrBlack);GrContextFontSet(&g_sContext, &g_sFontCm16b);GrClear

13、Display(&g_sContext);GrStringDraw(&g_sContext, "Celsius", AUTO_STRING_LENGTH, 0,0, OPAQUE_TEXT);GrStringDraw(&g_sContext, "Fan meng ran", AUTO_STRING_LENGTH, 0,20, OPAQUE_TEXT);GrStringDraw(&g_sContext, "Fahrenheit", AUTO_STRING_LENGTH, 0,40, OPAQUE_TEXT

14、);GrFlush(&g_sContext);_EINT();P1DIR|=BIT0;P1OUT&=BIT0;while(1)ADC12CTL0 &= ADC12SC; ADC12CTL0 |= ADC12SC; / Sampling and conversion start _bis_SR_register(LPM4_bits + GIE); / LPM0 with interrupts enabled _no_operation(); temperatureDegC = (float)(long)temp - CALADC12_15V_30C) * (85 - 30

15、) / (CALADC12_15V_85C - CALADC12_15V_30C) + 30.0f; / Temperature in Fahrenheit Tf = (9/5)*Tc + 32 temperatureDegF = temperatureDegC * 9.0f / 5.0f + 32.0f; GrStringNumberCentered(&g_sContext, temperatureDegC*100,2,80,5); GrStringNumberCentered(&g_sContext, temperatureDegF*10,1,100,45); GrFlus

16、h(&g_sContext); _no_operation(); / SET BREAKPOINT HERE if(temperatureDegC>30) P1OUT|=BIT0; else P1OUT&=BIT0;#pragma vector=ADC12_VECTOR;_interrupt void ADC12ISR (void) switch(_even_in_range(ADC12IV,34) case 0: break; / Vector 0: No interrupt case 2: break; / Vector 2: ADC overflow case 4:

17、 break; / Vector 4: ADC timing overflow case 6: / Vector 6: ADC12IFG0 temp = ADC12MEM0; / Move results, IFG is cleared _bic_SR_register_on_exit(LPM4_bits); / Exit active CPU break; case 8: break; / Vector 8: ADC12IFG1 case 10: break; / Vector 10: ADC12IFG2 case 12: break; / Vector 12: ADC12IFG3 case

18、 14: break; / Vector 14: ADC12IFG4 case 16: break; / Vector 16: ADC12IFG5 case 18: break; / Vector 18: ADC12IFG6 case 20: break; / Vector 20: ADC12IFG7 case 22: break; / Vector 22: ADC12IFG8 case 24: break; / Vector 24: ADC12IFG9 case 26: break; / Vector 26: ADC12IFG10 case 28: break; / Vector 28: A

19、DC12IFG11 case 30: break; / Vector 30: ADC12IFG12 case 32: break; / Vector 32: ADC12IFG13 case 34: break; / Vector 34: ADC12IFG14 default: break; void Boost_Init()GrStringDrawCentered(&g_sContext, "Lv", AUTO_STRING_LENGTH, 80, 40, OPAQUE_TEXT);GrStringNumberCentered(&g_sContext, 1,

20、0,100,40);GrFlush(&g_sContext);/=數(shù)字轉(zhuǎn)字符串函數(shù)=void Num2String(int16_t i16Number,uint8_t ui8Dot,uint8_t *p)int8_t i=0 ,ds=0;uint8_t pos=0,m=0;uint8_t DispBuff11=0;uint8_t tempBuff11=0; if(i16Number<0) i16Number=-i16Number;/處理負數(shù)DispBuff0='-' /顯示負號m=1;/跟蹤緩存位置 else m=0; /等效為-清除負號 for(i=m;i<

21、;11;i+) /拆分數(shù)字 DispBuffi=(i16Number%10); i16Number /= 10; for(i=10;i>=0;i-) /消隱無效"0" if (DispBuffi=0) DispBuffi=0; else pos=i;/ 保存當前第一個有效值 break; tempBuff0 = DispBuff0;/ 保存對應(yīng)的符號位 for(i=10;i>=m;i-) / 高低位數(shù)據(jù)轉(zhuǎn)換存儲位置,高位在前,符號位不變 if(i <= pos) tempBuffpos-i+m = DispBuffi+ 0x30; else tempBuffi = 32;/ 空格(ASCII) if(ui8Dot>0) if(ui8Dot < pos+1-m)/ pos +1 - m 為當前數(shù)組數(shù)據(jù)位數(shù) for(i=pos;i>=pos-(ui8Dot-1);i-) tempBuffi+1=

溫馨提示

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

評論

0/150

提交評論