本文提供基于Texas Instruments 公司开发的Tiva C Series的系统板 ––—- TM4C123GH6PM ,以及DY - Tiva - PB v3.0 的拓展板实现呼吸灯算法。
核心思路是通过循环调整亮灭的时间,总时间一定,使灭的时间与亮的时间成反比

    int i = 0, j = 0, flag = 0;int m = 180, n = 180, t = 180, q = 180;//设置系统时钟为50MHzSysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);// 端口GPIO F使能,F0引脚解锁NMI功能SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);            // 使能 GPIO F模块HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;   // 开锁 PORT FHWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= GPIO_PIN_0;       // 解锁 F0 引脚HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;               // 重新上锁        // 设置GPIO方向    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0);     // PF0设置为输出GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);          // 蓝LED灯初始态:灭// 设置PA4为输出    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);            // 使能 GPIO A模块GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_4);     // PA4设置为输出GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,1<<4);          // 绿LED灯初始态:灭// 设置PD6为输出    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);            // 使能 GPIO D模块GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_6);     // PD6设置为输出GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,1<<6);          // 红LED灯初始态:灭
//        while(1)    // 死循环,main函数没有结束{GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, 0 << 0);          // 蓝色LED灯:亮for(i = m; i > 0; i--) for(j = m; j > 0; j--);              // 软件延时GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, 1 << 0);          // 蓝色LED灯:灭for(i = q - m; i > 0; i--) for(j = q - m; j > 0; j--);      // 软件延时GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, 0 << 4);          // 绿色LED灯:亮for(i = m; i > 0; i--) for(j = m; j > 0; j--);              // 软件延时GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, 1 << 4);          // 绿色LED灯:灭for(i = n - m; i > 0; i--) for(j = n - m; j > 0; j--);        // 软件延时GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_6, 0 << 6);          // 红色LED灯:亮for(i = m; i > 0; i--) for(j = m; j > 0; j--);              // 软件延时GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_6, 1 << 6);          // 红色LED灯:灭for(i = t - m; i > 0; i--) for(j = t - m; j > 0; j--);      // 软件延时if((m == 0) && (flag == 0))flag = 1;if(!flag)m--;else{if(m < n)m++;else flag = 0;}}

基于PWM调宽的呼吸灯算法相关推荐

  1. STM32输出PWM波形并实现呼吸灯

    文章目录 一.环境配置 二.PWM简介 三.使用STM32CubeMX配置工程 四.使用Keil配置代码 五.运行效果 六.用Keil自带的逻辑仿真器观察占空比 七.总结 八.参考资料 一.环境配置 ...

  2. STM8S003F3通过PWM波实现三基色呼吸灯

    前段时间使用STM8S003F3实现了一个三基色灯的各种效果,故写一篇文章作为一个记录. 1 综述 我们知道,要是的LED灯亮直接通电即可.而要改变灯的亮度,我们有两种方法:改变电流和PWM调光. 我 ...

  3. 【C51单片机学习笔记----DS18B20温度传感器LCD1602液晶屏直流电机调速与呼吸灯AD模数转换红外外部中断】

    文章目录 一.DS18B20温度传感器 1.DS18B20温度传感器连接原理图 2.DS18B20温度传感器单总线通信时序 3.DS18B20温度传感器代码模块 二.LCD1602液晶屏 1.LCD1 ...

  4. STM8S003F3通过PWM波实现三基色呼吸灯(转)

    源: STM8S003F3通过PWM波实现三基色呼吸灯 转载于:https://www.cnblogs.com/LittleTiger/p/10105311.html

  5. 基于51单片机设计的呼吸灯

    一.项目介绍 呼吸灯是一种常见的LED灯光效果,它可以模拟人类呼吸的变化,使灯光看起来更加柔和和自然.51单片机是一种广泛使用的微控制器,具有体积小.功耗低.成本低等优点,非常适合用于控制LED呼吸灯 ...

  6. STM32输出PWM波形及LED呼吸灯

    目录 一.PWM的介绍 1.概述 2.优点 3.主要产生方法 SPWM法 1.等面积法 2.硬件调制法 3.软件生成法 4.PWM电路图 5.PWM基本原理 二.cubemx项目的建立 1.选择芯片S ...

  7. 蓝桥杯单片机比赛学习:8、PWM的基本原理之呼吸灯

    经过7节的学习,我们已经掌握了基本的硬件的使用规则,从本节开始我们开始学习一些模块的使用PWM.PCF8591.AT24C02.DS18B20.DS1302.555频率测量.光敏电阻测量.超声波测距等 ...

  8. 输出一个PWM并实现 LED呼吸灯的效果

    前言 本篇博客使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸 ...

  9. STM32 学习笔记1-智能小车-基于PWM 调速 的电机设置

    目录 本文章主要介绍 STM32 电机相关软件的配置,PWM的相关介绍,csdn上面有很多资料 硬件: PWM(Pulse Width Modulation) 介绍: 基本定时器(TIM6/7) 通用 ...

  10. 基于51单片机的LED呼吸灯设计(定时器)

    定时器实现led呼吸灯 实验原理: 灯在高速闪烁时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失.每次循环时,前半部分先让亮的时间逐渐增加,暗的时间逐渐减小:后半部分 ...

最新文章

  1. 在CentOS 6.9 x86_64上玩转OpenResty 1.13.6.1中的resty-cli模块
  2. 让机器“看见”:图像数据的特征提取方法
  3. python打印指定行数的分割线_在Python中的分隔线上打印列表元素
  4. Science:AI领域那么多引人注目的「进展」,竟是无用功
  5. “芯”战争,人工智能芯片研发攻略
  6. Java异步通信实现
  7. python读什么类型文件最快的软件_使用python读取数据科学最常用的文件格式(转)...
  8. java 队列_用Java实现队列
  9. Python打断点(亲测)
  10. javascript 之 面向对象【理解对象】
  11. 使用WebDriver遇到的那些坑
  12. selenium+python,解决selenium弹出新页面,无法定位元素的问题(报错:Unable to locate element:元素)
  13. spring-boot 整合redis作为数据缓存
  14. 在构造函数中释放对象本身
  15. 支付宝支付提示 4006 ISV权限不足
  16. 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强
  17. 彻底搞懂数据库内连接、外连接
  18. OpenLayers多源数据加载一:数据组织
  19. 双端口USB Type-C控制器 CYPD6227 (CYPD6227-96BZXI)
  20. 如何让 PPT 中的多张图大小一致?

热门文章

  1. 鲜为人知的软件项目管理原则
  2. 时间+地区 选择器
  3. 构建 Netflix 分布式追踪(tracing)体系
  4. Vue条件渲染(v-if和v-show的区别)
  5. node.js 与 nvm安装教程
  6. Javascript基础知识笔记三
  7. golang 获取当前年月日
  8. PHP中的预定义常量、预定义变量、魔术常量
  9. 分布式压缩感知 matlab程序,BCS_CODE 贝叶斯压缩感知以及分布式 的算法实现,很好的范例 matlab 238万源代码下载- www.pudn.com...
  10. BAT中for循环如何执行多条命令