原理:调节高低电平的占空比

#include "STC15F2K60S2.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
uchar LED;
void SelectHC573(uchar val)
{switch(val){case 4 : P2 = (P2 & 0x1f) | 0x80; break;case 5 : P2 = (P2 & 0x1f) | 0xa0; break;case 6 : P2 = (P2 & 0x1f) | 0xc0; break;case 7 : P2 = (P2 & 0x1f) | 0xe0; break;default: P2 = (P2 & 0x1f); break;     }
}
void InitSystem()//系统初始化关闭蜂鸣器、继电器、LED
{SelectHC573(5);P0 = 0xbf;      //由于不同板子的引脚接法不同,此时的初始值也不同SelectHC573(4);    P0 = 0xff;     //LED全灭
}
void Timer0Init(void)       //100微秒@12.000MHz
{AUXR &= 0x7F;     //定时器时钟12T模式TMOD &= 0xF0;      //设置定时器模式TL0 = 0x9C;       //设置定时初值TH0 = 0xFF;        //设置定时初值TF0 = 0;       //清除TF0标志TR0 = 1;      //定时器0开始计时ET0 = 1;EA = 1;
}
uint pwmval = 0;   //pwm高低电平时间设置,pwmval越大,led越亮
bit pwmFlag =  0;  //PWM标志位,为0表示led越来越亮,为1表示led越来越暗
uint pwmCount = 0;
void ServiceTimer0() interrupt 1
{uchar pushp0,pushp2;pushp0 = P0;pushp2 = P2;//入栈pwmCount++;if(pwmCount<=100)       //100*100us=10ms,高低电平时间通过pwmva调节{if(pwmCount <= pwmval)//低电平时间LED = 0x00;                 //将led状态暂时存储到变量LED中,避免直接对P0操作else LED = 0xff;                   //高电平时间}else{pwmCount=0;if(pwmval==100) pwmFlag=1;     if(pwmval==0)pwmFlag=0;   if(pwmFlag==0)pwmval=pwmval+1;elsepwmval=pwmval-1;}P2 = pushp2;//出栈P0 = pushp0;
}
void main()
{InitSystem();Timer0Init();while(1){    SelectHC573(4);P0 = LED;   //此时,打开led的573,再将变量LED状态赋给P0}
}

注意点:在蓝桥杯中,若想控制led,最好设置一个8位的变量,将led状态储存到该变量中,否则很可能会因为中断或者其他对P0口的设置状态而影响led状态。

单片机蓝桥杯——PWM呼吸灯相关推荐

  1. 单片机蓝桥杯--LED呼吸灯

    在CT107D单片机综合训练平台实现LED的基本控制和其他单片机开发平台不一样,不单单是控制几个LED实现跑马灯这么简单.因为在这个平台上要掌握74CH138译码器和74HC573锁存器的使用才能实现 ...

  2. STM32F030C8T6单片机PWM呼吸灯寄存器配置

    STM32F030C8T6单片机PWM呼吸灯寄存器配置: TIM3_CR1:控制寄存器 BIT8~BIT9:CKD 与外部输入时钟有关,不使用外部时钟输入,所以不操作BIT8~BIT9,设置为00 B ...

  3. LabVIEW控制Arduino实现PWM呼吸灯(基础篇—5)

    目录 1.实验目的 2.实验环境 3.程序设计 4.实验演示 1.实验目的 利用LIAT中的模拟I/O函数库,通过LabVIEW和Arduino Uno控制板实现LED灯亮度的调节,产生灯会呼吸的效果 ...

  4. FPGA项目三:PWM呼吸灯

    文章目录 第一节 项目背景 第二节 设计目标 第三节 设计实现 3.1顶层设计 3.2 信号设计 3.3 信号定义 第四节 综合和上板 4.1 新建工程 4.2 综合 4.3 配置管脚 4.4 再次综 ...

  5. 赛元微SC92F7352 PWM呼吸灯应用

    赛元微SC92F7352 PWM呼吸灯应用 单片机脚位图 #include <SC92F735X_C.H> #include "intrins.h" #define u ...

  6. STM32 CubeMx(二)定时器中断和PWM呼吸灯

    STM32 CubeMx(一)时钟树配置与GPIO输入输出 文章目录 1.定时器 1.1 定时器概念 1.2 定时器分类 1.3 定时器功能 1.4 配置过程和编写代码 1.5 代码分享 2.PWM产 ...

  7. 基于FPGA开发板使用Verilog设计PWM呼吸灯实验

    基于FPGA开发板使用Verilog设计PWM呼吸灯实验 1,实验原理 2,实验模块设计 2.1 RTL设计,呼吸灯模块设计 2.2,测试数据,下载到FPGA开发板板级的数据 2.3,两个模块综合的n ...

  8. **决战2021年单片机蓝桥杯笔记(1)**IIC PCF8591 AT24C02

    **决战2021年单片机蓝桥杯笔记(1)**IIC PCF8591 AT24C02 I2C作为一种多用于板内同步串行通信方式,有一根SCL时钟线负责收发双方的时钟节拍,和一根SDA数据线负责传输数据, ...

  9. STC89C52单片机可调速电机及呼吸灯(PWM)代码演示

    目录 直流电机介绍 电机的驱动电路 PWM介绍 PWM重要参数 PWM的产生方法 代码演示 1,调速电机 2,呼吸灯 直流电机介绍 直流电机是一种将电能转换为机械能的装置.一般的直流电机有两个电极,当 ...

最新文章

  1. hdu 2156 分数矩阵
  2. 看看函数名和注释,AI就能自动生成代码,程序员:这不真实,我要失业
  3. 【原】自定义UINavigationItem的两种方法以及相应的隐藏方法
  4. 工控服务器性能指标,PLC的7大性能指标
  5. 【JavaScript】判断一个字符串是否是数值 / 判断是否包含字母(附常用正则表达式)
  6. 新的公司:Dendrite
  7. 不玩虚的!深入B端SaaS产品设计核心理念【干货】
  8. Objective-C 类和对象
  9. iQOO Neo 855竞速版来了:今年最后一款骁龙855 Plus手机
  10. php语言输出九九乘法表_PHP 输出九九乘法表
  11. 微信AI开放接口介绍
  12. 10月20日中国域名商解析量十四强:易名中国季军
  13. 身份证前六位对应代码
  14. Python数据分析与应用(一)
  15. 格林公式、高斯公式及斯托克斯公式的理解及相互关系
  16. 虚拟机自省XenAccess和vmitools
  17. 完美配色排版海报模板|神奇的色彩搭配
  18. 二、CI框架之MCV模型
  19. [FLASH]加载外部图片到舞台
  20. JS 中 Object 的 keys 是无序的吗?

热门文章

  1. Flask后端实践 连载十三 Flask输出Excel报表
  2. 【Python爬虫实战】使用Selenium爬取QQ音乐歌曲及评论信息
  3. SAP 标准成本、计划成本、目标成本、实际成本解析
  4. Linux内核notifier机制通知链
  5. Cauchy distribution
  6. 网络驱动之net_device结构体
  7. linux mint 蓝牙驱动,Mint 使用蓝牙鼠标问题
  8. 如何从零开始学习SEM?
  9. TriCore 与 RT-Thread(TC264 移植)
  10. Filed II 自定义二维曲面超声换能器阵列