蓝桥杯单片机省赛第七届 模拟风扇控制系统

这一届的省赛中首次对PWM波进行了考察,对于PWM波的输出有两种方法,一种是用两个定时器,一种是只用一个定时器。

两个定时器:用定时器T0来控制频率,定时器T1来控制占空比。

T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变占空比。

一个定时器:用 定时器0来延迟一个波形,代表一个周期,内含正周期与反周期。

题目中往往会告知频率的大小,知道频率就知道了周期,这届赛题中周期是1ms。

占空比:正周期占总周期的多少。

例如:占空比是20%,正周期是0.2ms,反周期是0.8ms。

PWM波的输出在这个板子上是从定时器0的T0口,也就是P34引脚输出的。所以我们设定P34引脚电平的高低,就是设置了PWM波的占空比。

正周期的表示方法:P34=1

反周期的表示方法:P34=0

下面以一个定时器为例:

void Timer0Init(void)		//100微秒@11.0592MHz
{
	AUXR |= 0x80;		//定时器时钟1T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0xAE;		//设置定时初始值
	TH0 = 0xFB;		//设置定时初始值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时

	ET0=1;EA=1;
}

void timer0() interrupt 1//周期为1000微秒
{
	tt++;
	
	if(time_dingshi>0)
	{	
		if(mode==0)//睡眠风  正周期:200微秒
		{
			if(tt<=2){P34=1;}           //正周期
			else if(tt<=10){tt=0;P34=0;}//反周期
		}
		else if(mode==1)//自然风  正周期:300微秒
		{
			if(tt<=3){P34=1;}
			else if(tt<=10){tt=0;P34=0;}
		}
		else if(mode==2)//常风  正周期:700微秒
		{
			if(tt<=7){P34=1;}
			else if(tt<=10){tt=0;P34=0;}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值