当前位置: 首页 > news >正文

【TB作品】MSP430F5529单片机,温控小风扇,DS18B20温度读取,PWM风扇

功能

/*

  • OLED

  • SCL ----------P3.0

  • SDA ----------P3.1

  • VCC ----------3.3V

  • GND ----------GND

  • 风扇

  • DATA ----------P2.4

  • VCC ----------3.3V

  • GND ----------GND

  • DS18B20

  • DATA ----------P1.5

  • VCC ----------3.3V

  • GND ----------GND

  • 功能:

  • S1 改变占空比为 0 400 600 800

  •   S2 改变占空比为根据温度变化
    
  •   OLED每0.5S刷新一次温度显示
    
  •   DS18B20测温
    

*/

功能

S1 改变占空比为 0 400 600 800 手动档位

S2 自动档位

OLED显示温度

DS18B20测温

 * S1 改变占空比为  0  400  600  800*       S2 改变占空比为根据温度变化*       OLED每0.5S刷新一次温度显示*       DS18B20测温

部分代码


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 |= BIT1; //KEY1P1OUT |= BIT1;P2REN |= BIT1; //KEY2P2OUT |= BIT1;DS18b20_Port_Init();TA1CTL |= MC_1 + TASSEL_1 + TACLR; /* 10MS 定时 */TA1CCR0 = 32768 / 100;TA1CCTL0 = CCIE;P2DIR |= BIT4; /* 方向 */P2SEL &= ~BIT4; /* 第二功能不开 */P2OUT |= BIT4; /* 方向 */OLED_ShowString(0, 1, "TEMP :");OLED_ShowString(0, 3, "POWER:");OLED_ShowChar(50, 3, '0', 16);_EINT(); //打开总中断while (1){//按键S1  改变风扇占空比if ((P2IN & BIT1) == 0){delay_ms(10);if ((P2IN & BIT1) == 0){while ((P2IN & BIT1) == 0);fengshansudu = (fengshansudu + 1) % 4; // 0 1  2  3代表不转和三档速度if (fengshansudu == 0){P2DIR |= BIT4; /* 方向 */P2SEL &= ~BIT4; /* 第二功能不开 */P2OUT |= BIT4; /* 方向 */}else{P2DIR |= BIT4; /* 方向 */P2SEL |= BIT4; /* 第二功能不开 */TA2CCR0 = 1000; /* PWM模式    计数到1000  PWM周期就是1MS */TA2CCTL1 = OUTMOD_3; /* 模式 */TA2CCR1 = 2; /* 占空比 */TA2CTL = TASSEL_2 + MC_1 + TACLR; /* smclk, up-down mode, clear TAR  1MHZ */TA2CCR1 = 200 + fengshansudu * 200; /* 占空比 */}P1OUT ^= BIT0; //为了观察}}//按键S2  改变风扇  为 自动档位if ((P1IN & BIT1) == 0){delay_ms(10);if ((P1IN & BIT1) == 0){while ((P1IN & BIT1) == 0);P2DIR |= BIT4; /* 方向 */P2SEL |= BIT4; /* 第二功能不开 */TA2CCR0 = 1000; /* PWM模式    计数到1000  PWM周期就是1MS */TA2CCTL1 = OUTMOD_3; /* 模式 */TA2CCR1 = 2; /* 占空比 */TA2CTL = TASSEL_2 + MC_1 + TACLR; /* smclk, up-down mode, clear TAR  1MHZ */fengshansudu = 4; //代表自动速度P4OUT ^= BIT7; //为了观察}}//打开定时器TA1CTL |= MC_1 + TASSEL_1 + TACLR; /* 10MS 定时 */LPM0; //进入低功耗}
}

全部代码

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

相关文章:

  • 【Git】在错误分支上开发了怎么办
  • WIFI 万[néng]钥匙 v5.0.10/v4.9.80 SVIP版!
  • 直播分享|深入解析ts-morph:通过注释生成类型文档
  • 102.网络游戏逆向分析与漏洞攻防-ui界面的设计-反隐身功能的界面设计与实现(有不使用MFC生成,自己手写代码创建复选框与事件的例子)
  • imx6ull - 制作烧录SD卡
  • 特征工程技巧—Bert
  • ResizeObserver监听画布尺寸改变动态渲染echarts
  • Lua 基础 04 模块
  • Linux 系统安全及应用
  • FFmpeg解复用器(解封装)简单测试【2】
  • 每日一练——分糖果2
  • 【Go语言精进之路】构建高效Go程序:零值可用、使用复合字面值作为初值构造器
  • CAPL如何发送一条UDP报文
  • 独立游戏开发的 6 个步骤
  • 游戏找不到d3dcompiler43.dll怎么办,分享5种有效的解决方法
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • co.js - 让异步代码同步化
  • css系列之关于字体的事
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • HTML中设置input等文本框为不可操作
  • JS学习笔记——闭包
  • LeetCode29.两数相除 JavaScript
  • PAT A1050
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 给github项目添加CI badge
  • 前端面试题总结
  • 强力优化Rancher k8s中国区的使用体验
  • 使用API自动生成工具优化前端工作流
  • 我与Jetbrains的这些年
  • ​【已解决】npm install​卡主不动的情况
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #mysql 8.0 踩坑日记
  • #前后端分离# 头条发布系统
  • (¥1011)-(一千零一拾一元整)输出
  • (2020)Java后端开发----(面试题和笔试题)
  • (Ruby)Ubuntu12.04安装Rails环境
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (zt)最盛行的警世狂言(爆笑)
  • (二)原生js案例之数码时钟计时
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (含答案)C++笔试题你可以答对多少?
  • (七)Flink Watermark
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ***监测系统的构建(chkrootkit )
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .Net Core 笔试1
  • .net core 控制台应用程序读取配置文件app.config
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net连接oracle数据库
  • .NET下ASPX编程的几个小问题