A. 怎么用单片机播放有人唱的音乐
我知道有几种方法。一是用单片机通过数模转换的方法播放音乐文件。如WAV格式文件。但可能要涉及WAV格式和读取外部数据(如SD卡)等问题。二是利用MP3播放专用单片机,如AT89C51SND1C来播放mp3格式的文件。三是可以利用音乐录放芯片来实现,如ISD4004系列单片语音录放电路或ZY1420B芯片来做。用单片机来控制ISD4004来录取或播放各种音乐。第三种方法比较容易实现,只要掌握了ISD4004的录放指令即可,语音数据的存储都存在该芯片内。不过我没实际做过,不能提供太具体的方法。你可以去查一下。
B. 请教做单片机作音频电平指示灯的原理及程序
设计思路:将声音输出的信号处理后输入到单片机,使用AD/DA转换或者TWI(12C )都可以(具体多看看相关单片机的手册),经单片机输出控制你的LED等就行。还有就是建议一下:学单片机不是用花多少钱的问题(理论上200元也够啦),关键是学习实践的问题,一定要多做实践,多试验,是反复辛苦实践的过程,钱不是关键啊!
C. 如何通过单片机读取音频并通过LED显示出来
用AD,然后自己做算法,驱动LED就可以了
D. 单片机怎么做一个录音,然后传数据到电脑或者手机上面的
单片机本身不能进行高速AD采集和大容量储存,需用专用的音频采集模块,数据要存到SD卡上 。并且单片机的传输要求比较高,最好用STM32单片机,上面有数字音频接口。可以参考野火或正点原子STM3F4开发板的相关教程。
E. 51单片机如何一边用蜂鸣器播放音乐,一边用LCD显示字符啊
看你的这个设计意图,好像是要设计一个能显示歌词的音频播放器。这样的东西,你可以这样考虑,每播放一个小节的谱子,然后给LCD送这一个段的歌词。顺便让整个屏幕的歌词移动一定的距离。这样要看具体的歌曲,你要仔细规划下歌词的显示次序。
对于51系列的单片机属于单cpu的器件。要实现这样的多任务,就是变播放变显示,只有一个办法,那就是分时复用。简单来说就是主要时间播放音乐,每一个小节的间隙给LCD送显示内容,然后立即又返回去播放音乐。。。如此循环。
如果是2个人合作的,那要不就弄2个51单片机。一个用来播放音乐,一个用来显示。2个之间可以通过串口共享数据资源。这样就相当于现在的双核的桌面PC/
F. 谁能给我介绍下 单片机音乐播放器 是怎么实现 播放音乐 功能的 其原理 重谢
电路连接很简单,我用的是P3.0端口接个蜂鸣器就可以了(你可以根据你的具体硬件连接去改下
音乐程序的设计原理和程序如下:
设计原理
⑴ 总体原理:
乐曲中不同的音符,实质就是不同频率的声音。通过单片机产生不同的频率的脉冲信号,经过放大电路,由蜂鸣器放出,就产生了美妙和谐的乐曲。
⑵ 单片机产生不同频率脉冲信号的原理:
1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期的时间再对I/O反相,就可以在I/O脚上得到此频率的脉冲。
2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法如下:
例如,频率为523Hz,其周期天/523 S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数956次时就将I/O反接,就可得到中音DO(532Hz)。
计数脉冲值与频率的关系公式如下:
N=Fi/2/Fr
(N:计数值,Fi:内部计时一次为1uS,故其频率为1MHz,Fr:要产生的频率 )
⑶ 其计数值的求法如下:
T=65536-N=65536-Fi/2/Fr
计算举例:
设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。
T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr
低音DO的T=65536-500000/262=63627
中音DO的T=65536-500000/523=64580
高音DO的T=65536-500000/1047=65059
⑷ C调个音符频率与计数值T的对照表如下表所示:
表9.1 C调各音符频率与计数值T的对照表
音符 频率(Hz) 简谱码T值 音符 频率(Hz) 简谱码T值
低1DO 262 63628 #4FA# 740 64860
#1DO# 277 63731 中5SO 784 64898
低2RE 294 63835 #5SO# 831 64923
#2RE# 311 63928 中6LA 880 64968
低3M 330 64103 #6 932 64994
低4FA 349 64103 中7SI 988 65030
#4FA# 370 64260 高1DO 1046 65058
低5SO 392 64260 #1DO# 1109 65085
#5SO# 415 64331 高2RE 1175 65110
低6LA 440 64400 #2RE# 1245 65124
#6 466 64463 高3M 1318 65157
低7SI 494 64524 高4FA 1397 65178
中1DO 523 64580 #4FA# 1480 65198
⑸ 每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。但如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。假设1/4节拍为1DELAY,则1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如下表为1/4和1/8节拍的时间设定。
表9.2 节拍码对照表
1/4节拍 1/8节拍
节拍码 节拍数 节拍码 节拍数
1 1/4拍 1 1/8拍
2 2/4拍 2 1/4拍
3 3/4拍 3 3/8拍
4 1拍 4 1/2拍
5 1又1/4拍 5 5/8拍
6 1又1/2拍 6 3/4拍
7 1又3/4拍 7 7/8拍
8 2拍 8 1拍
9 2又1/4拍 9 1又1/8拍
A 2又1/2拍 A 1又1/4拍
B 2又3/4拍 B 1又3/8拍
C 3拍 C 1又1/2拍
D 3又1/4拍 D 1又5/8拍
E 3又1/2拍 E 1又3/4拍
F 3又3/4拍 F 1又7/8拍
表9.3 各调节拍的时间设定表
1/4节拍 1/8节拍
曲调值 DELAY 曲调值 DELAY
调4/4 125毫秒 调4/4 62毫秒
调3/4 187毫秒 调3/4 94毫秒
调2/4 250毫秒 调2/4 125毫秒
⑹ 建立音乐的步骤:
1)先把吧乐谱的音符找出,然后由上表建立T值表的顺序。
2)把T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。
3)简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。
表9.4 简谱对应的简谱码、T值、节拍数
简谱 发音 简谱码 T值 节拍码 节拍数
5 低5SO 1 64260 1 1/4拍
6 低6LA 2 64400 2 2/4拍
7 低7SI 3 64524 3 3/4拍
1 中1DO 4 64580 4 1拍
2 中2RE 5 64684 5 1又1/4拍
3 中3M 6 64777 6 1又2/4拍
4 中4FA 7 64820 7 1又3/4拍
5 中5SO 8 64898 8 2拍
6 中6LA 9 64968 9 2又1/4拍
7 中7SI A 65030 A 2又2/4拍
1 高1DO B 65058 B 2又3/4拍
2 高2RE C 65110 C 3拍
3 高3M D 65157 D 3又1/4拍
4 高4FA E 65178 E 3又2/4拍
5 高5SO F 65217 F 3又3/4拍
不发音 0
1/4拍的延迟时间=187毫秒
DELAY: MOV R7,#2
D2: MOV R4,#187
D3: MOV R3,#248
DJNZ R3,$
DJNZ R4,D3
DJNZ R7,D2
RET
4.程序范例
ORG 0000H ;主程序起始地址
SJMP START ;跳至主程序
ORG 000BH ;TIMER0中断起 始地址
LJMP TIM0 ;跳至TIMER0中断子程序
START: MOV TMOD,#01H ;设T0在M1
MOV IE,#82H ;中断使能
START0:MOV 30H,#00 ;取简谱码指针
NEXT: MOV A,30H ;简谱码指针载入A
MOV DPTR,#TAB ;至TAB取简谱码
MOVC A,@A+DPTR ;
MOV R2,A ;渠道的简谱码暂存于R2
JZ END0 ;是否渠道00(结束码)
ANL A,#0FH ;不是,则取低4位(节拍码)
MOV R5,A ;将节拍码存入R5
MOV A,R2 ;将取到的简谱码再载入A
SWAP A ;高低4位交换
ANL A,#0FH ;取低4位(音符码)
JNZ SING ;取到的音符码是否为0?
CLR TR0 ;开始,则不发音
SJMP D1 ;跳至D1
SING: DEC A ;取到的音符码减1(不含0)
MOV 22H,A ;存入(22H)
RL A ;乘2
MOV DPTR,#TAB1 ;至TABLE1取相对的高位字节计数值
MOVC A,@A+DPTR ;
MOV TH0,A ;取到的高位字节存入TH0
MOV 21H,A ;取到的高位字节存入(21H)
MOV A,22H ;在载入取到的音符码
RL A ;乘2
INC A ;加1
MOVC A,@A+DPTR ;至TABLE1取相对的低位字节计数值
MOV TL0,A ;取到的低位字节存入TL0
MOV 20H,A ;取到的低位字节存入(20H)
SETB TR0 ;启动TIMER0
D1: LCALL DELAY ;其本单位时间1/4拍187毫秒
INC 30H ;取简谱码指针加1
JMP NEXT ;取下一个简谱码
END0: CLR TR0 ;停止TIMER0
JMP START0 ;重复循环
TIM0: PUSH ACC ;将A的值暂存于堆栈
PUSH PSW ;将PSW的值暂存于堆栈
MOV TL0,20H ;重设计数值
MOV TH0,21H ;
CPL P3.0 ;将P3.0位反相,控制蜂鸣器发声
POP PSW ;至堆栈取回PSW的值
POP ACC ;至堆栈取回A的值
RETI
DELAY:MOV R7,#02
D2: MOV R4,#187
D3: MOV R3,#248
DJNZ R3,$
DJNZ R4,D3
DJNZ R7,D2
RET
TAB1: ;决定节拍
DW 64260,64400,64521,64580
DW 64684,64777,64820,64898
DW 64968,65030,65058,65110
DW 65157,65178,65217
TAB: ;乐曲名称《梁祝》
DB 02H,82H,62H,52H,48H,02H,52H,32H,22H,18H
DB 83H,91H,72H,62H,51H,61H,71H,61H,83H,61H
DB 81H,51H,61H,71H,61H,51H,46H,82H,32H,52H
DB 22H,42H,16H,21H,41H,18H,0E4H,13H,21H,43H
DB 51H,21H,41H,12H,83H,81H,61H,81H,58H,53H
DB 61H,31H,22H,13H,21H,42H,52H,0E2H,42H,21H
DB 11H,91H,41H,18H,63H,81H,32H,52H,21H,41H,
DB 16H,0E4H,11H,21H,31H,51H,26H,11H,21H,43H
DB 51H,82H,62H,52H,61H,51H,42H,21H,11H,0E4H
DB 44H,21H,41H,21H,11H,0E1H,11H,21H,41H,18H
DB 61H,81H,51H,61H,51H,41H,32H,21H,41H,18H
DB 08H,0H,04H ;曲子最后静音5拍长的时间
DB 00H ;乐曲结束
END
G. 如何用51单片机实现音频信号的频谱显示(在LCD上显示)
12864可以作为显示器件
频谱分析涉及到FFT,如果你这个不会,那还是再学习学习吧。
简单原理: 通过快速FFT将音频分析成多个正弦波的组合,正弦波的频率就是高音低音,振幅就是音量的大小。
FFT运算量比较大,普通51难以接受,要选用1T的高速51,
声音信号要通过ad进行采样,然后将其进行分析,所以要选用一个精度高速度快的ad,一般高档51中ad可以胜任这个工作
声音信号在ad采样之前需要调整成合适振幅的信号
H. 怎么用单片机编写音乐程序
单片机比如51系列都有定时器,因此可以利用它来控制扬声器按一定频率发声,以下就是一个例程,用按键的按下和抬起来模拟电子琴的控制程序。
T0H EQU 30H
T0L EQU 31H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#01H
SETB ET0
SETB EA
LOOP:
MOV DPTR,#FREQ
MOV A,P2 ;控制高中低音区
MOV R1,#0
ANL A,#03H
JB ACC.0,LOOP01
MOV R1,#14
SJMP LOOP0
LOOP01:
JB ACC.1,LOOP0
MOV R1,#28
LOOP0:
JB P0.0,LOOP1 ;控制音频1234567
MOV A,R1
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP1:
JB P0.1,LOOP2
MOV A,R1
ADD A,#2
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#2
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP2:
JB P0.2,LOOP3
MOV A,R1
ADD A,#4
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#4
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP3:
JB P0.3,LOOP4
MOV A,R1
ADD A,#6
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#6
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP4:
JB P0.4,LOOP5
MOV A,R1
ADD A,#8
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#8
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP5:
JB P0.5,LOOP6
MOV A,R1
ADD A,#10
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#10
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP6:
JB P0.6,LOOP7
MOV A,R1
ADD A,#12
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#12
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP7:
CLR TR0
LJMP LOOP
;-----------------------------
T0ISR:
CLR TR0
MOV TH0,T0H
MOV TL0,T0L
SETB TR0
CPL P3.0
RETI
;-----------------------------
FREQ:
DB 0F2H,03DH ;低音1
DB 0F3H,0BDH ;低音2
DB 0F5H,014H ;低音3
DB 0F5H,0B1H ;低音4
DB 0F6H,0D0H ;低音5
DB 0F7H,0D1H ;低音6
DB 0F8H,0B5H ;低音7
DB 0F9H,01EH ;中音1
DB 0F9H,0DEH ;中音2
DB 0FAH,08AH ;中音3
DB 0FAH,0D8H ;中音4
DB 0FBH,068H ;中音5
DB 0FBH,0E8H ;中音6
DB 0FCH,05AH ;中音7
DB 0FCH,08FH ;高音1
DB 0FCH,0EFH ;高音2
DB 0FDH,045H ;高音3
DB 0FDH,06CH ;高音4
DB 0FDH,0B4H ;高音5
DB 0FDH,0F4H ;高音6
DB 0FEH,029H ;高音7
;-----------------------------
END