基于普中51单片机编写程序实现以下功能:8个发光管间隔200ms由左至右,再由右至左,每个发光二极管移动一次,蜂鸣器响一声,继电器接通一次,如此效果再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。闪烁时蜂鸣器响,继电器也接通。重复此过程。
时间: 2024-03-26 18:34:33 浏览: 21
以下是基于普中51单片机的程序实现:
```c
#include <reg51.h>
sbit Relay = P2^0; // 继电器
sbit Buzzer = P2^1; // 蜂鸣器
sbit LED1 = P1^0; // 发光管1
sbit LED2 = P1^1; // 发光管2
sbit LED3 = P1^2; // 发光管3
sbit LED4 = P1^3; // 发光管4
sbit LED5 = P1^4; // 发光管5
sbit LED6 = P1^5; // 发光管6
sbit LED7 = P1^6; // 发光管7
sbit LED8 = P1^7; // 发光管8
void Delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for(i=0; i<t; i++)
for(j=0; j<120; j++);
}
void LED_Move_Left_Right() // 由左至右再由右至左移动
{
unsigned char i, j;
for(j=0; j<2; j++) // 重复2次
{
for(i=1; i<8; i++) // 由左至右移动
{
switch(i)
{
case 1: LED1 = 1; break;
case 2: LED2 = 1; break;
case 3: LED3 = 1; break;
case 4: LED4 = 1; break;
case 5: LED5 = 1; break;
case 6: LED6 = 1; break;
case 7: LED7 = 1; break;
case 8: LED8 = 1; break;
}
Buzzer = 1; // 蜂鸣器响一声
Relay = 1; // 继电器接通一次
Delay(200);
LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = LED8 = 0; // 熄灭所有发光管
Buzzer = 0; // 蜂鸣器停止响
Relay = 0; // 继电器断开
Delay(200);
}
for(i=8; i>0; i--) // 由右至左移动
{
switch(i)
{
case 1: LED1 = 1; break;
case 2: LED2 = 1; break;
case 3: LED3 = 1; break;
case 4: LED4 = 1; break;
case 5: LED5 = 1; break;
case 6: LED6 = 1; break;
case 7: LED7 = 1; break;
case 8: LED8 = 1; break;
}
Buzzer = 1; // 蜂鸣器响一声
Relay = 1; // 继电器接通一次
Delay(200);
LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = LED8 = 0; // 熄灭所有发光管
Buzzer = 0; // 蜂鸣器停止响
Relay = 0; // 继电器断开
Delay(200);
}
}
}
void LED_Flash() // 全部熄灭再以300ms间隔全部闪烁5次
{
unsigned char i, j;
for(j=0; j<5; j++) // 闪烁5次
{
LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = LED8 = 1; // 全部点亮
Buzzer = 1; // 蜂鸣器响
Relay = 1; // 继电器接通
Delay(300);
LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = LED8 = 0; // 全部熄灭
Buzzer = 0; // 蜂鸣器停止响
Relay = 0; // 继电器断开
Delay(300);
}
}
void main()
{
while(1)
{
LED_Move_Left_Right(); // 8个发光管间隔200ms由左至右,再由右至左移动
LED_Flash(); // 全部熄灭再以300ms间隔全部闪烁5次
}
}
```
注意:该代码是基于普中51单片机实现的,如果您使用的是其他型号的单片机,需要相应地修改代码。另外,本程序中使用了P1口控制8个发光管,如果您使用的是共阴/共阳的发光管,请相应地修改代码中的赋值语句。