標題: 基于MSP430單片機的溫度控制系統(tǒng)設計與實現(xiàn) [打印本頁]

作者: cylsw    時間: 2018-6-28 20:03
標題: 基于MSP430單片機的溫度控制系統(tǒng)設計與實現(xiàn)
實習實訓課程指導教程
——《單片機應用實踐》
——《電子設計與應用實踐》

基于單片機的溫度控制系統(tǒng)
設計與實現(xiàn)


     2015年9月

整個系統(tǒng)通過單片機MSP430G2553控制DS18B20讀取溫度,采用LCD1602顯示,溫度傳感器DS18B20與單片機之間通過串口進行數(shù)據(jù)傳輸.MSP430系列單片機具有超低功耗,且外圍的整合性高,DS18B20只需一個端口即可實現(xiàn)數(shù)信,連接方便。

目錄

1 項目要求
2項目分析和系統(tǒng)設計
3 硬件設計
3.1單片機選型模塊
3.2溫度測量模塊
3.3 LCD液晶顯示模塊
3.4系統(tǒng)電源
4 軟件設計
4.1主程序
4.2溫度測量子程序
5 系統(tǒng)調(diào)試
5.1硬件調(diào)試
5.2程序調(diào)試
5.3聯(lián)合調(diào)試
6項目演練
7項目總結
附錄1電路設計原理圖(參考)
附錄2  PCB設計原理圖(參考)
附錄3 關鍵程序(參考)
基于單片機的溫度控制系統(tǒng)設計與實現(xiàn)
1 項目要
此系統(tǒng)的主要功能:
● 可以測量一定攝氏度內(nèi)的溫度;
● 用液晶顯示溫度,精確到小數(shù)點后兩位;
● 利用溫度傳感器(DS18B20)測量某一點環(huán)境溫度;
● 至少有高、低兩路限溫控制輸出接口控制外部電路。
● 高、低兩路限溫控制點可在一定范圍內(nèi)獨立設置,通過發(fā)光二極管模擬顯示其控制狀態(tài)輸出。
● 當溫度達到高、低限溫控制點發(fā)光報警;
● 提高溫度測量精度,使分辨率不低于0.10C;
● 可以通過按鍵設置高、低兩路限溫控制點。
2項目分析和系統(tǒng)設計
此數(shù)字溫度控制系統(tǒng)硬件部分利用了MSP430G2553芯片內(nèi)部的ADC10功能配置,結合DS18B20溫度傳感器來測量環(huán)境中的溫度,將所測數(shù)值在LCD1602串行顯示;軟件部分利用CCS軟件來進行編譯,并且根據(jù)實際需要來完成各模塊程序的編寫,再進行復雜的調(diào)試。
3 硬件設計
該溫度控制系統(tǒng)在MSP430G2553芯片的功能配置和協(xié)調(diào)下,與其他模塊搭建來完成。由MSP430控制溫度傳感器DS18B20實時測量環(huán)境中的溫度,然后在LCD5110顯示出來,當該溫度超過了設定的最大或者最小溫度值時,LED開始報警。


                       輸入輸入


3.1系統(tǒng)結構框圖
3.1單片機選型模塊
基于名為Launch Pad,MSP-EXP430G2低成本實驗板是一款適用于TI最新MSP430G2XXX犀利產(chǎn)品的完整開發(fā)解決方案;赨SB的集成型仿真器可提供全系列MSP430G2XX器件開發(fā)應用所必備的所有軟件、硬件。Lunch Pad具有集成的DIP目標插座,可支持多達20個引腳,從而使MSP430Value Line器件能夠輕松插入LaunchPad實驗板電路。
3.2單片機選型模塊圖
3.2溫度測量模塊
溫度測量傳感器采用DALLAS公司DS18B20的單總線數(shù)字化溫度傳感器,測溫范圍為-55℃~125℃,可編程為9位~12位A/D轉換精度,測溫分辨率達到0.0625℃,采用寄生電源工作方式,CPU只需一根口線便能與DS18B20通信,占用CPU口線少,可節(jié)省大量引線和邏輯電路。接口電路如圖3.3所示。
3.3 DS18B20測量電路圖
3.3 LCD液晶顯示模塊
LCD液晶顯示模塊采用LCD1602型號,性價比高,LCD1602可以顯示32個字符,口相對簡單。1602共16個管腳,但是編程用到的主要管腳不過三個,分別為:RS(數(shù)據(jù)命令選擇端),R/W(讀寫選擇端),E(使能信號);以后編程便主要圍繞這三個管腳展開進行初始化,寫命令,寫數(shù)據(jù)。
以下具體闡述這三個管腳:
RS為寄存器選擇,高電平選擇數(shù)據(jù)寄存器,低電平選擇指令寄存器。
R/W為讀寫選擇,高電平進行讀操作,低電平進行寫操作。
E端為使能端,后面和時序聯(lián)系在一起。
除此外,D0~D7分別為8位雙向數(shù)據(jù)線。
其接線如圖3.4所示
3.4 LCD顯示電路
3.4系統(tǒng)電源
整個電路采用USB電源,為所有的USB 外設提供了單一的易于使用的標準的連接類型,簡化了USB 外設的設計。整個的USB 的系統(tǒng)只有一個端口和一個中斷節(jié)省了系統(tǒng)資源。
4 軟件設計4.1主程序
本系統(tǒng)整體工作主要由單片機程序控制實現(xiàn),其工作過程為:由MSP430控制溫度傳感器DS18B20實時測量環(huán)境中的溫度,然后在LCD1602顯示出來,當該溫度超過了設定的最大或者最小溫度值時,LED開始報警。
程序流程圖如下:


4.2 溫度測量子程序圖
5 系統(tǒng)調(diào)試5.1硬件調(diào)試
主要根據(jù)系統(tǒng)框圖和硬件原理設計進行原理的繪制、各參數(shù)的設置、電路板的制作,以及元器件的焊接等。具體如下:
5.1.1 各單元電路,確認各單元電路鏈接無誤,尤其是關鍵元器件,一定要接保護電阻。
(1)在樣機加電之前,首先用萬用表等工具,根據(jù)硬件電器原理圖和裝配圖仔細檢查樣機線路的正確性,并核對元器件的型號、規(guī)格和安裝是否符合要求。應特別注意電源的走線,防止電源之間的短路和極性錯誤,電源連接是否正確測試LCD顯示屏是否有輸出,LCD顯示屏上的溫度的顯示是否符合;
(2)運用MSP430單片機中簡單的I/O口功能,優(yōu)異在檢查硬件是否正常工作時先檢測單片機本身的I/O口設置,可以先不連接外部電路,使用單片機本身I/O口,測試程序是否正確,以免在軟件調(diào)試中引起不必要的麻煩。
5.1.2 PCB設計注意事項:
在進行PCB設計時,必須遵守PCB設計的一般原則,并注意其要求。
(1)此系統(tǒng)采用的電阻和電容較多,注意在畫PCB時注意各器件的封裝,對照使用的實物選取封裝,保證焊接硬件的正確性。
(2)此系統(tǒng)采用光敏電阻及較大的極性電容,介于成本的原因,采用的封裝是是直插式的,在PCB設計時特別注意
(3)根據(jù)電路的模塊布局,這樣便于在出現(xiàn)問題時進行檢查,尤其注意MSP430單片機系統(tǒng)中I/O口是否設置正確。
5.2程序調(diào)試
此程序設計中僅使用了MSP430單片機系統(tǒng)中I/O口資源,調(diào)試過程中,主要使用寄存器窗口,以及設置斷點,觀察系統(tǒng)程序主要實現(xiàn)對采集來的模擬信號進行模數(shù)轉換,并對數(shù)字信號進行液晶顯示,所以程序有采集模擬信號、DA轉換和液晶顯示三部分;在中斷子程序設置斷點,判斷運行是否正確。在調(diào)試過程中,由局部到整體,判斷程序可能出現(xiàn)的問題,認真分析邏輯,實現(xiàn)要求的功能,在簡化程序。

5.2.1 CCSV5的打開步驟
  • 右鍵Code Composer Studio v5快捷方式,左鍵打開。會出現(xiàn)如圖5.2所示界面:
5.1 Code Composer Studio v5軟件加載界面
(2)加載完畢之后會有如圖5.3所示界面出現(xiàn):
5.2 Code Composer Studio v5軟件打開界面
(3)選擇Project->Import Existing CCS Eclipse Project,導入程序文件夾中的工程;具體操作如圖5.4:
5.3 Code Composer Studio v5程序導入步驟圖
5.2.2CCSV5的使用步驟               
  (1)CCS新建工程:
①首先打開CCS并確定工作區(qū)間,然后選擇project-->New CCS Project
彈出圖5.5對話框。,在簡化程序。
5.4創(chuàng)建新工程主界面
②在project name中輸入新建工程名稱turang。
③在Device部分中,Variant中選擇MSP430G××× Family,芯片選擇MSP430G2553,其余選擇默認。
④選擇空工程,然后單擊Finish,完成新工程的創(chuàng)建。
⑤創(chuàng)建工程如圖5.6所示:
5.5ProjectExplorer界面
⑥然后選擇File-->New-->Source File,新建一個C文件,并且命名為turang.C,并在工程名上右擊選擇Add Files,創(chuàng)建工程如圖5.7:
5.6 新建工程界面
(2)CCS調(diào)試:
①調(diào)試之前,先確定目標配置文件是否已經(jīng)創(chuàng)建并且配置正確。
②首先進行工程編譯:選擇Project-->Build Project,編譯目標工程。編譯結果如圖5.8所示,表示沒有錯誤,可以進行下載調(diào)試,如果有錯誤,知道調(diào)試到?jīng)]錯誤為止。
5.7工程調(diào)試結果
③單擊運行圖標運行程序,可以觀察顯示的結果。在程序調(diào)試的過程中,也可通過設置斷點來調(diào)試程序,選擇需要設置斷點的位置,右擊鼠標選擇Breakpoints-->Breakpoint,斷點設置成功后顯示圖標可以通過雙擊該圖標來取消該斷點。程序運行的過程中還可以通過單步調(diào)試按鈕進行調(diào)試。
5.3聯(lián)合調(diào)試
整個系統(tǒng)的軟硬件都完成后,需要進行聯(lián)合調(diào)試,主要是針對系統(tǒng)設定的功能能否完成和完善進行調(diào)試。將電路線連接好,接入3V電源,LCD顯示屏亮,且測得當前溫度,如果當前溫度超過給定的量程范圍內(nèi)LED等就會亮,此時就是發(fā)出警報,提示當前溫度已超出給定溫度范圍。超出給定的溫度(35°)LED燈就會亮,否則LED燈就會滅,如下圖。
5.8聯(lián)合調(diào)試圖
1



6項目演練
對于本設計,尚可以進一步進行如下設想:
使用按鍵控制設定的溫度的高低,設計思路如下:
系統(tǒng)主要包括16位單片機MSP430、溫度采集模塊DS18B20、液晶顯示模塊LCD1602、鍵盤控制和執(zhí)行機構等幾個部分。設計思路如下:
系統(tǒng)總體方案設計框圖如下:



                       輸入輸入


6.1系統(tǒng)結構框圖


7項目總結
此系統(tǒng)單片機具有集成度高,通用性好,功能強,特別是體積小,重量輕,耗能低,可靠性高,抗干擾能力強和使用方便等獨特優(yōu)點,在數(shù)字、智能化方面有廣泛的用途。430與51的最大區(qū)別在于430有很多的寄存器,較之51程序較為復雜。雖然與51單片機的組成都是差不多但還有很大的區(qū)別,就拿本次設計還說,雖說是之前是了解過還改用msp430設計還是有一點的難度,對于51單片機I/O口多,而現(xiàn)在我們用的msp430雖說是功能多,但編程起來還是很困難,可能是我知識的欠缺,之前所學的可能是最簡單的,現(xiàn)在學習了這個16位的單片機還是有一點難度,不過我們還需多學習。
1



附錄1電路設計原理圖(參考)
1



附錄2  PCB設計原理圖(參考)

附錄3 關鍵程序(參考)
  1. 主程序:
  2. void main()
  3. {
  4.                 WDTCTL=WDTPW+WDTHOLD;         //關閉看門狗
  5.                 BCSCTL1=CALBC1_1MHZ;          //BCSCTL1 Calibration Data for 1MHz
  6.                 DCOCTL=CALDCO_1MHZ;           //DCOCTL  Calibration Data for 1MHz
  7.                 BCSCTL2=SELM_1+DIVM_0;        //設置MCLK為1MHZ
  8.               // __enable_interrupt();      // 中斷控制開啟

  9.                 P1SEL&=0X00;            //設置P1口為I/O模式
  10.                 P2SEL&=0X00;            //設置P2口為I/O模式
  11.                 P1DIR|=0XFF;            //設置P1口為輸出模式
  12.                 P2DIR|= (BIT0+BIT1+BIT2+BIT4);            //設置P2口為輸出模式

  13.                 P1OUT&= 0X00;              //P1口清零
  14.                 P2OUT&=~(BIT0+BIT1+BIT2);  //P2.0 2.1 2.2 清零
  15.                 init();
  16.                 DS18B20_Init();
  17.                 //_EINT();

  18.                 while(1)
  19.                 {
  20.                               DS18B20_ReadTemp();
  21.                               xianshi();
  22.                               baojing ();
  23.                 }
  24. }


  25. 顯示子程序:
  26. void xianshi()
  27. {
  28.               float n;              unsigned long value;
  29.               n=Temper*1000;
  30.               value = (unsigned long int)n;

  31.               temp_display[1] = digit[value/100000];          //100位
  32.               value = value%100000;

  33.               temp_display[2] = digit[value/10000];           //10位
  34.               value = value%10000;

  35.               temp_display[3] = digit[value/1000];            //1位
  36.               value = value%1000;

  37.               temp_display[5] = digit[value/100];             //0.1位
  38.               value = value%100;

  39.               temp_display[6] = digit[value/10];              //0.01位
  40.               value = value%10;

  41.               temp_display[7] = digit[value/1];               //0.001位
  42. }


  43. 報警子程序:
  44. void baojing ()
  45. {
  46.               t=35;
  47.               if(Temper>t)
  48.               {

  49.                             P2OUT|=BIT4;
  50.                             DispStr(0,0,LCDBuf3);
  51.                             DispStr(0,1,temp_display);
  52.                             Disp1Char(8,1,0XDF);

  53.               }
  54.               else
  55.                             {
  56.                             P2OUT&=~BIT4;
  57.                             DispStr(11,0,"     ");
  58.                             DispStr(0,0,LCDBuf1);
  59.                             DispStr(0,1,temp_display);
  60.                             Disp1Char(8,1,0XDF);

  61.                             }
  62. }


  63. 外延子程序:
  64. //按鍵中斷函數(shù)
  65. #pragma vector=PORT2_VECTOR
  66. __interrupt void Port_2(void)
  67.               {


  68.                 if((P2IN&BIT4)==0)
  69.                 {
  70.                               delay_ms(10);
  71.                               if((P2IN&BIT4)==0)
  72.                               {
  73.                                t=t-1;
  74.                               }
  75.                               P2IFG&=~((BIT4+BIT5));
  76.                 }

  77.                 if((P2IN&BIT5)==0)
  78.                 {

  79.                               delay_ms(10);
  80.                               if((P2IN&BIT5)==0)
  81.                               {
  82.                               t=t+1;
  83.                               }
  84.                               P2IFG&=~((BIT4+BIT5));
  85.                 }
  86.                 P2IFG&=~((BIT4+BIT5));
  87.               }
復制代碼

完整的Word格式文檔51黑下載地址:
基于單片機的溫度控制系統(tǒng)設計與實現(xiàn).docx (1.45 MB, 下載次數(shù): 144)



作者: xwb97    時間: 2018-7-12 14:57
好東西 莫非是石油大學校友?
作者: BBCCDD    時間: 2018-12-5 22:36
你好,老哥,這個是我的結課作業(yè),你能告訴我要買什么元器件嗎?謝謝!
作者: @逸熏    時間: 2019-3-16 20:35
你好,有完整代碼嗎?

作者: 老道游天下    時間: 2019-3-27 15:35

你好,有完整代碼嗎?
作者: hby666    時間: 2019-4-20 09:32
樓主,大佬有完整版嗎?跪求
作者: 我喜歡火火    時間: 2019-12-7 15:30
感謝老哥
作者: HinsDeer    時間: 2020-2-24 15:38
樓主有程序源碼嗎
作者: 酒千觴    時間: 2020-5-25 14:46
求一份完整版程序
作者: Claireeee    時間: 2020-6-22 15:05
樓主,求完整代碼




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1