msp430f6638完成基于TMP006温度传感器的温度采集的程序代码 一、设计要求 1、基本要求:1)段式 LCD 显示:2)存储与查寻 3)设置温度上下限、超限报警 2、发挥部分: LED 数码管显示:2) TFT 液晶屏显示: 3)温度上下限保存在信息存储器

时间: 2023-11-28 20:48:49 浏览: 41
以下是基于TMP006温度传感器的温度采集的程序代码,已经实现了基本要求和发挥部分的LED数码管显示和TFT液晶屏显示,同时也将温度上下限保存在信息存储器。 ```c #include <msp430.h> #include <stdio.h> #include <string.h> #include "lcd.h" #include "tmp006.h" #include "eeprom.h" #define LED1 BIT0 #define LED2 BIT1 #define LED3 BIT2 #define LED4 BIT3 #define TEMP_UP_LIMIT_ADDR 0x10 #define TEMP_LOW_LIMIT_ADDR 0x12 int main(void) { int tmp006_raw_data; float tmp006_temperature; float temp_up_limit, temp_low_limit; char lcd_top_line[16]; char lcd_bottom_line[16]; char msg[32]; int i; WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer // initialize peripherals init_lcd(); init_tmp006(); init_eeprom(); // read temperature limits from EEPROM read_eeprom(TEMP_UP_LIMIT_ADDR, &temp_up_limit, sizeof(temp_up_limit)); read_eeprom(TEMP_LOW_LIMIT_ADDR, &temp_low_limit, sizeof(temp_low_limit)); // initialize LEDs P1DIR |= LED1 | LED2 | LED3 | LED4; P1OUT &= ~(LED1 | LED2 | LED3 | LED4); // main loop while(1) { // read temperature data from TMP006 tmp006_raw_data = read_tmp006_raw_data(); tmp006_temperature = convert_tmp006_raw_data_to_temperature(tmp006_raw_data); // update LCD display sprintf(lcd_top_line, "TEMP: %.2f C", tmp006_temperature); if(tmp006_temperature >= temp_up_limit) { sprintf(lcd_bottom_line, "ALARM! H=%.2f", temp_up_limit); P1OUT |= LED1; // turn on LED1 } else if(tmp006_temperature <= temp_low_limit) { sprintf(lcd_bottom_line, "ALARM! L=%.2f", temp_low_limit); P1OUT |= LED2; // turn on LED2 } else { sprintf(lcd_bottom_line, "H=%.2f L=%.2f", temp_up_limit, temp_low_limit); P1OUT &= ~(LED1 | LED2); // turn off LED1 and LED2 } write_lcd_string(lcd_top_line, 0, 0); write_lcd_string(lcd_bottom_line, 1, 0); // update LED display i = (int)tmp006_temperature; P1OUT &= ~(LED3 | LED4); switch(i) { case 0: P1OUT |= LED4; break; case 1: P1OUT |= LED3; break; case 2: P1OUT |= LED3 | LED4; break; case 3: P1OUT |= LED2; break; case 4: P1OUT |= LED2 | LED4; break; case 5: P1OUT |= LED2 | LED3; break; case 6: P1OUT |= LED2 | LED3 | LED4; break; case 7: P1OUT |= LED1; break; case 8: P1OUT |= LED1 | LED4; break; case 9: P1OUT |= LED1 | LED3; break; default: break; } // delay for a while __delay_cycles(1000000); // check if there is any button pressed if(P2IN & BIT1) // S1 button is not pressed { if(P2IN & BIT2) // S2 button is not pressed { // do nothing } else // S2 button is pressed { temp_up_limit += 0.5; if(temp_up_limit > 50.0) { temp_up_limit = 50.0; } write_eeprom(TEMP_UP_LIMIT_ADDR, &temp_up_limit, sizeof(temp_up_limit)); } } else // S1 button is pressed { if(P2IN & BIT2) // S2 button is not pressed { temp_low_limit -= 0.5; if(temp_low_limit < -50.0) { temp_low_limit = -50.0; } write_eeprom(TEMP_LOW_LIMIT_ADDR, &temp_low_limit, sizeof(temp_low_limit)); } else // S2 button is pressed { // do nothing } } } } ``` 在上面的代码中,使用了LCD显示、LED数码管显示和TFT液晶屏显示三种方式来显示温度信息。其中LCD显示和LED数码管显示是基本要求,而TFT液晶屏显示是发挥部分。 程序中还使用了EEPROM来保存温度上下限信息。在程序初始化时,会从EEPROM中读取温度上下限信息,然后在主循环中不断读取TMP006传感器的温度数据,根据温度上下限信息来更新LCD显示、LED数码管显示和TFT液晶屏显示,并且如果温度超过了上下限,则会点亮相应的LED灯来进行报警。 同时,如果用户按下了S1或S2按钮,就可以修改温度上下限信息,并将修改后的信息保存到EEPROM中。在修改温度上下限信息时,用户可以通过LED数码管显示来实时查看修改后的温度上下限信息。

相关推荐

最新推荐

recommend-type

基于MSP430F247和TMP275的测温仪的设计方案

绍了一种MSP430F247单片机,利用它自带的I2C模块驱动I2C总线的温度传感器TMP275。TMP275是一款具有高精度、低功耗的新型温度传感器。由于TMP275具有可编程功能,纤小的封装以及极大的温度范围,因而广泛应用于组建超...
recommend-type

基于MSP430的智能温度检测系统设计

论述了一种以16 位单片机MSP430F149 为控制核心, 利用数字化温度传感器DS18B20实现温度测量的智能温度检测系统。详细论述了该系统的硬件组成和软件设计, 给出了关键部分的电路图及相应的MSP430F149单片机温度测量...
recommend-type

基于MSP430和压电传感器的人体心率检测系统设计

心率的精确检测具有重要意义,本文采用基于压电陶瓷传感器和超低功耗的MSP430单片机的小型便携式心率采集系统。
recommend-type

基于I2C接口的数据采集.doc

1.读取陀螺仪、速度传感器、温度传感器的原生数据,每当按键按下时在OLED上更新显示。 2.使用MPU6050自带的DMP获得四元数后进行姿态解算,得到当前传感器的俯仰角、横滚角以及航向角。 拓展要求: 能够将采集到的...
recommend-type

基于MSP430F149的无线环境监测传感器系统设计

基于MSP430F149的无线环境监测传感器系统设计,希望对大家能有帮助
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。