基于51单片机实现的音乐盒播放器内容摘要:

52/89C55 等。 出厂所配晶振频率为,每个机器周期为 ,用户更换晶振以提高速度; 存贮器为 64K,前 4K/8K20K 在 CPU 内部,其它程序在 EPR0M27512 中; 数据存贮器为 32K(62256),地址为 8000—FFFFH; Ⅰ/O 扩展 8155,片内 RAM 地址∶200O20FFH ; 8155 命令口地址为∶2100H ; A 口地址∶21O1H B 口地址:2102H C 口地址:2103H ; T 低八位∶2104H T 高八位∶2105H ; 多路模拟开关的使用∶ IN0∶P1=0F8H IN4:P1=0FCH IN1∶P1=0F9H IN5:P1=OFDH IN2∶P1=0FAH IN5:P1=0FEH IN3∶P1=0FBH IN7:P1=0FFH  不掉电数据存贮器为∶500EH507FH ; 控制板∶160x1O9(mm) 供电∶+5V300mA +12V100mA 12V100mA ; AT89C51 是一种低功耗、高性能的片内含有 4KB 快闪可编程/擦除只读存储器(FPEROMFlash Programmable and Eraseable Read Only Memory)的8 位 CMOS 微控制器,使用高密度、非易失存储技术制造,并且与 80C51 引脚和指令系统完全兼容; 主要性能: 与 MCS51 微控制器产品系列兼容;东北大学课程设计 片内有 4KB 可在线重复编程的快闪擦写存储器。 引脚介绍图 89C51 引脚图第四章 软件编程设计与综合测试 编程思路简述要产生音频信号,只要算出某一音频的周期(频率的倒数) ,将此周期除以2 即为半周期的时间,利用定时器计时此半周期时间,计时到后取反输出,重复此过程即得到此频率的声音信号。 此信号从 脚输出。 定时器 T0 工作在定时方式 1,改变 TH0 及 TL0,产生不同的音频频率。 必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十 Hz,相当于 1/4 音程,很容易听出来,对低音部分影响不大。 一般中断响应时间为 3~6 个机器周期,经过反复试验取 5 个机器周期作为校正最为恰当,表 中所给的定时初值就是考虑中断响应后的定时常数。 另外,为避免 T1 中断可能引起杂音,应将定时器 T0 中断设为高优先级。 这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。 本设计中单片机晶振频率为。 每个音符使用两个字节。 低位字节(偶地址)代表音级,00H 表示不发音(休止符) ,01H~30H 依次表示的音级为c、﹟c、d、﹟d、e、f、……a﹟ab3 ,详见表。 高位字节(奇地址)代表音符的时值(拍数) ,00H~0FH 依次表示拍数为 1/8 拍()~8 拍() ,见表。 乐曲的结束标志是两个字节:0FFH,0FFH。 东北大学课程设计 设计延时程序 125ms,来控制节拍,并在延时中判断是否有停止键按下,以便随时停止音乐。 改变延时程序的延迟时间,即可实现歌曲的快慢演奏。 主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和演唱子程序,启动定时器 T0;通过延时控制节拍,并循环回音级子程序,等待演唱完毕。 要编写的乐谱按要求以音符字节数据表的形式存放在程序中,改变乐曲就是通过改变该数据表的内容来实现的。 主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和音长子程序,启动定时器 T0;根据定时器 T1 应中断的次数,启动定时器 T1。 数据表读完后,根据所设置的循环演奏次数决定是否结束程序。 音级子程序的任务是取出字节中的音级部分,分析 TH0 和 TL0 中应送入何值,送给33H,34H。 演唱子程序的任务是取出对应频率值,并乘以 2,启动 T0,实现发音。 之后执行延时程序,体现节拍,依此循环,直到音乐结束。 定时器 T0 的中断服务程序任务是取反 输出产生方波,重新为TH0,TL0 送初值。 定时器 T1 的中断服务程序任务是:判断计数完成否,给 373 的控制端高或低电平,从而实现数据输出或禁止,达到二极管亮灭闪烁的效果。 当乐曲较长时(超过 254 个字节) ,数据表指针溢出,应及时修改基址寄存器 DPTR 内容,即数据表的表头指针。 编程方案的设计 软件功能选择1)对于 11 个按键的功能设计,除一个停止键,其余十个键分别对应十首歌。 演奏过程中,按停止键可使乐曲停止,LCD 上出现欢迎界面,此时可以继续按其他键继续选择其他歌曲演奏。 选歌的按键使用 8279 键盘扫描以获得键值。 停止键使用的单片机的外部中断 1 实现其功能的。 2)对于 LCD,首先启动时出现“请按键选择播放曲目”的字样提示使用者,获得键值后开始播放歌曲的同时在 LCD 上显示歌曲名,当按下停止键后,歌曲停止播放,同时 LCD 上又出现提示界面,依次循环。 综合调试 在实验箱上进行调试,先是进行单个模块调试,键盘与 LCD 显示器一起进行调试,调试成功后,再在实验箱上进行播放歌曲的调试,使其能单曲循环播放,当有开关键按下时,就停止播放歌曲,再按下时,又重新播放歌曲。 最终实现当有数字键按下时,演奏对应的歌曲,并在显示屏上显示出曲目。 当停止键按下时,停止播放歌曲。 东北大学课程设计 程序流程图图 音乐播放器程序流程图 程序清单include include define uchar unsigned chardefine uint unsigned int uchar m,n。 uchar i,timecount=0,timesec=0,timemin=0,timecheck=0。 char r0=2。 sbit beepIO=P2^1。 typedef unsigned char BYTE。 typedef unsigned int WORD。 typedef bit BOOL。 sbit rs = P1^6。 //sbit rw = P1^7。 //RW东北大学课程设计 sbit ep = P2^7。 //LODE sbit pausekey=P1^1。 uchar k,q,f。 uchar code dis1[] ={ai qing mai mai}。 // uchar code dis2[] = {ji gong}。 uchar code dis3[] ={ duan qiao can }。 //17uchar code dis33[] ={ xue }。 uchar code dis4[] = {dao jian ru meng}。 uchar code dis5[] ={liang zhi hu die }。 uchar code dis6[] = {muo li hua}。 uchar code dis7[] ={qing hua ci }。 uchar code dis8[] = {sheng lin kuang }。 //uchar code dis88[] = { xiang qu }。 uchar code dis9[] ={sheng ri kuai le }。 //16 uchar code dis10[] = {xing nian hao }。 //14uchar code dis11[] ={zhu ba jie qu }。 uchar code dis1111[] ={ xi fu }。 uchar code dis222[] ={ wele!! }。 uchar code T[49][2]={{0,0},{0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},{0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},{0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},{0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}}。 uchar code music1[][2]={{0,4}, // 1 爱情买卖{22,4},{22,4},{17,4},{15,4},{15,4},{17,12},{15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12},{0,4},{20,4},{20,4},{20,4},{17,4},{20,4},{20,4},{20,4},{17,4},{22,4},{17,4},{17,4},{15,4},{15,4},{17,12},{22,4},{22,4},{17,4},{15,4},{15,4},{17,12},{15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12},{20,4},{20,4},{20,2},{17,2},{17,4},{20,4},{20,4},{20,2},{17,2},{17,2},{17,2},{24,4},{20,4},{20,2},{17,2},{17,4},{20,4},{22,12},东北大学课程设计 {17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8},{24,4},{22,2},{24,2},{22,4},{20,4},{15,4},{17,12},{15,4},{15,4},{15,4},{10,4},{15,4},{17,4},{20,8},{17,4},{24,4},{24,4},{20,4},{15,4},{17,12},{17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8},{29,4},{27,2},{29,2},{27,4},{25,4},{25,4},{27,12},{29,4},{29,2},{27,4},{25,4},{27,6},{27,2},{25,4},{24,4},{20,4},{20,2},{17,2},{20,4},{20,2},{22,2},{22,16},{0xFF,0xFF}}。 uchar code music2[][2]={{0,4}, //2 济公/*鞋儿破*/{16,6},{19,2},{19,6},{16,2},{14,6},{0,10},{16,6},{19,2},{19,6},{16,2},{14,8},{0,8},{26,8},{21,6},{24,2},{23,6},{21,2},{19,8},{21,16},{0,8},/*你笑我…*/{16,6},{19,2},{19,6},{16,2},{14,8},{0,8},{26,8},{21,6},{23,2},{21,14},/*一把扇儿…*/{24,6},{23,2},{21,6},{19,2},{16,6},{14,2},{13,8},{14,16},{0,4},/*南无阿弥陀佛*/{19,6},{19,2},{21,6},{21,2},{23,8},{21,4},{0,4},{19,6},{19,2},{16,6},{19,2},{16,8},{14,6},{0,4},{19,6},{19,2},{21,6},{21,2},{23,8},{21,4},{0,4},{19,6},{19,2},{16,6},{19,2},{16,8},{14,6},{0,4},{26。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。