历史上的今天
返回首页

历史上的今天

今天是:2025年07月12日(星期六)

正在发生

2020年07月12日 | 基于MSP430单片机的温度控制系统设计与实现

2020-07-12 来源:51hei

1 项目要求

此系统的主要功能:

● 可以测量一定摄氏度内的温度;

● 用液晶显示温度,精确到小数点后两位;

● 利用温度传感器(DS18B20)测量某一点环境温度;

● 至少有高、低两路限温控制输出接口控制外部电路。

● 高、低两路限温控制点可在一定范围内独立设置,通过发光二极管模拟显示其控制状态输出。

● 当温度达到高、低限温控制点发光报警;

● 提高温度测量精度,使分辨率不低于0.10C;

● 可以通过按键设置高、低两路限温控制点。


2项目分析和系统设计

此数字温度控制系统硬件部分利用了MSP430G2553芯片内部的ADC10功能配置,结合DS18B20温度传感器来测量环境中的温度,将所测数值在LCD1602串行显示;软件部分利用CCS软件来进行编译,并且根据实际需要来完成各模块程序的编写,再进行复杂的调试。


3 硬件设计

该温度控制系统在MSP430G2553芯片的功能配置和协调下,与其他模块搭建来完成。由MSP430控制温度传感器DS18B20实时测量环境中的温度,然后在LCD5110显示出来,当该温度超过了设定的最大或者最小温度值时,LED开始报警。



                       输入输入



图3.1系统结构框图


3.1单片机选型模块

基于名为Launch Pad,MSP-EXP430G2低成本实验板是一款适用于TI最新MSP430G2XXX犀利产品的完整开发解决方案。基于USB的集成型仿真器可提供全系列MSP430G2XX器件开发应用所必备的所有软件、硬件。Lunch Pad具有集成的DIP目标插座,可支持多达20个引脚,从而使MSP430Value Line器件能够轻松插入LaunchPad实验板电路。

图3.2单片机选型模块图


3.2温度测量模块

温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55℃~125℃,可编程为9位~12位A/D转换精度,测温分辨率达到0.0625℃,采用寄生电源工作方式,CPU只需一根口线便能与DS18B20通信,占用CPU口线少,可节省大量引线和逻辑电路。接口电路如图3.3所示。

图3.3 DS18B20测量电路图


3.3 LCD液晶显示模块

LCD液晶显示模块采用LCD1602型号,性价比高,LCD1602可以显示32个字符,口相对简单。1602共16个管脚,但是编程用到的主要管脚不过三个,分别为:RS(数据命令选择端),R/W(读写选择端),E(使能信号);以后编程便主要围绕这三个管脚展开进行初始化,写命令,写数据。

以下具体阐述这三个管脚:

RS为寄存器选择,高电平选择数据寄存器,低电平选择指令寄存器。

R/W为读写选择,高电平进行读操作,低电平进行写操作。

E端为使能端,后面和时序联系在一起。

除此外,D0~D7分别为8位双向数据线。

其接线如图3.4所示

图3.4 LCD显示电路


3.4系统电源

整个电路采用USB电源,为所有的USB 外设提供了单一的易于使用的标准的连接类型,简化了USB 外设的设计。整个的USB 的系统只有一个端口和一个中断节省了系统资源。

4 软件设计4.1主程序

本系统整体工作主要由单片机程序控制实现,其工作过程为:由MSP430控制温度传感器DS18B20实时测量环境中的温度,然后在LCD1602显示出来,当该温度超过了设定的最大或者最小温度值时,LED开始报警。

程序流程图如下:

图4.2 温度测量子程序图


5 系统调试5.1硬件调试

主要根据系统框图和硬件原理设计进行原理的绘制、各参数的设置、电路板的制作,以及元器件的焊接等。具体如下:


5.1.1 各单元电路,确认各单元电路链接无误,尤其是关键元器件,一定要接保护电阻。

(1)在样机加电之前,首先用万用表等工具,根据硬件电器原理图和装配图仔细检查样机线路的正确性,并核对元器件的型号、规格和安装是否符合要求。应特别注意电源的走线,防止电源之间的短路和极性错误,电源连接是否正确测试LCD显示屏是否有输出,LCD显示屏上的温度的显示是否符合;

(2)运用MSP430单片机中简单的I/O口功能,优异在检查硬件是否正常工作时先检测单片机本身的I/O口设置,可以先不连接外部电路,使用单片机本身I/O口,测试程序是否正确,以免在软件调试中引起不必要的麻烦。


5.1.2 PCB设计注意事项:

在进行PCB设计时,必须遵守PCB设计的一般原则,并注意其要求。

(1)此系统采用的电阻和电容较多,注意在画PCB时注意各器件的封装,对照使用的实物选取封装,保证焊接硬件的正确性。

(2)此系统采用光敏电阻及较大的极性电容,介于成本的原因,采用的封装是是直插式的,在PCB设计时特别注意

(3)根据电路的模块布局,这样便于在出现问题时进行检查,尤其注意MSP430单片机系统中I/O口是否设置正确。


5.2程序调试

此程序设计中仅使用了MSP430单片机系统中I/O口资源,调试过程中,主要使用寄存器窗口,以及设置断点,观察系统程序主要实现对采集来的模拟信号进行模数转换,并对数字信号进行液晶显示,所以程序有采集模拟信号、DA转换和液晶显示三部分;在中断子程序设置断点,判断运行是否正确。在调试过程中,由局部到整体,判断程序可能出现的问题,认真分析逻辑,实现要求的功能,在简化程序。


5.2.1 CCSV5的打开步骤

  • 右键Code Composer Studio v5快捷方式,左键打开。会出现如图5.2所示界面:

图5.1 Code Composer Studio v5软件加载界面

(2)加载完毕之后会有如图5.3所示界面出现:

图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并确定工作区间,然后选择project-->New CCS Project

弹出图5.5对话框。,在简化程序。

图5.4创建新工程主界面

②在project name中输入新建工程名称turang。

③在Device部分中,Variant中选择MSP430G××× Family,芯片选择MSP430G2553,其余选择默认。

④选择空工程,然后单击Finish,完成新工程的创建。

⑤创建工程如图5.6所示:

图5.5ProjectExplorer界面

⑥然后选择File-->New-->Source File,新建一个C文件,并且命名为turang.C,并在工程名上右击选择Add Files,创建工程如图5.7:

图5.6 新建工程界面

(2)CCS调试:

①调试之前,先确定目标配置文件是否已经创建并且配置正确。

②首先进行工程编译:选择Project-->Build Project,编译目标工程。编译结果如图5.8所示,表示没有错误,可以进行下载调试,如果有错误,知道调试到没错误为止。

图5.7工程调试结果

③单击运行图标运行程序,可以观察显示的结果。在程序调试的过程中,也可通过设置断点来调试程序,选择需要设置断点的位置,右击鼠标选择Breakpoints-->Breakpoint,断点设置成功后显示图标可以通过双击该图标来取消该断点。程序运行的过程中还可以通过单步调试按钮进行调试。


5.3联合调试

整个系统的软硬件都完成后,需要进行联合调试,主要是针对系统设定的功能能否完成和完善进行调试。将电路线连接好,接入3V电源,LCD显示屏亮,且测得当前温度,如果当前温度超过给定的量程范围内LED等就会亮,此时就是发出警报,提示当前温度已超出给定温度范围。超出给定的温度(35°)LED灯就会亮,否则LED灯就会灭,如下图。

 

图5.8联合调试图


6项目演练

对于本设计,尚可以进一步进行如下设想:

使用按键控制设定的温度的高低,设计思路如下:

系统主要包括16位单片机MSP430、温度采集模块DS18B20、液晶显示模块LCD1602、键盘控制和执行机构等几个部分。设计思路如下:

系统总体方案设计框图如下:



                       输入输入



图6.1系统结构框图


7项目总结

此系统单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低,可靠性高,抗干扰能力强和使用方便等独特优点,在数字、智能化方面有广泛的用途。430与51的最大区别在于430有很多的寄存器,较之51程序较为复杂。虽然与51单片机的组成都是差不多但还有很大的区别,就拿本次设计还说,虽说是之前是了解过还改用msp430设计还是有一点的难度,对于51单片机I/O口多,而现在我们用的msp430虽说是功能多,但编程起来还是很困难,可能是我知识的欠缺,之前所学的可能是最简单的,现在学习了这个16位的单片机还是有一点难度,不过我们还需多学习。


附录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);

推荐阅读

史海拾趣

BVLED公司的发展小趣事

随着公司规模的扩大和业务范围的拓展,BVLED公司开始注重产业链的整合和成本控制。公司通过与上游供应商建立长期稳定的合作关系,确保了原材料的稳定供应和质量保障;同时,公司还加强了对生产过程的监控和管理,通过优化生产流程和降低能耗等方式降低了生产成本。这些措施使得公司在激烈的市场竞争中保持了较强的竞争力。

BULGIN公司的发展小趣事

在2016年,BULGIN公司宣布与姊妹公司Arcolectric进行战略性合并。这一合并使得两个具有互补性的产品组合合为一体,BULGIN因此成为更加全面和覆盖范围更加广的工程解决方案提供商。合并后的BULGIN不仅扩大了专长范围,特别是在机电开关领域,还进一步提升了在全球市场的竞争力。

CAROLCABLE公司的发展小趣事

CAROLCABLE公司的创立,标志着电子线缆行业迎来了一位新的竞争者。在电子科技飞速发展的时代背景下,创始人凭借对线缆技术的深刻理解和市场需求的敏锐洞察,决定创立CAROLCABLE公司。公司初期,面临着资金短缺、技术瓶颈和市场认知度低等多重挑战。然而,创始人凭借着坚定的信念和不懈的努力,带领团队克服了一个又一个困难。他们积极研发新产品,优化生产工艺,提高产品质量,逐渐在市场上站稳了脚跟。

随着公司业务的不断拓展,CAROLCABLE开始与一些知名的电子企业建立合作关系,为其提供高质量的线缆产品。这些合作不仅为公司带来了稳定的订单和收入,也进一步提升了CAROLCABLE在行业内的知名度和影响力。

DBLECTRO公司的发展小趣事

进入21世纪后,随着全球对环保和可持续发展的关注度不断提高,迪贝电子也积极响应这一趋势,将环保和社会责任融入到企业的经营理念中。公司投入大量资金研发更加环保、节能的产品,并积极参与各种环保公益活动。同时,迪贝电子还积极推广绿色制造理念,通过优化生产流程、降低能耗和减少废弃物排放等措施,实现了企业的可持续发展。

EKIT公司的发展小趣事

2023年10月,华为坤灵(HUAWEI eKit)在德国慕尼黑成功举办了分销品牌发布会,这是其在欧洲市场的首个国家级发布活动。通过简化交易流程、打造高效的平台和工具、整合伙伴体系等措施,HUAWEI eKit为德国及欧洲市场的中小企业提供了灵活易用的产品解决方案。同时,HUAWEI eKit还致力于为中小企业市场的各种业务场景开发易买易卖、易装易维、易学易用的分销产品,赢得了市场的广泛认可。

Exel Microelectronics Inc公司的发展小趣事

Exel Microelectronics Inc公司成立于XXXX年,当时正值电子行业的蓬勃发展期。然而,初创时期的Exel面临着重重困难。公司创始人XXX先生凭借对半导体技术的深刻理解和对市场趋势的敏锐洞察,带领着一支小团队,开始了艰难的创业之路。资金紧张、技术瓶颈、市场竞争激烈,每一个问题都考验着团队的凝聚力和毅力。然而,正是这些困难锻炼了Exel人的意志,使公司逐渐在市场中站稳了脚跟。

问答坊 | AI 解惑

简历,是你成功的第一步

简历是助你成功拿到Offer的基础,只有基础打好了,通向成功的求职之路才会宽阔而顺畅。          你对自己写的简历有把握么?          如何才能写出一份打动HR的简历呢? 电子工 ...…

查看全部问答>

集成步进控制和驱动功能与一体的智能芯片

                     步进电机控制与驱动一体芯片TMC223原理与应用                       ...…

查看全部问答>

全面了解数字温度传感器规范

  为了实现最佳性能并确保系统稳健性,就必须要进行系统监控测量。其中一个必需的典型测量项目就是环境温度。使用简单的数字温度传感器进行该测量将为系统设计人员提供如下保证:组件正常工作,系统处于其性能或校准限值范围内,不会使用户遇到危 ...…

查看全部问答>

请问大家开发wince程序用什么pda?

我公司有一个产品中使用到WinCE   PDA。我想在现有的PDA产品(从市场上购入)上加载自己的应用程序。 我的问题是: 可以购买到这种带usb主口的PDA做二次开发吗?哪些厂家的哪些型号?…

查看全部问答>

板子启动不了

我有两块板子,一块正常启动,一块就是启动不了。 现在的情况是这样的,cpu是动了(可以看到部分信号输出),我测试flash部分,从上电开始,就没有信号过来。 我测不到sdram部分的信号,所以也就没法确定是sdram的问题还是cpu读flash的问题。 我 ...…

查看全部问答>

关于大量对象的控制

    我的目标是控制1000(或者更多)个节点,每个节点有两到三个开关量,可独立控制,节点间距离大概为15cm。为了布线方便,我想应该采用级联方式。     希望大家提供一些帮助,比如什么样的芯片比较合适,同时软件编程也不是 ...…

查看全部问答>

SMC电动执行器问题请教

最近忙着做毕业设计,用到了SMC公司的一款电动执行器(电缸),但由于经费问题,有一些部分没有买全。遇到了一些问题。有用过类似产品的高手们指点一下: 这是我用的电缸的控制器,需要与电脑连接进行设置,但没有相应的连接线,不知道该用什么线 ...…

查看全部问答>

NXP LPC1768宝马开发板 第二十七章 宝马1768--TFT4.3刷屏

第二十七章 宝马1768——TFT4.3刷屏本节我们主要介绍由本公司开发的TFT4.3寸屏的操作,其分辨率480*272,控制芯片是SSD1963。实验说明:插彩屏的时候注意对应,因为开发板上多预留了一个5V和GND的引脚。不要插错了。本实验只是对4.3寸彩屏做一个简 ...…

查看全部问答>

430ADC和DAC模块怎么设置可以同时工作

大家好,我在用430单片机做一个小实验的时候,单独使用ADC和DAC模块的时候没有问题。但是当我想用430的ADC来检查430的DAC输出时就不行了,我尝试过了,发现DAC 和ADC不可以同时工作,请问让它们同时工作时该怎样设置呢?…

查看全部问答>

为什么希尔伯特变换器只适用于窄带信号???

从原理上看,希尔伯特变换的系统函数是对输入信号正频率相位移动-90°,对负频率相位移动90°。即:一个信号经过一个线性时不变的因果系统,并没有对输入信号做要求,可是在实践中发现,希尔伯特变换的信号频带很窄,这是理论上哪里的错误,求大神 ...…

查看全部问答>