基于for循环的呼吸灯

发布者:平和梦想最新更新时间:2024-08-14 来源: cnblogs关键字:for循环  呼吸灯 手机看文章 扫描二维码
随时随地手机看文章

 1 #include 'stm32f10x.h'

 2 #include 'stm32f10x_gpio.h'

 3 //#include 'led.h'

 4 #include 'Breath_led.h'

 5 #define bbb 5000 

 6 

 7 /*

 8 定义三个无符号变量:

 9 i控制亮灭的时间

10 j控制亮灭的亮度变化   控制低电平的时间

11 K控制整个呼吸灯的时间

12 

13 讲解:总的时间为5000us

14                              bbb-j                                bbb(bbb-j)

15 1、高电平的时间5000us   低电平的时间为0         红灯最亮

16 3、高电平的时间4000us   低电平的时间为1000

17 4、高电平的时间3000us   低电平的时间为2000

18 4、高电平的时间2000us   低电平的时间为3000

19 5、高电平的时间1000us   低电平的时间为4000

20 6、高电平的时间0000us   低电平的时间为5000  红灯熄灭

21     以上是从最亮到熄灭的过程

22     

23     下面是最暗到亮的过程

24 1、高电平的时间0000us   低电平的时间为5000 红灯最亮

25 3、高电平的时间1000us   低电平的时间为4000

26 4、高电平的时间2000us   低电平的时间为3000

27 4、高电平的时间3000us   低电平的时间为2000

28 5、高电平的时间4000us   低电平的时间为1000

29 6、高电平的时间5000us   低电平的时间为0000  红灯熄灭

30     

31 

32 

33 

34 */

35 void led_red_init();

36 

37 void Breath_led()

38     {

39         led_red_init();//GPIO初始化

40             unsigned int i=0,j=0,k;

41     for(k=0;k42             {

43                 GPIO_ResetBits(GPIOB,GPIO_Pin_5);//点亮红灯

44                 for(i=0;i45                 

46                 GPIO_SetBits(GPIOB,GPIO_Pin_5);//熄灭红灯

47                 for(i=0;i48                 

49                     j++;//控制亮度的变化

50                 if(j==bbb)//当j低电平的时间等于5000时,说明已经快熄灭了

51                 {        

52                     //j=0;     //从零开始 

53                     

54                     for(k=0;k55                     {

56                     j--;

57                     GPIO_ResetBits(GPIOB,GPIO_Pin_5);

58                     for(i=0;i59                     GPIO_SetBits(GPIOB,GPIO_Pin_5);

60                     for(i=0;i61                     }

62     

63                         

64                 }

65             }    

66 

67 }

68 void led_red_init()

69 {

70 

71     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

72     GPIO_InitTypeDef gpio;

73     gpio.GPIO_Mode=GPIO_Mode_Out_PP;

74     gpio.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_0|GPIO_Pin_1;

75     gpio.GPIO_Speed=GPIO_Speed_50MHz;

76     GPIO_Init(GPIOB,&gpio);

77     

78     GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_0|GPIO_Pin_1);//默认为低电平

79     

80 }


关键字:for循环  呼吸灯 引用地址:基于for循环的呼吸灯

上一篇:STM32 中断
下一篇:STM32(HY-SRF05)超声波测距项目

推荐阅读最新更新时间:2026-03-19 11:58

FOR循环语句分析与应用
F循环语句应用比较广泛,在、、编程中都有应用。能读懂这些程序语句,可以更好地理解机电设备控制原理,为机电设备安装工作带来便利。 一、程序应用 下图通过编程控制1~6号管分别通断,来控制三相线圈绕组按先后顺序接通断开,产生旋转磁场驱动电机旋转。没有程序基础的人很难看懂变频线路,能读懂程序非常重要。 二、机器人中的FOR语句 机器人语言编程中FOR与ENDFOR是成对出现的,FOR表示循坏的开始,FOR指定的值表示循环的次数,ENDFOR表示循环的结束。 1、语法结构 2、经典程序 三、中的FOR指令 1、经典程序 PLC程序的执行过程分3步:1、输入;2、程序扫描;3、输出刷新。一个工作周期内,某些程序段需要执行多遍,这个时
[机器人]
通过STM32实现PWM呼吸灯的教程
一,知识理论基础 什么是呼吸灯: 顾名思义,就是一个灯。灯的亮度的变化,由亮变暗,从暗变亮,有一个渐变,规律的变化,像是人的呼吸,是灯的呼吸,所以叫呼吸灯。而要让灯可以达到这样的变化,我们要让stm32的IO口上输出一个可调的电平,这时我们就要用到PWM,那什么是PWM呢,我们继续往下看。 什么是定时器: 讲PWM我们要先认识stm32的定时器,PWM是定时器的功能之一。STM32F103有TIME1和TIME8高级定时器,TIME2TIME5通用定时器,还有TIME6和TIME7基本定时器。我们要使用的STM32F103C8T6只具有4个定时器,TIME1TIME4. 那么定时器有什么功能呢?定时、输出比较
[单片机]
通过STM32实现PWM<font color='red'>呼吸灯</font>的教程
【跟着江科大学Stm32】STM32F103C6T6_实现呼吸灯_代码
PWM.h #ifndef __PWM_H #define __PWM_H void PWM_Init(); void PWM_SetCompare1(uint16_t Compare); #endif PWM.c #include stm32f10x.h // Device header void PWM_Init() { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); //开启定时器2 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//通道2时钟使能函数
[单片机]
【跟着江科大学Stm32】STM32F103C6T6_实现<font color='red'>呼吸灯</font>_代码
DAC数模转换、PWM输出、呼吸灯
一、DAC 转换原理和技术指标 (一)分辨率 分辨率是指输入数字量的最低有效位(LSB)发生变化时,所对应的输出模拟量(电压或电流)的变化量。它反映了输出模拟量的最小变化值。 (二)线性度 线性度(也称非线性误差)是实际转换特性曲线与理想直线特性之间的最大偏差。 常以相对于满量程的百分数表示。如±1%是指实际输出值与理论值之差在满刻度的 ±1%以内。 (三)绝对精度和相对精度 绝对精度(简称精度)是指在整个刻度范围内,任一输入数码所对应的模拟量实际输出值与理论值之间的最大误差。 相对精度与绝对精度表示同一含义,用最大误差相对于满刻度的百分比表示。 (四)建立时间
[单片机]
DAC数模转换、PWM输出、<font color='red'>呼吸灯</font>
基于LED灯组的呼吸灯的设计
#include reg51.h void Delay1(int del) { int i,j; for(i=0; i del; i++) for(j=0; j 1827; j++) ; } void Delay(unsigned int t) { while(--t); } //函数声明 //P0=0x00; unsigned int z,y; void main (void)//主函数 { unsigned int CYCLE=400,PWM_LOW=0;//定义周期并赋值 while (1) //主循环 { /*--------整排LED灯呼吸
[单片机]
STM32f103核心板点呼吸灯教程
一,首先先安装keil5MDK 链接:https://pan.baidu.com/s/1G0P9YnzjQjkDBIuizG_Rcw 提取码:T658 具体安装步骤搜索微信公众号 软件安装管家,发送keil5。 二,安装STM32CubeMX 因为该软件必须在Java环境下运行,所以先去Java官网下载Java(反正我是下载了1个多h) 接着去CubeMx官网下载STM32CubeMx Get Software-它会让你注册账号,注册,还要输入邮箱,之后他会发送邮件到你的邮箱中 Dowmload now! 三.必备的安装 !是很多错误的来源 1.运行STM32CubeMX Help-Updater Setting
[单片机]
STM32f103核心板点<font color='red'>呼吸灯</font>教程
STM32F103入门 | 12.PWM实现呼吸灯
12.1. PWM简介 PWM全称为“Pulse Width Modulation”。中文翻译为:脉冲宽度调制。脉冲宽度指的是 脉冲持续的时间,既高电平或低电平保持(持续)的时间。而PWM通俗的说就是人为的(通过微处理器)去控制电平高低保持的时间。这里引出一个新名词,占空比:在一个脉冲的循环中,通电时间相对于总时间所占的比例。 STM32 的定时器除了 TIM6 和 TIM7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4 路的 PWM 输出,这样,STM32 最多可以同时产生 30 路 PWM 输出! 12
[单片机]
STM32F103入门 | 12.PWM实现<font color='red'>呼吸灯</font>
stm32之定时器运用———呼吸灯
呼吸灯原理 1.在模拟电路中,呼吸灯的实现可以通过一个呈现正弦的电压控制,这个电压是连续变化的,所以肉眼看上去就是逐渐变暗,逐渐变亮。 2.而在数字电路中如何实现这种效果呢?就需要通过pwm,也就是脉冲宽度调制,将模拟量转换为数字量。只要能够用连续电压控制的东西都是可以通过pwm方式来驱动,效果是一样的。 3. 上面一块区域的面积等于对应下来的矩形的面积,当然,取得块的间隔越小(即pwm的周期越小),效果越好。这时,如果周期定了,就可以通过改变占空比来实现面积的改变,从而模拟出上面那张图的电压的连续变化。 注意:pwm波的高度是一定的,所以只能通过改变宽度(占空比)来实现面积的改变 4.说明:观察这张图,会发现
[单片机]
stm32之定时器运用———<font color='red'>呼吸灯</font>
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved