蓝桥杯单片机小蜜蜂学习笔记-PWM脉宽调制

本文详细介绍了如何通过C语言在8051单片机上实现PWM脉宽调制,包括基本原理、占空比设置以及使用定时器函数来控制高电平和低电平的交替,以实现不同档位的灯光调节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考写前面

学习视频来自

【基础技能11】PWM脉宽调制信号的发生与控制

基本原理

PWM脉宽调制 主要是看占空比 

什么是占空比呢 

就是高电平占整个周期的比例就是占空比

我们通过调整占空比来实现PWM脉宽调制

我们要做的就是利用定时器 一会输出高电平一会输出低电平 生成一个矩形波 根据高低电平的持续时间 完成对占空比的设置

任务

首先这个100hz就是对应着0.01s的周期就是10ms的周期

一开始L1需要关闭 然后是1档-10%的占空比 2档-50%占空比 3档-90%占空比

代码

#include "reg52.h"
#include <intrins.h>

sbit l1=P0^0;
sbit s7=P3^0;
unsigned char count=0;
unsigned char duty=0;
unsigned char stat=0;
void selecthc573(){
	P2=(P2&0x1f)|0x80;
}

void delay(unsigned int n)
{
    unsigned int i,j;
    for(j=n;j>0;j--)
    for(i=112;i>0;i--);
}

//======timer function
void init_t(){
	TMOD=0X01;
	TH0=(65535-100)/256;
	TL0=(65535-100)%256;
	ET0=1;
	EA=1;
}

void ser_timer() interrupt 1{
	TH0=(65535-100)/256;
	TL0=(65535-100)%256;
	count++;
	if(count==duty){
		l1=1;
	}
	else if(count==100){
		l1=0;
		count=0;
	}
}
void key_scan(){
	if(s7==0){
		delay(100);
		if(s7==0){
			switch(stat){
				case 0:
					l1=0;
					TR0=1;
					duty=10;
					stat=1;
				break;
				case 1:
					duty=50;
					stat=2;
				break;
				case 2:
					duty=90;
					stat=3;
				break;
				case 3:
					TR0=0;
					stat=0;
					l1=1;
				break;
			}
			while(s7==0);
		}
	}

}
void main(){
	selecthc573();
	l1=1;
	init_t();
	while(1){
		key_scan();
	}
}

结果展示

单片机PWM调光效果演示

### 关于第十五届蓝桥杯单片机小蜜蜂比赛资料 对于希望参与或深入了解第十五届蓝桥杯单片机竞赛的小蜜蜂相关内容,以下是整理的相关资源和建议: #### 1. **官方资料获取** 可通过蓝桥杯官网下载整合后的单片机资源包,其中包含了详细的指导手册以及考点大纲[^1]。这些材料能够帮助参赛者全面掌握考试范围和技术要点。 #### 2. **优质教程推荐** 针对小蜜蜂相关的学习内容,可以参考蚂蚁工厂科技提供的蓝桥杯单片机教程,该课程覆盖了从基础知识到实际应用的多个方面。另外,“小蜜蜂蓝桥杯单片机基础技能与进阶强化教程”也是一份非常有价值的参考资料,其配套视频可在B站找到具体讲解[^2]。 #### 3. **其他辅助文章** - 提分技巧类的文章《【提分必看!】蓝桥杯单片机提分技巧(国一经验分享)》提供了许多实用的学习方法和实战策略。 - 还有针对不同模块编写的代码集合文档《【国一超全代码分享!】蓝桥杯单片机各模块代码整合》,可以帮助选手快速熟悉各类功能实现方式。 - 对于理论部分,《【蓝桥杯单片机客观题知识点汇总】》总结了许多重要概念,适合用来复习巩固。 #### 4. **实践经验分享** 来自获得过国家级奖项的经验之谈同样值得借鉴。例如,在另一篇博文中提到:“尽管外界对蓝桥杯评价不一,但它确实是提升个人能力并争取加分的好机会。”这表明即使面对争议,合理利用此类平台仍能带来显著收益[^3]。 ```python # 示例:简单的延时函数用于模拟硬件操作中的等待时间设置 def delay(ms): import time time.sleep(ms / 1000) # 测试调用 delay(500) # 延迟半秒 ``` 以上即为关于如何准备及查找第十五届蓝桥杯单片机项目下涉及“小蜜蜂”的主要信息源介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值