用52单片机,双向可控硅,过零检测,控制220v的灯泡实现8个亮度调节,运用两个按键,一个按键控制亮度增加,一个按键控制亮度减小的程序
时间: 2023-11-19 18:13:13 浏览: 39
以下是用52单片机,双向可控硅,过零检测,控制220v的灯泡实现8个亮度调节,运用两个按键,一个按键控制亮度增加,一个按键控制亮度减小的程序:
```
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ZC = P3^2; // 过零检测引脚
sbit SCR = P1^0; // 双向可控硅控制引脚
uchar count = 0; // 计数器,用于控制灯泡亮度
void delay(uint xms); // 延时函数
void init(); // 初始化函数
void main() {
init(); // 初始化
while(1) {
if (ZC == 0) { // 如果检测到过零
if (count < 8) { // 如果亮度还没有达到最大
SCR = 1; // 双向可控硅导通
delay(count + 1); // 延时的时间决定灯泡亮度
SCR = 0; // 双向可控硅截止
} else { // 如果亮度已经达到最大
SCR = 1; // 双向可控硅导通
delay(10); // 延时最大,灯泡亮度最高
SCR = 0; // 双向可控硅截止
}
}
}
}
void init() {
ZC = 1; // 过零检测引脚初始化为高电平
SCR = 0; // 双向可控硅控制引脚初始化为低电平
}
void delay(uint xms) {
uchar i, j;
for (i = xms; i > 0; i--)
for (j = 110; j > 0; j--);
}
```
接下来,我们需要添加按键控制功能。我们假设按键1(P3.3)是增加亮度的按键,按键2(P3.4)是减小亮度的按键。当按键1被按下时,计数器 count 的值加 1;当按键2 被按下时,计数器 count 的值减 1(如果计数器的值已经为 0,则不再减小)。修改后的程序如下:
```
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ZC = P3^2; // 过零检测引脚
sbit SCR = P1^0; // 双向可控硅控制引脚
sbit BTN1 = P3^3; // 按键1,用于增加亮度
sbit BTN2 = P3^4; // 按键2,用于减小亮度
uchar count = 0; // 计数器,用于控制灯泡亮度
void delay(uint xms); // 延时函数
void init(); // 初始化函数
void main() {
init(); // 初始化
while(1) {
if (BTN1 == 0) { // 如果按键1被按下
if (count < 8) // 如果亮度还没有达到最大
count++; // 计数器加 1
}
if (BTN2 == 0) { // 如果按键2被按下
if (count > 0) // 如果亮度还没有达到最小
count--; // 计数器减 1
}
if (ZC == 0) { // 如果检测到过零
if (count < 8) { // 如果亮度还没有达到最大
SCR = 1; // 双向可控硅导通
delay(count + 1); // 延时的时间决定灯泡亮度
SCR = 0; // 双向可控硅截止
} else { // 如果亮度已经达到最大
SCR = 1; // 双向可控硅导通
delay(10); // 延时最大,灯泡亮度最高
SCR = 0; // 双向可控硅截止
}
}
}
}
void init() {
ZC = 1; // 过零检测引脚初始化为高电平
SCR = 0; // 双向可控硅控制引脚初始化为低电平
}
void delay(uint xms) {
uchar i, j;
for (i = xms; i > 0; i--)
for (j = 110; j > 0; j--);
}
```
现在,我们可以通过按下按键1和按键2,来控制灯泡的亮度。当按键1被按下时,亮度会增加;当按键2被按下时,亮度会减小。计数器 count 的取值范围为 0 到 8,对应灯泡的亮度为最低到最高。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)