51单片机pwm按键调光程序以及原理图
时间: 2023-12-23 21:06:30 浏览: 152
以下是51单片机基于按键实现PWM调光的程序代码及原理图:
程序代码:
```c
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define LED P2
sbit S1 = P1^0;
sbit S2 = P1^1;
uchar pwm = 0;
void delay(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void pwm_out() //PWM输出函数
{
uchar i;
for(i=0;i<100;i++) //循环100次,控制占空比
{
if(i < pwm)
LED = 0;
else
LED = 1;
delay(1); //延时1ms
}
}
void main()
{
S1 = 1;
S2 = 1;
while(1)
{
if(S1 == 0) //按下S1
{
delay(10); //延时10ms
if(S1 == 0) //再次检测S1是否按下
{
pwm++; //占空比加1
if(pwm > 99) //占空比不能大于99
pwm = 99;
}
while(!S1); //等待S1释放
}
if(S2 == 0) //按下S2
{
delay(10); //延时10ms
if(S2 == 0) //再次检测S2是否按下
{
pwm--; //占空比减1
if(pwm < 0) //占空比不能小于0
pwm = 0;
}
while(!S2); //等待S2释放
}
pwm_out(); //PWM输出
}
}
```
原理图:
![51单片机pwm按键调光原理图](https://img-blog.csdn.net/20180418195102575?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xlZmVudG9u/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75)
阅读全文