Proteus电子琴.docx
- 文档编号:5404065
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:16
- 大小:85.18KB
Proteus电子琴.docx
《Proteus电子琴.docx》由会员分享,可在线阅读,更多相关《Proteus电子琴.docx(16页珍藏版)》请在冰豆网上搜索。
Proteus电子琴
1 任务及要求
1.1设计任务
1.设计一个4X4的16个按键矩阵,并且每个键对应一个音。
2.用AT89C51将键盘连接设计成为电子琴。
3.编写电子琴的程序,要达到可以随意弹奏想要表达的音乐的目的。
4.程序的分析与调试。
1.2设计要求
1.用汇编语言编程实现程序设计。
2.利用查表,中断等方式实现目的。
3.系统的各各功能模块要清楚,有序。
4.程序运行时有友好的用户界面。
2 设计思想
2。
1硬件设计思想
电子琴的原理框图如图一所示。
它由以下几个部件组成:
单片机AT89C51、电源、4*4的16个按钮矩阵、音频放大模块。
电源部分:
电源部分有二部分组成。
一部分是由220V的市电通过变压、整流稳压来得到+5V电压,维持系统的正常工作;另一部分是由3V的电池供电,以保证停电时正常走时。
正常情况下电池是不提供电能的,以保证电池的寿命。
2。
2软件设计思想
本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整或定闹设置程序三大模块。
在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍.定时中断模块我们可以用语句:
MOVTMOD,#01H写控制数
MOVTH0,#0XH写定时常数
SETBTR0启动TR0
SETBET0允许T0
SETBEA开放CPU中断
3 电路原理与电路图
3。
1电路原理
主要分为二个部分:
(1)4X4行列式键盘识别;
(2)音乐产生的方法;
①一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
现在以单片机12MHZ晶振为例,列出高中低音符与单片机计数T0相关的计数值如表3.1所示.
下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:
低音0-19之间,中音在20-39之间,高音在40-59之间
TABLE:
DW0,63628,63835,64021,64103,64260,64400,64524,0,0
DW0,63731,63928,0,64185,64331,64463,0,0,0
DW0,64580,64684,64777,64820,64898,64968,65030,0,0
DW0,64633,64732,0,64860,64934,64994,0,0,0
DW0,65058,65110,65157,65178,65217,65252,65283,0,0
DW0,65085,65134,0,65198,65235,65268,0,0,0
DW0
表3。
1高中低音符与单片机计数T0相关的计数值表
音符
频率(HZ)
简谱码(T值)
音符
频率(HZ)
简谱码(T值)
低1 DO
262
63628
#4FA#
740
64860
#1 DO#
277
63731
中5SO
784
64898
低2 RE
294
63835
#5SO#
831
64934
#2RE#
311
63928
中6LA
880
64968
低3M
330
64021
#6
932
64994
低4FA
349
64103
中7SI
988
65030
#4FA#
370
64185
高1DO
1046
65058
低5SO
392
64260
#1DO#
1109
65085
#5SO#
415
64331
高2RE
1175
65110
低6LA
440
64400
#2RE#
1245
65134
#6
466
64463
高3M
1318
65157
低7SI
494
64524
高4FA
1397
65178
中1DO
523
64580
#4FA#
1480
65198
#1DO#
554
64633
高5SO
1568
65217
中2RE
587
64684
#5SO#
1661
65235
#2RE#
622
64732
高6LA
1760
65252
中3M
659
64777
#6
1865
65268
中4FA
698
64820
高7SI
1967
65283
②音乐的音拍,一个节拍为单位(C调)
曲调值
DELAY
曲调值
DELAY
调4/4
125ms
调4/4
62ms
调3/4
187ms
调3/4
94ms
调2/4
250ms
调2/4
125ms
对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成.
在这个程序中用到了两个定时/计数器来完成的。
其中T0用来产生音符频率,T1
用来产生音拍。
3。
2电路原理图
图3。
1
4 流程图与算法描述
4.1流程图
图4.1系统主程序流程图
图4。
2
4.2算法描述
(1)用T0做中断
MOVTMOD,#01H;写控制字
SETBET0;允许T0中断
SETBEA;开放CPU中断
(2)查表程序
MOVDPTR,#TABLE;查表赋首地址
MOVCA,@A+DPTR
MOVP0,A;P0口输出
MOVA,KEYBUF
MOVB,#2;赋值给B
MULAB;AB相乘
MOVTEMP,A
4。
3 程序清单
KEYBUFEQU30H
STH0EQU31H
STL0EQU32H
TEMPEQU33H
ORG00H;开始地址
LJMPSTART
ORG0BH;T0中断矢量地址
LJMPINT_T0
START:
MOVTMOD,#01H;写控制字
SETBET0;允许T0中断
SETBEA;开放CPU中断
WAIT:
MOVP3,#0FFH;P3口输出
CLRP3。
4;清零
MOVA,P3
ANLA,#0FH
XRLA,#0FH;屏蔽高四位
JZNOKEY1;判断
LCALLDELY10MS
MOVA,P3
ANLA,#0FH;屏蔽高四位
XRLA,#0FH;异或运算
JZNOKEY1
MOVA,P3
ANLA,#0FH;屏蔽高四位
CJNEA,#0EH,NK1;判断A与#0eh是否相等
MOVKEYBUF,#0;赋初值#0
LJMPDK1;跳转
NK1:
CJNEA,#0DH,NK2
MOVKEYBUF,#1
LJMPDK1
NK2:
CJNEA,#0BH,NK3
MOVKEYBUF,#2
LJMPDK1
NK3:
CJNEA,#07H,NK4
MOVKEYBUF,#3
LJMPDK1;调用DK1
NK4:
NOP;空指令延时一个周期
DK1:
MOVA,KEYBUF
MOVDPTR,#TABLE;查表赋首地址
MOVCA,@A+DPTR
MOVP0,A
MOVA,KEYBUF
MOVB,#2
MULAB;AB相乘
MOVTEMP,A
MOVDPTR,#TABLE1;查表一
MOVCA,@A+DPTR
MOVSTH0,A;写定时常数
MOVTH0,A
INCTEMP
MOVA,TEMP
MOVCA,@A+DPTR
MOVSTL0,A
MOVTL0,A
SETBTR0
DK1A:
MOVA,P3
ANLA,#0FH;屏蔽高四位
XRLA,#0FH
JNZDK1A
CLRTR0
NOKEY1:
;键1子程序
MOVP3,#0FFH
CLRP3。
5
MOVA,P3
ANLA,#0FH
XRLA,#0FH
JZNOKEY2;判断跳转键2子程序
LCALLDELY10MS
MOVA,P3
ANLA,#0FH
XRLA,#0FH
JZNOKEY2
MOVA,P3
ANLA,#0FH
CJNEA,#0EH,NK5;比较跳到键5
MOVKEYBUF,#4
LJMPDK2
NK5:
CJNEA,#0DH,NK6;键5子程序
MOVKEYBUF,#5
LJMPDK2
NK6:
CJNEA,#0BH,NK7
MOVKEYBUF,#6
LJMPDK2
NK7:
CJNEA,#07H,NK8
MOVKEYBUF,#7
LJMPDK2
NK8:
NOP
DK2:
MOVA,KEYBUF
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
MOVA,KEYBUF
MOVB,#2
MULAB
MOVTEMP,A
MOVDPTR,#TABLE1;查表扫描表一
MOVCA,@A+DPTR
MOVSTH0,A
MOVTH0,A
INCTEMP;移动TEMP,扫描键盘
MOVA,TEMP
MOVCA,@A+DPTR
MOVSTL0,A
MOVTL0,A
SETBTR0;启动定时
DK2A:
MOVA,P3
ANLA,#0FH
XRLA,#0FH
JNZDK2A
CLRTR0
NOKEY2:
MOVP3,#0FFH
CLRP3.6
MOVA,P3
ANLA,#0FH
XRLA,#0FH
JZNOKEY3
LCALLDELY10MS
MOVA,P3
ANLA,#0FH
XRLA,#0FH
JZNOKEY3
MOVA,P3
ANLA,#0FH
CJNEA,#0EH,NK9
MOVKEYBUF,#8
LJMPDK3;调用DK3
NK9:
CJNEA,#0DH,NK10
MOVKEYBUF,#9
LJMPDK3
NK10:
CJNEA,#0BH,NK11
MOVKEYBUF,#10
LJMPDK3
NK11:
CJNEA,#07H,NK12
MOVKEYBUF,#11
LJMPDK3
NK12:
NOP
DK3:
MOVA,KEYBUF
MOVDPTR,#TABLE;查表
MOVCA,@A+DPTR
MOVP0,A
MOVA,KEYBUF
MOVB,#2
MULAB
MOVTEMP,A
MOVDPTR,#TABLE1;查表1
MOVCA,@A+DPTR
MOVSTH0,A
MOVTH0,A
INCTEMP
MOVA,TEMP
MOVCA,@A+DPTR
MOVSTL0,A
MOVTL0,A
SETBTR0;启动TR0
DK3A:
MOVA,P3
ANLA,#0FH
XRLA,#0FH
JNZDK3A
CLRTR0
NOKEY3:
MOVP3,#0FFH;P3输出
CLRP3.7
MOVA,P3
ANLA,#0FH
XRLA,#0FH
JZNOKEY4;判c=0转移
LCALLDELY10MS
MOVA,P3
ANLA,#0FH
XRLA,#0FH
JZNOKEY4
MOVA,P3
ANLA,#0FH
CJNEA,#0EH,NK13
MOVKEYBUF,#12
LJMPDK4;调用DK4
NK13:
CJNEA,#0DH,NK14
MOVKEYBUF,#13
LJMPDK4;调用DK4
NK14:
CJNEA,#0BH,NK15
MOVKEYBUF,#14
LJMPDK4;调用DK4
NK15:
CJNEA,#07H,NK16
MOVKEYBUF,#15
LJMPDK4
NK16:
NOP
DK4:
MOVA,KEYBUF
MOVDPTR,#TABLE;查表
MOVCA,@A+DPTR
MOVP0,A;P0输出
MOVA,KEYBUF
MOVB,#2
MULAB
MOVTEMP,A
MOVDPTR,#TABLE1;查表1
MOVCA,@A+DPTR
MOVSTH0,A
MOVTH0,A
INCTEMP
MOVA,TEMP
MOVCA,@A+DPTR
MOVSTL0,A
MOVTL0,A;写定时的低位
SETBTR0;启动T0
DK4A:
MOVA,P3
ANLA,#0FH;屏蔽高四位
XRLA,#0FH
JNZDK4A
CLRTR0
NOKEY4:
LJMPWAIT
DELY10MS:
MOVR6,#10
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
INT_T0:
;重写定时常数
MOVTH0,STH0
MOVTL0,STL0
CPLP1。
0
RETI
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
TABLE1:
DW64021,64103,64260,64400
DW64524,64580,64684,64777
DW64820,64898,64968,65030
DW65058,65110,65157,65178
END
4.4仿真图
图4.3
4。
5仿真结果分析
本设计主要是通过对电子琴主体部分的电路进行模仿设计,达到电子琴固有的基本功能,故叫简易电子琴.利用定时器可发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同音调。
其次,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平,由于定时参数不同,就发出不同频率的脉冲,本设计中按键一次,会发出50个脉冲,松开后随之延时10个脉冲,但在延时的10个脉冲期间继续检测键盘,若此时又有键被按下,若被按下的仍为原键则声音不变,否则键盘会译出被按下的另一个键的音调。
5 设计总结
5.1设计体会
这次的单片机应用系统设计对我们来说真的好难哦,只上了半个学期的课,只学了理论,从未接触过任何有一个由自己独立完成的实践活动,程序也还没完全得心应手,甚至可以说一些小的程序编写可能还要花费我们很多时间.突然说要自己亲手设计一个应用系统,一下子感觉实在难啊,根本不知道从何下手。
后来实在没办法,只有去网上查找相关的设计或者到书上去找例子,从而来让自己有个如何去做的思路。
通过在网上和书上很多例子的参考,基本了解了设计报告的结构和写法,同时也让我知道了单片机的功能真的是如此的大,几乎应用于我们身边的每时每刻。
这次我主要的设计是一个游戏型的电子琴,采用16个键分别代表16个音,通过对按键的随意按击从而产生不同的音乐,主要是通过每个按键所产生的频率不同来使得发出的各个音不同,从而产一音乐,虽然显得单一,但是至少很简单。
这次主要参考了网上的一个实例,再加上了一些自己的补充.我主要针对了这个设计的原理和程序的编写,从而来更好的会习设计的方法和创新。
程序也实在很长,对于现在的我来说肯定一个人肯定很难编出这么长的程序,我感谢我的搭档,及给与我帮助的同学和老师。
虽然这个程序还不是很简洁,但我们可以根据每个程序的功能各不相同来使程序简化.不过我对目前的程序已经很满意了。
最后,通过这次的自主完成单片机的应用系统设计,虽说不完全是自己完成,但是至少有一点,让我们学会了如何去完成一个设计报告,让我更进一步了解了单片机,也让我感受到做出一个设计的开心,喜悦与担心.相信这对以后的毕业设计也会有很大的帮助。
5。
2存在问题与建议
(1)功能太过单调,设计比较简单。
我们可以通过增加元件、模块,扩展键盘,增加子程序程序增加其功能,我们可以设计的让其有保存功能,能够保存歌曲,那么我们可以在RST那加上一个复位键等。
(2)程序太过冗长,我们可以用其他的方法如查询等方法来精简程序,加强它的可读性.
(3)喇叭的连接太简单,中间缺少可以消去杂音等功能的部件,更重要的是音量不可调,我们可以在中间加个LM386来改善其功能,那样会更完美.
参考文献
[1]谢自美.电子线路设计·实验·测试[M]。
武汉:
华中理工大学出版社,1992.
[2]何立民。
单片机应用系统设计[M].北京:
北京航空航天大学出版社,1993.
[3]冯博琴。
微型计算机原理与接口技术[M]。
清华大学出版社,2004.
[4]张毅刚。
MCS—51单片机应用设计哈[M]。
尔滨工业大学出版社,2004。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Proteus 电子琴