C语言实现:按键3松开时,蜂鸣器响5声,以上均不支持连续触发,按键2按下时,一位静态数码管显示5,按键1按下时,实现自左向右流水灯;
时间: 2024-05-03 07:22:33 浏览: 126
```
#include <reg52.h>
sbit key1 = P3^0; // 按键1
sbit key2 = P3^1; // 按键2
sbit key3 = P3^2; // 按键3
sbit beep = P1^5; // 蜂鸣器
sbit dula = P2^6; // 数码管段选
sbit wela = P2^7; // 数码管位选
unsigned char code table[] = { // 数码管显示0-9的编码表
0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07, 0x7f, 0x6f
};
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for(i = t; i > 0; i--)
for(j = 110; j > 0; j--);
}
void display(unsigned char num) // 数码管显示函数
{
dula = 1; // 先关闭段选
P0 = table[num]; // 将编码表中对应的数码值送到P0口
dula = 0; // 再打开段选
}
void main()
{
unsigned char i, j;
while(1)
{
if(key1 == 0) // 按键1按下
{
for(i = 0; i < 8; i++) // 8位流水灯循环
{
P0 = 0xff; // 先全部熄灭
for(j = 0; j < 8; j++) // 逐个点亮
{
P0 &= ~(1 << j); // 点亮第j位
delay(50); // 延时一段时间
}
}
}
if(key2 == 0) // 按键2按下
{
display(5); // 数码管显示5
}
if(key3 == 1) // 按键3松开
{
for(i = 0; i < 5; i++) // 蜂鸣器响5声
{
beep = 0; // 发出蜂鸣器声音
delay(100); // 延时一段时间
beep = 1; // 停止蜂鸣器声音
delay(100); // 延时一段时间
}
}
}
}
```
阅读全文