51单片机设计的音乐播放器完整版隆重奉献
表读完后,根据所设置的循环演奏次数决定是否结束程序。音级子程序的任务是取出字节中的音级部分,分析TH0和TL0中应送入何值,送给33H,34H。演唱子程序的任务是取出对应频率值,并乘以2,启动T0,实现发音。之后执行延时程序,体现节拍,依此循环,直到音乐结束。
定时器T0的中断服务程序任务是取反P3.0输出产生方波,重新为TH0,TL0送初值。
定时器T1的中断服务程序任务是:判断计数完成否,给373的控制端高或低电平,从而实现数据输出或禁止,达到二极管亮灭闪烁的效果。
当乐曲较长时(超过254个字节),数据表指针溢出,应及时修改基址寄存器DPTR内容,即数据表的表头指针。
4.2 编程方案的设计 4.2.1 软件功能选择
1)对于十一个按键的功能设计,除一个停止键,其余十个键对应十首歌曲。十个按键通过P1口八条引脚和P3.0构成行扫描结构,对用户的按键位置进行判断。
2)通过以上的分析思考,我们看到想实现音乐的输出是并不困难。这也就基本上完成了我们既定的基本方案。可是如何让LCD同步显示歌曲名称。这就要利用RT12864的控制作用。在用户按键之后由按键控制模块判断选择的歌曲号,通过CPU控制RT12864显示程序中已有的歌曲名称及序号。
4.2.2 程序流程图