




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、山東理工大學計算機學院課 程 設 計單片機系統設計班 級 計科1104 姓 名 學 號 指導教師 李業德 韓慧 二 一四 年 十一 月 日課程設計任務書及成績評定課題名稱_溫度測試系統設計_I、 題目的目的和要求: 利用溫度傳感器和MSP430單片機設計一個溫度測試系統,將測試結果(十進制)在LED上顯示出來,并定義一個保持按鍵,當按下該鍵時,將當前測試值保持不變(按鍵不動作時為正常測量顯示)。溫度顯示格式為:XXX 。II、 設計進度及完成情況日 期內 容11.10選取題目,進行資料搜集和系統分析工作11.14進行單獨程序設計以及完成單獨接口電路11.16將全部程序綜合并進行整體程序調試和連
2、接整體接口電路11.18書寫課程設計報告并寫下相關問題總結11.20進行課程設計答辯,并打印上交III、 主要參考文獻及資料MSP430系列16位低功耗單片機原理及應用DS18B20溫度傳感器的使用智能儀器原理及應用學科部主任 李業德、 成績評定:設計成績: (教師填寫)指導老師: (簽字)二 年 月 日 目錄I、題目的目的和要求:2II、設計進度及完成情況2III、主要參考文獻及資料3、 成績評定:3目錄4本次課程設計的目的和意義5設計題目6系統的主要功能、作用以及主要技術性能指標7總體設計方案、工作和組成原理8系統設計11設計總結26作品的使用或操作說明27設計圖紙或圖表28本次課程設計的
3、目的和意義課程設計是讓我熟練掌握了課本上的一些理論知識,課程設計也是一個學習新知識、鞏固加深所學課本理論知識的過程,它培養了我們綜合運用知識的能力,獨立思考和解決問題的能力。加深我們對單片機原理與應用課程的理解設計題目溫度測試系統設計:利用溫度傳感器DS18B20和MSP430單片機設計一個溫度測試系統,將測試結果(十進制)在LED上顯示出來,并定義一個保持按鍵,當按下該鍵時,將當前測試值保持不變(按鍵不動作時為正常測量顯示)。溫度顯示格式為:XXX 。系統的主要功能、作用以及主要技術性能指標系統的主要功能是單片機實時從溫度傳感器讀取溫度數據信息,并在數碼管顯示,同時掃描是否有保持按鍵按下,如
4、果按下則不再繼續從溫度傳感器讀取溫度數據信息,保持溫度值不變。作用是可以實時讀取環境中的溫度信息,供用戶查看,同時當用戶需要觀察某溫度時,可以按下按鍵保持溫度不變。主要技術指標:1. 基本范圍0-992. 精度誤差小于0.53. LED數碼直讀顯示4. 掃描按鍵保持數值總體設計方案、工作和組成原理數字溫度計設計方案論證方案一 由于本設計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應,在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉換后,就可以用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用到A/D轉換電路,感溫電路比較麻煩。方案二 進而考慮到用溫度傳感器
5、,在單片機電路設計中,大多都是使用傳感器,所以這是非常容易想到,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉換,就可以滿足設計要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設計也比較簡單,故采用了方案二。主控制器單片機采用MSP430單片機,處理能力強,功耗低,實現該功能僅需一個按鍵,8位數碼管顯示,以及DS18B20溫度傳感器。顯示電路: 顯示電路采用8位共陰LED數碼管,從P4口輸出段碼。圖一總體設計框圖溫度傳感器: DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統的熱敏電阻等測溫元
6、件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現912位的數字值讀數方式。DS18B20的性能特點如下: 獨特的單線接口僅需要一個端口引腳進行通信; 多個DS18B20可以并聯在惟一的三線上,實現多點組網功能; 無須外部器件; 可通過數據線供電,電壓范圍為3.05.5; 零待機功耗; 溫度以9或12位數字; 用戶可定義報警設置; 報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件; 負電壓特性,電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作; DS18B20內部結構框圖如圖2所示。64位ROM的結構開始8位是產品類型的編號,接著是每個器件的惟一的序號,共有4
7、8位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。溫度報警觸發器和,可通過軟件寫入戶報警上下限。DS18B20溫度傳感器的內部存儲器還包括一個高速暫存和一個非易失性的可電擦除的EERAM。高速暫存RAM的結構為8字節的存儲器,結構如圖3所示。頭2個字節包含測得的溫度信息,第3和第4字節和的拷貝,是易失的,每次上電復位時被刷新。第5個字節,為配置寄存器,它的內容用于確定溫度值的數字轉換分辨率。DS18B20工作時寄存器中的分辨率轉換為相應精度的溫度數值。該字節各位的定義如圖3所示。低5位一直為1,是工作模式位,用于設置DS18B20在工作模式還是在測試
8、模式,DS18B20出廠時該位被設置為0,用戶要去改動,R1和R0決定溫度轉換的精度位數,來設置分辨率。溫度傳感器連接如下圖所示,DQ引腳與單片機的P5.3相連:系統設計接口電路設計,程序設計(程序框圖和程序清單及注釋)其他有關的理論分析和計算接口電路設計: 主控制器MSP430 溫度傳感器保持按鍵數碼管電路程序框圖:總體設計流程圖讀取溫度傳感器數據流程圖數碼管溫度顯示程序設計:/*定義引腳*#define LED8PORT P2OUT /P2接8個LED燈#define LED8SEL P2SEL /P2接8個LED燈#define LED8DIR P2DIR /P2接8個LED燈#defi
9、ne DATAPORTP4OUT /數據口所在端口P4#define DATASEL P4SEL /數據口功能寄存器,控制功能模式#define DATADIR P4DIR /數據口方向寄存器#define CTRPORT P6OUT /控制線所在的端口P6#define CTRSEL P6SEL /控制口功能寄存器,控制功能模式#define CTRDIR P6DIR /控制口方向寄存器#define DCTR0 P6OUT &= BIT4 /數碼管段控制位信號置低#define DCTR1 P6OUT |= BIT4 /數碼管段控制位信號置高#define WCTR0 P6OUT
10、&= BIT3 /數碼管位控制位信號置低#define WCTR1 P6OUT |= BIT3 /數碼管位控制位信號置高#define KEYPORT P1OUT /按鍵所在的端口P1#define KEYSEL P1SEL /控制口功能寄存器,控制功能模式#define KEYDIR P1DIR /控制口方向寄存器#define KEYIN P1IN /鍵盤掃描判斷需要讀取IO口狀態值uchar key=0xFF; /鍵值變量uint temp_value;float truetemp;uint temp,A1,A2,A3; /定義的變量,顯示數據處理/*共陰數碼管顯示的斷碼表*uc
11、har table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/ *系統時鐘初始化*void Clock_Init() uchar i; BCSCTL1&=XT2OFF; /打開XT2振蕩器 BCSCTL2|=SELM1+SELS; /MCLK為8MHZ,SMCLK為8MHZ do IFG1&=OFIFG; /清楚振蕩器錯誤標志 for(i=0;i<100;i+) _NOP(); while(IFG1&OFIFG)!=0); /如果標志位1,則繼
12、續循環等待 IFG1&=OFIFG; /*MSP430內部看門狗初始化*void WDT_Init() WDTCTL = WDTPW + WDTHOLD; /關閉看門狗/*MSP430IO口初始化*void Port_Init() LED8SEL = 0x00; /設置IO口為普通I/O模式,此句可省 LED8DIR = 0xFF; /設置IO口方向為輸出 LED8PORT = 0xFF; /P2口初始設置為FF DATASEL = 0x00; /設置IO口為普通I/O模式,此句可省 DATADIR = 0xFF; /設置IO口方向為輸出 DATAPORT = 0xFF; /P4口初始
13、設置為FF CTRSEL = 0x00; /設置IO口為普通I/O模式,此句可省 CTRDIR |= BIT3 + BIT4 +BIT2; /設置IO口方向為輸出,控制口在P63,P64 CTRPORT = 0xFF; /P6口初始設置為FF KEYSEL = 0x00; /設置IO口為普通I/O模式,此句可省 KEYDIR = 0x0F; /高四位輸入模式,低四位輸出模式,外部上拉電阻 KEYPORT= 0xF0; /初始值0xF0/*74HC573控制數碼管動態掃描鍵值顯示函數*void Display_Key(uchar num) uchar i,j; j=0x01; /此數據用來控制位
14、選 for(i=0;i<8;i+) /8個數碼管依次顯示 DCTR1; /控制數碼管段數據的74HC573的LE管腳置高 WCTR1; /控制數碼管位的74HC573的LE管腳置高 DATAPORT=j; /設置要顯示的位,也就是哪一個數碼管亮 WCTR0; /鎖存位數據,下面送上段數據以后,就顯示出來了 DATAPORT=tablenum; /送要顯示的數據,這里是鍵值 DCTR0; /鎖存段數據,數碼管亮一個時間片刻 j=j<<1; /移位,準備進行下一位的顯示 delay_us(500); /顯示一個時間片刻,會影響亮度和閃爍性 Close_LED(); /顯示完8個數
15、碼管后關閉數碼管顯示,否則可能導致各個數碼管亮度不一致/*鍵盤掃描子程序,采用逐鍵掃描的方式*uchar Key_Scan(void) uchar key_check; uchar key_checkin; key_checkin=KEYIN; /讀取IO口狀態,判斷是否有鍵按下 key_checkin&= 0xF0; /屏蔽掉低四位的不確定值 if(key_checkin!=0xF0) /IO口值發生變化則表示有鍵按下 delay_ms(20); /鍵盤消抖,延時20MS key_checkin=KEYIN; /再次讀取IO口狀態 if(key_checkin!=0xF0) /確定是
16、否真正的有鍵按下 key_check=KEYIN; /有鍵按下,讀取端口值 switch (key_check & 0xF0) /判斷是哪個鍵按下 case 0xE0:key=1;break; case 0xD0:key=2;break; case 0xB0:key=3;break; case 0x70:key=4;break; else key=0xFF; /無鍵按下,返回FF return key;/*74HC573控制數碼管動態掃描顯示函數,顯示采集到的溫度*void Display_DS18B20(uint data_b,uint data_s,uint data_g) uch
17、ar i,j; j=0x01; /此數據用來控制位選 for(i=0;i<3;i+) /用后3位數碼管來顯示 DCTR1; WCTR1; DATAPORT=j; WCTR0; j=(j<<1); DATAPORT=0x00; /前5位都不顯示,送數據00即可 DCTR0; delay_ms(2); DCTR1; /開始顯示第6位,即十位 WCTR1; DATAPORT=j; WCTR0; j=(j<<1); /DATAPORT=tableA1; DATAPORT=tabledata_b; DCTR0; delay_ms(1); DCTR1; /開始顯示個位 WCT
18、R1; DATAPORT=j; WCTR0; j=(j<<1); /DATAPORT=tableA2|0x80; /顯示小數點 DATAPORT=tabledata_s|0x80; /顯示小數點 DCTR0; delay_ms(1); DCTR1; /開始顯示小數點后面的數據 WCTR1; DATAPORT=j; WCTR0; j=(j<<1); /DATAPORT=tableA3; DATAPORT=tabledata_g; DCTR0; delay_ms(1); DCTR1; /開始顯示溫度單位 WCTR1; DATAPORT=j; WCTR0; j=(j<&
19、lt;1); /DATAPORT=tableA3; DATAPORT=0x63; DCTR0; delay_ms(1); DCTR1; /開始顯示溫度單位 WCTR1; DATAPORT=j; WCTR0; j=(j<<1); /DATAPORT=tableA3; DATAPORT=0x39; DCTR0; delay_ms(1); DCTR1; WCTR1; DATAPORT=0xff; WCTR0; /*DS18B20初始化*unsigned char DS18B20_Reset(void) /初始化和復位 unsigned char i; DQ_OUT; DQ_CLR; de
20、lay_us(500);/延時500uS(480-960) DQ_SET; DQ_IN; delay_us(80); /延時80uS i = DQ_R; delay_us(500);/延時500uS(保持>480uS) if (i) return 0x00; else return 0x01; /*DS18B20讀一個字節函數* unsigned char ds1820_read_byte(void) unsigned char i; unsigned char value = 0; for (i = 8; i != 0; i-) value >>= 1; DQ_OUT; D
21、Q_CLR; delay_us(4); /*延時4uS DQ_SET; DQ_IN; delay_us(10); /*延時10uS if (DQ_R) value|=0x80; delay_us(60); /*延時60uS return(value);/*向18B20寫一個字節函數*/*DS18B20字節寫入函數*/void ds1820_write_byte(unsigned char value) unsigned char i; for (i = 8; i != 0; i-) DQ_OUT; DQ_CLR; delay_us(4); /延時4uS if (value & 0x01
22、) DQ_SET; delay_us(80); /延時80uS DQ_SET; /位結束 value >>= 1; /*發送溫度轉換命令*/*啟動ds1820轉換*/void ds1820_start(void) DS18B20_Reset(); ds1820_write_byte(0xCC); /勿略地址 ds1820_write_byte(0x44); /啟動轉換/*DS8B20讀取溫度信息*unsigned int ds1820_read_temp(void) unsigned int i; unsigned char buf9; DS18B20_Reset(); ds182
23、0_write_byte(0xCC); /勿略地址 ds1820_write_byte(0xBE); /讀取溫度 for (i = 0; i < 9; i+) bufi = ds1820_read_byte(); i = buf1; i <<= 8; i |= buf0; temp_value=i; temp_value=(uint)(temp_value*0.625); /不是乘以0.0625的原因是為了把小數點后一位數據也轉化為可以顯示的數據 /比如溫度本身為27.5度,為了在后續的數據處理程序中得到BCD碼,我們先放大到275 /然后在顯示的時候確定小數點的位置即可,就
24、能顯示出27.5度了 return i;/*溫度數據處理函數*void data_do(uint temp_d) A3=temp_d%10; /分出百,十,和個位 temp_d/=10; A2=temp_d%10; A1=temp_d/10;/*處理溫度數據*void handletemp() ds1820_start(); /啟動一次轉換 ds1820_read_temp(); /讀取溫度數值 data_do(temp_value); /處理數據,得到要顯示的值 truetemp=0.1*temp_value; /judgeAlarm(); /判斷是否觸發警報/已將其添加至按鍵程序/*顯示溫
25、度*void showtemp() uchar j; for(j=0;j<100;j+) Display_DS18B20(A1,A2,A3); /顯示溫度值 /delay_ms(100); /延時100ms/*主程序*void main(void) uchar flag1,flag2,flag3,flag4; /uint key_store=0x00; /沒有按鍵按下時,默認顯示1 WDT_Init(); /看門狗初始化 Clock_Init(); /時鐘初始化 Port_Init(); /端口初始化,用于控制IO口輸入或輸出 /Close_LED(); DS18B20_Reset(); /復位D18B20 delay_ms(100); /延時100ms while(1) Key_Scan(); /鍵盤掃描,看是否有按鍵按下 if(key!=0xff) /如果有按鍵按下,則顯示該按鍵鍵值14 switch(key) case 1: LED8PORT=0xfc;flag1=1;flag2=0;flag3=0;flag4=0;break;/對溫度數據處理判斷警報,然后顯示,handletemp();showtemp(); case 2: LED8PORT=0xf3;fl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自然語言及語音處理項目式教程 實訓指導 實訓1 配置NLP環境
- 分析師預期選股策略月報:分析師預期修正選股策略今年相對中證全指超額3.06
- 2025以色列與伊朗沖突全面解析課件
- 氫能源未來2025年加氫站建設成本效益分析與布局指南報告
- 2025年家具制造業個性化定制生產模式市場風險預警報告
- 2025年煤炭清潔燃燒技術產業鏈上下游協同發展報告
- 工業互聯網平臺安全多方計算在智能倉儲物流中的應用報告
- 教育大數據分析2025年:教育資源配置優化與教育公平研究報告
- 工業互聯網平臺網絡安全態勢感知技術在電力行業的應用與優化報告
- 工業互聯網平臺安全多方計算技術:2025年網絡安全風險預警與應對策略研究報告
- 醫療器械倉庫管理課件
- JB-T 8532-2023 脈沖噴吹類袋式除塵器
- 2024年火電電力職業技能鑒定考試-600MW超臨界機組運行筆試參考題庫含答案
- 2024年全國工會財務知識大賽備賽試題庫500(含答案)
- (正式版)SHT 3045-2024 石油化工管式爐熱效率設計計算方法
- 24春國家開放大學《地域文化(本)》形考任務1-4參考答案
- 茯苓規范化生產技術規程
- 關于深圳的英語作文
- 急性心肌梗死溶栓護理查房
- 中國親子關系與家庭教育方式調研分析報告
- 珠寶品鑒會策劃方案
評論
0/150
提交評論