基于单片机的电子琴的设计_课程设计说明书(编辑修改稿)内容摘要:
还是断电后或者发生故障后都要复位。 除了音符以外,节拍也是音乐的关键组成部分。 图 310 复位电路 电路总体构成 电路总体构成图 如下: 11 图 311 电路图 4 系统软件设计 本软件设计关键是要实现一种由单片机控制的简单音乐发生器,它由 16 个音节组成的的键盘,用户可以根据乐谱在 键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。 并且可以自动播放音乐, LED 灯指示演奏。 音乐相关知识 乐 音听起来有的高,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低,声音就低,不同音调的乐音是用 C、 D、 E、 F、 G、 A、B 表示的,这 7个字母就是乐音的音名,它们一般依次唱成 DO、 RE、 MI、 FA、 SO、LA、 SI,这是唱曲时乐音的发音,所以叫唱名。 音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。 一首音乐是由许多不同的音符组成的,而每个音 符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。 若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。 “节拍” ,即 Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。 节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果 1/4 拍的延时是 秒,则 1 拍的延时是 秒,只要知道 1/4 拍的延时时间,其余的节拍延时时间就是它的陪数。 如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本 例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。 对于不同的曲调我们也可以用单片机的另外一个定时 /计数器来完成。 软件程序设计 主程序流程图 12 图 41 主程序框图 当 接上电源, 按下电源开关后, 程序进行初始化设置, 对键盘进行扫描 , 根据扫描的结果,由扬声器发出对应的音调。 如果遇到音乐播放时,就自动播放音乐, 并通过 LED 灯指示节拍。 当检测到外部中断时,停止正在执行的任务,前去执行中断程序,待中断完成后返回。 按键子程序流程图如下所示: N Y 开始 定时器 初始化 开启外部中断 主程序 循环检测按键 LED 灯指示 播放声音 数码管显示 K11 键按下 K12 键按下 K13 键按下 LED 灯、数码管、低音 DO LED 灯、数码管、低音 RE LED 灯、数码管、低音 MI 13 图 42 键盘扫描框图 K14 键按下 K21 键按下 K22 键按下 K23 键按下 K24 键 按下 K31 键按下 K32 键按下 K33 键按下 K34 键按下 K41 键按下 K42 键按下 K43 键按下 K44 键按下 LED 灯、数码管、低音 FA LED 灯、数码管、低音 SO LED 灯、数码管、低音 LA LED 灯、数码管、低音 SI LED 灯、数码管、高音 DO LED 灯、数码管、高音 DO LED 灯、数码管、高音 SI LED 灯、数码管、高音 LA LED 灯、数码管、高音 SO LED 灯、数码管、高音 FA LED 灯、数码管、高音 MI LED 灯、数码管、高音 RE LED 灯、数码管、高音 DO 14 程序编写 程序开头以及参数定义 include include define unint unsigned int define unchar unsigned char void check_key()。 unsigned int tone1,tone2。 sbit SPEAKER= P3^5。 //定义方波输出口 sbit STAR = P3^3。 //KEY2 开启自动播放 sbit Stop = P3^2。 //KEY1 关闭自动播放 unchar Key。 unchar Temp。 unchar code Table1[] = {0x61,0xDB,0xF3,0x67, 0xB7,0xBF,0xE1,0x60, 0x60,0xE0,0xBE,0xB6, 0x66,0xF2,0xDA,0x60,0x00}。 //数码管 unchar code Table3[] = {0xFE,0xFC,0xF8,0xF0, 0xE0,0xC0,0x80,0x00, 0x00,0x01,0x03,0x07, 0x0F,0x1F,0x3F,0x7F}。 //LED 闪烁 unsigned char code yinfu[]= { 0xfb,0xe9, /*Do*/ 0xfc,0x5c, /*Re*/ 0xfc,0xc1, /*Mi*/ 0xfc,0xef, /*Fa*/ 0xfd,0x45, /*So*/ 0xfd,0x92, /*La*/ 0xfd,0xd0, /*Si*/ 0xfd,0xee, /*Do*/ 0x00,0x00 //音符间隔,只要间隔时间小于 65ms 时,用作拍子之间的短暂停顿 }。 /*****生日快乐歌音调表 *****/ unsigned char code shengri_tone[]= { 1,0,1,2,1,4,3,0, 1,0,1,2,1,5,4,0, 1,0,1,8,6,4,3,2,0, 15 7,0,7,6,4,5,4,0 //0 代表不发声,即停顿;数字即为音 }。 /*****生日快乐歌节拍表 *****/ unsigned char code shengri_beat[]= { 24,1,24,48,48,48,72,5, 24,1,24,48,48,48,72,5, 24,1,24,48,48,48,48,72,5, 24,1,24,48,48,48,72,5 //节拍,即 tone 表各音调的延时 }。 /*****自动演示音调表 *****/ unsigned char code。基于单片机的电子琴的设计_课程设计说明书(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。