ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:298.94KB ,
资源ID:27392462      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27392462.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(#基于单片机的16键电子琴.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

#基于单片机的16键电子琴.docx

1、#基于单片机的16键电子琴课程论文题 目: 基于单片机的16键电子琴 学生姓名: 董翠影 学生学号: 1008030208 系 别: 电气信息工程学院 专 业: 电子信息工程 年 级: 10级(2)班 任课教师: 权循忠 电气信息工程学院制2012年11月基于单片机的16键电子琴学生:董翠影指导老师:权循忠电气信息工程学院:10级电子信息工程(2)班摘要:本论文设计一个基于单片机的简易电子琴。我们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇。电子琴是现代电子科技和音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能

2、和灵活的编程实现特性,它已经融入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89C51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,和键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴系统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。 一首音乐是许多不同的

3、音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。关键词:AT89S51单片机 音色 节拍器 自动放音 1 总体设计1.1系统硬件连线 系统硬件连线如图1-1所示,发生模块,键盘模块,及LED显示模块连接如图1-11.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域SPK IN端口上;2.把“单片机系统”区域中的P3.0P3.7端口用8芯排线连接到“4X4行列式键盘”区

4、域中的C1C4R1R4端口上;3.把“单片机系统”区域中的P0.0/AD0P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个ah端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,P0.7/AD7对应着h。1.2 主要芯片简介1.2.1 AT89S51简介AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8

5、位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制使用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚(引脚图如图1-2所示),4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作

6、,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。图1-2 管脚图1.2.1.1 主要功能特性 兼容MCS-51指令系统 32个双向I/O口 2个16位可编程定时/计数器 全双工UART串行中断口线 2个外部中断源 中断唤醒省电模式 看门狗(WDT)电路 灵活的ISP字节和分页编程 4k可反复擦写ISP Flash ROM 4.5-5.5V工作电压 时钟频率0-33MHz 128*8bit内部RAM 低功耗空闲和省电模式 3级加密位 软件设置空闲和省电功能1.2.2 LM386LM

7、386是美国国家半导体公司生产的音频功率放大器,主要使用于低电压消费类产品。LM386特性:(1)静态功耗低,约为4mA,可用于电池供电;(2)工作电压范围宽,4V-12V或5V-18V;(3)外围元件少;(4)电压增益可调,20-200;(5)低失真度。LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛使用于录音机和收音机之中。图1-3 音频放大器电路1.2.3 LED数码管图1-4 7段数码管数码管(如图1-4所示)使用条件:a、段及小数点上加限流电阻b、使用电压:段:根据发光颜色决定;小数点:根据发光颜色决定c、使用电流:静

8、态:总电流 80mA(每段 10mA);动态:平均电流 4-5mA 峰值电流 100mA上面这只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的。数码管使用注意事项说明:(1)数码管表面不要用手触摸,不要用手去弄引角;(2)焊接温度:260度;焊接时间:5S(3)表面有保护膜的产品,可以在使用前撕下来。2 硬件设计内容2.1 4X4行列式键盘识别及显示组成键盘的按键有机械式、电容式、导电橡胶式、薄膜式多种,但不管什么形式,其作用都是一个使电路接通和断开的开关。目前微机系统中使用的键盘按其功能不同,通常可分为编码键盘和非编码键盘两种基本类型。 编码键盘:键盘本身带有实现接口主要功能所

9、需的硬件电路。不仅能自动检测被按下的键,并完成去抖动、防串键等功能,而且能提供和被按键功能对应的键码(如ASCII码)送往CPU。所以,编码键盘接口简单、使用方便。但由于硬件电路较复杂,因而价格较贵。 非编码键盘:键盘只简单地提供按键开关的行列矩阵。有关按键的识别、键码的确定和输入、去抖动等功能均由软件完成。目前微机系统中,一般为了降低成本大多数采用非编码键盘。 键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能。(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间和键的质量相关,一般为520mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或

10、稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。(2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。(3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口

11、一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。(4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。用AT89S51的并行口P1接44矩阵键盘,以P1.0P1.3作输入线,以P1.4P1.7作输出线;在数码管上显示每个按键的“0F”序号。图1-5 键盘识别模块2.1.1 系统硬件连线设计键盘模块硬件连线如图1-5所示:(1)把“单片机系统”区域中的P3.0P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1C4R1R4端口上;(2)把

12、“单片机系统”区域中的P0.0/AD0P0.7/AD7端口用8芯排线连接到“7段数码显示模块”区域中的任一个ah端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,P0.7/AD7对应着h。2.1.2 按键扫描(1)44矩阵键盘识别处理,每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。(2)键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两

13、个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。电路图如下图1-6 行列式键盘电路2.1.3 I/O并行口直接驱动LED显示LED显示模块如图1-7所示,利用AT89S51单片机的P0端口的P0.0P0.7连接到一个七段数码管的ah的笔段上,数码管的公共端接地。在数码管上循环显示07数字,时间间隔0.2秒。图1-7 电路原理图系统板上硬件连线:(如图1-7所示) 把“单片机系统”区域中的P0.0/AD0P0.7/AD7端口用8芯排线连接到“七段数码显示模块”区域中的任一个数码管的ah端口上;要

14、求:P0.0/AD0和a相连,P0.1/AD1和b相连,P0.2/AD2和c相连,P0.7/AD7和h相连。3软件设计内容3.1 LED数码 (1)LED数码显示原理: 七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。 LED数码管的ga七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码表(如表1所示)表1-1 字形码表“0”3FH“8”7FH“1”06H“9”6FH“2”5BH“A”77H“3”4FH“b”7CH“4”66H“C”39H“5

15、”6DH“d”5EH“6”7DH“E”79H“7”07H“F”71H(2)由于显示的数字09的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字09的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLEDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH。3.2 音乐产生的方法3.2.1 原理一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,

16、我们只要把一首歌曲的音阶对应频率关系正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。 利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。 计数脉冲值和频率的关系式(如式1-1所示)是: Nfi2fr (

17、1-1)式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下: T65536N65536fi2fr 例如:设K65536,fi1MHz,求低音DO(262Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。 T65536N65536fi2fr6553610000002fr65536500000/fr 低音DO的T65536500000/26263627 中音DO的T65536500000/52364580 高音DO的T65536500000/104665059单片机12MHZ晶振,高中低音符和计数T0相关的计

18、数值如表1-2所示表1-2 音符频率表音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO26263628# 4 FA#74064860#1DO#27763731中 5 SO78464898低2RE29463835# 5 SO#83164934#2 RE#31163928中 6 LA88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#37064185高 1 DO104665058低 5 SO39264260# 1 DO#110965085# 5 SO#41564331高 2 RE117565110

19、低 6 LA44064400# 2 RE#124565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580# 4 FA#148065198# 1 DO#55464633高 5 SO156865217中 2 RE58764684# 5 SO#166165235# 2 RE#62264732高 6 LA176065252中 3 M65964777# 6186565268中 4 FA69864820高 7 SI196765283我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据低音019之间,中

20、音在2039之间,高音在4059之间 TABLE: DW 0, 63628, 63835, 64021, 64103, 64260, 64400, 64524, 0, 0 DW 0, 63731, 63928, 0, 64185, 64331, 64463, 0, 0, 0 DW 0, 64580, 64684, 64777, 64820, 64898, 64968, 65030, 0, 0 DW 0, 64633, 64732, 0, 64860, 64934, 64994, 0, 0, 0 DW 0, 65058, 65110,65157, 65178, 65217, 65252, 652

21、83, 0, 0 DW 0, 65085, 65134, 0, 65198, 65235, 65268, 0, 0, 0 DW 03.2.2 程序框图音乐发声程序框图如图1-8所示:图1-8音乐发声程序框图 按键程序框图如图1-9所示:图1-9按键程序框图4 全文总结通过这次设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。首先在设计刚开始的调研阶段,我学会了怎么通过各种方式查询相关的资料。通过对这些资料的学习,我大致了解了单片机的发展现状以及未来的发展趋势,认识到目前单片机方面的各种各样的发展,和它们之间的竞争。了解了单片机方面的先进技术,这些都为我

22、的未来的学习指明了方向。我的设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。基本掌握了Protel99SE原理图的方法,并设计了一个单片机最小系统。通过开发板的设计和硬件搭建的过程,使我对51系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法,如LED数码管,键盘等。在软件方面,通过串行口调试工具的开发,使我加深了对累封装的理解,熟悉了51系列单片机内部的寄存器和编程规则,以及如何控制外围电路。参考文献1 陈明荧8051单片机课程设计实训教材M北京:清华大学出版社,2003年9

23、月2 徐新艳单片机原理、使用和实践M北京:高等教育出版社,2005年3月3 吴金戌,沈庆阳,郭庭吉8051单片机实践和使用M第一版北京:清华大学出版社,2002年4 吴金戌,沈庆阳,郭庭吉,8051单片机实践和使用M清华大学出版社,20015 赵亮,侯国锐.单片机C语言编程和实例M.北京:人民邮电出版社,2003. 附录1;仿真图附录2;#include#define uchar unsigned char#define uuint unsigned intuchar temp;uchar num;uchar i,j;unsigned char STH0;unsigned char STL0;

24、sbit P3_4=P34;sbit P3_5=P35;sbit P3_6=P36;sbit P3_7=P37;sbit P1_0=P10;sbit dula=P26;sbit wela=P27;unsigned int code tab=64021,64103,64260,64400, 64524,64580,64684,64820,64898,64968,65030, 65058,65110,65157,65178;unsigned char code table=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0

25、x39,0x5e,0x79,0x71;void delay() unsigned char i, j; for(i=110;i0;i-) for(j=110;j0;j-);void display(uchar aa) dula=1; P0=tableaa-1; dula=0; uchar keyscan() P3=0xfe; temp=P3; temp=temp&0xf0; while(temp!=0xf0) delay(); temp=P3; temp=temp&0xf0; while(temp!=0xf0) temp=P3; switch(temp) case 0xee:num=1; br

26、eak; case 0xde:num=2; break; case 0xbe:num=3; break; case 0x7e:num=4; break; temp=P3; P1_0=P1_0; P0=tablenum; STH0=tabnum/256; STL0=tabnum%256; TR0=1; temp=temp & 0x0f; while(temp!=0xf0) temp=P3; temp=temp&0xf0; TR0=0; P3=0xfd; temp=P3; temp=temp&0xf0; while(temp!=0xf0) delay(); temp=P3; temp=temp&0

27、xf0; while(temp!=0xf0) temp=P3; switch(temp) case 0xed:num=5; break; case 0xdd:num=6; break; case 0xbd:num=7; break; case 0x7d:num=8; break; temp=P3; P1_0=P1_0; P0=tablenum; STH0=tabnum/256; STL0=tabnum%6; TR0=1; temp=temp & 0x0f; while(temp!=0xf0) temp=P3; temp=temp&0xf0; TR0=0; P3=0xfb; temp=P3; temp=temp&0xf0; while(temp!=0xf0) delay(); temp=P3; temp=temp&0xf0; while(temp!=0xf0) temp=P3; switch(temp) case 0xeb:num=9; break; case 0xdb:num=10; break; case 0xbb:num=11; break; case 0x7b:num=12; break; temp=P3; P1_0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1