下载此文档

单片机论文-基于单片机的电子琴设计.doc


文档分类:通信/电子 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
简易电子琴设计
班级:学号:20092300246 姓名:XX
设计简介
用键盘上的数字1~7代替电子琴键,演奏音符,音调可在低音、中音和高音之间进行切换。
系统介绍
该系统采用一片51系列单片机、一个扬声器和8个按键开关。
基于对音乐的了解,一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,我们可以利用单片机的不同频率来模拟音乐,可以利用定时/计数器T1来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T= 216--5﹡105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值,可以列出不同音符与单片机计数T1相关的计数值。
简易电子琴系统框图
硬件电路设计
系统中8个键采用独立连接方式,有P1口接收键值,1~7号键用于控制音符。8号键用于音区切换,8号键未按下为低音,按一次为中音,按2次为高音,按第3次又回到低音。
简易电子琴电路图
程序设计
扬声器发声的频率可由定时/计数器0的计数值确定,在程序中可定义3个音区1~7对应的计数初值,然后根据按键情况查表后对定时/计数器0的中断服务程序中对扬声器的控制端变反即可控制扬声器发出不同频率的声音。本系统软件中还要是编辑电子琴播放状态的内容,在设计中采用c51语言编写了电子琴控制系统控制和播放内容的程序。
简易电子琴程序流程图
程序清单:
#include <>
#include<>
#define uchar unsigned char
#define uint unsigned int
sfr16 T0=0x8A;
sbit BEEP=;
uint t0_f;
code unint char freq[21]={
0x220,
0x247,
0x277,
0x294,
0x330,
0x370,
0x415,
0x440,
0x494,
0x554,
0x587,
0x659,
0x740,
0x831,
0x880,
0x988,
0x1109,
0x1175,
0x1318,
0x1480,
0x1661,
};
timer0( )interrupt 1
{
T0=t0_f;
BEEP=~BEEP;
}
Void main(void)
{
Uchar key,key8_count;
TMOD=0x01;
TR0=0;
ET0=1;
EA=1;
While(1)
{
flag=0;
key=P1;
for(i=0;i<8;i++)
{
if((_coro_(a,i)&0x01)==0)
{
flag=1;
break;
}
}
if(flag==1)
{
if(i==7)
{
key8_count++;
key8_count=key8_count%3;
}
else
{
switch(key8_count)
{
case0:t0_f=freq[i];break;
case1:t0_f=freq[i+7];break;

单片机论文-基于单片机的电子琴设计 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数8
  • 收藏数0 收藏
  • 顶次数0
  • 上传人jiquhe72
  • 文件大小189 KB
  • 时间2018-08-18