单片机设计矩阵键盘电子琴

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
uint code xable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void delay(uint z) //延时程序
{
uint x,y;
for(x=z;x>0;x--)
2.课程设计题目及要求
带存储播放功能的简易电子琴设计
要求:利用行列式键盘和数码管,来控制并显示和产生不同频率的声音。其他扩展功能学生可自己添加,功能不限定与此。
3.课程设计任务及工作量的要求〔包括课程设计计算说明书、图纸、实物样品等要求〕
(1)了解相关理论知识,掌握基本的原理,理解相关特殊功能寄存器的设置。
插入图片
7心得体会:
通过这次课程设计,我学到了很多书本上学不到的知识与经验,同时也遇到了很多问题,并在这个过程中逐步尝试去解决他们,提高自己的实践能力,硬件设计上我发现通过不同的I/O口可以节省端口资源的利用,部分端口上的需求可以通过软件解决。从语法错误到程序功能的实现,前前后后也是改了又改,这次课程设计使我意识到很多存在的问题,必须在单片机方面读更多的书,更深入的去探究,去挖掘这些问题的答案。
课程设计任务书
课 程 名 称单片机原理及应用课程设计
1.课程设计应达到的目的
本课程是继《单片机原理及应用B》课程之后,训练学生综合运用上述课程知识,进行单片机软件、硬件系统设计与调试,使学生加深对单片机结构、工作原理的理解,提高学生综合应用知识的能力、分析解决问题的能力和单片机最小应用系统的设计技能。通过课程设计,达到理论与实际应用相结合,增强学生对综合电子系统设计的理解,掌握单片机原理就应用的设计方法以及C51编程的能力,并能够在这个基础上进行实际项目的程序设计及软硬件调试,增强学生的工程实践能力。
if(temp!=0xf0) //检测第一行按键
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=0,P0=xable[0];
break;
case 0xde:
key=1,P0=xable[1];
break;
case 0xbe:
key=2,P0=xable[2];
break;
case 0x7e:
key=3,P0=xable[3];
break;
}
TH0=table[key]/256;
TL0=table[key]%256;
TR0=1;
while(temp!=0xf0) //松手检测
{
temp=P3;
音 符
频 率
简码值(T值)
低3 M
330
64021
低4 FA
349
64103
低5 SO
392
64260
低6 LA
440
64400
低7 SI
494
64524
中 1 DO
523
64580
中 2 RE
587
64684
中 3 M
659
64777
中 4 FA
698
64820
中 5 SO
784
64898
中 6 LA
880
64968
中 7 SI
988
65030
高 1 DO
1064ຫໍສະໝຸດ Baidu
65058
高 2 RE
1175
65110
高 3 M
1318
65157
高 4 FA
1397
65178
6程序设计的流程图如下图,不断检测16个音阶键或功能键哪个被按下,当音阶键被按下时,发出对应的音;当功能键被按下时,执行相应的功能。然后再检测按键释放成不成功,也就是平时所说的松手检测,不成功就不断再检测,成功就停止工作。
插入图片
(2)音乐频率
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。单片机12MHZ晶振,高中低音符与单片机计数T0相关的计数值如下表所示:
sbit s3=P1^2; //定义功能键3
sbit s4=P1^3;
uint code table[]={64021,64103,64260,64400,
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178}; //频率
temp=temp&0xf0;
}
TR0=0;
buz=1;
}
}
P3=0xfd; //检测第二行按键
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
for(y=110;y>0;y--);
}
void initialize()
{
P1=0xff;//起初数码管不显示任何数
}
void main()
{
TMOD=0x01;
EA=1; //开总中断
ET0=1; //开定时器0中断
while(1)
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
8源程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit buz=P2^3; //定义蜂鸣器
uchar temp,key;
sbit s1=P1^0; //定义功能键1
sbit s2=P1^1; //定义功能键2
(2)完成电路板的组装
(3)完成硬件电路的测试、以及软件的编程
(4) 最终完成具体的课设任务。
4.主要参考文献
1.张洪润等.单片机应用设计200例.北京:北京航空航天大学出版社,2006
2. 胡汉才.单片机原理及其接口技术. 北京: 清华大学出版社,2010
3.夏继强等.单片机实验与实践教程.北京:北京航空航天大学出版社,2006
4. 倪晓军等.单片机原理与接口技术教程.北京: 清华大学出版社,2007
5(1)硬件方面:单片机。4*4行列式键盘,蜂鸣器,独立数码管,独立建。硬件部分采用逐列扫描,16个键位对应16个音,不断检测16键位,当某个键位被按下,先检测哪一列再检测哪个按键被按下,同时设置四个功能键,p1.0,p1.1播放歌曲,p1.2暂停,p1.3复位,可控制歌曲的播放。
相关文档
最新文档