1927|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

MSP430单片机的温度控制系统设计与实现 [复制链接]

整个系统通过单片机MSP430G2553控制DS18B20读取温度,采用LCD1602显示,温度传感器DS18B20与单片机之间通过串口进行数据传输.MSP430系列单片机具有超低功耗,且外围的整合性高,DS18B20只需一个端口即可实现数信,连接方便。

 

基于单片机的温度控制系统设计与实现

1 项目要

此系统的主要功能:
● 可以测量一定摄氏度内的温度;
● 用液晶显示温度,精确到小数点后两位;
● 利用温度传感器(DS18B20)测量某一点环境温度;
● 至少有高、低两路限温控制输出接口控制外部电路。
● 高、低两路限温控制点可在一定范围内独立设置,通过发光二极管模拟显示其控制状态输出。
● 当温度达到高、低限温控制点发光报警;
● 提高温度测量精度,使分辨率不低于0.10C;
● 可以通过按键设置高、低两路限温控制点。

2项目分析和系统设计

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

硬件设计

该温度控制系统在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.1主程序

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


 

4.2 温度测量子程序图

系统调试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.新建工程界面
(2)CCS调试:
①调试之前,先确定目标配置文件是否已经创建并且配置正确。
②首先进行工程编译:选择Project-->Build Project,编译目标工程。编译结果如图5.8所示,表示没有错误,可以进行下载调试,如果有错误,知道调试到没错误为止。
5.7工程调试结果
③单击运行图标运行程序,可以观察显示的结果。在程序调试的过程中,也可通过设置断点来调试程序,选择需要设置断点的位置,右击鼠标选择Breakpoints-->Breakpoint,断点设置成功后显示图标可以通过双击该图标来取消该断点。程序运行的过程中还可以通过单步调试按钮进行调试。

5.3联合调试

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




6项目演练

对于本设计,尚可以进一步进行如下设想:
使用按键控制设定的温度的高低,设计思路如下:
系统主要包括16位单片机MSP430、温度采集模块DS18B20、液晶显示模块LCD1602、键盘控制和执行机构等几个部分。设计思路如下:
系统总体方案设计框图如下:

 

 

 

                       输入输入


 

6.1系统结构框图



7项目总结

此系统单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低,可靠性高,抗干扰能力强和使用方便等独特优点,在数字、智能化方面有广泛的用途。430与51的最大区别在于430有很多的寄存器,较之51程序较为复杂。虽然与51单片机的组成都是差不多但还有很大的区别,就拿本次设计还说,虽说是之前是了解过还改用msp430设计还是有一点的难度,对于51单片机I/O口多,而现在我们用的msp430虽说是功能多,但编程起来还是很困难,可能是我知识的欠缺,之前所学的可能是最简单的,现在学习了这个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.  
  10.                 P1SEL&=0X00;            //设置P1口为I/O模式
  11.                 P2SEL&=0X00;            //设置P2口为I/O模式
  12.                 P1DIR|=0XFF;            //设置P1口为输出模式
  13.                 P2DIR|= (BIT0+BIT1+BIT2+BIT4);            //设置P2口为输出模式
  14.  
  15.                 P1OUT&= 0X00;              //P1口清零
  16.                 P2OUT&=~(BIT0+BIT1+BIT2);  //P2.0 2.1 2.2 清零
  17.                 init();
  18.                 DS18B20_Init();
  19.                 //_EINT();
  20.  
  21.                 while(1)
  22.                 {
  23.                               DS18B20_ReadTemp();
  24.                               xianshi();
  25.                               baojing ();
  26.                 }
  27. }
  28.  
  29.  
  30. 显示子程序:
  31. void xianshi()
  32. {
  33.               float n;              unsigned long value;
  34.               n=Temper*1000;
  35.               value = (unsigned long int)n;
  36.  
  37.               temp_display[1] = digit[value/100000];          //100位
  38.               value = value%100000;
  39.  
  40.               temp_display[2] = digit[value/10000];           //10位
  41.               value = value%10000;
  42.  
  43.               temp_display[3] = digit[value/1000];            //1位
  44.               value = value%1000;
  45.  
  46.               temp_display[5] = digit[value/100];             //0.1位
  47.               value = value%100;
  48.  
  49.               temp_display[6] = digit[value/10];              //0.01位
  50.               value = value%10;
  51.  
  52.               temp_display[7] = digit[value/1];               //0.001位
  53. }
  54.  
  55.  
  56. 报警子程序:
  57. void baojing ()
  58. {
  59.               t=35;
  60.               if(Temper>t)
  61.               {
  62.  
  63.                             P2OUT|=BIT4;
  64.                             DispStr(0,0,LCDBuf3);
  65.                             DispStr(0,1,temp_display);
  66.                             Disp1Char(8,1,0XDF);
  67.  
  68.               }
  69.               else
  70.                             {
  71.                             P2OUT&=~BIT4;
  72.                             DispStr(11,0,"     ");
  73.                             DispStr(0,0,LCDBuf1);
  74.                             DispStr(0,1,temp_display);
  75.                             Disp1Char(8,1,0XDF);
  76.  
  77.                             }
  78. }
  79.  
  80.  
  81. 外延子程序:
  82. //按键中断函数
  83. #pragma vector=PORT2_VECTOR
  84. __interrupt void Port_2(void)
  85.               {
  86.  
  87.  
  88.                 if((P2IN&BIT4)==0)
  89.                 {
  90.                               delay_ms(10);
  91.                               if((P2IN&BIT4)==0)
  92.                               {
  93.                                t=t-1;
  94.                               }
  95.                               P2IFG&=~((BIT4+BIT5));
  96.                 }
  97.  
  98.                 if((P2IN&BIT5)==0)
  99.                 {
  100.  
  101.                               delay_ms(10);
  102.                               if((P2IN&BIT5)==0)
  103.                               {
  104.                               t=t+1;
  105.                               }
  106.                               P2IFG&=~((BIT4+BIT5));
  107.                 }
  108.                 P2IFG&=~((BIT4+BIT5));
  109.               }
 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表