【TB作品】MSP430F5529单片机,火灾报警器,DS18B20温度显示,温控风扇

功能

这段代码是一个基于msp430微控制器的嵌入式系统程序,主要实现了以下功能:

  1. 初始化和配置

    • 初始化了OLED显示屏、DS18B20温度传感器、火焰传感器、风扇(通过PWM控制)和蜂鸣器。
    • 设置了CPU时钟源和分频,以满足各组件的工作需求。
    • 配置了中断服务例程用于定时更新温度显示。
  2. DS18B20温度传感器

    • 定义了一系列函数来初始化DS18B20传感器,并读取温度值。通过单总线协议与DS18B20通信,进行温度转换并读取温度数据。
    • get_one_temperature函数用于读取温度传感器的值,并将其转换为摄氏度的整数值。
  3. 火焰传感器

    • 监测P1.2引脚上的火焰传感器状态。当检测到低电平(表示有火焰)时,蜂鸣器通过改变TA2CCR2的值产生声音警告。无火焰时蜂鸣器关闭。
  4. 风扇控制

    • 根据温度值控制风扇速度。温度低于40°C时不转动,40°C到60°C之间以50%占空比转动,60°C以上全速转动。通过PWM控制风扇的转速。
  5. OLED显示

    • 使用OLED显示屏实时显示系统状态和当前温度。每隔0.5秒,通过中断服务例程更新一次温度显示。
  6. 低功耗管理

    • 在等待下一次温度更新或事件触发时,微控制器进入低功耗模式(LPM0)以节省能源。

综上所述,这个程序设计了一个相对完整的环境监控系统,能够自动检测环境温度、响应火焰存在报警,并根据温度调节风扇转速,同时所有这些信息都会实时显示在OLED屏幕上。

硬件

/** OLED* SCL ----------P3.0* SDA ----------P3.1* VCC ----------3.3V* GND  ----------GND*** DS18B20* DATA ----------P1.5* VCC ----------3.3V* GND  ----------GND** 火焰传感器* DATA ----------P1.2* VCC ----------3.3V* GND  ----------GND*** 风扇* 这里是PWM引脚 注意接驱动* DATA ----------P2.4* VCC ----------3.3V* GND  ----------GND*** 蜂鸣器* DATA ----------P2.5* VCC ----------3.3V* GND  ----------GND****** 火焰传感器(输出低)检测到火焰蜂鸣器响(没有火焰时蜂鸣器关闭)* 没有火焰时蜂鸣器关闭** 温度小于40  风扇不转* 40到60      占空比50%转* 60以上          全速转** 显示屏实时显示温度**

部分代码


void main(void)
{WDTCTL = WDTPW | WDTHOLD; /* Stop watchdog timer */P5SEL |= BIT4 + BIT5; /* XT1引脚复用,用作晶振 */UCSCTL6 &= ~(XT1OFF + XT2OFF); /* 打开XT1、XT2 */P5SEL |= BIT2 + BIT3; /* XT2引脚复用,用作晶振 */while (SFRIFG1 & OFIFG) /* 等待晶振正常起振 */{SFRIFG1 &= ~OFIFG;UCSCTL7 &= ~(DCOFFG + XT1LFOFFG + XT2OFFG);}UCSCTL4 |= SELA__XT1CLK + SELS__XT2CLK + SELM__XT2CLK; /* 时钟源选择   ACLK---XT1CLK   SMCLK---XT2CLK   MCLK---XT2CLK */UCSCTL5 |= DIVA__1 + DIVS__4 + DIVM__1; /* 时钟源分频  ACLK/1=32768HZ     SMCLK/4=1MHZ        MCLK/1=4MHZ */OLED_Init(); /* OLED初始化 */P1DIR |= BIT0; /* LED0 */P1OUT |= BIT0;P4DIR |= BIT7; /* LED1 */P4OUT |= BIT7;P1REN |= BIT2; //火焰传感器P1OUT |= BIT2;DS18b20_Port_Init();TA1CTL |= MC_1 + TASSEL_1 + TACLR; /* 10MS 定时 */TA1CCR0 = 32768 / 100;TA1CCTL0 = CCIE;P2DIR |= (BIT4 + BIT5); /* 方向 */P2SEL |= (BIT4 + BIT5); /* 第二功能不开 */TA2CCR0 = 1000; /* PWM模式    计数到1000  PWM周期就是1MS */TA2CCTL1 = OUTMOD_7; /* 模式 */TA2CCR1 = 0; /* p2.4  占空比 */TA2CCTL2 = OUTMOD_7; /* 模式 */TA2CCR2 = 0; /* p2.5 占空比  蜂鸣器 */TA2CTL = TASSEL_2 + MC_1 + TACLR; /* smclk, up-down mode, clear TAR  1MHZ */OLED_ShowString(0, 1, "     SYSTEM");OLED_ShowString(0, 4, "Temp :");_EINT(); //打开总中断while (1){//火焰传感器if ((P1IN & BIT2) == 0){delay_ms(1);if ((P1IN & BIT2) == 0){//低电平就是有火焰的情况TA2CCR2 = 500; /* p2.5 占空比  蜂鸣器 */}}if ((P1IN & BIT2) == 1){delay_ms(1);if ((P1IN & BIT2) == 1){//高电平就是没有火焰的情况TA2CCR2 = 0; /* p2.5 占空比  蜂鸣器 */}}//打开定时器TA1CTL |= MC_1 + TASSEL_1 + TACLR; /* 10MS 定时 */LPM0; //进入低功耗}
}
char counts = 0;
#pragma vector=TIMER1_A0_VECTOR
__interrupt void TIMER1_A0()
{TA1CTL = 0; //关闭定时器counts = (counts + 1) % 50;if (counts == 49){//0.5s刷新一次温度temp_value = get_one_temperature();//根据温度改变占空比if (temp_value < 400){//温度小于40度 不转TA2CCR1 = 0;}else if (temp_value < 60){//温度小于60  50%占空比TA2CCR1 = 500; //最大值998}else{//温度大于60  99%占空比TA2CCR1 = 998; //最大值998}/* 距离存入数组里 */count = 0;xianshishuzu[count++] = temp_value % 1000 / 100 + '0';xianshishuzu[count++] = temp_value % 100 / 10 + '0';xianshishuzu[count++] = '.';xianshishuzu[count++] = temp_value % 10 / 1 + '0';xianshishuzu[count++] = ' ';xianshishuzu[count++] = 'C';xianshishuzu[count++] = 0;/* 显示出来 温度*/OLED_ShowString(50, 4, xianshishuzu);}LPM0_EXIT; //退出低功耗}

全部代码

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络原理——HTTP/HTTPS ---- HTTPS

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 目录 HTTPS加密与解密HTTPS的工作流程使用对称密钥来加密使用非对称密钥 来对 对称密钥进行加密第三方公证总结 HTTPS https本质上就是在http的基础之上 增加了加密层,抛开加密层之后,剩下的部…

号称超级增程电动,领克07EM-P带来技术变革?

近年来&#xff0c;自主品牌在新能源汽车领域百花齐放&#xff0c;尤其是在混合动力市场上&#xff0c;比亚迪的DM-i技术引领了风潮&#xff0c;秦L的一经亮相&#xff0c;整个车圈都沸腾了&#xff0c;“超级混动”的概念深入人心。 各大自主品牌都有了自己的混动平台和技术。…

使用import语句导入模块

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 创建模块后&#xff0c;就可以在其他程序中使用该模块了。要使用模块需要先以模块的形式加载模块中的代码&#xff0c;这可以使用import语句实现。im…

步进电机双闭环细分控制(matlab仿真)内含课设等参考文件

1.1 步进电机工作原理 步进电机是一种用电脉冲进行控制&#xff0c;将电脉冲信号转换成相位移的电机&#xff0c;其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比,每一个脉冲信号可使步进电机旋转一个固定的角度。脉冲的数量决定了旋转的总角度&#xff0c;脉…

System-Verilog

实验报告&#xff1a;使用SystemVerilog在DE2-115开发板上重新设计Verilog练习项目 实验目的 通过学习和掌握SystemVerilog的基本语法&#xff0c;重新设计之前在Verilog中实现的练习项目&#xff0c;如流水灯、全加器、VGA显示和超声波测距&#xff0c;并完成相应的testbenc…

(ICLR,2024)HarMA:高效的协同迁移学习与模态对齐遥感技术

文章目录 相关资料摘要引言方法多模态门控适配器目标函数 实验 相关资料 论文&#xff1a;Efficient Remote Sensing with Harmonized Transfer Learning and Modality Alignment 代码&#xff1a;https://github.com/seekerhuang/HarMA 摘要 随着视觉和语言预训练&#xf…

seRsync + Rsync 实时同步

文章目录 1&#xff0c;结构图2&#xff0c;节点A2.1 安装rsync2.2 安装seRsync2.3&#xff0c; 创建seRsync的守护进程用systemd管理并启动2.4&#xff0c;上传rsync.pass密码文件到配置文件目录&#xff1a;/etc/2.5 &#xff0c;重新加载systemd&#xff0c;启动sersyncd守护…

gdb调试常见指令

quit&#xff1a;退出gdb list/l&#xff1a;l 文件名&#xff1a;行号/函数名&#xff0c;l 行号/函数名 b:b 文件名&#xff1a;行号/函数名&#xff0c;b 行号/函数名 info/i: info b d:d 断电编号 disable/enable 断电编号&#xff1a;使能&#xff08;关闭&#xff0…

React路由学习

官方文档&#xff1a;https://reactrouter.com/en/main 学习时以Tutorial&#xff08;教程&#xff09;为主 一、创建项目 //创建项目 npm create vitelatest [项目名] -- --template react//安装react-router cd [项目名] npm i react-router-dom localforage match-sorter…

AI电销机器人和传统人工销售相比到底厉害在哪里?

传统的电销模式存在成本高、管理难、招人难、转化低的问题。近几年&#xff0c;随着人工智能技术的兴起&#xff0c;电销行业也加入了人工智能的赛道。电话机器人是自动执行工作的机器装置。它既可以接受人类指挥&#xff0c;又可以运行预先编排的程序&#xff0c;也可以根据以…

容器编排技术:现状、应用与未来

在当今的软件开发和运维中&#xff0c;容器技术已经成为一个核心组成部分。容器不仅改变了应用程序的开发、测试和部署方式&#xff0c;还推动了整个软件生命周期管理的革新。而容器编排技术作为容器管理和自动化的重要工具&#xff0c;进一步提升了容器的使用效率和灵活性。 …

从关键新闻和最新技术看AI行业发展(2024.5.20-6.2第二十四期) |【WeThinkIn老实人报】

写在前面 【WeThinkIn老实人报】旨在整理&挖掘AI行业的关键新闻和最新技术&#xff0c;同时Rocky会对这些关键信息进行解读&#xff0c;力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的优化建议&#xff0c;一起交流学习&#x1f4aa; 欢迎大家关注Rocky的公众号&…

L4-118 均是素数(C++,多种方法)

在给定的区间 [m,n] 内&#xff0c;是否存在素数 p、q、r&#xff08;p<q<r&#xff09;&#xff0c;使得 pqr、qrp、rpq 均是素数&#xff1f; 输入格式&#xff1a; 输入给出区间的两个端点 0<m<n≤1000&#xff0c;其间以空格分隔。 输出格式&#xff1a; 在…

使用Xshell一键在多个会话中执行多个命令

背景 平时在工作中经常通过ssh远程操作Linux&#xff0c;由于我们负责的服务部署在超过5台服务器&#xff08;相同的代码及路径&#xff09;&#xff0c;每次发布后执行重启都得重复操作5次关闭、检查、启动、查看日志&#xff0c;特别繁琐。 后来发现Xshell 7可以录制脚本&am…

大模型时代的具身智能系列专题(十一)

UMass Amherst 淦创团队 淦创是马萨诸塞大学阿默斯特分校的一名教员&#xff0c;也是麻省理工学院- ibm沃森人工智能实验室的研究经理。在麻省理工学院博士后期间&#xff0c;和Antonio Torralba教授、Daniela Rus教授和Josh Tenenbaum教授一起工作。在此之前&#xff0c;在清…

Ai绘画工具Stable Diffusion,手把手教你训练你的专属Lora模型,神级教程建议收藏!

哈喽&#xff0c;大家好&#xff0c;我是设计师阿威。 今天给大家带来的是Stable Diffusion训练Lora的教程&#xff0c;希望对大家有帮助。 一、硬件要求 我们知道Stable Diffusion WebUI对显卡要求比较高&#xff0c;同样Lora训练对显卡要求更高&#xff0c;所以要想训练一…

【Endnote】如何在word界面加载Endnote

如何在word界面加载Endnote 方法1&#xff1a;方法2&#xff1a;从word入手方法3&#xff1a;从CWYW入手参考 已下载EndNote,但Word中没有显示EndNote&#xff0c;应如何加载显示呢&#xff1f; 方法1&#xff1a; 使用EndNote的Configure EndNote.exe 。 具体步骤为&#x…

通过异步请求上传文件到七牛云

一、准备工作 创建账号、创建空间这种大家自己研究就行(有手就行) 只需要根据步骤查找对应文档 从服务端获取七牛云上传的token,生成token参考官方文档 在七牛云文档查找上传的存储区域 在七牛云控制台找到空间管理的cdn加速域名 二、后台token获取 基于准备工作1中&…

将 KNX 接入 Home Assistant 之三 功能配置

万事俱备只欠东风&#xff0c;不管是ETS还是HA都需要配置才能使用。还是期待以后发展到可以开箱即用。 KNXD的配置 在 《将 KNX 接入 Home Assistant 之二 准备软件》&#xff0c;我们已经装好了KNXD的插件&#xff0c;现在就需要进行配置了 配置的界面 注意图中加框的选择&…

关于2025中国(广州)国际物流装备与技术展览会的新消息!

2025中国&#xff08;广州&#xff09;国际物流装备与技术展览会 2025年5月21-23日 中国进出口商品交易会馆D区 主办单位&#xff1a;汉诺威米兰佰特展览&#xff08;广州&#xff09;有限公司 中国&#xff08;广州&#xff09;国际物流装备与技术展览会&#xff08;LET Chin…