#include
// 定义数码管段选引脚
sbit SEG_A = P2^0;
sbit SEG_B = P2^1;
sbit SEG_C = P2^2;
sbit SEG_D = P2^3;
sbit SEG_E = P2^4;
sbit SEG_F = P2^5;
sbit SEG_G = P2^6;
sbit SEG_DP = P2^7;
// 定义按键引脚
sbit KEY1 = P3^0;
// 假设只有一个按键,若多个按键可继续扩展
// 定义D1灯引脚
sbit D1 = P1^0;
// 定义蜂鸣器引脚
sbit Buzzer = P1^1;
// 数码管0 - 9的段码表
unsigned char code SEG_CODE[] = {
0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F
};
void delay(unsigned int time) {
unsigned int i, j;
for(i = 0; i < time; i++)
for(j = 0; j < 1275; j++);
}
void main() {
while(1) {
if(KEY1 == 0) { // 检测按键是否按下
delay(10); // 消抖
if(KEY1 == 0) {
// 点亮D1灯
D1 = ~D1;
// 蜂鸣器发声
Buzzer = 0;
delay(100);
Buzzer = 1;
// 数码管显示按键编号(假设这里是1,若多个按键需区分)
SEG_A = SEG_CODE[1] & 0x01;
SEG_B = (SEG_CODE[1] >> 1) & 0x01;
SEG_C = (SEG_CODE[1] >> 2) & 0x01;
SEG_D = (SEG_CODE[1] >> 3) & 0x01;
SEG_E = (SEG_CODE[1] >> 4) & 0x01;
SEG_F = (SEG_CODE[1] >> 5) & 0x01;
SEG_G = (SEG_CODE[1] >> 6) & 0x01;
SEG_DP = (SEG_CODE[1] >> 7) & 0x01;
while(!KEY1); // 等待按键释放
}
}
}
}
#include
sbit BEEP = P2^5; // 蜂鸣器
sbit D1 = P1^0; // LED
sbit KEY = P3^2; // 按键
void delay(unsigned int t) {
while(t--);
}
void main() {
while(1) {
if(!KEY) { // 检测按键按下
D1 = ~D1; // LED状态翻转
BEEP = 1; // 蜂鸣器响
delay(50000); // 延时控制“滴”声长度
BEEP = 0; // 关闭蜂鸣器
// 此处添加数码管显示代码(如P0 = 0x06;显示“1”)
}
}
}