gpt4 book ai didi

c - 根据图片 18f4550 的位值发音颜色

转载 作者:行者123 更新时间:2023-11-30 21:45:49 25 4
gpt4 key购买 nike

更新2

我想制作一个可以在我的图片18f4550上播放声音(可以说红色、绿色和蓝色)的程序,有一个扬声器连接到picdem,该部分工作正常,我用微芯片版本6.83编写了以下程序使用 C 编译器。

当我说红色时(这有一个位模式),我需要检索 .wav 文件的位值。我的正确问题是,如何获取 .wav 文件的位值。

void main (void)
{

TRISD = 0x00; // PORTD als uitgang
TRISB = 0b00110000; // RB4 en RB5 als ingang
TRISA = 0x00; // RA output

RCONbits.IPEN = 0; // interrupts
INTCONbits.GIE = 1;
INTCONbits.RBIE = 1;

while(1)
{
_asm sleep _endasm
}
}

#pragma interrupt ISR
void ISR (void)
{
int red[] = {bit values off sound red???};
int blue[] = {bit values off sound green???};
int green[] = {bit values off sound blue???};


if (INTCONbits.RBIF==1)
{
if(PORTBbits.RB5==0) // S3 pressed?
{
int i = 0;
int b;
do {
LATAbits.LATA2 = rood[i];
LATDbits.LATD1 ^= 1;
b = 0;

//do-while voor de frequentie (1500 is de freq)
do {
b++;
}while(b <= 2000);

i++;
}while(rood[i] <= 50);

//LATDbits.LATD1 ^= 1; // D2 togglen

}

}
INTCONbits.RBIF = 0;
}

最佳答案

原始问题的答案:你要求的“红色频率,以位表示”是480到405太赫兹,所以以位为单位是111100000到110010101。但你也说“它以纳米定义”,所以这是630到740nm,即1001110110到1011100100以二进制形式。如果您想用波形驱动扬声器,您需要样本音频波形或语音合成芯片。无论哪种情况,我给你的二进制值都与“红色”一词的声音无关,这需要更多的位来表示任何可听声音(例如,16 kbps PCM 下至少 0.5 秒将是 8 kbp = 1 KB)。

另一种用二进制表示颜色的方法是 RGB 系统,其中红色为 0xFF0000,二进制表示为 111111110000000000000000。

回答有关如何获取 wav 文件中的位的问题首先我们必须确定 wav 文件的存储位置。它可以作为 const 数组存储在 PIC 中,或者存储在外部存储设备中,您必须通过某种串行或并行总线读取它。由于 PIC18F4550 有 32k 字节的闪存,如果您的程序相当小,则可能有足够的空间容纳 3 个 wav 文件。

然后我们必须确定硬件将如何播放声音。您似乎试图通过移位将字节值从位端口发送出去。但为了做到这一点,我们需要更多地了解硬件,因为您无法将扬声器连接到位端口并期望发出声音(无论如何都不能不进一步处理 PCM 信号 - 您是否正在尝试 1 bit DAC 设计?如果是这样,有 further notes here 但这是相当雄心勃勃的)。

除此之外,wav 文件中的位值可以通过获取文件中的每个样本(8 位?)并使用按位 AND 运算将掩码值 0x01 进行移位来确定设置了哪些位。

关于c - 根据图片 18f4550 的位值发音颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5859877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com