基于89c51单片机的简易电子琴设计.docx
- 文档编号:5285310
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:15
- 大小:97.71KB
基于89c51单片机的简易电子琴设计.docx
《基于89c51单片机的简易电子琴设计.docx》由会员分享,可在线阅读,更多相关《基于89c51单片机的简易电子琴设计.docx(15页珍藏版)》请在冰豆网上搜索。
基于89c51单片机的简易电子琴设计
目录
一、元器件介绍1
二、设计题目2
三、总体设计2
四、硬件电路设计2
五、软件设计思路3
六、软件调试9
九、设计总结10
八、参考书籍11
摘要
单片机又称微控制器,其中最基本的结构是将CPU和计算机外围功能单元,如储存器、I/O口、定时器/计数器、中断系统等集成在一个芯片上构成的。
单片机具有体积小、可靠性高、功能强、灵活方便等的优点,故广泛应用于国民经济的各个领域目前单片机已用于工业控制、机电一体化设备、仪器仪表、信号处理、现代兵器、交通能源、商用设备、医疗设备及家用电器等各个领域,随着单片机性能的不断提高,它的应用将会更加广泛。
单片机技术发展非常快,所以目前的产品都致力于在功能全面、技术先进、操作简便、安全可靠、价格合理等方面进行仔细研究,精心设计;及时掌握最新的单片机技术,在条件允许的情况下,尽可能地利用最新的单片机技术来研制其应用系统,再利用单片机体积小、价格低、功能强等特点,以保证所设计的产品在未来的一段时间内仍具生命力。
关键词:
单片机、最小系统、电子琴、键盘输入
一、元器件介绍
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图。
二、设计题目
课程设计题:
简易电子琴设计
设计内容:
三、总体设计
设计思路:
1、首先先要有一个输入口,用来控制DO,RW,MI,FA,SUO,LA,XI七个音的发出,还有播放音乐的控制。
2、再次就是输出,用来输出七个音符,和对现在工作状态的显示。
3、最重要的就是单片机的最小系统的实现。
4、最后是电源和flash的烧写RSP接口。
四、硬件电路设计
输入口:
P2口,3*3矩阵输入键盘,用P3.3做中断输入口
输出口:
P0口,P0.0、P0.1、P0.2、P0.3接四个LED灯来做为发音状态显示用P0.7做喇叭输出口。
五、软件设计思路
按键部分设计:
播放音乐部分:
音乐产生的方法;
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数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
下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据
低音0-19之间,中音在20-39之间,高音在40-59之间
软件编程:
KEYBUFEQU30H
STH0EQU31H
STL0EQU32H
TEMPEQU33H
ORG0000H
LJMPSTART
ORG000BH
LJMPINT_T0
ORG0100H
START:
MOVTMOD,#01H
SETBET0
SETBEA
WAIT:
MOVP2,#0FFH
CLRP2.3
MOVA,P2
ANLA,#00000111B
XRLA,#00000111B
JZNOKEY1
LCALLDELY10MS
MOVA,P2
ANLA,#00000111B
XRLA,#00000111B
JZNOKEY1
MOVA,P2
ANLA,#00000111B
CJNEA,#06H,NK1
MOVKEYBUF,#0
LJMPDK1
NK1:
CJNEA,#05H,NK2
MOVKEYBUF,#3
LJMPDK1
NK2:
CJNEA,#03H,NK3
MOVKEYBUF,#7
LJMPDK1
NK3:
NOP
DK1:
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
MOVA,TEMP
MOVCA,@A+DPTR
MOVSTL0,A
MOVTL0,A
SETBTR0
DK1A:
MOVA,P2
ANLA,#00000111B
XRLA,#00000111B
JNZDK1A
CLRTR0
NOKEY1:
MOVP2,#0FFH
CLRP2.4
MOVA,P2
ANLA,#00000111B
XRLA,#00000111B
JZNOKEY2
LCALLDELY10MS
MOVA,P2
ANLA,#00000111B
XRLA,#00000111B
JZNOKEY2
MOVA,P2
ANLA,#00000111B
CJNEA,#06H,NK5
MOVKEYBUF,#1
LJMPDK2
NK5:
CJNEA,#05H,NK6
MOVKEYBUF,#4
LJMPDK2
NK6:
CJNEA,#03H,NK7
MOVKEYBUF,#8
LJMPDK2
NK7:
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
MOVA,TEMP
MOVCA,@A+DPTR
MOVSTL0,A
MOVTL0,A
SETBTR0
DK2A:
MOVA,P2
ANLA,#00000111B
XRLA,#00000111B
JNZDK2A
CLRTR0
NOKEY2:
MOVP2,#0FFH
CLRP2.5
MOVA,P2
ANLA,#00000111B
XRLA,#00000111B
JZNOKEY3
LCALLDELY10MS
MOVA,P2
ANLA,#00000111B
XRLA,#00000111B
JZNOKEY3
MOVA,P2
ANLA,#00000111B
CJNEA,#06H,NK9
MOVKEYBUF,#2
LJMPDK3
NK9:
CJNEA,#05H,NK10
MOVKEYBUF,#5
LJMPDK3
NK10:
CJNEA,#03H,NK11
MOVKEYBUF,#6
LJMPDK3
NK11:
NOP
DK3:
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
MOVA,TEMP
MOVCA,@A+DPTR
MOVSTL0,A
MOVTL0,A
SETBTR0
DK3A:
MOVA,P2
ANLA,#00000111B
XRLA,#00000111B
JNZDK3A
CLRTR0
NOKEY3:
LJMPWAIT
DELY10MS:
MOVR6,#10
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
INT_T0:
MOVTH0,STH0
MOVTL0,STL0
CPLP0.7
RETI
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH
TABLE1:
DW64021,64103,64260,64400
DW64524,64580,64684,64777
DW64820,64898,64968,65030
DW65058,65110,65157,65178
END
六、软件调试
首先是最小系统的测试:
采用流水灯程序来试验最小系统的实现与否,
而后才实验程序的正确性,键盘的输入和喇叭、LED灯的显示。
在调试的过程中,出现了很多的问题在多次的检查下才得以解决,但依是有问题存在,比如中断的响应程序并没有得以实现,播放音乐没有实现。
中断程序如下所示:
先在开头设置了中断地址:
ORG0003H
LJMPINT_0
中断子程序:
INT_0:
MOVR7,#12
LOOP2:
MOVA,R7
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVKEYBUF,A
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
MOVA,TEMP
MOVCA,@A+DPTR
MOVSTL0,A
MOVTL0,A
SETBTR0
DJNZR7,INT_0
LJMPLOOP
INT_T0:
MOVTH0,STH0
MOVTL0,STL0
CPLP0.7
RETI
TAB:
DW1,5,7,6,1,3,4,5,6,7,1,3
九、设计总结
最后把程序写入单片机中,实现了键盘控制喇叭发DO,RW,MI,FA,SUO,LA,XI的程序,但中断还是没有最终实现。
在这次的单片机实训中,我收获到很多:
首先,我们原先的学习仅限于电脑上的仿真,并没有真正的运用到实际中,原先我们在电脑上写的程序也成了纸上谈兵,来到真正的实践中才发现了我们学的知识远远不足以应付在现实中的应用,我们的题目硬件也不是很难,但我也调试了很多次才真正的成功,实现了最小系统。
所以说我们的实践经验远远不足。
其次,在此过程中我们学会使用了一些的仿真软件,学会了以前我们所不会的一些编程方法,使我们的编程能力得到了进一步的提升。
提高了自己的动手能力。
动手在一定程度上反映了一个人的能力,作为当代大学生,社会要求的我们不是只能说而不能做的人才;作为海大的一员,三能人才标准更让我们清醒地认识到,实际动手能力无比重要。
从这次实物制作中,我的动手能力提高了。
最后就是我们的学习能力和检查电路的能力。
在我们的知识不能满足现实的所需时,我们就必须自己去学习所需的知识。
八、参考书籍
《单片机原理与接口技术》
《实验指导书——《单片机原理与接口技术》》
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 89 c51 单片机 简易 电子琴 设计