找回密码
 立即注册
查看: 107|回复: 9

蜂鸣器程序《生日快乐歌》编译完成,烧录后没有音乐,原因?

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:175
  • 最近打卡:2025-06-28 07:19:36
已绑定手机

115

主题

392

回帖

549

积分

高级会员

积分
549
发表于 2025-6-16 16:45:03 | 显示全部楼层 |阅读模式
C语言.rar (32.11 KB, 下载次数: 10)

蜂鸣器程序《生日快乐歌》编译完成,烧录后没有音乐,原因?
回复

使用道具 举报 送花

3

主题

540

回帖

-209

积分

等待验证会员

积分
-209
发表于 2025-6-16 17:08:00 | 显示全部楼层
蜂鸣器程序《生日快乐歌》编译完成后,烧录后仍然无法播放,这通常与软件或硬件问题有关。以下是可能的原因:

1. 驱动程序缺失或异常:检查蜂鸣器的驱动程序,确保它们是最新和正常的。如果驱动程序异常或不存在,需删除或更新。

2. 软件兼容性问题:检查《生日快乐歌》的版本与蜂鸣器的兼容性。如果版本不兼容,可能需要调整软件或使用其他工具。

3. 歌曲结构问题:检查《生日快乐歌》的结构文件(如.cool或.coolct)是否正确,是否包含所有必要的数据。缺失或错误的结构文件可能导致程序无法识别歌曲。

4. 驱动程序驱动项缺失:检查蜂鸣器的驱动项,确保它们在编译时被正确识别和安装。如果驱动项缺失,需重新安装蜂鸣器。

5. 备份问题:备份《生日快乐歌》的文件,确保在烧录时有备份,以防烧录过程中丢失数据。

6. 硬件问题:检查蜂鸣器的硬件配置,如电源、固件、驱动器等,确保正常工作。如果硬件存在问题,烧录可能无法正常运行。

7. 软件更新不及时:确保蜂鸣器和《生日快乐歌》软件已经进行了更新,以修复已知的兼容性问题。

8. 网络问题:如果使用网络播放,检查网络连接和服务器状态,确保网络正常。

9. 系统兼容性问题:检查蜂鸣器的驱动程序与系统兼容性,确保它们在当前系统中能够正常工作。

10. 驱动程序驱动项未安装:检查蜂鸣器的驱动项,确保它们在编译时被正确安装。

在解决问题之前,建议重新安装蜂鸣器,检查驱动程序和软件的兼容性,并确保所有驱动项和结构文件正确安装。如果问题仍未解决,可能需要进一步的检查和更新。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:578
  • 最近打卡:2025-06-28 00:12:02

11

主题

1203

回帖

5588

积分

论坛元老

积分
5588
发表于 2025-6-16 21:23:44 | 显示全部楼层
什么宏定义来的?
#define GPIO_P5_0 (*(volatile unsigned char *)0x1234)


void main() {
       
    unsigned int i;
       
    while(1) {
        for(i = 0; i < sizeof(song) / sizeof(song[0]); i++) {
            play_note(song[i], song_duration[i]);
        }
        delay_ms(2000); // 歌曲播放完后停顿2秒
    }
}

没有配置IO口。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:175
  • 最近打卡:2025-06-28 07:19:36
已绑定手机

115

主题

392

回帖

549

积分

高级会员

积分
549
发表于 2025-6-17 05:41:10 | 显示全部楼层
angm*** 发表于 2025-6-16 21:23
什么宏定义来的?
#define GPIO_P5_0 (*(volatile unsigned char *)0x1234)

IO口如何设置啊?p5.0比p2.0声音大,
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:175
  • 最近打卡:2025-06-28 07:19:36
已绑定手机

115

主题

392

回帖

549

积分

高级会员

积分
549
发表于 2025-6-17 11:27:15 | 显示全部楼层
angm*** 发表于 2025-6-16 21:23
什么宏定义来的?
#define GPIO_P5_0 (*(volatile unsigned char *)0x1234)

百思不得解
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:578
  • 最近打卡:2025-06-28 00:12:02

11

主题

1203

回帖

5588

积分

论坛元老

积分
5588
发表于 2025-6-17 11:43:25 | 显示全部楼层
注意:实际地址和位定义请以AI8051U官方手册为准!
0x1234仅为示例,不可直接使用。

截图202506171143018835.jpg

#define GPIO_P5 (*(volatile unsigned char *)0x00C8)
sbit GPIO_P5_0 = GPIO_P5^0;


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:578
  • 最近打卡:2025-06-28 00:12:02

11

主题

1203

回帖

5588

积分

论坛元老

积分
5588
发表于 2025-6-17 12:30:03 | 显示全部楼层

知其然,知其所以然,知何由以知其所以然
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:175
  • 最近打卡:2025-06-28 07:19:36
已绑定手机

115

主题

392

回帖

549

积分

高级会员

积分
549
发表于 2025-6-18 06:51:53 | 显示全部楼层
angm*** 发表于 2025-6-17 12:30
知其然,知其所以然,知何由以知其所以然

Rebuild target 'Sample'
compiling main.c...
linking...
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
    NAME:    setup/main
Program Size: data=8.0 edata+hdata=258 xdata=0 const=50 code=492
creating hex file from "sample"...
"sample" - 0 Error(s), 1 Warning(s).
Build Time Elapsed:  00:00:01  这怎么解?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:578
  • 最近打卡:2025-06-28 00:12:02

11

主题

1203

回帖

5588

积分

论坛元老

积分
5588
发表于 2025-6-18 13:05:46 | 显示全部楼层
不知道你改成什么样子。


给你一个已知能用的程序。

/*************  功能说明    **************

本例程基于AI8051U为主控芯片的实验箱进行编写测试.

使用Keil C251编译器,Memory Model推荐设置XSmall模式,默认定义变量在edata,单时钟存取访问速度快。

edata建议保留1K给堆栈使用,空间不够时可将大数组、不常用变量加xdata关键字定义到xdata空间。

下载时, 选择时钟 24MHZ (用户可自行修改频率).

******************************************/


#include "AI8051U.h"
#include "stdio.h"
#include "intrins.h"

// 定义 GPIO_P5_0 宏
//#define GPIO_P5_0 (*(volatile unsigned char *)0x1234)
#define GPIO_P5 (*(volatile unsigned char *)0x00C8)
sbit GPIO_P5_0 = GPIO_P5^0;

//#define  GPIO_P5_0 P50

typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;

u8 code LED[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

#define MAIN_Fosc       24000000UL
#define Timer0_Reload   (65536UL - (MAIN_Fosc / 1000))  // Timer 0 中断频率, 1000次/秒

// 定义延时函数
void delay_ms(unsigned int ms) {
        unsigned int i;
        do{
//          i=MAIN_Fosc/96000L;                //STC89/90_12T
//          i=MAIN_Fosc/48000L;                //STC89/90_6T
//          i=MAIN_Fosc/14000;                //STC11、STC12
//          i=MAIN_Fosc/13000;                //STC15  14T per loop
//            i=MAIN_Fosc/10000;                //STC8 10T per loop
              i=MAIN_Fosc/6030;                 //STC32 6T per loop
                while(--i);
        }while(--ms);
       
}

// 生日快乐歌音符序列
u8 code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,
        212,212,106,126,159,169,190,119,119,126,159,142,159,0};
u8 code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,
        9,3,12,12,12,12,12,9,3,12,12,12,24,0};

//控制音频、节拍函数
void PlayMusic()
{
        u16 i=0,j,k;
        u8 a=0;
        while(SONG_LONG[ i]!=0||SONG_TONE[ i]!=0)
        {   
                for(j=0;j<SONG_LONG[ i]*40;j++)  //播放各个音符,SONG_LONG 为拍子长度
                {
                        GPIO_P5_0=~GPIO_P5_0;
                        for(k=0;k<SONG_TONE[ i]*7;k++);//SONG_TONE 延时表决定了每个音符的频率

                }
                P0=LED[a];
                 a++;
                if(a==8)
                      {a=0;}                       
                delay_ms(10);
                i++;
        }
}

void main() {
       
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    P0M1 = 0x00;   P0M0 = 0xff;   //设置为推挽输出
    P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口       
          P5M0 = 0x01; P5M1 = 0x00; // 设置P5.0为推挽输出
          GPIO_P5_0 = 0;
    P40 = 0;                //LED Power On
       
    while(1) {
                                PlayMusic(); //播放生日快乐
        delay_ms(3000); // 歌曲播放完后停顿2秒
    }
}


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:175
  • 最近打卡:2025-06-28 07:19:36
已绑定手机

115

主题

392

回帖

549

积分

高级会员

积分
549
发表于 2025-6-19 13:28:37 | 显示全部楼层
angm*** 发表于 2025-6-17 11:43
注意:实际地址和位定义请以AI8051U官方手册为准!
0x1234仅为示例,不可直接使用。

已经按大佬的方式修改,可还是没有音乐,震动都没有,迷惑啊,
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-28 17:41 , Processed in 0.151529 second(s), 103 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表