(2021年整理)基于单片机的电子琴制作课程设计_第1页
(2021年整理)基于单片机的电子琴制作课程设计_第2页
(2021年整理)基于单片机的电子琴制作课程设计_第3页
(2021年整理)基于单片机的电子琴制作课程设计_第4页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于单片机的电子琴制作课程设计基于单片机的电子琴制作课程设计 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(基于单片机的电子琴制作课程设计)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为基于单片机的电子琴制作课程设计的全部内容。和平与发展是当今世界发展的主题,中国作为屹立在世界东方的大国,要担负起重要的责任。从“亚太自由

2、贸易区”到“亚投行”、“一带一路”,再到g20峰会,都体现出中国一个负责任的大国形象。基于单片机的电子琴制作课程设计一、 设计指标a) 设计一个(44)的键盘,并将16个键设计成16个音;b) 可弹奏想要表达的音乐;c) 该电子琴包含1首示例音乐,接通电源可播放示例音乐.二、 设计所用实验仪器和设备:单片机芯片、晶体振荡器一个、电容电阻若干独立开关十六个.三、 设计原理乐音实际上是有固定周期的信号。我用at89c51的一个定时器(如t1)控制,在p34脚上输出方波周期信号,产生乐音.根据不同的按键,调节t1的溢出时间,可输出不同频率的乐音,这样就做出了一台微型电子琴。其中根据行列式非编码键盘工

3、作原理设计一个(4*4)的键盘,当按键按下经过软件的扫描电路进行扫描扫到对应的按键根据对应的负值将频率所对应的负值放进对应寄存器警醒单片机p3.4引脚的频率控制输出,从而使不同按键按下中断得到不同频率的音乐。每个乐音的音高(频率)是固定的,表1列出了一个8度以及其上下共16个音的音名、频率及定时器t1初值对照(设晶体频率为6mhz)。四、输出音节与单片机定时器输出频率关系表格如下:序号音名频率(hz)th1tl11 7493.9feh06h2 1523.26feh22h3 554。37feh3dh4 2587。34feh56h5622。26feh6eh6 3659。27feh85h7 4698

4、。17feh9ah8740。00fehaeh9 5784。00fehc1h10 830。62fehd3h11 6880。01fehe4h12932。34fehf4h13 7987。78ffh03h14 11046。51ffh11h151108。75ffh1fh16 21174.68ffh2bh2硬件电路设计微型电子琴的电原理图见图1,其中键盘可使用小按键,排成钢琴键盘状(键多时可分为几排),图中还增加了一只按键指示灯(d1)。 图13软件设计软件由初始化程序、主程序、定时器1中断服务程序、键盘扫描程序和延时程序组成。 (1)初始化程序如下: tmr1l equ 30h tmr1h equ 31

5、h org 0000h sjmp main org 001bh ajmp tmr1org 0040hmain: mov tmod,#10h ;t1方式1,软件controlbegin: mov tcon,#00h ;关闭t1 mov ie,#88h ;开t1中断 mov ip,08h ;t1优先 clr p3.1 ;关扬声器 clr p3。2 ;点亮灯 acall delay ;延时主程序框图开始有键按下吗?关闭t1,熄灭指示灯根据r4的键值将t1初值送到tmr1l和tmr1h开启t1,点亮指示灯主程序 main programstart:acall delay ;延时acall keysca

6、 ;调用键盘扫描子程序cjne r4,#00h,playkey ;判断有无按键按下clr tr1 ;没有键按下关闭t1setb p3。2 ;无键按下熄灭指示灯sjmpstart;跳回开始位置playkey:cjne r4,20h,k0;有键按下由键值给timer1l和timer1h赋值mov tmr1l,#06h ;低音7初值mov tmr1h,#0fehajmp sound sound: setb tr1 ;开启t1 clr p3.2 ;点亮指示灯 ajmp start ;跳回开始k0: cjne r4,#30h,k1 mov tmr1l,22h ;中音1初值 mov tmr1h,0feh

7、ajmp soundk1: cjne r4,#50h,k2 mov tmr1l,#3dh ;中音1初值 mov tmr1h,0feh ajmp soundk2: cjne r4,#90h,k3 mov tmr1l,56h ;中音2初值 mov tmr1h,#0feh ajmp soundk3: cjne r4,21h,k4 mov tmr1l,6eh ;中音2初值 mov tmr1h,#0feh ajmp soundk4: cjne r4,#31h,k5 mov tmr1l,#85h ;中音3初值 mov tmr1h,0feh ajmp soundk5: cjne r4,51h,k6 mov

8、tmr1l,9ah ;中音1初值 mov tmr1h,#0feh ajmp soundk6: cjne r4,91h,k7 mov tmr1l,#0aeh ;中音4初值 mov tmr1h,#0feh ajmp soundk7: cjne r4,#23h,k8 mov tmr1l,0c1h ;中音5初值 mov tmr1h,#0feh ajmp soundk8: cjne r4,33h,k9 mov tmr1l,0d3h ;中音5初值 mov tmr1h,#0feh ajmp soundk9: cjne r4,53h,k10 mov tmr1l,#0e4h ;中音6初值 mov tmr1h,#

9、0feh ajmp soundk10: cjne r4,#93h,k11 mov tmr1l,#0f4h ;中音#6初值 mov tmr1h,0feh ajmp soundk11: cjne r4,27h,k12 mov tmr1l,#03h ;中音7初值 mov tmr1h,#0feh ajmp soundk12: cjne r4,37h,k13 mov tmr1l,#11h ;高音1初值 mov tmr1h,#0ffh ajmp soundk13: cjne r4,57h,k114 mov tmr1l,1fh ;高音2初值 mov tmr1h,0ffh ajmp soundk14: cjn

10、e r4,97h,k15 mov tmr1l,#02bh ;高音2初值 mov tmr1h,0ffh ajmp soundk15: nop(3)定时器中断服务程序框图timer1将timeril和timerih送入tl1和th1cpl 3.4reti定时器中断服务程序:;timer1 interruption servicetmr1:mov tl1,tmr1l ;将初值给t1 mov th1,tmr1h cpl p3.4reti(4) 键盘扫描程序框图keysca有按键按下吗延时有按键按下吗获取键值存入r4ret键盘扫描程序:;key board scankeysca: mov r4,#00h

11、 ;初值(无按键)赋给r4 mov p1,0f0h ;全键盘扫描 mov a ,p1 ;读取扫描结果 anl,a,0f0h ;屏蔽行信号,取出列信号 cjne a,#0f0h,prsd1 ;判断有无按键 sjmp done ;无按键退出prsd1: acall delay ;有按键延时后再扫描 mov a,p1 ;读取扫描结果 anl a,#0f0h ;屏蔽行信号,取出列信号 cjne a,#0f0h,prsd2 ;判断有无按键 sjmp done prsd2: mov r2,#04h ;有按键逐行扫描 mov r3,#01h ;行初值 scan :mov a ,r3 ;行初值送入a cpl

12、a ;形成行扫描信号 mov p1,a ;输出行扫描信号 mov a,p1 ;读取扫描结果 anl a,0f0h ;屏蔽行信号,读取列信号 cjne a,0f0h,find ;判断有无按键 mov a,r3 ;无按键继续扫描,调整行信号 rl a ;调整行信号 mov r3,a ;保存行信号 djnz r2,scan ;判断是否扫描玩4行 sjmp done ;扫描四行结束find: cpl a ;找到按键计算键值 add a,r3 ;将行列值相加 mov r4,a ;键值r4done:ret ; 返回; delaydelay: mov r5,#20h ;延时bb: mov r6,#0ffha

13、a: djnz r6,aa djnz r5,bb rettable1: dw fe06h,fe22h,fe56h,fe9ah dw fe56h, fed3h,feaeh,fe6e dw fed3h,fe9ah,fff4h,ff03h dw ff2bh ,ff1fh,feaeh,feceh end总结:这次设计虽然说在总体上并不是很难,但是我们两个人的能力毕竟还是有限有很多的地方还是没有弄得很明白,在进行程序设计的过程中还是参考了很多资料和课本上的知识。这次设计历经将近一个月,我们从中学到了很多东西知道了只有通过自己亲手做一些东西才能使自己真正的得到和领悟到知识的精华.下面我就对我的软件设计和硬

14、件设计中遇到的一些问题做一些总结:首先软件,对于我们两人来说对软件的学习是初学者在开始的设计中借用了其它书上和参考资料上的些程序模块我们对其中的一些指令和参数作了一部分的修改我们把这个程序大概分为三部分,第一、是主程序的设计,这一部分相对需要总括整个程序对各个子程序需要很熟悉并且进行调用。第二,是对程序扫描软件程序部分的设计,因为这些程序在课本有很多学习经过对书本的研究还是没有用多少力气就编写出来了,可是我们对键盘进行行扫描还是列扫描进行了讨论结果我们还是比较保守的选择了列扫描方式进行键盘扫描。第三、是对定时程序的设计这一部分也是比较简单这里就不赘述,我要强调的是对定时器的功能设置上我们还是需要参考书本对位设置我们无法记住每一位是什么。关于第二大项的硬件方面我是用protues进行的电路仿真,做的过程中也并不是很顺利,毕竟是第一次用这样一个软件在做的过程中有很多地方不明白需要翻书,查资料什么的.因此造成这一部分进度很慢不过还好在我们两个人的共同努力下终于解决了这个问题。虽然我们做的仿真并不是很完美但是还是花费了我们一定的心血,看着自己的作品心理多少有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论