《c51单片机课程设计——电子琴》由会员分享,可在线阅读,更多相关《c51单片机课程设计——电子琴(11页珍藏版)》请在毕设资料网上搜索。
1、1 课 程 设 计 报 告 1 一、一、概述概述: 本系统设计制作一个可演奏的电子琴。综合应用了两项设计: (1)能产生纯音,了解音调高低的控制方法,用键盘代替电子琴的键 盘,控制演奏音乐。 (2)演奏一支乐曲(天空之城) 。 那音阶要怎么使用 C51 单片机产生呢?C51 在这项工作中运用它 哪些资源呢?我们怎么实现一个按键对应一个音阶呢? 二、二、系统描述系统描述: (1)我们从初中开始就知道,声音是由振动产生的,基本的这 7 个 音阶的频率之间满足某种数学关系由低到高排列的自然音,所以我们 可以通过改变单片机输出频率就可以得到不同的音阶; (2)为了得到 精确的频率(周期的倒数) ,我们
2、可以使用 C51 单片机定时中断模块。 (3)通过判断按键是否被按下,然后执行该按键按下时的函数(在程 序中是改变 T1 的初值得到实现) 。 需要注意的是, 在该程序中让 8051 的内部定时器使其工作在计数 器模式 MODE1 下,改变记数值 TH0 及 TL0 以产生不同频率的方法。 例如 频率为 523HZ,其周期 T=1/523=1912 微秒,因此只要令计数器定时 956/1=956 在每记数 9 次时将 I/O 口反相,就可得到中音 D0(523HZ)。 记数脉冲值与频率的关系公式如下: N=Fi/2/Fr N:记数值 Fi:内部计时一次为 1 微秒故其频率为 1MHZ Fr;要
3、产生的频率 起记数值的求法如下: 1 T65536N65536Fi2Fr 例如:设 K65536,F1000000Fi1MHZ,求低音 D0(523HZ) ,高 音的 D0(1046HZ)的记数值。 T65536N65536Fi2Fr6553610000002Fr65536 500000Fr 低音 D0 的 T6553650000026263627 中音 D0 的 T6553650000052364580 低音 D0 的 T65536500000104765059 详细的音阶频率与计数初值可参考附录一; 三、电路设计三、电路设计 1单片机最小系统模块 2.2.三极管信号放大三极管信号放大模块模
4、块 扬声器发出对应音符模块如下: 1 3.按键电路模块: 1 四程序设计:四程序设计: 本系统的程序流程图如下: 开始 模块初始化 音乐控制按键 是否按下? 播放音乐 音符按键是否 按下? 播放音符按键 所对应的音符 终止 1 程序如下: #include #define uchar unsigned char #define uint unsigned int sbit kongzhi=P11; sbit fm=P10; /蜂鸣器输出的 IO 口 uchar timeh,timel,i=8,t; /timeh,timel 为定时器高低 4 位,i 为演奏音符个 数 uchar code yi
5、nyue= 0x63,0x71,0x83,0x71,0x82,0xA2,0x76,0x32,0x32,0x63,0x51,0x62,0x82,0x54,0x32,0x3 2,0x42,0x32,0x42,0x11, 0x32,0x81,0x81,0x81,0x73,0x41,0x41,0x71,0x74,0x63,0x71,0x83,0x71,0x82,0xA2,0x7 4,0x31,0x31,0x63,0x51,0x62,0x82, 0x54,0x31,0x42,0x83,0x71,0x71,0x83,0x91,0x91,0xA1,0x82,0x83,0x71,0x61,0x61,0x7 2,0x51,0x66,0xff; /-简谱- /1-7 代表中音 dosi,8 代表高音 do uchar code yinfu=0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81,0xff; /-简谱音调对应的定时器初值 - uchar code cuzhi= 0xff,0xff, /占位符 0xFC,0x44,0xFC,0xAD,0xFD,0x0A,0xFD,0x34,0xFD,0x83,0xFD,0xC8,0xFE,0x06, /中音 dosi 的 T 计数初值 0xFE,0x22,0xFE,0x57,0xFE,0x85,0xFE,0x9B,0xFE