生成c51语言代码:1、音乐盒上电数码管显示器自动显示P.。该音乐盒可以通过P1口的键盘选择曲目、切换曲目。该音乐盒可以通过P0口的数码管显示曲目编号2、按键能发出do,re,mi...P3口接蜂鸣器发声
时间: 2024-03-18 20:39:39 浏览: 22
请注意,以下代码仅供参考,实际应用中需要根据具体硬件配置和功能需求进行修改:
```c
#include <REGX51.H> // 8051单片机头文件
sbit P0_0 = P0^0; // 定义P0.0口
sbit P0_1 = P0^1; // 定义P0.1口
sbit P0_2 = P0^2; // 定义P0.2口
sbit P0_3 = P0^3; // 定义P0.3口
sbit P0_4 = P0^4; // 定义P0.4口
sbit P0_5 = P0^5; // 定义P0.5口
sbit P0_6 = P0^6; // 定义P0.6口
sbit P0_7 = P0^7; // 定义P0.7口
sbit P1_0 = P1^0; // 定义P1.0口
sbit P1_1 = P1^1; // 定义P1.1口
sbit P1_2 = P1^2; // 定义P1.2口
sbit P1_3 = P1^3; // 定义P1.3口
sbit P3_0 = P3^0; // 定义P3.0口
sbit P3_1 = P3^1; // 定义P3.1口
sbit P3_2 = P3^2; // 定义P3.2口
sbit P3_3 = P3^3; // 定义P3.3口
void delay(unsigned int time) // 延时函数
{
unsigned int i, j;
for (i = 0; i < time; i++)
for (j = 0; j < 125; j++);
}
void main()
{
unsigned char music_num = 1; // 初始曲目编号为1
P0 = 0; // P0口初始值为0
P1 = 0; // P1口初始值为0
P3 = 0; // P3口初始值为0
while (1)
{
// 数码管显示器自动显示P
P0_0 = 0;
P0_1 = 0;
P0_2 = 0;
P0_3 = 0;
P0_4 = 0;
P0_5 = 0;
P0_6 = 1;
P0_7 = 1;
// 通过P1口的键盘选择曲目、切换曲目
if (P1_0 == 0) // 如果P1.0口被按下
{
delay(5); // 延时去抖动
if (P1_0 == 0)
{
music_num--; // 曲目编号减1
if (music_num == 0) // 如果曲目编号为0,则重新从最大编号开始
music_num = 9;
}
}
else if (P1_1 == 0) // 如果P1.1口被按下
{
delay(5); // 延时去抖动
if (P1_1 == 0)
{
music_num++; // 曲目编号加1
if (music_num == 10) // 如果曲目编号超过最大编号,则重新从1开始
music_num = 1;
}
}
// 通过P0口的数码管显示曲目编号
switch (music_num)
{
case 1:
P0 = 0x3F; // 数码管显示1
break;
case 2:
P0 = 0x06; // 数码管显示2
break;
case 3:
P0 = 0x5B; // 数码管显示3
break;
case 4:
P0 = 0x4F; // 数码管显示4
break;
case 5:
P0 = 0x66; // 数码管显示5
break;
case 6:
P0 = 0x6D; // 数码管显示6
break;
case 7:
P0 = 0x7D; // 数码管显示7
break;
case 8:
P0 = 0x07; // 数码管显示8
break;
case 9:
P0 = 0x7F; // 数码管显示9
break;
}
// 按键能发出do,re,mi...P3口接蜂鸣器发声
if (P1_2 == 0) // 如果P1.2口被按下
{
P3_0 = 1; // P3.0口接蜂鸣器发声,发do
delay(500); // 延时一段时间
P3_0 = 0; // 停止发声
}
else if (P1_3 == 0) // 如果P1.3口被按下
{
P3_0 = 1; // P3.0口接蜂鸣器发声,发re
delay(500); // 延时一段时间
P3_0 = 0; // 停止发声
}
// 其他按键同理,可根据需要进行添加
}
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)