查看: 5021  |  回复: 9
参赛作品《使用MSP430F447制作MBUS/RS485温度采集器 》

主题

回复
发表于2018-06-16 08:10:39 | 显示全部楼层
1# 电梯直达

【报名阶段需要填写的内容】


1. 参赛者姓名(必填项):杜娟花开


2. 单位或学校名称(选填项):杜娟花开


3. 当前职务或职称(选填项):自由职业者


4. 参赛作品的名字(必填项):使用MSP430F447制作MBUS/RS485温度采集器


5. 简要陈述您的idea和作品(必填项):使用MSP430F447制作温度采集器,充分使用MSP430芯片的低功耗,直接驱动段码液晶,,使用MBUS/RS485远程通信,配合DS18B20实时采集温度,并将一天划分为十二个定时时段来分别控制不同的温度


6. 拟用到的立创商城在售物料(必填项):MSP430F447  TSS721  max485      lm117-3.3  稳压芯片,DS18B20温度传感器  线路板报及阻容元件


7. 拟用到的非立创商城物料或其它补充(必填项):外壳,液晶


8. 拟用到的EDA工具软件名称(必填项):立创EDA AD9


【作品正式发表(报名成功后进入设计阶段)需要填写的内容】

 

一、作品简介

例如,可以包括但不局限于以下内容:

1.作品的整机外观图片或焊接组装好的PCBA图片;

 

 

  


2.作品的研究背景、目的和功能、市场应用前景:目前在智能家居中有许多温度控制器功能简单,也不带通信功能,无法把采集到的温度数据上传到控制服务器上进行集中管理。而在工程使用中,MBUS总线比RS485总线性以有优越,带负载能力大,且不受总线形式影响,抗干扰性能比485强很多,因此,这个温度采集器使用了两种通信总线:RS485和MUBUS仪表总线

3.作品在创新性、趣味性、实用性甚至公益性方面,有哪些亮点可体现?采用比较大的液晶以更直观地显示温度信息,工作参数以及时间等数据,采用了RS485和MDUS两种不同的总线。在使用MBUS总线时,可以直接使用MBUS总线供电,可以很方便地集成到温度采集系统中去。



二、系统构架图

用流程图或思维导图等形式,描述您的作品的组成构架,即方案图。

 点击查看大图

          以MSP430F447主核心,驱动段码液晶显示相关数据信息,通过按钮来设置参数或选择需要的功能,温度采集采用DS18B20数据温度传感器,通信可选MBUS或者RS485通信。在使用RS485通信时,供电部分需要真流7.5-5V电源或二节五号电池供电;当采用MBUS通信时,直接采用MBUS给系统供电。

   

三、硬件部分的描述

1.附上原理图&PCB实物图的图片或者源文件(官方建议大家尽量用源文件上传),如果是图片,请确保图片是清晰可辨的;

2.用文字把该作品的实现原理、系统的工作过程大致讲解一下。

3.注明所用到的EDA工具软件名称并附上设计链接。

    本设计使用的相关软件有 MX CUBE  MDK5  立创EDA  http://club.szlcsc.com/forum/97_0_1.html

  点击查看大图

 

 点击查看大图

  点击查看大图


四、材料清单(BOM列表)

列出您这个作品所用到的主要器件(关键器件即可),比如单片机&ARM芯片、专用集成芯片(ASIC)、传感器、功能模块等。

如果所列出的芯片是来自我们立创商城上的,最好能写出该器件的商品编号或附上对应购买链接。

  点击查看大图

五、软件部分的描述(选填)

如果您的作品涉及到软件,请列出作品对应的软件工作流程图,及关键部分的例程、源码(如果您想开源的话请上传全部源码)。


以下为液晶驱动的代码:

#include  <msp430x44x.h>
#define Old_Lcd  1
#define New_Lcd  2
#define Lcd_Tpye New_Lcd
const unsigned char Lcd_Table1[]={ 0x01,0x02,0x03,0x08,0x10,0x20,0x40,0x80};
//=============LED 1-8=======================================
#define h 0x80
#define c 0x04
#define b 0x02
#define a 0x01
#define f 0x10
#define e 0x40
#define g 0x20
#define d 0x08
#define Space 0x00
//=============LED 9-11=======================================
//#define h 0x08   //其它符号  d
//#define c 0x40               e
//#define b 0x20               g
//#define a 0x10               f
//#define f 0x01               a
//#define e 0x04               c
//#define g 0x02               b
//#define d 0x80               h
const char char_gen[] = {               // As used in 430 Day Watch Demo board
  a+b+c+d+e+f,                          // Displays "0"
  b+c,                                  // Displays "1"
  a+b+d+e+g,                            // Displays "2"
  a+b+c+d+g,                            // Displays "3"
  b+c+f+g,                              // Displays "4"
  a+c+d+f+g,                            // Displays "5"
  a+c+d+e+f+g,                          // Displays "6"
  a+b+c,                                // Displays "7"
  a+b+c+d+e+f+g,                        // Displays "8"
  a+b+c+d+f+g,                           // Displays "9"
  a+b+c+e+f+g,                          // Displays "A"
  c+d+e+f+g,                            // Displays "B"
  d+e+g,                                // Displays "C"
  b+c+d+e+g,                            // Displays "D"
  a+d+e+f+g,                            // Displays "E"
  a+e+f+g,                               // Displays "F"
  g,                                     // Displays "-"
  Space,                                  //Displays " " 
  a+e+f+d ,                               //   [
  a+b+c+d                                //    ] 
};
const char char_gen1[] = {               // As used in 430 Day Watch Demo board
  f+g+e+h+c+a,                          // Displays "0"
  g+e,                                  // Displays "1"
  f+g+h+c+b,                            // Displays "2"
  f+g+e+h+b,                            // Displays "3"
  g+e+a+b,                              // Displays "4"
  f+e+h+a+b,                            // Displays "5"
  f+e+h+c+a+b,                          // Displays "6"
  f+g+e,                                // Displays "7"
  f+g+e+h+c+a+b,                        // Displays "8"
  f+g+e+h+a+b,                           // Displays "9"
  
  f+g+e+c+a+b,                          // Displays "A"
  e+h+c+a+b,                            // Displays "B"
  h+c+b,                                // Displays "C"
  g+e+h+c+b,                            // Displays "D"
  f+h+c+a+b,                            // Displays "E"
  f+c+a+b,                               // Displays "F"
  b,                                     // Displays "-"
  Space                                  //Displays " "
};


//=====================================================================
#define   col1_on    LCDMEM[0]|=0X01      //分与时间间封号
#define   col1_off   LCDMEM[0]&=~0X01
#define   S27_on     LCDMEM[0]|=0X02      //剩余
#define   S27_off    LCDMEM[0]&=~0X02
#define   S28_on     LCDMEM[0]|=0X04      //热量
#define   S28_off    LCDMEM[0]&=~0X04
#define   S29_on     LCDMEM[0]|=0X08      //冷量
#define   S29_off    LCDMEM[0]&=~0X08
#define   col2_on    LCDMEM[0]|=0X10      //分与秒间封号
#define   col2_off   LCDMEM[0]&=~0X10
#define   S36_on     LCDMEM[0]|=0X20      //MJ符号
#define   S36_off    LCDMEM[0]&=~0X20
#define   S31_on     LCDMEM[0]|=0X40      //功率
#define   S31_off    LCDMEM[0]&=~0X40
#define   S30_on     LCDMEM[0]|=0X80      //流量
#define   S30_off    LCDMEM[0]&=~0X80
//=========================================================================
#define   S37_on     LCDMEM[1]|=0X01      //MW。H符号
#define   S37_off    LCDMEM[1]&=~0X01
#define   S41_on     LCDMEM[1]|=0X02      //KW后的H字符
#define   S41_off    LCDMEM[1]&=~0X02
#define   S40_on     LCDMEM[1]|=0X04      //KW后的。字符
#define   S40_off    LCDMEM[1]&=~0X04
#define   S43_on     LCDMEM[1]|=0X08      //M3后的/h字符
#define   S43_off    LCDMEM[1]&=~0X08
#define   S35_on     LCDMEM[1]|=0X10      //Gj行号
#define   S35_off    LCDMEM[1]&=~0X10
#define   S46_on     LCDMEM[1]|=0X20      //KW中的K符号
#define   S46_off    LCDMEM[1]&=~0X20
#define   S47_on     LCDMEM[1]|=0X40      //KW中的W符号
#define   S47_off    LCDMEM[1]&=~0X40
#define   S48_on     LCDMEM[1]|=0X80      //M3字符
#define   S48_off    LCDMEM[1]&=~0X80
#define   S16_on     LCDMEM[11]|=0X08      //进水文文字
#define   S16_off    LCDMEM[11]&=~0X08
#define   S19_on     LCDMEM[16]|=0X80      // 回水文字
#define   S19_off    LCDMEM[16]&=~0X80
#define   S24_on     LCDMEM[8]|=0X80      //时间
#define   S24_off    LCDMEM[8]&=~0X80
#define   S25_on     LCDMEM[7]|=0X80      //购买
#define   S25_off    LCDMEM[7]&=~0X80
#define   S26_on     LCDMEM[6]|=0X80      //累积
#define   S26_off    LCDMEM[6]&=~0X80
//=========================================================================
#define   Q1_on      LCDMEM[10]|=0X01  //上字
#define   Q1_off     LCDMEM[10]&=~0X01
#define   S32_on     LCDMEM[10]|=0X02  //本
#define   S32_off    LCDMEM[10]&=~0X02
#define   S33_on     LCDMEM[10]|=0X04  //试
#define   S33_off    LCDMEM[10]&=~0X04
#define   S22_on     LCDMEM[10]|=0X08  //编号
#define   S22_off    LCDMEM[10]&=~0X08
#define   S2_on      LCDMEM[10]|=0X10  //电池外框
#define   S2_off     LCDMEM[10]&=~0X10
#define   SS1_on     LCDMEM[10]|=0X20  //电池一
#define   SS1_off    LCDMEM[10]&=~0X20
#define   SS_on      LCDMEM[10]|=0X40  //电池二     
#define   SS_off     LCDMEM[10]&=~0X40
#define   S14_on     LCDMEM[10]|=0X80  //电池二     
#define   S14_off    LCDMEM[10]&=~0X80
//=============================================
#define   S1_on      LCDMEM[14]|=0X08  //星期字
#define   S1_off     LCDMEM[14]&=~0X08
#define   S3_on      LCDMEM[15]|=0X01  //齿轮符号
#define   S3_off     LCDMEM[15]&=~0X01
#define   Q3_on      LCDMEM[15]|=0X02  //电话符号
#define   Q3_off     LCDMEM[15]&=~0X02
#define   S4_on      LCDMEM[15]|=0X04  //欠费
#define   S4_off     LCDMEM[15]&=~0X04
#define   S23_on     LCDMEM[15]|=0X08  //日期
#define   S23_off    LCDMEM[15]&=~0X08
#define   S5_on      LCDMEM[15]|=0X10  //天线信号一
#define   S5_off     LCDMEM[15]&=~0X10
#define   S12_on     LCDMEM[15]|=0X20  //天线信号二
#define   S12_off    LCDMEM[15]&=~0X20
#define   S13_on     LCDMEM[15]|=0X40  //天线信号三 
#define   S13_off    LCDMEM[15]&=~0X40
#define   S6_on      LCDMEM[15]|=0X80  //天线信号三 
#define   S6_off     LCDMEM[15]&=~0X80
//===========================================================

#define   S20_on      LCDMEM[19]|=0X10    //设定
#define   S20_off     LCDMEM[19]&=~0X10
#define   S18_on      LCDMEM[19]|=0X20    //进水温度符号
#define   S18_off     LCDMEM[19]&=~0X20
#define   S10_on      LCDMEM[19]|=0X40    //进水温度符号
#define   S10_off     LCDMEM[19]&=~0X40
#define   S11_on      LCDMEM[19]|=0X80    //阀关
#define   S11_off     LCDMEM[19]&=~0X80
//===========================================================
#define   sig_12a     LCDMEM[17]|=0X01      //小字  LED13
#define   sig_12b     LCDMEM[17]|=0X02
#define   sig_12c     LCDMEM[17]|=0X04
#define   sig_12d     LCDMEM[17]|=0X08
#define   sig_12f     LCDMEM[16]|=0X10      //小字  LED14
#define   sig_12g     LCDMEM[16]|=0X20
#define   sig_12e     LCDMEM[16]|=0X40
#define   S19         LCDMEM[16]|=0X80      //回水汉字
//===========================================================
#define   sig_13a     LCDMEM[18]|=0X01      //小字  LED13
#define   sig_13b     LCDMEM[18]|=0X02
#define   sig_13c     LCDMEM[18]|=0X04
#define   sig_13d     LCDMEM[18]|=0X08
#define   sig_13f     LCDMEM[17]|=0X10      //小字  LED14
#define   sig_13g     LCDMEM[17]|=0X20
#define   sig_13e     LCDMEM[17]|=0X40
#define   sig_14a     LCDMEM[19]|=0X01      //小字  LED14
#define   sig_14b     LCDMEM[19]|=0X02
#define   sig_14c     LCDMEM[19]|=0X04
#define   sig_14d     LCDMEM[19]|=0X08
#define   sig_14f     LCDMEM[18]|=0X10      //小字  LED14
#define   sig_14g     LCDMEM[18]|=0X20
#define   sig_14e     LCDMEM[18]|=0X40
#define   S21_on      LCDMEM[18]|=0X80      //回水温度符号
#define   S21_off     LCDMEM[18]&=~0X80      //回水温度符号


#define   P2_on       LCDMEM[17]|=0X80      //回水温度小数点符号
#define   P2_off      LCDMEM[17]&=~0X80    //回水温度小数点符号
//===========================================================
#define   P1_on       LCDMEM[13]|=0x08;      //出水温度小数点符号
#define   P1_off      LCDMEM[13]&=~0x08;      //出水温度小数点符号
#define   S17_on      LCDMEM[12]|=0X08       //室温符号 
#define   S17_off     LCDMEM[12]&=~0X08
#define   S9_on       LCDMEM[16]|=0X01      //方块符号
#define   S9_off      LCDMEM[16]&=~0X01     //方块符号
#define   S8_on       LCDMEM[16]|=0X02      //月亮符号
#define   S8_off      LCDMEM[16]&=~0X02     // 
#define   S8_on       LCDMEM[16]|=0X02      //月亮符号
#define   S8_off      LCDMEM[16]&=~0X02     // 
#define   W_on        LCDMEM[16]|=0X04      //月亮符号
#define   W_off       LCDMEM[16]&=~0X04     // 
#define   S7_on       LCDMEM[16]|=0X08      //太阳符号
#define   S7_off      LCDMEM[16]&=~0X08     // 
#define   h5_on       LCDMEM[5]|=0X80      //万分位小数点
#define   h5_off      LCDMEM[5]&=~0X80     // 
#define   h6_on       LCDMEM[4]|=0X80      //千分位小数点
#define   h6_off      LCDMEM[4]&=~0X80     // 
#define   h7_on       LCDMEM[3]|=0X80      //百分位小数点
#define   h7_off      LCDMEM[3]&=~0X80     // 
#define   h8_on       LCDMEM[2]|=0X80      //十分位小数点
#define   h8_off      LCDMEM[2]&=~0X80     // 


六、作品演示

请上传您的作品的功能演示到腾讯视频,并编辑到本楼(或附上视频链接)。按要求上传视频可获得10分,具体详见活动规则。

https://v.qq.com/x/page/k0753903ym7.html

七、总结

例如您在完成该作品过程中的一些体会、碰到的技术问题或调试经验、作品的未来规划,及对我们主办方的建议和意见等。

经过这次参与,让我深深地感到:

1、立创EAD是一个非常不错的开发工具。尽管尽管目前使用时还存在许多不便,但随着时间的延续,相信这个EAD会越来越完善。也相信会有更多我的设计开发人员来用这个软件。值得肯定的是这个软件的库文件作的非常人性化,也方便了广大设计人员,再也不会为一些库封装头疼了;

2、这是一个非常不错的交流平台,愿它越办越好,原在这里学习了很多优秀的设计产品与思路,也感到自己知识的不足,也认识 到自己的不足,能力与水平有限;




主题

回复
发表于2018-06-18 21:15:01   |  显示全部楼层
3#
 点击查看大图

主题

回复
发表于2018-06-19 19:39:35   |  显示全部楼层
6#
 点击查看大图

主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部