MSP430单片机温度单片机课程设计

合集下载

(完整版)MSP430单片机课程设计

(完整版)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单片机温度单片机课程设计报告书

理工大学计算机学院课程设计单片机系统设计班级计科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。

系统的主要功能、作用以及主要技术性能指标系统的主要功能是单片机实时从温度传感器读取温度数据信息,并在数码管显示,同时扫描是否有保持按键按下,如果按下则不再继续从温度传感器读取温度数据信息,保持温度值不变。

(太原理工大学)基于msp430单片机的数字温度计的制

(太原理工大学)基于msp430单片机的数字温度计的制

目的
通过数字温度计的制作,介绍msp430单片机系列内核msp430f413微处理器,了解一个典型的430单片机系统的实现过程,能够使用430的C语言集成开发环境,掌握产品的开发流程。

目标对象
高等院校对口专业(单片机软硬件、电子工程、自动化等)高年级学生。

特别是面临就业的毕业班学生。

课程设计
实习课程安排:
1、msp430flash型超低功耗16位单片机的硬件结构介绍及应用领域
2、430的汇编语言和c语言的编程结构简单介绍
3、430的c语言开发环境(IAR Embedded Workbench for MSP430)的应用
4、配合一些简单的实例练习软件的使用和软件仿真
5、数字温度计的原理及电路图分析
6、焊接数字温度计的电路板
7、调试数字温度计的电路板,硬件仿真、功能实现及如何解决所出现的问题。

温度测量系统设计,基于msp430单片机

温度测量系统设计,基于msp430单片机

温度测量系统设计,基于msp430单片机本文介绍一种应用msp430 单片机测量温度的方法,来代替传统教学中相对落后的热敏电阻结合电流表的实验方法。

1 温度测量部分用于测量温度的温度敏感元件有很多种,比如热电偶、热敏电阻、集成温度传感器、数字温度传感器等等。

本系统采用的是热敏电阻。

热敏电阻由对温度非常敏感的半导体陶瓷质工作体构成。

与一般常用的金属电阻相比,它有较大的电阻温度系数,可以获得较高的温度分辨率。

不同材料制成的热敏电阻适用的测温范围不同,如CuO 和MnO2 制成的热敏电阻适用于-70~120℃,适于测量体温。

温度是模拟量,要把被测的模拟量转换成数字量,以供单片机处理。

为了节约成本,可以通过斜率A/D 转换来实现模数转换。

斜率A/D 转换是利用外接电容的充电和放电来实现的。

电路连接如图1 所示。

应用msp430 的比较器(Comparator_A)和定时器(Timer_A),可以测量热敏电阻的阻值。

根据阻值和温度的对应关系可以得出待测的温度,实现A/D 转换。

将Comparator_A 的CA0 端接外部信号,CA1 端接内部参考电压0.25Vcc.Timer_A 工作在捕获模式,下降沿捕获,通过CCI1B 捕获CAOUT.先使P1.2 端口输出高电平,通过Rref 给电容C6 充电。

充电完毕时,CA0 端电压高于CA1 端电压,CAOUT 输出1.读Timer_A 的计数值t0,t0=TAR.然后再使P1.2 端口输出低电平,电容C6 通过Rref 放电,当CA0 端电压降至0.25Vcc 时,Comparator_A 输出翻转,CAOUT 输出0,Timer_A 通过CCI1B 捕获到下降沿,触发定时器中断,读出捕获值CCR1,t1=CCR1.C6 通过Rref 放电到0.25Vcc 的时间time_ref=t1-t0.再对热敏电阻Rsens 充电和放电,同样测出C6 通过Rsens 放电到0.25Vcc 的时间time_sens.由下面的公式可以计算出热敏电阻。

基于MSP430的温度采集系统设计

基于MSP430的温度采集系统设计

摘要温度的采集和控制在各个行业中都占有重要位置,所以温度采集控制仪表具有广泛的应用前景,越来越多的领域应用到以单片机为控制核心,用液晶以及LED数码管为显示终端的数字化控制设备,通过单片机对被控对象进行智能控制。

本设计采用MSP430F149微处理器为核心处理器,以DS18B20温度传感器采集实现温度信息的采集和处理,并能实时显示温度信息,并能对温度上下限进行控制,通过键盘设定报警温度,高于或低于报警温度,系统报警。

系统硬件由电源及复位模块、温度采集模块、键盘输入模块、显示模块和报警模块六部分组成,软件采用模块化编程思想,采用C51编程语言实现系统功能。

通过搭建测试环境,对该系统进行功能测试和指标测试,测试结果表明,该系统的测试结果与实际环境温度相符合,并且温度报警也比较灵敏,除了具有接口电路简单、测量精度高、误差小、可靠性高等特点外,其低成本、低功耗的特点使其拥有更广阔的前景。

【关键词】MSP430F149,温度控制仪(键盘),DS18B20,LED数码管。

【论文类型】应用型Thesis: MSP430-based temperature acquisition system design Profession: Electronic and Information EngineeringStudents: Wang Yongfei Signature:Instructor: Zhang Xiaoli Signature:AbstractAcquisition and control of the temperature occupy an important position in various industries, so the temperature acquisition and control instrumentation has broad application prospects, more and more areas of application to control core microcontroller, LCD and LED digital tube display terminal of the digital control equipment, and intelligent control of the controlled object by the microcontroller.This design uses the MSP430F149 microprocessor as the core processor, DS18B20 temperature sensor collected temperature information acquisition and processing, and real-time display and control. Via the keyboard to set the alarm temperature, higher or lower than the alarm temperature, the system alarm. This article focuses on the hardware and software programming of the system design process. The hardware has six parts: the power and reset module, the temperature acquisition module, the keyboard input module, display module and alarm module.Up the test environment, the system functional tests and indicators for testing, test results show that the test results is consistent with the actual ambient temperature and the temperature alarm is also more sensitive in addition to the interface circuit is simple, high accuracy, error , high reliability, low-cost, low power consumption make it more broad prospects.【Key words】MSP430F149, the temperature control device (keyboard), DS18B20, LED digital tube.【Type of Thesis】Application目录1 绪论 (1)1.1课题研究目的及意义 (1)1.2课题主要研究内容及指标 (2)2 测温系统总体设计 (3)2.1 系统工作原理 (3)2.2 系统工作流程 (3)2.3 系统核心器件选型 (3)2.4 MSP430F149单片机 (4)2.5 单线数字温度传感器DS18B20 (6)3 测温系统的硬件设计 (8)3.1 电源及复位模块设计 (8)3.2 LED显示模块设计 (9)3.3键盘输入模块设计 (9)3.4温度采集模块设计 (10)3.5温度报警模块设计 (12)4 测温系统的软件设计 (13)4.1 系统软件结构及流程图 (13)4.2 LED显示模块程序设计 (15)4.3 键盘输入模块程序设计 (15)4.4 温度采集模块程序设计 (16)4.5 报警模块程序设计 (16)4.6 主模块程序设计 (17)5 系统测试 (18)5.1 系统硬件调试 (18)5.2 系统软件调试 (18)5.2.1 IAR开发环境简介 (18)5.2.2 软件调试 (19)5.2.3 两部分间的联合调试 (19)5.3系统结果测试 (19)6 总结与展望 (21)6.1 总结 (21)6.2 展望 (21)致谢 ......................................................................... 错误!未定义书签。

基于msp430单片机的温度控制系统的设计

基于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课程设计

msp430课程设计一、教学目标本课程的教学目标是使学生掌握MSP430单片机的基本原理、编程方法和应用技巧。

具体来说,知识目标包括了解MSP430单片机的结构、特点和工作原理,掌握C语言编程的基本语法,熟悉MSP430单片机的应用领域。

技能目标则要求学生能够熟练使用MSP430开发工具进行程序设计和调试,能够独立完成简单的MSP430单片机应用项目。

情感态度价值观目标则是培养学生对电子技术的兴趣和热情,提高他们的问题解决能力和创新意识。

二、教学内容本课程的教学内容主要包括MSP430单片机的硬件结构、编程语言、开发环境和应用实例。

具体来说,将讲解MSP430单片机的各个模块及其功能,包括CPU、内存、外设等,以及这些模块是如何协同工作来实现各种功能的。

接下来,将介绍C语言编程的基本语法和编程技巧,包括数据类型、运算符、控制语句等,以及如何使用MSP430的开发工具进行程序设计和调试。

最后,将通过一些具体的应用实例来展示如何使用MSP430单片机来解决实际问题,比如温度计、电子钟等。

三、教学方法为了达到上述教学目标,将采用多种教学方法相结合的方式进行教学。

首先,将采用讲授法来讲解MSP430单片机的硬件结构和C语言编程的基本语法。

通过讲解,使学生能够理解和掌握相关知识。

其次,将采用讨论法来探讨一些实际的应用案例,引导学生通过讨论和思考来解决问题。

此外,还将采用实验法让学生通过动手实践来加深对知识的理解和应用能力。

最后,将采用案例分析法来分析一些成功的MSP430单片机应用项目,使学生能够了解和掌握如何将理论知识应用于实际项目中。

四、教学资源为了支持教学内容的讲解和教学方法的实施,将准备一系列的教学资源。

首先,将使用教材《MSP430单片机原理与应用》作为主要的教学资料,引导学生学习和掌握相关知识。

其次,将提供一些参考书籍和在线资料,供学生进行深入学习。

此外,还将准备一些多媒体资料,如PPT、视频等,以直观的方式展示一些复杂的原理和应用案例。

MSP430单片机实现的温度控制

MSP430单片机实现的温度控制
本实例中主要使用到的单片机资源包括 ADC10,定时器 TA2 和通用 IO 口。软件上用到 ADC 中断和定时器中断。具体内容将在以下章节加以介绍。
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 显示结果,即每一秒钟刷新一次显示结果。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)设计总结 (26)作品的使用或操作说明 (27)设计图纸或图表 (28)本次课程设计的目的和意义课程设计是让我熟练掌握了课本上的一些理论知识,课程设计也是一个学习新知识、巩固加深所学课本理论知识的过程,它培养了我们综合运用知识的能力,独立思考和解决问题的能力。

加深我们对单片机原理与应用课程的理解设计题目温度测试系统设计:利用温度传感器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;}}}}设计总结对整个设计工作过程进行归纳和综合,对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识、收获和提高。

相关文档
最新文档