用stc89c52rc型号单片机写一个数码管显示实验,要求开机,数码管从9开始计时,一秒钟减一,当计时到0时,蜂鸣器响3声的c语言代码
时间: 2023-06-05 12:04:42 浏览: 67
下面是 C 语言代码实现:
```c
#include <reg52.h>
sbit Buzzer = P2^3;
unsigned char code LED_Table[] = {
0xCE, // 0
0x84, // 1
0xDB, // 2
0xF3, // 3
0x67, // 4
0xB7, // 5
0xBF, // 6
0xE4, // 7
0xFF, // 8
0xF7, // 9
};
void display(unsigned char value) {
P0 = LED_Table[value];
}
void delay(unsigned int ms) {
unsigned int i, j;
for(i = ms; i > 0; i--) {
for(j = 110; j > 0; j--);
}
}
void main() {
unsigned char count = 9;
while(count > 0) {
display(count);
delay(1000);
count--;
}
Buzzer = 1;
delay(500);
Buzzer = 0;
delay(500);
Buzzer = 1;
delay(500);
Buzzer = 0;
delay(500);
Buzzer = 1;
delay(500);
Buzzer = 0;
while(1) {
display(count);
delay(1000);
if(count > 0) {
count--;
} else {
Buzzer = 1;
delay(150);
Buzzer = 0;
delay(150);
Buzzer = 1;
delay(150);
Buzzer = 0;
delay(150);
Buzzer = 1;
delay(150);
Buzzer = 0;
}
}
}
```
上面的代码使用了单片机 STC89C52RC,通过表格 LED_Table 将数字对应的数码管码值存储起来,通过 P0 端口输出数码管显示的内容,使用一个 while 循环在开机时进行倒数的操作,如果倒数到 0 时,则通过蜂鸣器响 3 声。之后进入一个死循环,每次显示计数值并减一,如果计数器为 0,则执行蜂鸣器响 3 声的操作。