51单片机判断控制灯亮度代码
时间: 2023-09-11 10:11:58 浏览: 52
以下是一个简单的51单片机判断控制灯亮度的代码示例:
```c
#include <reg52.h>
#define LED P1
void main()
{
unsigned char brightness = 0; // 亮度值,取值范围为0~255
while(1)
{
if(brightness > 0) // 如果亮度不为0,则点亮LED
{
LED = 0xFF;
}
else // 如果亮度为0,则熄灭LED
{
LED = 0x00;
}
// 判断亮度是否需要增加或减少
if(P3_0 == 0 && brightness < 255) // 如果按下了按钮1并且亮度还没达到最大值
{
delay_ms(10); // 延时去抖
if(P3_0 == 0) // 再次判断按钮是否被按下
{
brightness++; // 增加亮度
}
}
else if(P3_1 == 0 && brightness > 0) // 如果按下了按钮2并且亮度还没达到最小值
{
delay_ms(10); // 延时去抖
if(P3_1 == 0) // 再次判断按钮是否被按下
{
brightness--; // 减小亮度
}
}
delay_ms(10); // 延时等待
}
}
void delay_ms(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<1141;j++);
}
```
该代码使用 P3_0 和 P3_1 两个按钮来控制LED灯的亮度。当按下按钮1时,亮度会随着按下的次数增加,最大值为255;当按下按钮2时,亮度会随着按下的次数减小,最小值为0。在循环中不断地判断亮度值,如果亮度不为0,则点亮LED灯;如果亮度为0,则熄灭LED灯。同时,为了防止按钮被误触,还对按下按钮时进行了一定的延时去抖动处理。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)