找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 15453|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

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

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:361293 發(fā)表于 2018-6-28 20:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
實(shí)習(xí)實(shí)訓(xùn)課程指導(dǎo)教程
——《單片機(jī)應(yīng)用實(shí)踐》
——《電子設(shè)計與應(yīng)用實(shí)踐》

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


     2015年9月

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

目錄

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


                       輸入輸入


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


4.2 溫度測量子程序圖
5 系統(tǒng)調(diào)試5.1硬件調(diào)試
主要根據(jù)系統(tǒng)框圖和硬件原理設(shè)計進(jìn)行原理的繪制、各參數(shù)的設(shè)置、電路板的制作,以及元器件的焊接等。具體如下:
5.1.1 各單元電路,確認(rèn)各單元電路鏈接無誤,尤其是關(guān)鍵元器件,一定要接保護(hù)電阻。
(1)在樣機(jī)加電之前,首先用萬用表等工具,根據(jù)硬件電器原理圖和裝配圖仔細(xì)檢查樣機(jī)線路的正確性,并核對元器件的型號、規(guī)格和安裝是否符合要求。應(yīng)特別注意電源的走線,防止電源之間的短路和極性錯誤,電源連接是否正確測試LCD顯示屏是否有輸出,LCD顯示屏上的溫度的顯示是否符合;
(2)運(yùn)用MSP430單片機(jī)中簡單的I/O口功能,優(yōu)異在檢查硬件是否正常工作時先檢測單片機(jī)本身的I/O口設(shè)置,可以先不連接外部電路,使用單片機(jī)本身I/O口,測試程序是否正確,以免在軟件調(diào)試中引起不必要的麻煩。
5.1.2 PCB設(shè)計注意事項:
在進(jìn)行PCB設(shè)計時,必須遵守PCB設(shè)計的一般原則,并注意其要求。
(1)此系統(tǒng)采用的電阻和電容較多,注意在畫PCB時注意各器件的封裝,對照使用的實(shí)物選取封裝,保證焊接硬件的正確性。
(2)此系統(tǒng)采用光敏電阻及較大的極性電容,介于成本的原因,采用的封裝是是直插式的,在PCB設(shè)計時特別注意
(3)根據(jù)電路的模塊布局,這樣便于在出現(xiàn)問題時進(jìn)行檢查,尤其注意MSP430單片機(jī)系統(tǒng)中I/O口是否設(shè)置正確。
5.2程序調(diào)試
此程序設(shè)計中僅使用了MSP430單片機(jī)系統(tǒng)中I/O口資源,調(diào)試過程中,主要使用寄存器窗口,以及設(shè)置斷點(diǎn),觀察系統(tǒng)程序主要實(shí)現(xiàn)對采集來的模擬信號進(jìn)行模數(shù)轉(zhuǎn)換,并對數(shù)字信號進(jìn)行液晶顯示,所以程序有采集模擬信號、DA轉(zhuǎn)換和液晶顯示三部分;在中斷子程序設(shè)置斷點(diǎn),判斷運(yùn)行是否正確。在調(diào)試過程中,由局部到整體,判斷程序可能出現(xiàn)的問題,認(rèn)真分析邏輯,實(shí)現(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,導(dǎo)入程序文件夾中的工程;具體操作如圖5.4:
5.3 Code Composer Studio v5程序?qū)氩襟E圖
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,其余選擇默認(rèn)。
④選擇空工程,然后單擊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)試之前,先確定目標(biāo)配置文件是否已經(jīng)創(chuàng)建并且配置正確。
②首先進(jìn)行工程編譯:選擇Project-->Build Project,編譯目標(biāo)工程。編譯結(jié)果如圖5.8所示,表示沒有錯誤,可以進(jìn)行下載調(diào)試,如果有錯誤,知道調(diào)試到?jīng)]錯誤為止。
5.7工程調(diào)試結(jié)果
③單擊運(yùn)行圖標(biāo)運(yùn)行程序,可以觀察顯示的結(jié)果。在程序調(diào)試的過程中,也可通過設(shè)置斷點(diǎn)來調(diào)試程序,選擇需要設(shè)置斷點(diǎn)的位置,右擊鼠標(biāo)選擇Breakpoints-->Breakpoint,斷點(diǎn)設(shè)置成功后顯示圖標(biāo)可以通過雙擊該圖標(biāo)來取消該斷點(diǎn)。程序運(yùn)行的過程中還可以通過單步調(diào)試按鈕進(jìn)行調(diào)試。
5.3聯(lián)合調(diào)試
整個系統(tǒng)的軟硬件都完成后,需要進(jìn)行聯(lián)合調(diào)試,主要是針對系統(tǒng)設(shè)定的功能能否完成和完善進(jìn)行調(diào)試。將電路線連接好,接入3V電源,LCD顯示屏亮,且測得當(dāng)前溫度,如果當(dāng)前溫度超過給定的量程范圍內(nèi)LED等就會亮,此時就是發(fā)出警報,提示當(dāng)前溫度已超出給定溫度范圍。超出給定的溫度(35°)LED燈就會亮,否則LED燈就會滅,如下圖。
5.8聯(lián)合調(diào)試圖
1



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



                       輸入輸入


6.1系統(tǒng)結(jié)構(gòu)框圖


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



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



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

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

  9.                 P1SEL&=0X00;            //設(shè)置P1口為I/O模式
  10.                 P2SEL&=0X00;            //設(shè)置P2口為I/O模式
  11.                 P1DIR|=0XFF;            //設(shè)置P1口為輸出模式
  12.                 P2DIR|= (BIT0+BIT1+BIT2+BIT4);            //設(shè)置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.               }
復(fù)制代碼

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


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:370204 發(fā)表于 2018-7-12 14:57 | 只看該作者
好東西 莫非是石油大學(xué)校友?
回復(fù)

使用道具 舉報

板凳
ID:440497 發(fā)表于 2018-12-5 22:36 | 只看該作者
你好,老哥,這個是我的結(jié)課作業(yè),你能告訴我要買什么元器件嗎?謝謝!
回復(fù)

使用道具 舉報

地板
ID:491793 發(fā)表于 2019-3-16 20:35 | 只看該作者
你好,有完整代碼嗎?
回復(fù)

使用道具 舉報

5#
ID:499186 發(fā)表于 2019-3-27 15:35 | 只看該作者

你好,有完整代碼嗎?
回復(fù)

使用道具 舉報

6#
ID:516895 發(fā)表于 2019-4-20 09:32 | 只看該作者
樓主,大佬有完整版嗎?跪求
回復(fù)

使用道具 舉報

7#
ID:634706 發(fā)表于 2019-12-7 15:30 | 只看該作者
感謝老哥
回復(fù)

使用道具 舉報

8#
ID:410729 發(fā)表于 2020-2-24 15:38 | 只看該作者
樓主有程序源碼嗎
回復(fù)

使用道具 舉報

9#
ID:760639 發(fā)表于 2020-5-25 14:46 | 只看該作者
求一份完整版程序
回復(fù)

使用道具 舉報

10#
ID:786453 發(fā)表于 2020-6-22 15:05 | 只看該作者
樓主,求完整代碼
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表