首页 > 算法 > 神经网络 > 单片机音乐 一个节拍多少毫秒,单片机中1秒延时多少毫秒

单片机音乐 一个节拍多少毫秒,单片机中1秒延时多少毫秒

来源:整理 时间:2023-04-16 07:47:16 编辑:亚灵电子网 手机版

本文目录一览

1,单片机中1秒延时多少毫秒

就是1000毫秒 查看更多答案>>
就是1000毫秒

单片机中1秒延时多少毫秒

2,在单片机中怎么确定音乐节拍

定时器控制发音频率,来实现高中低音。 节拍就是你要发出什么声音,
这种LED随音乐闪烁,效果上类似于音响设备的电平指示器。电路很多,可用分立元件,也可用现成的IC,如日本东芝公司早期的TA7666B等,如图所示:此图可接21只LED,排成往两边闪的效果,中间一只LED长亮,作为电源指示。输入端接音频信号,信号弱,LED闪的少,信号强,LED闪的多,直至闪到头。

在单片机中怎么确定音乐节拍

3,用单片机蜂鸣器做音乐

蜂鸣器不能输出音乐的!你要接个喇叭才行,我试过的。 我是一楼,给你个频率表http://www.mirle.com.tw/big%205/p2_controllers/manual/SC/006.pdf自己编吧,不难,定时中断就行了。
看起来数组应该是音乐数据,其中包括四种数据,就是休止符(每个100毫秒)、歌曲结束符、音阶(给出的是蜂鸣器的震荡周期)、一个音阶持续的时间长度。如果你的晶振是12mhz,按照定时器中断给count加一来看,音阶持续的时间应该是以10毫秒为单位。 play_song函数要求给出参数i,我的看法是这个i是指要播放第几段乐曲,i*217表示每段乐曲都是217个字节。本例中,数组只给出217个字节,所以只有一段乐曲,播放时需要给出参数i=0. if ( temp1 == 0xff ) //休止符 tr0 = 0; delay_xms(100); } 所以休止符每个固定是100毫秒。 如果读到第一个不是休止符或者结束符的字节,那就是音阶,而下一个字节就是这个音阶的长度或者说节拍 while(1) fmq = ~fmq; delay_xms(temp1); if ( temp2 == count ) count = 0; break; } } 这一段是说,如果当前音阶的时间(temp2次定时器中断,由count计时)还没完,就每隔temp1毫秒震动一次蜂鸣器,就形成一个震动频率,这段时间就发出一定音调的乐音。不过我也有疑惑,震荡周期如果以毫秒为单位恐怕只能发出次声波,所以以上对有关delay_xms函数时间的估算都可能有问题,还得看delay_xms函数的具体定义才行。
用PWM做DA输出,就是控制占空比,音阶是怎么样子的,没有做过,自己研究研究把,输出不同的占空比试试看
蜂鸣器可以是可以的,但声音很难听的音质太差的
买 的 实验板 有 例程 吧祝你顺利

用单片机蜂鸣器做音乐

4,单片机push acc和pop acc是什么意思

PUSH是压栈命令,POP是出栈命令。单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也是最小的。芯片本身是按工业测控环境要求设计的,内部布线很短,其抗工业噪音性能优于一般通用的CPU。单片机程序指令,常数及表格等固化在ROM中不易破坏,许多信号通道均在一个芯片内,故可靠性高。特征:(1)单片机的体积比较小, 内部芯片作为计算机系统,其结构简单,但是功能完善,使用起来十分方便,可以模块化应用。(2)单片机有着较高的集成度,可靠性比较强,即使单片机处于长时间的工作也不会存在故障问题。(3) 单片机在应用时低电压、低能耗,是人们在日常生活中的首要选择, 为生产与研发提供便利。(4)单片机对数据的处理能力和运算能力较强,可以在各种环境中应用,且有着较强的控制能力。以上内容参考:百度百科-单片机
PUSH是压栈命令,POP是出栈命令。单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也是最小的。芯片本身是按工业测控环境要求设计的,内部布线很短,其抗工业噪音性能优于一般通用的CPU。单片机程序指令,常数及表格等固化在ROM中不易破坏,许多信号通道均在一个芯片内,故可靠性高。单片机使用注意事项频繁插拔电时,PIC单片机容易死机。用一个10K电阻并在LM7805的5V输出端到地。单片机的复位端的电容不能太大。一般在单片机的数据手册(Datasheet)中都会提到该单片机需要的复位信号的要求。一般复位信号的宽度应为。复位电平的宽度和幅度都应满足芯片的要求,并且要求保持稳定。还有特别重要的一点就是复位电平应与电源上电在同一时刻发生,即芯片一上电,复位信号就已产生。以上内容参考 百度百科-单片机
栈先进后出的结构第一行:A=50H第二行:B=77H第三行:设SP=20H 此时SP=SP+1=21H (21H)=A=50H第四行:SP=SP+1=22H (22H)=B=77H第五行:A=(22H)=50H SP=SP-1=21H第六行:B=(21H)=77H SP=SP-1=20H代码的整体意思就是将A和B的值交换
PUSH是压栈命令,POP是出栈命令栈是一种先进后出的数据结构。当执行push acc时,会根据sp寄存器的值,将数据存入RAM,然后对SP执行加1操作。假设SP=08H第3行:push acc可以看做:08H=ACC=#50HSP=SP+1=09H第4行:push B09H=B=#77HSP=SP+1=0AH第5行:pop ACCSP=SP-1=09HACC=09H=#77H同理B=#50h
第一行:A=50H第二行:B=77H第三行:设SP=20H 此时SP=SP+1=21H (21H)=A=50H第四行:SP=SP+1=22H (22H)=B=77H第五行:A=(22H)=77H SP=SP-1=21H第六行:B=(21H)=50H SP=SP-1=20H
难道你一点儿不懂汇编? push dph 是将原dph中的数据压进堆栈缓存。 push acc 是将堆栈中的数据送回到acc寄存器。 在程序嵌套调用过程或者中断处理过程中,进行的变量缓存、备份操作。 随便找一本教材看看堆栈那一章!

5,单片机c语言设计音乐播放器节拍和音符频率怎么计算

将51单片机的P1.2口连接到蜂鸣器的一个管脚上,另外一个管脚接地。若声音小,则添加一个三级管放大电路或直接串一个UL2003/*------------------------------------------------*/includelt;reg52.h; //包含头文件,一般情况不需要改动?//头文件包含特殊功能寄存器的定义/*------------------------------------------------硬件端口定义------------------------------------------------*/sbit SPK=P1^2; //定义音乐输出端口unsigned char Timer0_H,Timer0_L,Time;//世上只有妈妈好数据表code unsigned char MUSIC[]=6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0 };// 音阶频率表 定时器高八位code unsigned char FREQH[]=0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ;// 音阶频率表 定时器低八位code unsigned char FREQL[]=0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};/*------------------------------------------------uS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编,大致延时长度如下 T=tx2+5 uS ------------------------------------------------*/void DelayUs2x(unsigned char t)while(--t);}/*------------------------------------------------mS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/void DelayMs(unsigned char t)while(t--)//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------节拍延时函数各调1/4节拍时间:调4/4 125ms调2/4 250ms调3/4 187ms------------------------------------------------*/void delay(unsigned char t)unsigned char i;for(i=0;ilt;t;i++)DelayMs(250);TR0=0;}/*------------------------------------------------定时器0中断------------------------------------------------*/void TIM0_ISR() interrupt 1TR0=0; SPK=!SPK;TH0=Timer0_H;TL0=Timer0_L;TR0=1;}/*------------------------------------------------歌曲处理函数------------------------------------------------*/void Song()TH0=Timer0_H;//赋值定时器时间,决定频率TL0=Timer0_L;TR0=1; //打开定时器delay(Time); //延时所需要的节拍 }/*------------------------------------------------主函数------------------------------------------------*/void main(void)unsigned char k,i;TMOD=0x01; //置定时器0工作方式1EA=1; //打开全局中断ET0=1; //打开定时0中断while(1)i=0; while(ilt;100)k=MUSIC[i]+7*MUSIC[i+1]-1;//去音符振荡频率所需数据Timer0_H=FREQH[k];Timer0_L=FREQL[k];Time=MUSIC[i+2]; //节拍时长i=i+3;Song();}} }

6,单片机 音乐盒

//此程序在硬件上调试通过//本程序的单片机晶振采用11.0592M#include <reg51.h>sbit speaker=P2^3; unsigned char timer0h,timer0l,time; //世上只有妈妈好数据表code unsigned char sszymmh[]= 6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1, 6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0 }; // 音阶频率表 高八位code unsigned char FREQH[]= 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, } ; // 音阶频率表 低八位code unsigned char FREQL[]= 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, };void delay(unsigned char t) unsigned char t1; unsigned long t2; for(t1=0;t1<t;t1++) for(t2=0;t2<8000;t2++) ; } } TR0=0; }void t0int() interrupt 1 TR0=0; speaker=!speaker; TH0=timer0h; TL0=timer0l; TR0=1; }void song() TH0=timer0h; TL0=timer0l; TR0=1; delay(time); } void main(void) unsigned char k,i; TMOD=1; //置CT0定时工作方式1 EA=1; ET0=1;//IE=0x82 //CPU开中断,CT0开中断 while(1) i=0; while(i<100) k=sszymmh[i]+7*sszymmh[i+1]-1; timer0h=FREQH[k]; timer0l=FREQL[k]; time=sszymmh[i+2]; i=i+3; song(); } } } 还有不明白的话,我推荐你去这里看看别人怎么做: http://hjdz.5d6d.com/
; 蜂鸣器唱《祝你平安》 * ; *;********************************************************************************/SPK bit P2.3 ORG 0000H LJMP START ORG 000BH INC 20H ;中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH ;12M晶振,形成10毫秒中断 RETI START: MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82HMUSIC0: NOP MOV DPTR,#DAT ;表头地址送DPTR MOV 20H,#00H ;中断计数器清0 MOV B,#00H ;表序号清0MUSIC1: NOP CLR A MOVC A,@A+DPTR ;查表取代码 JZ END0 ;是00H,则结束 CJNE A,#0FFH,MUSIC5 LJMP MUSIC3MUSIC5: NOP MOV R6,A INC DPTR MOV A,B MOVC A,@A+DPTR ;取节拍代码送R7 MOV R7,A SETB TR0 ;启动计数MUSIC2: NOP CPL SPK MOV A,R6 MOV R3,A LCALL DEL MOV A,R7 CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否?;不等,则继续循环 MOV 20H,#00H ;等于,则取下一代码 INC DPTR; INC B LJMP MUSIC1MUSIC3: NOP CLR TR0 ;休止100毫秒 MOV R2,#0DHMUSIC4: NOP MOV R3,#0FFH LCALL DEL DJNZ R2,MUSIC4 INC DPTR LJMP MUSIC1END0: NOP MOV R2,#64H ;歌曲结束,延时1秒后继续MUSIC6: MOV R3,#00H LCALL DEL DJNZ R2,MUSIC6 LJMP MUSIC0DEL: NOPDEL3: MOV R4,#02HDEL4: NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RET NOPDAT:db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20hdb 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20hdb 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20hdb 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20hdb 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10hdb 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20hdb 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20hdb 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20hdb 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10hdb 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80hdb 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20hdb 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20hdb 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10hdb 20h,10h,2bh,10h,26h,30h,30h,80h,00H END

7,关于单片机控制音乐程序的问题C语言

/************************************************************************ [文件名] C51音乐程序(八月桂花) [功能] 通过单片机演奏音乐 插上跳线帽 J9/**********************************************************************/ #include <REG52.H> #include <INTRINS.H> //关于如何编制音乐代码, 其实十分简单,各位可以看以下代码. //频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍; //所以拿出谱子, 试探编吧! sbit Beep = P3^6 ; unsigned char n=0; //n为节拍常数变量 unsigned char code music_tab[] =0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数, 0x20, 0x40, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x10, 0x1C, 0x10, 0x18 , 0x40, 0x1C, 0x20, 0x20 , 0x20, 0x1C, 0x20, 0x18 , 0x20, 0x20, 0x80, 0xFF , 0x20, 0x30, 0x1C, 0x10 , 0x18, 0x20, 0x15, 0x20 , 0x1C, 0x20, 0x20, 0x20 , 0x26, 0x40, 0x20, 0x20 , 0x2B, 0x20, 0x26, 0x20 , 0x20, 0x20, 0x30, 0x80 , 0xFF, 0x20, 0x20, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x20, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x30, 0x1C , 0x10, 0x18, 0x20, 0x15 , 0x20, 0x1C, 0x20, 0x20 , 0x20, 0x26, 0x40, 0x20 , 0x20, 0x2B, 0x20, 0x26 , 0x20, 0x20, 0x20, 0x30 , 0x80, 0x20, 0x30, 0x1C , 0x10, 0x20, 0x10, 0x1C , 0x10, 0x20, 0x20, 0x26 , 0x20, 0x2B, 0x20, 0x30 , 0x20, 0x2B, 0x40, 0x20 , 0x15, 0x1F, 0x05, 0x20 , 0x10, 0x1C, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x30, 0x1C , 0x10, 0x18, 0x20, 0x15 , 0x20, 0x1C, 0x20, 0x20 , 0x20, 0x26, 0x40, 0x20 , 0x20, 0x2B, 0x20, 0x26 , 0x20, 0x20, 0x20, 0x30 , 0x30, 0x20, 0x30, 0x1C , 0x10, 0x18, 0x40, 0x1C , 0x20, 0x20, 0x20, 0x26 , 0x40, 0x13, 0x60, 0x18 , 0x20, 0x15, 0x40, 0x13 , 0x40, 0x18, 0x80, 0x00 }; void int0() interrupt 1 //采用中断0 控制节拍 TL0=0xef; n--; } void delay (unsigned char m) //控制频率延时 unsigned i=3*m; while(--i); } void delayms(unsigned char a) //豪秒延时子程序 while(--a); //采用while(--a) 不要采用while(a--); 各位可编译一下看看汇编结果就知道了! } void main() unsigned char i=0; TMOD&=0x0f; TMOD|=0x01; TH0=0xd8;TL0=0xef; IE=0x82; play: while(1) a: p=music_tab[i]; if(p==0x00) else if(p==0xff) else TR0=1; //开定时器1 while(n!=0) Beep=~Beep,delay(m); //等待节拍完成, 通过P1口输出音频(可多声道哦!) TR0=0; //关定时器1 } }
单片机是用汇编 语言 编写程序的 谢谢
/*因为不知道你的意思是间隔30秒后p1口输出10秒,即循环总时间是40秒,还是循环总时间共30秒,即输出10秒包含在30秒内,所以以下程序有可能需要你稍作改动*/ /********************************************************************** 函数功能: 单位为1毫秒延迟函数 入口参数: wtime: 延迟wtime毫秒 出口参数: 无 ***********************************************************************/ void delay(word wtime) { dword dwtime; for (; wtime!=0; wtime--) { for (dwtime=20; dwtime!=0; dwtime--); } } /********************************************************************** 函数功能: 主函数 入口参数: 无 出口参数: 无 ***********************************************************************/ void main() { while(1) { delay(20000);/*等待20秒,这里是两次高电平的间隔时间,如果是30秒那么把它改成30000*/ p1=3;/*p1口输出*/ delay(10000);/*等待10秒*/ } }
文章TAG:单片机音乐单片机音乐一个

最近更新

  • 470d多少pin电源线,蓝宝石470d要用多大的电源470d多少pin电源线,蓝宝石470d要用多大的电源

    蓝宝石470d要用多大的电源满载达到208w电源必需额定450W2,rx480用的是多少pin的电源接口Rx480是单6pin供电单6pin电源接口啊,上面有些啊,看显卡接口旁边也可以看到的。3,买了块470d显卡发.....

    神经网络 日期:2024-04-11

  • 5532 前置电路图,ne5532预调谐电路图5532 前置电路图,ne5532预调谐电路图

    使用功率放大器电路的前一级,时基电路可以用作振荡器或延迟电路,但不能用作放大器电路。音色和音调电路可以从无线电杂志中的演示电路中选择,它们可以由正负电源供电-或者所有电路都可以.....

    神经网络 日期:2024-04-10

  • 电平变换电路,2/4电平转换电平变换电路,2/4电平转换

    连接:CMOS电路和TTL电路可以通过电平转换来匹配它们的电平域值。电平转换,完整的MOS晶体管双向电平转换电路如下图所示,在I中经常使用,输出高压低于电源电压,本电路适用于UART/USART串行端.....

    神经网络 日期:2024-04-10

  • 相机电路知识,摄像机电路相机电路知识,摄像机电路

    否则,可能会导致摄像头电路短路。根据驱动电路的相数,驱动电路可分为单相、两相和三相,数码相机镜头保养知识镜头是数码相机的重要组成部分,电路通电后,超声波电机目前将采用两相输入,当被触.....

    神经网络 日期:2024-04-10

  • 电网电压波动导致跳闸,电压波动导致跳闸电网电压波动导致跳闸,电压波动导致跳闸

    过电压:电路中的过电压可能导致跳闸保护,这可能是由电网电压波动或雷电引起的。在此期间,用电量较小时电网电压会升高,不良线路或电器的回波电压会升高并泄漏,微动开关启动器插在电源上不.....

    神经网络 日期:2024-04-09

  • 电动转向电路图,单相电机正反转电路图电动转向电路图,单相电机正反转电路图

    电动机根据不同的电源分为DC电动机和交流电动机,电力系统中的大多数电动机是交流电动机。参考电路图(如图所示,电机在规定时间范围内连续可逆正反转运行的自动控制电路,能让马达反转,电机正.....

    神经网络 日期:2024-04-09

  • 贴片电阻0603多少瓦,贴片电阻0603在生产中可以替代0805吗一个是18W一个是110贴片电阻0603多少瓦,贴片电阻0603在生产中可以替代0805吗一个是18W一个是110

    贴片电阻0603在生产中可以替代0805吗一个是18W一个是110应该是可以的,工程那边能通过就没什么大问题2,0603封装的贴片电阻功率是多大0603封装的贴片电阻功率是0.1W这个很便宜,一厘多钱一.....

    神经网络 日期:2024-04-09

  • 增益可控放大电路实验,可控增益放大器电路课程增益可控放大电路实验,可控增益放大器电路课程

    可编程增益放大器电路可以对模拟信号进行放大、转换和滤波,将设备中的多个功能模块互连,重构电路,并调整电路的增益、带宽和阈值。输入信号和输出信号被反转;它具有大的电流和电压增益;通常.....

    神经网络 日期:2024-04-09