MSP430单片机温度单片机课程设计报告书
msp430实验报告
msp430实验报告msp430实验报告引言:msp430是一种低功耗、高性能的微控制器,被广泛应用于嵌入式系统和物联网设备中。
本实验报告将介绍我对msp430微控制器进行的一系列实验,包括实验目的、实验过程、实验结果以及对实验的总结和展望。
实验目的:本次实验的主要目的是熟悉msp430微控制器的基本功能和使用方法,以及学习如何进行简单的控制程序设计。
通过实验,我希望能够掌握msp430的基本操作和编程技巧,并且能够运用所学知识解决实际问题。
实验过程:在实验开始之前,我首先对msp430微控制器进行了一些基本的了解。
我了解到,msp430具有低功耗、高性能和丰富的外设接口等特点,可以满足各种嵌入式系统的需求。
接着,我根据实验指导书的要求,准备好实验所需的硬件设备和软件工具。
第一部分实验是关于GPIO口的实验。
我按照实验指导书上的步骤,将msp430与LED灯连接起来,并编写了一个简单的程序,实现了对LED灯的控制。
通过这个实验,我学会了如何配置GPIO口和编写简单的控制程序。
第二部分实验是关于定时器的实验。
我学习了如何配置msp430的定时器,并编写了一个简单的程序,实现了定时闪烁LED灯的功能。
通过这个实验,我深入了解了定时器的工作原理和编程方法。
第三部分实验是关于ADC的实验。
我学习了如何配置msp430的ADC模块,并编写了一个简单的程序,实现了对外部模拟信号的采样和转换。
通过这个实验,我了解了ADC的基本原理和使用方法。
实验结果:通过一系列实验,我成功地掌握了msp430微控制器的基本功能和使用方法。
我能够独立完成GPIO口的配置和控制、定时器的配置和编程、ADC的配置和采样等任务。
实验结果表明,msp430具有强大的功能和灵活的编程能力,可以满足各种嵌入式系统的需求。
总结和展望:通过本次实验,我对msp430微控制器有了更深入的了解,并且掌握了一些基本的操作和编程技巧。
然而,由于实验时间和条件的限制,我还没有完全发挥出msp430的潜力。
开题报告:基于MSP430单片机的温湿度测量系统设计
沈阳工业大学本科生毕业设计(论文)开题报告毕业设计(论文)题目:基于MSP430单片机的温湿度测量系统院系:自动化系专业班级:自动化学生姓名:指导教师:开题时间:2014年10 月30 日1.课题的目的和意义这次毕业设计选题的目的主要是让生活在信息时代的我们,将所学知识应用于生产生活当中,掌握温、湿度测量系统设计的流程,方案的论证,选择,实施与完善。
通过对温、湿度测量系统的设计、制作、了解信息采集测试、控制的全过程,提高在电子工程设计和实际操作方面的综合能力,初步培养在完成项目过程中所应具备的基本素质和要求。
培养研发能力,通过对电子电路的设计,初步掌握在给定条件和要求的情况下,如何巧妙合理地去设计系统中的各部分电路,并将它们有序的连接起来。
提高查阅资料、语言表达能力和理论联系实际的技能。
温、湿度是工业对象中主要的被控参数之一,当今社会温、湿度的测量与测量系统在生产与生活的各个领域中扮演着越来越重要的角色,大到工业冶金、环境检测、纺织厂、冷冻库、粮仓、医疗卫生等方面,小到浴霸、家庭冰箱、空调、电饭煲等方面都得到了广泛的应用。
例如冶金、机械、食品、化工各类工业中,广泛使用的各种加热炉、热处理炉、反应炉等,对工件的处理温、湿度都要求严格控制,而单片机温、湿度测量系统使温、湿度测量指标得到了大幅度提高。
其使用量日益增多,其地位和作用也倍显重要。
温、湿度测量系统的广泛应用使得这方面的研究意义颇为必要。
温、湿度测量系统的结构组成,测量原理使用维护等方面的基础内容已成为电子工程技术人员急需了解掌握的必要知识。
MSP430系列单片机是美国德州仪器公司推出的16位超低功耗、高性能产品,它具有处理能力强、运行速度快、资源丰富、开发方便等优点,有很高的性价比,在世界各国已得到广泛的应用,在国内,也已经进人飞速发展阶段,MSP430系列超低功耗16位单片机,越来越受到电子工程师亲睐,并得到广泛应用。
MSP430微控制器MCU(MicrocontrollerUnit)是TI公司推出的一款具有丰富片上外围的超低功耗16位FLASH型混合信号处理器,本系统使用的MSP430F149有一个串口通信接口,一个带有大量捕获P比较寄存器的16位定时器看门狗,一个模拟电压比较器。
基于msp430单片机的温度控制系统的设计
统
1.4 ERP 的类型
参考文献
ERP 产品很多 如:完整的 ERP 系统是生产 供
销 财务完全集成 包含预算控制 计划自动生成
[1] 宁 俊 服装企业管理教学案例[M] 北京
和自动下达 包含供应商和客户的管理及供应链的 中国纺织出版社 2004
上接 83 页 MSP430F1121 单片机对温度的控制是通过可控硅实现的 由 MSP430F1121 单片机 P1.1 发出控制信号 控制可控硅的通断就可实现控制温度的目的 MSP430F1121 只要改变P1.1 的接通时间就可调节温度的变化 由于加热丝存在热惯性和时间滞后等特性 为精确控制温度带来困难 可通过脉冲加热控制法控制温度 即 通过测得的温度与设定温度的差值大小 分别采用不同宽度的脉冲 控制P1.1的接通时间达到控温的目的 3 结束语 MSP430F1121 单片机和热敏电阻体积小 重量轻 抗干扰性能强 价格低廉 结构稳定 可靠性高 灵活性好 一致性好 对环境要求不高的优点 应用简单方便 本文的温度测控系统仅是单片机广泛应用 的一例 相信单片机的应用会越来越广泛
以热敏电阻为测量元件的 MSP430F1121 单片机温度测控系统电路原理图略 可向作者索取 本文仅 对温度测量与控制电路部分进行描述
2.1 温度测量电路与软件设计
传统的办法采用充电的办法测量 为增加分别率 我们取内部的
0.25Vcc作为阈值电压 采用放电的办法可分别测出参考电阻Rref的
放电时间Tref 热敏电阻器电阻Rsensor 的放电时间Tsensor则有下
TAX_ISR add
&TAIV,PC
reti
C C R 1 _ I S R bic
#LPM0,0(SP)
reti
MSP430单片机实验报告
MSP430单片机实验报告--段式LCD显示1.实验介绍:实验演示了将ADC结果用段式LCD显示,并且还原输入电压也采用段式LCD显示。
ADC的结果可以通过ADC12MEM0的值来显示。
当程序运行时,LCD屏幕采用10进制显示出ADC12MEM0的值。
2.实验目的:a.熟悉IAR5.0软件开发环境的使用b.了解MSP430段式LCD的工作方式c.掌握MSP430段式LCD的编程方法3.实验原理:驱动LCD需要在段电极和公共电极上施加交流电压。
若只在电极上施加直流电压,液晶本身发生劣化。
解决这个问题的一般方法是使用短时也就驱动器,如MSP430F4xx系列单片机就集成有段式液晶驱动。
如果要在没有液晶驱动器的情况下使用段式液晶显示器,就要用到如图1所示电路。
图1中,A为电极信号输入端,控制该段液晶是否被点亮;B为交流方波信号输入端,将有一个固定频率的方波信号从此端输入;com为公共背极信号。
工作原理为;固定的方波信号被直接加载到液晶公共背极,同时该信号通过一个异或门加载到液晶段极。
当A端为低电平时,液晶的段极与公共背极将得到一个同相、同频率、同幅度的方波信号,液晶的两端始终保持没有电压差;当A端为高电平时,液晶的段极也公共背极将得到一个反相、同幅度、同频率的方波信号,液晶两端将保持一个交流的电压差。
这样既能使液晶保持点亮状态,又不会发生劣化而损坏液晶显示器。
图一.段式液晶驱动电路4.实验步骤:(1)将PC 和板载仿真器通过USB 线相连;5.实验现象:段式LCD显示屏显示的数字为002031,ADC12MEM0的值为07EF,其值为16进制,将其转换后值为2031与屏幕显示一致。
6.关键代码分析:#include <msp430x26x.h>#include "General_File.h"#include "I2C_Define.h"void I2C_Start(void){DIR_OUT;SDA_1;I2C_Delay();SCL_1;I2C_Delay();SDA_0;I2C_Delay();SCL_0;}//End I2C_Start/*函数名:I2C_Stop 功能:遵循I2C总线协议定义的停止*/void I2C_Stop(void){DIR_OUT;SDA_0;I2C_Delay();SCL_1;I2C_Delay();SDA_1;}//End I2C_Stop/* 函数名:I2C_ReceiveACK 功能:待接受ACK 信号,完成一次操作*/void I2C_Write_ACK( void ){SDA_1;DIR_IN;SCL_1;I2C_Delay();while(SDA_IN );SCL_0;I2C_Delay();DIR_OUT;return;}//End I2C_ReceiveACK/* 函数名:2C_Read_Ack 功能:接受数据后发送一个ACK信号*/void I2C_Read_Ack(void){DIR_OUT;SCL_0;SDA_0;I2C_Delay();SCL_1;I2C_Delay();SCL_0;SDA_1;}//End I2C_Read_Ack/* 函数名:I2C_Read_NoAck 功能:最后接受数据后发送NoACK信号*/void I2C_Read_NoAck( void ){DIR_OUT;SCL_0;SDA_1;I2C_Delay();SCL_1;I2C_Delay();SCL_0;}//End I2C_Read_Ack/* 函数名:I2C_Receiveuchar 功能:接受一个字节的数据*/uchar I2C_Receiveuchar(void){uchar Read_Data = 0x00; //返回值uchar DataBit = 0x00; //每一个clk 接受到的数据SCL_0;I2C_Delay();SDA_1;DIR_IN;for( uchar i = 0;i < 8;i++ ){SCL_1;I2C_Delay();DataBit = SDA_IN;SCL_0;I2C_Delay();I2C_Delay();Read_Data = ( ( Read_Data << 1 ) | DataBit ); //将数据依次存入Read_Data }return( Read_Data );}//End I2C_Receiveuchar/* 函数名:I2C_Senduchar 功能:遵循I2C总线协议定义发送一字节数据*/void I2C_Senduchar( uchar Wr_Data ){DIR_OUT;SCL_0;SDA_1;for( uchar i = 0;i < 8;i++ ){if( Wr_Data & 0x80 ){SDA_1; //最高位是否为1,为1则SDA= 1 }else{SDA_0; //否则SDA=0}I2C_Delay();SCL_1;I2C_Delay();SCL_0;I2C_Delay();Wr_Data <<= 1; //数据左移一位,进入下一轮送数}SDA_1;return;}//End I2C_Senduchar/************ BU9796FS相关指令定义**********/#define Write_Com 0x80#define Write_Data 0x00#define Display_ON 0x48#define Half_Bias 0x44#define Set_Reset 0x6A#define Ext_Clock 0x69#define Blink_Mode0 0x70#define Blink_Mode1 0x71#define Blink_Mode2 0x72#define Blink_Mode3 0x73#define Pixel_ON 0x7E#define Pixel_OFF 0x7D#define BU9796_Addr 0x7C#define Base_Add 0x00/************** 引用的外部函数*********************/extern void I2C_Start(void);extern void I2C_Stop(void);extern void I2C_Write_ACK(void);extern void I2C_Senduchar( uchar Wr_Data );/************** 定义段式LCD的阿拉伯数字码*********************/const uchar Num_Code[] ={0xAF, // 00x06, // 10x6D, // 20x4F, // 30xC6, // 40xCB, // 50xEB, // 60x0E, // 70xEF, // 80xCF, // 90x10, //. 如果要显示小数点,必须要将此值与下一位值相加0x88 //: ,包括LCD上的两个":"};uchar Disp_Data[]={ 5,5,7,3,1,5 };/* 函数名:Segment_Display 功能:段式LCD数据包写入服务程序,负责将一串字符送到段式LCD 上去显示*/void Segment_Display( const uchar Addr,const uchar *P_Data, uchar Length ){uchar User_Addr = Addr;I2C_Start(); //启动BU9796I2C_Senduchar( BU9796_Addr ); //写BU9796的物理地址I2C_Write_ACK();I2C_Senduchar( Base_Add + User_Addr * 2 ); //发送起始地址,下一个紧跟的是数据I2C_Write_ACK();for( uchar i = Length ;i > 0;i-- ){if( *P_Data != 0x0A ) // 显存中是否有小数点?如果有,就将小数点码值与下一位码值相加{I2C_Senduchar( Num_Code[ *P_Data++ ] );}else{uchar Temp_Disp_Data = Num_Code[ *P_Data++ ];I2C_Senduchar( Temp_Disp_Data + Num_Code[ *P_Data++ ]);i--;}I2C_Write_ACK();}I2C_Stop(); //访问结束}/* 函数名:Init_BU9796FS 功能:初始化驱动芯片BU9796的相关参数*/void Init_BU9796FS( void ){I2C_Start(); //启动BU9796I2C_Senduchar( BU9796_Addr ); //写BU9796的物理地址I2C_Write_ACK(); //等待ackI2C_Senduchar( Write_Com + Set_Reset); //启动软复位I2C_Write_ACK(); //等待ackI2C_Senduchar( Write_Com + Blink_Mode2 );I2C_Write_ACK();I2C_Senduchar( Write_Com + Display_ON ); //开显示I2C_Write_ACK();I2C_Senduchar( Write_Data + Base_Add ); //发送起始地址,下一个紧跟的是数据I2C_Write_ACK();for( uchar i = 0;i<10;i++ ) //清LCD显示屏{I2C_Senduchar( 0x00 );I2C_Write_ACK();}I2C_Stop(); //访问结束}/* 函数名:Init_MCU 功能:初始化MSP430的相关参数*/void Init_MCU( void ){/* WDTCTL = WDTPW + WDTHOLD; */ // 关看门狗BCSCTL3 |= XT2S_2; // XT2频率范围设置BCSCTL1 &= ~XT2OFF; // 打开XT2振荡器do{IFG1 &= ~OFIFG; // 清振荡器失效标志BCSCTL3 &= ~XT2OF; // 清XT2失效标志for( uint i = 0x47FF; i > 0; i-- ); // 等待XT2频率稳定}while (IFG1 & OFIFG); // 外部时钟源正常起动了吗?BCSCTL2 |= SELM_2 + SELS ; // 设置MCLK、SMCLK为XT2P4OUT &= ~BIT4;P4DIR |= BIT4; // 打开LCD显示部分的电源//P8REN |= BIT3 + BIT4;P8DIR |= BIT3 + BIT4; // 配置MSP430与BU9796的数据数P8OUT |= BIT3 + BIT4;P5OUT &= ~BIT7; // 点亮外部LEDP5DIR |= BIT7;}/* 函数名:main 功能:系统入口主函数*/void main( void ){WDTCTL = WDTPW + WDTHOLD; // 停看门狗ADC12CTL0 = SHT0_2 + ADC12ON; // 设置采样时间,开ADC12,Vref = V ACC ADC12CTL1 = SHP; // 使用定时器采样ADC12MCTL0 = INCH_1; // 选用A1通道ADC12IE = 0x01; // 开ADC12MCTL0中断ADC12CTL0 |= ENC; // 启动转换ADC12MCTL0 = INCH_1;P5DIR |= BIT7; // P5.7输出-LED/*for (;;){ADC12CTL0 |= ADC12SC; // 软件启动转换_BIS_SR(CPUOFF + GIE); // LPM0模式,由ADC12中断唤醒}*//* 功能:将16进制转化为10进制*/int a,b;a=ADC12MEM0;Disp_Data[5]=a%10;b=a/10;Disp_Data[4]=b%10;a=b/10;Disp_Data[3]=a%10;b=a/10;Disp_Data[2]=b%10;a=b/10;Disp_Data[1]=a%10;b=a/10;Disp_Data[0]=b%10;Init_MCU();Init_BU9796FS();P5OUT |= BIT7;Segment_Display( 0,Disp_Data,6 );_BIS_SR( CPUOFF );}#pragma vector=ADC12_VECTOR__interrupt void ADC12_ISR (void){ _BIC_SR_IRQ(CPUOFF); }。
msp430课程设计
msp430课程设计一、教学目标本课程的教学目标是使学生掌握MSP430单片机的基本原理、编程方法和应用技巧。
具体来说,知识目标包括了解MSP430单片机的结构、特点和工作原理,掌握C语言编程的基本语法,熟悉MSP430单片机的应用领域。
技能目标则要求学生能够熟练使用MSP430开发工具进行程序设计和调试,能够独立完成简单的MSP430单片机应用项目。
情感态度价值观目标则是培养学生对电子技术的兴趣和热情,提高他们的问题解决能力和创新意识。
二、教学内容本课程的教学内容主要包括MSP430单片机的硬件结构、编程语言、开发环境和应用实例。
具体来说,将讲解MSP430单片机的各个模块及其功能,包括CPU、内存、外设等,以及这些模块是如何协同工作来实现各种功能的。
接下来,将介绍C语言编程的基本语法和编程技巧,包括数据类型、运算符、控制语句等,以及如何使用MSP430的开发工具进行程序设计和调试。
最后,将通过一些具体的应用实例来展示如何使用MSP430单片机来解决实际问题,比如温度计、电子钟等。
三、教学方法为了达到上述教学目标,将采用多种教学方法相结合的方式进行教学。
首先,将采用讲授法来讲解MSP430单片机的硬件结构和C语言编程的基本语法。
通过讲解,使学生能够理解和掌握相关知识。
其次,将采用讨论法来探讨一些实际的应用案例,引导学生通过讨论和思考来解决问题。
此外,还将采用实验法让学生通过动手实践来加深对知识的理解和应用能力。
最后,将采用案例分析法来分析一些成功的MSP430单片机应用项目,使学生能够了解和掌握如何将理论知识应用于实际项目中。
四、教学资源为了支持教学内容的讲解和教学方法的实施,将准备一系列的教学资源。
首先,将使用教材《MSP430单片机原理与应用》作为主要的教学资料,引导学生学习和掌握相关知识。
其次,将提供一些参考书籍和在线资料,供学生进行深入学习。
此外,还将准备一些多媒体资料,如PPT、视频等,以直观的方式展示一些复杂的原理和应用案例。
MSP430单片机实现的温度控制
1.1.2 作品功能简介
本作品为温度控制器,利用热电阻温度传感器进行温度检测,并通过设置上下限对温度 进行继电器加电/断电的温度控制,并对当前温度和继电器状态在 LCD 上进行显示。
-1-
第一章 作品概述
1.1 作品基本情况介绍
1.1.1 MSP430G2231 简介
本实例使用芯片为 MSP430G2231,其内部主要资源包括:低功耗 16 位 MSP430 微处理 器;2KB 的 Flash 存储器,128B 的 RAM,一个带两路捕获功能的定时器模块 TA2,支持 SPI 和 I2C 通信的通用串行接口 USI,8 通道 10 位 ADC(6 路外部输入+1 路内部温度传感 器+1 路内部电压),LF、DCO、VLO 组成的时钟系统,10 个通用 IO 口(P1.0~P1.7,P2.6, P2.7)。
图 1.1 系统硬件结构
-3-
1.2.2 系统软件结构
本实例软件结构较为简单,如图 1.2 所示,系统首先进行初始化,包括进行时钟源选择, 看门狗的关闭,AD 模块和定时器模块的工作方式设置,单片机各 I/O 口的初始化即液晶初 始化和初始显示等工作。在系统初始化完成以后,进入主循环。在主循环以中断方式进行 AD 采样,采样结束唤醒 CPU,每采样八次计算一次平均值并进行采样结果读取和数据处理过 程,主要包括电压电阻和温度值的计算。此过程持续进行直到定时器 1s 定时中断的到来, 在定时中断中,重新写入定时初始值,进行温度比较并根据比较结果控制继电器动作,然后, 刷新 LCD 显示结果,即每一秒钟刷新一次显示结果。
MSP430单片机-课程设计(任务书 指导书)新
《MSP430单片机最小系统搭建》任务书及设计指导书课程设计实验报告班级学号10移动专1姓名机械与电子信息学部计算机科学与技术教研室2012年12月《MSP430单片机最小系统搭建》任务书及设计指导书一、课程设计目的在课堂理论教学的基础上,通过课程设计和实验动手焊接电路,把MSP430F149 CPU与LED发光二极管,电源,晶体振荡器,键盘连接起来,组成MSP430F149单片机最小系统。
在焊接之前学会测量所使用的数字集成电路。
在组成MSP430F149单片机的基础上,使用C语言编写程序,编译,连接,下载目标码到MSP430F149最小系统,调试MSP430F149片内外围模块。
二、课程设计内容本课程设计包括如下几个部分:1、MSP430 CPU板及其焊接2.LED灯电路的制作3、电源电路的制作4、晶体振荡器电路制作5、键盘电路制作6、数码管显示7、键盘电路8、IAR Embedded Workbench IDE使用;MSP430F149最小系统的程序设计;软件下载、运行与调试9、书写课程设计报告三、课程设计指导1、课程设计MSP430单片机应用电路图阅读课程MSP430单片机应用电路图,明确LED发光二极管,电源,晶体振荡器,数码管,键盘各个部分的焊接内容,需要掌握的焊接要点。
2、元件和工具清单:每人元件和器件一套,器件有LED发光二极管,电源,晶体振荡器,数码管,键盘各个电路部分的电阻,电容,数字集成电路,晶体振荡器等元件和器件。
器件清单见附件1工具烙铁一把,共用斜口钳,剪刀,程序下载线。
设计内容及设计指导一、LED灯电路的制作1、要求:使用8个LED发光二极管与74HC573八位锁存器连接,再与MSP430端口P2的P2.0~P2.7连接。
通过程序控制使这八个LED发光二极管亮和不亮。
LED电路图如下:2、设计要点2.1使用数字万用电表测量和辨别LED发光二极管正级和负级,以便连接电路。
MSP430单片机课程设计
文华学院学生课程考查报告考查课程:MSP430单片机应用设计设计题目:基于MSP430单片机的温度测量仪设计专业班级:**学号:****姓名: **指导教师:**实验日期:2016年5月8日基于MSP430单片机的温度测量仪设计文华学院摘要MSP430单片机是德州公司最新开发的具有16位总线带FLASH的单片机,由于它的性价比和集成度高,受到广大技术开发人员的青睐。
它的可靠性能比较好,加强电干扰运行不受影响,适应工业级的运行环境,在各种行业中都占有重要的位置,越来越多的领域应用到以单片机为控制核心,用液晶显示作为显示终端的数字化控制设备,通过单片机对被控制对象进行智能控制。
MSP430单片机将会在工程技术应用中得到广泛的应用。
而且,它是通向DSP 系列的桥梁,随着自动控制的低功耗化和高速化,MSP430系列单片机将会得到越来越多人的喜爱。
通过这次毕业设计,我对MSP430单片机有了完整的了解,并且着重了解了MSP430F149芯片的原理图以及它的工作原理,对内部的硬件资源和自身的汇编语法进行了实验,把它和DS18B20温度传感器联系在一起实现了温度的测量以及报警。
关键词:MSP430;超低功耗;单片机;DS18B20AbstractTexas MSP430 microcontroller is the latest development of a 16-bit bus with FLASH MCU, due to its cost-effective and highly integrated, by the majority of technology developers of all ages. Its reliability is better, enhancing electrical interference unaffected, adapt industrial-grade operating environment, in a variety of industry occupies an important position in both, applied to more and more areas to microcontroller core, with LCD as a digital control display terminal equipment, through the controlled object MCU intelligent control.MSP430 microcontroller applications engineering technology will be widely used. And, it is a bridge leading DSP family, with automatic control, low power consumption and high speed, MSP430 MCU will get more and more people's favorite.Through this graduation project, I have a complete understanding of the MSP430 microcontroller, and focus on understanding the MSP430F149 chip schematic and it works, and the internal hardware resources and their own assembler syntax conducted experiments it and DS18B20 linked to the temperature sensor of the temperature-measuring andalarm.Keywords: MSP430; ultra-low power; SCM; DS18B20一、概述1.1 引言十七世纪是温度计诞生和发展的最初阶段,这个仪器几乎比任何其它仪器都得到更加广泛的应用。
MSP430单片机温度控制系统的设计与实现
MSP430单片机温度控制系统的设计与实现【摘要】本文介绍以MSP430系列单片机为核心的材料合成温度控制系统的设计与实现。
该设计中采用双路铂铑—铂热电偶温度传感器分别对镓端和砷端温度进行时实检测和控制,用超低温漂移高精度运算放大器OP07进行放大,由单片机运算、处理,执行控制电路采用光耦合双向可控硅控制输出,实现了对砷化镓合成温度的精确控制。
【关键词】单片机;温度控制;运算放大1.引言在各种工业生产过程中,温度的测量与控制成为工业控制对象中一个重要的被测控参数。
随着电子信息技术的发展,尤其是单片机测量控制技术的迅速发展和广泛应用,利用单片机对温度测控越来越显示出其优越性。
单片机具有功能强、体积小、速度快、价格低等特点,广泛应用于各种工业测控系统中。
本文介绍以MSP430系列单片机单片机为核心,实现对材料合成温度的测量与控制。
2.系统功能由Ga-As系统相图得知,在GaAs材料合成过程中,要求温度与组分相匹配。
GaAs的化学比不同,其熔点不同,随着砷的比例的增加,熔点升高。
只有严格控制砷端和镓端的温度,才能保持整个合成过程为全热相合成。
在镓端加热的同时,也加热砷端,使砷升华,砷蒸气扩散到液态镓中与镓化合生成砷化镓。
随着Ga-As组分的变化,熔点不断上升。
合成完成后砷端615℃,GaAs熔体为1238℃,达到Ga-As体系相平衡,化学比为1:1。
合成的关键是砷端和镓端升温速度要相匹配,整个合成过程要求全液相不结晶。
需要镓端升温速度为22.5℃/min,砷端升温速度为11.2℃/min,镓端和砷端温度比2:1,需70min完成合成。
3.系统总体设计材料合成温度控制系统的核心是用单片机来进行数据处理和程序控制。
除单片机单元外其他部分由镓端加热器、砷端加热器、热偶温度检测电路、数据放大电路、双路加热控制电路、温度LED显示电路、键盘输入、报警电路等模块构成。
系统总体框图如图1所示。
图1 系统总体框图合成炉由高温端(Ga端)和低温端(As端)两部分构成。
电子信息工程毕业设计_MSP430 16位单片机温度计
MSP430 16位单片机温度计MSP430单片机的简介MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低MSP430单片机[1]功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。
称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片”解决方案。
该系列单片机多应用于需要电池供电的便携式仪器仪表中。
MSP430单片机的发展德州仪器1996年到2000年初,先后推出了31x、32x、33x等几个系列,这些系列具有LCD驱动模块,对提高系统的集成度较有利。
每一系列有ROM 型(C)、OTP型(P)、和EPROM型(E)等芯片。
EPROM 型的价格昂贵,运行环境温度范围窄,主要用于样机开发。
这也表明了这几个系列的开发模式,即:用户可以用 EPROM 型开发样机;用OTP型进行小批量生产;而ROM型适应大批量生产的产品。
2000 年推出了11x/11x1系列。
这个系列采用20脚封装,内存容量、片上功能和 I/O 引脚数比较少,但是价格比较低廉。
这个时期的MPS430已经显露出了它的特低功耗等的一系列技术特点,但也有不尽如人意之处。
它的许多重要特性如:片内串行通信接口、硬件乘法器、足够的 I/O 引脚等,只有33x系列才具备。
33x系列价格较高,比较适合于较为复杂的应用系统。
当用户设计需要更多考虑成本时,33x并不一定是最适合的。
而片内高精度A/D转换器又只有32x系列才有。
2000年7月推出了F13x/F14x 系列,在2001年7月到2002年又相继推出F41x、F43x、F44x。
这些全部是Flash型单片机。
F41x系列单片机有48个I/O 口,96段LCD驱动。
F43x、F44x系列是在13x、14x的基础上,增加了液晶驱动器,将驱动LCD的段数由3xx系列的最多120段增加到160段。
基于msp430超低功耗单片机温度控制器计划
于建坤
MSPG2553 控制
环境采集和人距 感应部分
基于 msp430 单片机的超低功耗智能护眼灯的设计 1.实验目的
1、了解 pwm 控制灯光亮度的原理,设计基于单片机的智能护眼灯控制装置。 2、学习电子电路、PCB 板设计,产品制作与调试。
2.实验内容
本智能护眼灯以 MSP43G2553 为核心,完成护眼灯的照明,电源管理,环境采 集和中央处理及控制功能。灯珠采用高亮白光 LED,恒流驱动,无频闪,不伤害眼睛, 保护视力。电源管理,由专用电源管理方案,管理系统充电和用电。环境采集,用 光传感器采集光照强度,根据光照强度控制灯珠亮度,用人体热释红外检测人远近。
开放实验报告
课 题 名 称 基于 msp430 单片机的超低功耗智能护眼灯的设计
学生姓名
系、年级专业
指导教师
信息工程系、11、12 级电子信息
2014 年 6 月 20 日
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线生高0不产中仅工资2艺料22高试2可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料2荷试2,下卷而高总且中体可资配保料置障试时2卷,32调需3各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看工且25作尽52下可22都能护可地1关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编试求5写、卷技重电保术要气护交设设装底备备置。4高调、动管中试电作线资高气,敷料中课并设3试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
基于MSP430单片机的温度监控系统设计
摘要当前,温度控制系统被广泛应用于生活的很多方面,它与人们的日常生活、工作和学习息息相关。
如何设计制作一个性能良好的温度监控系统,实现温度的精确、实时监控成为设计该系统的主要问题。
随着我国电子技术的不断提高,以单片机为核心处理器,温度传感器为远端设备构成的温度监控系统逐渐成为时下的主流设计。
论文介绍了温度控制系统的研究背景和研究意义,国内外发展状况,超低功耗系列单片机MSP430,单总线数字温度传感器DS18B20等器件以及设计所需的相关软件的使用。
在此基础上,对系统进行设计、编程和调试,并绘制了系统的电路原理图和印制板图。
该温度监控系统具有监控多点温度,并将其循环显示,利用按键实现某一点的选择显示,从而实现多点温度的实时监控的功能。
关键词:超低功耗单片机,单总线温度传感器,JTAG仿真ABSTRACTCurrently, The temperature control system is widely used in our daily life and closely linked with our work and study. How to design and make a temper -ature control system which has the characters of high performance, accurate measurement,real time monitoring is still a main problem. As with the high de-velopment of the electronic technique in our country, the temperature control system used the microcontroller as the centre and thermal sensor as the far-end equipment is becoming the main trend.In this paper, it introduces the research background and the significance of the temperature control system, the situation at home and abroad. the MSP430 series MCU which is widely used now ,the digital thermal sensor, DS18B20 and so on. At that basis , we design, programe and debug it, draw the SCH and PCB about it in the Protel. It can monitor the temperature of multi-points and choose one to display in the LCD by pressing the key, which leads to realizing the meal time monitoring of the temperature of these points.Keywords:Ultralow-Power microcontroller, the one-wire digital thermal sensor, JTAG simulation目录1 绪论 (1)1.1研究背景和意义 (1)1.2 国内外动向 (2)1.3 课题的主要研究内容 (5)2 系统方案设计 (6)2.1 MSP430系列单片机 (6)2.2 DS18B20数字温度传感器 (11)2.3 DS1302日历时钟芯片 (17)2.4 OCMJ4x8B液晶显示模块 (20)2.5 键盘 (24)2.6 JTAG仿真和IAR Workbench (26)2.7 结语 (30)3 系统电路及软件实现 (31)3.1系统设计框图及功能实现 (31)3.2单元电路原理图 (32)3.3 系统程序设计 (37)3.4结语 (45)4 总结与展望 (46)参考文献 (48)致谢 (50)附录 (51)附录1 外文文献 (51)附录2 温度监控系统C语言程序 (64)附录3 电路原理图和印制板图 (72)1 绪论1.1研究背景和意义在人们的日常生活、工业制造、制冷等领域,温度作为当前环境的重要因素之一,被人们广泛的作为参考因素来使用,从而保证各项工作的正常运行,如火灾报警、温室或粮仓中温度的实时监测、冷库温度的调节等,因此以温度参数为基础而设计的温度控制系统被广泛开发和使用。
MSP430单片机实验报告
MSP430单片机实验报告专业:姓名:学号:MSP430单片机实验报告设计目标:使8位数码管显示“5201314.”,深入了解串行数据接口。
实现过程:主要分为主函数、驱动8位数码管函数、驱动1位数码管函数及延时函数。
延时函数:采用for循环。
驱动1位数码管子函数:设置74HC164的时钟传输和数传输,声明变量,使数据表中每一个要表示的字符的每一位都与shift做与运算从而进行传输,上升沿将传输数据传送出去。
驱动1位数码管子函数的流程图如图1所示。
图1 驱动1位数码管子函数流程图驱动8位数码管子函数:调用8次驱动1位数码管子函数。
驱动8位数码管子函数流程图如图2所示。
图2 驱动8位数码管流程图while图3 主函数流程图实验结果:供电后,数码管显示“5201314.”字样。
源程序:/************* 程序名称:5201314.*************//***程序功能:通过模拟同步串口控制8个共阳数码管***//*******P5.1 数据管脚,P5.3 同步时钟管脚*******/#include <io430.h> // 头文件void delay(void); // 声明延迟函数void seg7_1 (unsigned char seg7_data);// 声明驱动1 位数码管函数void seg7_8 ( unsigned char seg7_data7,unsigned char seg7_data6,unsigned char seg7_data5,unsigned char seg7_data4,unsigned char seg7_data3,unsigned char seg7_data2,unsigned char seg7_data0); // 声明驱动8 位数码管函数const unsigned char decoder_seg7[]={0x92,0xa4,0xc0,0xf9,0xb0,0xf9,0x99,0x7f }; //数码管显示表【5201314.】int main(void) // 主函数{WDTCTL=WDTPW+WDTHOLD; // 关闭看门狗P5SEL&=~BIT1; // 设置P5.1 端口为并行数字输入/ 输出口P5DIR|=BIT1; // 设置P5.1 端口为输出口P5SEL&=~BIT3; // 设置P5.3 端口为并行数字输入/ 输出口P5DIR|=BIT3; // 设置P5.3 端口为输出口while(1) // 重复执行{seg7_8 (7,6,5,4,3,2,1,0); // 调用驱动8 位数码管函数delay ( ); // 延时}}void seg7_8 (unsigned char seg7_data7,unsigned char seg7_data6,unsigned char seg7_data5,unsigned char seg7_data4,unsigned char seg7_data3,unsigned char seg7_data1,unsigned char seg7_data0)// 驱动8位数码管的同步串行数据接口驱动函数{seg7_1(seg7_data0); // 调用1 位数码管的同步串行数据接口驱动函数seg7_1(seg7_data1);seg7_1(seg7_data2);seg7_1(seg7_data3);seg7_1(seg7_data4);seg7_1(seg7_data5);seg7_1(seg7_data6);seg7_1(seg7_data7);}void seg7_1 (unsigned char seg7_data)// 驱动1 位数码管的同步串行数据接口驱动函数{unsigned char code_seg7; // 声明显示代码变量unsigned char a; // 声明循环变量unsigned char shift; // 声明串行数据位存储变量code_seg7=decoder_seg7[seg7_data]; // 显示数据译码P5OUT&=~BIT1; // P5.1 输出低电平P5OUT&=~BIT3; // P5.3 输出低电平shift=0x80; // 串行数据位指向8 位数据的最高位for(a=0; a<8; a++){if(code_seg7&shift) // 判断显示代码位的状态{P5OUT|=BIT1; // P5.1 输出高电平}else{P5OUT&=~BIT1; // P5.1 输出低电平}P5OUT|=BIT3; // P5.3 输出高电平P5OUT&=~BIT3; // P5.3 输出低电平shift=shift>>1; // 串行数据位指向数据位右移1 位}}void delay (void) //延时函数{unsigned char b;for(b=0xff;b>0;b--); }。
msp430温度计设计报告
基于msp430单片机的数字温度控制系统姓名:刘佳福、张爱平、开光成指导老师:黄珂目录一.摘要 (2)二.方案设计 (2)1.方案图 (2)三.程序流程图 (2)四.各单元电路分析 (3)五.调试设备与结果 (4)六.调试说明与问题 (4)七.小结 (4)八.附录 (5)一.摘要单片机系统使用LCD1602及独立键盘,通过DS18B20温度传感器采集到的温度数据,通过单片机的处理,再把它存储到存储器中,通过LCD来显示。
DS18B20 是美国Dallas 公司生产的单总线数字输出型集成温度传感器,能够直接读出被测温度值,并且可根据实际要求通过编程实现9~12 位的数字量输出,将温度值转化为9 位数字量所需时间为93.75 ms,转化为12 位数字量所需时间为750 ms。
测试温度范围为-55~+125,精度可达0.0675℃。
关键字:DS18B20温度传感器、LCD1602及独立键盘。
二.方案设计1、采集部分:通过温度传感器将采集到的温度传输到单片机里处理。
2、显示部分:采用LCD1602进行动态扫描显示,显示采集到的温度值、时钟等数据。
3、控制部分:通过独立键盘来控制各项功能,能够显示最大最小温度,并且能够声光三.程序流程图四.各单元电路分析A.复位电路当按键按下时RST直接与GND相连形成复位低电平,同时电容C1充电。
当按键松开时,电容放电,放电时间为T=RC。
放电过程中RST仍处于复位状态。
B.晶振电路用于给msp430芯片提供精准的时钟信号。
C.温度传感器电路利用DS18B20温度传感器,将温度信号转换成电信号送到msp430芯片进行处理。
D.报警电路报警电路有两部分组成,分别为蜂鸣器报警电路和LED报警电路组成。
在超过极限温度时蜂鸣器报警,同时其中一个LED灯指出是到达高温极限,还是低温极限。
E.显示电路用于显示时钟、计时、温度。
F.按键电路用于设置极限温度。
五.调试设备与结果1、测量结果能正确显示,且温度能精确到0.1摄氏度。
430测温系统设计报告
基于MSP430的测温系统设计姓名:邹必文学号:200820007摘要:论述了一种以16 位单片机MSP430F149 为控制核心,利用数字化温度传感器DS18B20实现温度测量的智能温度检测系统。
详细论述了该系统的硬件组成和软件设计,给出了关键部分的电路图及相应的MSP430F149单片机温度测量程序。
实验结果表明,该智能温度检测系统具有低成本、可靠性高、结构简单、性能稳定、经济实用等特点,可根据不同需要应用于多种工农业温度检测领域。
关键词:MSP430F149DS18B20目录1总体方案论证与比较1.1控制电路的方案论证和选择1.1.1方案一1.1.2方案二1.2显示模块的方案论证和选择1.2.1方案一:采用LED数码管显示1.2.2方案二:采用LCD液晶显示器显示1.3温度传感器的方案论证和选择1.3.1方案一:1.3.2方案二:2硬件电路的设计2.1系统电路方框:2.2各部分模块电路简介:2.2.1MSP430模块2.2.1.1 MSP430F149的概述2.2.1.2 MSP430F149的特点2.2.1.3 MSP430F149的应用2.2.2电源3.3V稳压电路2.2.3液晶显示的设计2.2.4 DS l8B20传感器模块2.2.4.1 DS l8B20的内部结构2.2.4.1 DS18B20的工作过程3软件设计3.1软件流程设计3.2 BCS基本时钟系统3.2.1 BCS基本时钟系统的概述3.2.2 BCS基本时钟系统的要求3.2.3 BCS基本时钟系统寄存器3.3 温度传感器3.3.1温度传感器的操作指令4测试方法与数据分析5参考文献附录1总体方案论证与比较1.1控制电路的方案论证和选择1.1.1方案一:采用当前市场上流行的51系列单片机。
优点是价格低廉、结构简单,元器件容易获得、软件编程灵活、自由度大但是系统资源有限,8位控制器,运算能力有限,且没有内置AD/DA转换器,需要外接大量外围电路,编程需要价格昂贵的编程器及仿真器,不便于系统开发,该系列单片机为通用型单片机,虽然也有小功率的型号,但整体来说功耗过大,降低整体电源转换效率,指令过于复杂,代码执行效率较低。
MSP430单片机温度单片机课程设计报告书
理工大学计算机学院课程设计单片机系统设计班级计科1104姓名___________________ 学号 ____________________ 指导教师业德韩慧。
一四年十课程设计任务书及成绩评定课题名称_______ 度测试系统设计__________I、题目的目的和要求:利用温度传感器和MSP43单片机设计一个温度测试系统,将测试结果(十进制)在LEDh显示出来,并定义一个保持按键,当按下该键时,将当前测试值保持不变(按键不动作时为正常测量显示)。
温度显示格式为:XXX C。
II、设计进度及完成情况、主要参考文献及资料IIIMSP43系列16位低功耗单片机原理及应用DS18B2温度传感器的使用智能仪器原理及应用学科部主任业德成绩评定:设计成绩:__________________ (教师填写)指导老师: _________________ (签字)二O 年月日目录I、题目的目的和要求: (2)II、设计进度及完成情况 (2)III、主要参考文献及资料 (3)W、成绩评定: (3)目录. (4)本次课程设计的目的和意义 (5)设计题目. (6)系统的主要功能、作用以及主要技术性能指标 (7)总体设计方案、工作和组成原理 (8)系统设计. (11)设计总结. (22)作品的使用或操作说明 (23)设计图纸或图表. (24)本次课程设计的目的和意义课程设计是让我熟练掌握了课本上的一些理论知识,课程设计也是一个学习新知识、深所学课本理论知识巩固加的过程,它培养了我们综合运用知识的能力,独立思考和解决问题的能力。
加深我们对单片机原理与应用课程的理解设计题目温度测试系统设计:利用温度传感器DS18B2C和MSP43C单片机设计一个温度测试系统,将测试结果(十进制)在LED 上显示出来,并定义一个保持按键,当按下该键时,将当前测试值保持不变(按键不动作时为正常测量显示)。
温度显示格式为:XXX C。
系统的主要功能、作用以及主要技术性能指标系统的主要功能是单片机实时从温度传感器读取温度数据信息,并在数码管显示,同时扫描是否有保持按键按下,如果按下则不再继续从温度传感器读取温度数据信息,保持温度值不变。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
理工大学计算机学院课程设计单片机系统设计班级计科1104姓名学号指导教师业德韩慧二○一四年十一月日课程设计任务书及成绩评定课题名称_______温度测试系统设计_______I、题目的目的和要求:利用温度传感器和MSP430单片机设计一个温度测试系统,将测试结果(十进制)在LED上显示出来,并定义一个保持按键,当按下该键时,将当前测试值保持不变(按键不动作时为正常测量显示)。
温度显示格式为:XXX ℃。
II、设计进度及完成情况III、主要参考文献及资料MSP430系列16位低功耗单片机原理及应用DS18B20温度传感器的使用智能仪器原理及应用学科部主任业德Ⅵ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○年月日目录I、题目的目的和要求: (2)II、设计进度及完成情况 (2)III、主要参考文献及资料 (3)Ⅵ、成绩评定: (3)目录 (4)本次课程设计的目的和意义 (5)设计题目 (6)系统的主要功能、作用以及主要技术性能指标 (7)总体设计方案、工作和组成原理 (8)系统设计 (11)设计总结 (22)作品的使用或操作说明 (23)设计图纸或图表 (24)本次课程设计的目的和意义课程设计是让我熟练掌握了课本上的一些理论知识,课程设计也是一个学习新知识、巩固加深所学课本理论知识的过程,它培养了我们综合运用知识的能力,独立思考和解决问题的能力。
加深我们对单片机原理与应用课程的理解设计题目温度测试系统设计:利用温度传感器DS18B20和MSP430单片机设计一个温度测试系统,将测试结果(十进制)在LED上显示出来,并定义一个保持按键,当按下该键时,将当前测试值保持不变(按键不动作时为正常测量显示)。
温度显示格式为:XXX ℃。
系统的主要功能、作用以及主要技术性能指标系统的主要功能是单片机实时从温度传感器读取温度数据信息,并在数码管显示,同时扫描是否有保持按键按下,如果按下则不再继续从温度传感器读取温度数据信息,保持温度值不变。
作用是可以实时读取环境中的温度信息,供用户查看,同时当用户需要观察某温度时,可以按下按键保持温度不变。
主要技术指标:1. 基本围0℃-99℃2. 精度误差小于0.5℃3. LED数码直读显示4. 扫描按键保持数值总体设计方案、工作和组成原理数字温度计设计方案论证方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
方案二进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
主控制器单片机采用MSP430单片机,处理能力强,功耗低,实现该功能仅需一个按键,8位数码管显示,以及DS18B20温度传感器。
显示电路:显示电路采用8位共阴LED数码管,从P4口输出段码。
图一总体设计框图温度传感器:DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:●独特的单线接口仅需要一个端口引脚进行通信;●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;●无须外部器件;●可通过数据线供电,电压围为3.0~5.5V;●零待机功耗;●温度以9或12位数字;●用户可定义报警设置;●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20部结构框图如图2所示。
64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8字节的存储器,结构如图3所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义如图3所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。
温度传感器连接如下图所示,DQ引脚与单片机的P5.3相连:系统设计接口电路设计,程序设计(程序框图和程序清单及注释)其他有关的理论分析和计算接口电路设计:主控制器MSP430温度传感器保持按键数码管电路程序框图:总体设计流程图读取温度传感器数据流程图数码管温度显示程序设计://*************************定义引脚********************************** #define LED8PORT P2OUT //P2接8个LED灯#define LED8SEL P2SEL //P2接8个LED灯#define LED8DIR P2DIR //P2接8个LED灯#define DATAPORT P4OUT //数据口所在端口P4#define DATASEL P4SEL //数据口功能寄存器,控制功能模式#define DATADIR P4DIR //数据口方向寄存器#define CTRPORT P6OUT //控制线所在的端口P6#define CTRSEL P6SEL //控制口功能寄存器,控制功能模式#define CTRDIR P6DIR //控制口方向寄存器#define DCTR0 P6OUT &= ~BIT4 //数码管段控制位信号置低#define DCTR1 P6OUT |= BIT4 //数码管段控制位信号置高#define WCTR0 P6OUT &= ~BIT3 //数码管位控制位信号置低#define WCTR1 P6OUT |= BIT3 //数码管位控制位信号置高#define KEYPORT P1OUT //按键所在的端口P1#define KEYSEL P1SEL //控制口功能寄存器,控制功能模式#define KEYDIR P1DIR //控制口方向寄存器#define KEYIN P1IN //键盘扫描判断需要读取IO口状态值uchar key=0xFF; //键值变量uint temp_value;float truetemp;uint temp,A1,A2,A3; //定义的变量,显示数据处理//*******************共阴数码管显示的断码表************************uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// *******************系统时钟初始化***************************void Clock_Init(){uchar i;BCSCTL1&=~XT2OFF; //打开XT2振荡器BCSCTL2|=SELM1+SELS; //MCLK为8MHZ,SMCLK为8MHZdo{IFG1&=~OFIFG; //清楚振荡器错误标志for(i=0;i<100;i++)_NOP();}while((IFG1&OFIFG)!=0); //如果标志位1,则继续循环等待IFG1&=~OFIFG;}//*******************MSP430部看门狗初始化***********************void WDT_Init(){WDTCTL = WDTPW + WDTHOLD; //关闭看门狗}//*******************MSP430IO口初始化*****************************void Port_Init(){LED8SEL = 0x00; //设置IO口为普通I/O模式,此句可省LED8DIR = 0xFF; //设置IO口方向为输出LED8PORT = 0xFF; //P2口初始设置为FFDATASEL = 0x00; //设置IO口为普通I/O模式,此句可省DATADIR = 0xFF; //设置IO口方向为输出DATAPORT = 0xFF; //P4口初始设置为FFCTRSEL = 0x00; //设置IO口为普通I/O模式,此句可省CTRDIR |= BIT3 + BIT4 +BIT2; //设置IO口方向为输出,控制口在P63,P64 CTRPORT = 0xFF; //P6口初始设置为FFKEYSEL = 0x00; //设置IO口为普通I/O模式,此句可省KEYDIR = 0x0F; //高四位输入模式,低四位输出模式,外部上拉电阻 KEYPORT= 0xF0; //初始值0xF0}//*************74HC573控制数码管动态扫描键值显示函数****************** void Display_Key(uchar num){uchar i,j;j=0x01; //此数据用来控制位选for(i=0;i<8;i++) //8个数码管依次显示{DCTR1; //控制数码管段数据的74HC573的LE管脚置高WCTR1; //控制数码管位的74HC573的LE管脚置高DATAPORT=~j; //设置要显示的位,也就是哪一个数码管亮WCTR0; //锁存位数据,下面送上段数据以后,就显示出来了DATAPORT=table[num]; //送要显示的数据,这里是键值DCTR0; //锁存段数据,数码管亮一个时间片刻j=j<<1; //移位,准备进行下一位的显示delay_us(500); //显示一个时间片刻,会影响亮度和闪烁性}Close_LED(); //显示完8个数码管后关闭数码管显示,否则可能导致各个数码管亮度不一致}//*****************键盘扫描子程序,采用逐键扫描的方式****************** uchar Key_Scan(void){uchar key_check;uchar key_checkin;key_checkin=KEYIN; //读取IO口状态,判断是否有键按下key_checkin&= 0xF0; //屏蔽掉低四位的不确定值if(key_checkin!=0xF0) //IO口值发生变化则表示有键按下{delay_ms(20); //键盘消抖,延时20MSkey_checkin=KEYIN; //再次读取IO口状态if(key_checkin!=0xF0) //确定是否真正的有键按下{key_check=KEYIN; //有键按下,读取端口值switch (key_check & 0xF0) //判断是哪个键按下{case 0xE0:key=1;break;case 0xD0:key=2;break;case 0xB0:key=3;break;case 0x70:key=4;break;}}}else{key=0xFF; //无键按下,返回FF}return key;}//******74HC573控制数码管动态扫描显示函数,显示采集到的温度************** void Display_DS18B20(uint data_b,uint data_s,uint data_g){uchar i,j;j=0x01; //此数据用来控制位选for(i=0;i<3;i++) //用后3位数码管来显示{DCTR1;WCTR1;DATAPORT=~j;WCTR0;j=(j<<1);DATAPORT=0x00; //前5位都不显示,送数据00即可 DCTR0;delay_ms(2);}DCTR1; //开始显示第6位,即十位WCTR1;DATAPORT=~j;WCTR0;j=(j<<1);//DATAPORT=table[A1];DATAPORT=table[data_b];DCTR0;delay_ms(1);DCTR1; //开始显示个位WCTR1;DATAPORT=~j;WCTR0;j=(j<<1);//DATAPORT=table[A2]|0x80; //显示小数点DATAPORT=table[data_s]|0x80; //显示小数点DCTR0;delay_ms(1);DCTR1; //开始显示小数点后面的数据WCTR1;DATAPORT=~j;WCTR0;j=(j<<1);//DATAPORT=table[A3];DATAPORT=table[data_g];DCTR0;delay_ms(1);DCTR1; //开始显示温度单位WCTR1;DATAPORT=~j;WCTR0;j=(j<<1);//DATAPORT=table[A3];DATAPORT=0x63;DCTR0;delay_ms(1);DCTR1; //开始显示温度单位WCTR1;DATAPORT=~j;WCTR0;j=(j<<1);//DATAPORT=table[A3];DATAPORT=0x39;DCTR0;delay_ms(1);DCTR1;WCTR1;DATAPORT=0xff;WCTR0;}//************************DS18B20初始化******************************* unsigned char DS18B20_Reset(void) //初始化和复位{unsigned char i;DQ_OUT;DQ_CLR;delay_us(500); //延时500uS(480-960)DQ_SET;DQ_IN;delay_us(80); //延时80uSi = DQ_R;delay_us(500); //延时500uS(保持>480uS)if (i){return 0x00;}else{return 0x01;}}//**********************DS18B20读一个字节函数**************************** unsigned char ds1820_read_byte(void){unsigned char i;unsigned char value = 0;for (i = 8; i != 0; i--){value >>= 1;DQ_OUT;DQ_CLR;delay_us(4); //*延时4uSDQ_SET;DQ_IN;delay_us(10); //*延时10uSif (DQ_R){value|=0x80;}delay_us(60); //*延时60uS}return(value);}//**********************向18B20写一个字节函数************************/*DS18B20字节写入函数*/void ds1820_write_byte(unsigned char value){unsigned char i;for (i = 8; i != 0; i--){DQ_OUT;DQ_CLR;delay_us(4); //延时4uSif (value & 0x01){DQ_SET;}delay_us(80); //延时80uSDQ_SET; //位结束value >>= 1;}}//********************发送温度转换命令*********************************/*启动ds1820转换*/void ds1820_start(void){DS18B20_Reset();ds1820_write_byte(0xCC); //勿略地址ds1820_write_byte(0x44); //启动转换}//***********************DS8B20读取温度信息************************ unsigned int ds1820_read_temp(void){unsigned int i;unsigned char buf[9];DS18B20_Reset();ds1820_write_byte(0xCC); //勿略地址ds1820_write_byte(0xBE); //读取温度for (i = 0; i < 9; i++){buf[i] = ds1820_read_byte();}i = buf[1];i <<= 8;i |= buf[0];temp_value=i;temp_value=(uint)(temp_value*0.625); //不是乘以0.0625的原因是为了把小数点后一位数据也转化为可以显示的数据//比如温度本身为27.5度,为了在后续的数据处理程序中得到BCD码,我们先放大到275//然后在显示的时候确定小数点的位置即可,就能显示出27.5度了return i;}//*********************温度数据处理函数****************************void data_do(uint temp_d){A3=temp_d%10; //分出百,十,和个位temp_d/=10;A2=temp_d%10;A1=temp_d/10;}//***********************处理温度数据*********************void handletemp(){ds1820_start(); //启动一次转换ds1820_read_temp(); //读取温度数值data_do(temp_value); //处理数据,得到要显示的值truetemp=0.1*temp_value;//judgeAlarm(); //判断是否触发警报//已将其添加至按键程序}//***********************显示温度**********************void showtemp(){uchar j;for(j=0;j<100;j++){Display_DS18B20(A1,A2,A3); //显示温度值}//delay_ms(100); //延时100ms}//***************************主程序************************void main(void){uchar flag1,flag2,flag3,flag4;//uint key_store=0x00; //没有按键按下时,默认显示1WDT_Init(); //看门狗初始化Clock_Init(); //时钟初始化Port_Init(); //端口初始化,用于控制IO口输入或输出//Close_LED();DS18B20_Reset(); //复位D18B20delay_ms(100); //延时100mswhile(1){Key_Scan(); //键盘扫描,看是否有按键按下if(key!=0xff) //如果有按键按下,则显示该按键键值1~4{{switch(key){case 1: LED8PORT=0xfc;flag1=1;flag2=0;flag3=0;flag4=0;break;//对温度数据处理判断警报,然后显示,handletemp();showtemp();case 2: LED8PORT=0xf3;flag1=0;flag2=1;flag3=0;flag4=0;break;//温度数据处理判断警报,关闭显示,节省电源,handletemp();Close_LED();case 3: LED8PORT=0xcf;flag1=0;flag2=0;flag3=1;flag4=0;break;//关闭警报,SOUNDOFF;handletemp();case 4: LED8PORT=0x3f;flag1=0;flag2=0;flag3=0;flag4=1;break;//测试警报SOUNDON;}}}else{LED8PORT&=0xff; //if(flag1==1){//handletemp();showtemp();}if(flag2==1){handletemp();showtemp();}if(flag3==1){SOUNDOFF;handletemp();}if(flag4==1){SOUNDON;}}}}设计总结对整个设计工作过程进行归纳和综合,对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识、收获和提高。