单片机电子琴设计_第1页
单片机电子琴设计_第2页
单片机电子琴设计_第3页
单片机电子琴设计_第4页
单片机电子琴设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、( ( (课程设计模板课程设计模板课程设计模板) ) ) 电气工程及其自动化专业电气工程及其自动化专业电气工程及其自动化专业 单片机原理及应用课程设计报告单片机原理及应用课程设计报告单片机原理及应用课程设计报告 姓 名: 续开轩 _ 学 号: _ 专业班级: 电气工程及其自动化 5 班 题目: 基于单片机的电子琴设计 电气与电子 工程学院 二 0 一四年 12 月 25 日 目录目录 1.1.概述概述.2 2 2.2.设计任务和要求设计任务和要求.2 2 3.3.设计原理分析设计原理分析.2 2 4.4. 硬件资源及其分配硬件资源及其分配.2 2 5.5. 硬件图硬件图.3 3 6.6.程序框

2、图程序框图.6 6 7.7.程序程序.7 7 8.8.调试运行调试运行.8 8 9.9.仿真截图仿真截图 .1313 10.10.设计心得体会设计心得体会.1515 一设计目的一设计目的 1.通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中 去,提高我们的动脑动手能力 2,通过基于单片机的电子琴设计,掌握其使用方法,和简单的程序编写,最终 提高我们的逻辑抽象能力 二设计任务和要求二设计任务和要求 设计一个电子琴。利用所给键盘的 1,2,3,4,5,6,7,8 八个键,能够发出 8 个不同的 声调,并且要求摁下键盘发声,松开延时一段时间停止,中间再别按别的键则 发另一音调的声音

3、 三设计原理分析三设计原理分析 本设计主要研究基于 AT89C52 单片机的简易电子琴设计。 它是以单片机作为主控核心,设置键盘、蜂鸣器等外围器件;另外还用到 一些简单器件如:两位数码管,和 NPN 型三极管及电阻等。利用按键实现音符 和音调的输入;两位的数码管进行被操作的按键显示;用 NPN 型三极管 8550 实 现低音频功率放大;最后用蜂鸣器进行播放“送别” 。 本设计硬件部分主要由最小系统,按键系统模块、数码管显示模块和蜂鸣 器模块组成。其软件部分主要有主程序模块、定时中断程序、定时计数程序、 显示程序。 (1)最小系统:它是单片机应用系统的设计基础。它包括单片机的选择、时钟 系统设计

4、、复位电路设计、简单的 I/O 口扩展、掉电保护等。 (2)按键系统模块:本设计采用 10 个按键,其中 7 个按键用来显示 7 个音调, 其它 3 个按键可以进行高低中音的切换,并自动播放已存歌曲。 (3)数码管显示模块:SM 段选端接在单片机的 P0 口,两个位选端分别接在 P20 和 P21。 (4)蜂鸣器模块:此电子琴发音电路是通过三极管驱动蜂鸣器发音,经过上拉 电阻提高驱动能力。 本次设计首先对单片机设计简易电子琴仔细分析,接着制作硬件电路和编写软 件的程序,最后进行软硬件的调试运行。并且从原理图,主要芯片,各模块的 原理和各个模块的程序调试来阐述。利用单片机产生不同频率来获得我们要

5、求 的音阶,实现高、中、低共 21 个音符的发音和显示和音乐播放时的控制显示, 并且能自动播放程序中编排的音乐。系统运行稳定,其优点是硬件电路简单, 软件功能完善,控制系统可靠,性价比高等,具有一定的使用和参考价值 四硬件资源极其分配 单片机选型 硬件电路要以单片机作为主控芯片,实现按键输入音符和音调,两位数码 管的显示以及低音频功率放大和蜂鸣器发音。针对本设计的功能和用途,采用 AT89S51 单片机更好,实现功能完全,性价比较高,更适合本设计。 2.3 单片机的最小工作系统 单片机加上适当的外围器件和应用程序,构成的应用系统称为最小系统。 时钟电路 单片机内部具有一个高增益反相放大器,用于

6、构成振荡器。通常在引脚 XTALl 和 XTAL2 跨接石英晶体和两个补偿电容构成自激振荡器,结构图 2 中 X1、C1、C2。可以根据情况选择 6MHz、12MHz 或 24MHz 等频率的石英晶体,补 偿电容通常选择 30pF 左右的瓷片电容。 图 2、时钟电路 复位电路 单片机小系统常采用上电自动复位和手动按键复位两种方式实现系统的复 位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源 接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。其结构如 下图。上电自动复位通过电容 C3 充电来实现。手动按键复位是通过按键将电阻 R1 与 VCC 接通来实现。 图 3、

7、复位电路 原理框图 本系统有主控芯片 89S52、发音单元、显示模块、按键模块组成。 89S52 单片机 按键 模块 发音单元 显示模块 图 4、原理框图 显示部分设计 数码显示方式 数码显示有静态显示方式与动态显示方式两种。工作在静态显示方式时, 数码管的位线与电源一直相连,数码管中的二极管均处于通电状态,即在静态 工作方式下,显示电路中数码管的位选线是同时选通,而数码管的段选线是独 立输入。 工作在动态显示方式时,数码管的位线在扫描控制电路的控制下按设定顺 序导通,即电路中的数码管是逐个接通电源,数码管的段选线以并联方式与译 码电路联接,即在动态工作方式下,数码管不是同时导通显示而是按照设

8、定顺 序分时导通显示。 八位数码管的结构 本次课程设计的显示电路采用两位数码管进行显示,由于此设计采用的是 共阴极的,使用时不加限流电阻。 为了显示字符,要为 LED 显示器段码,除了组成 8 字形的字符的 7 段, 另加上 1 个小数点位,共计 8 段, 因此提供给 LED 显示器的显示段码为 1 个 字节。 图 5、数码管电路 按键部分设计 操作键设计 常用的按键有三种:机械触点式按键、导电橡胶式和柔性按键(又称触摸 式键盘) 。 机械触点式按键是利用机械弹性使键复位,手感明显,连线清晰,工艺简 单,适合单件制造。但是触点处易侵入灰尘而导致接触不良,体积相对较大。 导电橡胶按键是利用橡胶的

9、弹性来复位,通过压制的方法把面板上所有的 按键制成一块,体积小,装配方便,适合批量生产。但是时间长了,橡胶老化 而使弹力下降,同时易侵入灰尘。 柔性按键是近年来迅速发展的一种新型按键,可以分为凸球型和平面型两 种。柔性按键最大特点是防尘、防潮、耐蚀,外形美观,装嵌方便。而且外形 和面板的布局、色彩、键距可按照整机的要求来设计。 但是由于客观条件与经济能力有限,本系统采用机械触点式按键。 键盘设计 键盘在单片机应用系统中是一个关键的部件,它能实现向计算机输入数据, 传送命令等功能,是人工干预计算机的主要手段。 键盘可以分为 2 类:独立连接式键盘和矩阵式键盘。 (1)矩阵式键盘 单片机系统中,若

10、按键较多时,通常采用矩阵式(也称行列式)键盘。矩 阵式键盘由行线和列线组成,按键位于行、列线的交叉点上。显然,在按键数 量较多时,矩阵式键盘较之独立式按键键盘要节省很多 I/O 口。 矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻 接到+5V 上当无键按下时,行线处于高电平状态;当有键按下时,行、列线 将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是 否按下的关键。 (2)独立连接式键盘 独立式按键是直接用 I/O 口线构成的单个按键电路,其特点是每个按键单 独占用一根 I/O 口线,每个按键的工作不会影响其它 I/O 口线的状态。独立式 按键电路配置灵活

11、,软件结构简单,但每个按键必须占用一根 I/O 口线,然而, 在按键较多时,I/O 口线浪费较大,不宜采用。 独立式按键软件常采用查询式结构。先逐位查询每根 I/O 口线的输入状态, 如某一根 I/O 口线输入为低电平,则可确认该 I/O 口线所对应的按键已按下, 然后,再转向该键的功能处理程序。由于本程序较为简单,为了使用方便及节 省资源,选择独立式键盘。下图为独立式键盘电路图: 图 6、独立式键盘电路图 去抖动 键盘编程中主要考虑去抖动的问题。 当测试表明有键被按下之后,紧接着就进行去抖动处理。因为键是机械开 关结构,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会 出现电压抖

12、动。为保证键识别的准确,在电压信号抖动的情况下不能进行行状 态输入。为此需进行去抖动处理。去抖动有硬件和软件两种方法。硬件方法就 是加去抖动电路,从根本上避免抖动的产生。软件消抖,在第一次检测到有键 按下时,执行一段延时程序之后,再检测此按键,如果第二次检测结果仍为按 下状态,CPU 便确认此按键己按下,消除了抖动。 发音部分设计 如下图所示,发音电路是由蜂鸣器、三极管、上拉电阻构成。由三极管来 驱动扬声器发音的,同时加上拉电阻增强驱动电流,提高驱动能力。 图 7、独立式键盘电路图 五硬件图五硬件图 六程序框图六程序框图 开始 初始化T0 自动播放键按 下 键盘扫描 程序 bo+ 音阶键按下

13、得到高中低三 种方式 判断P0口输 入,设定键值 键值不为0 根据7个键值和 工作方式确定 T0值 启动T0 选择数码管1显 示工作方式 选择数码管2显 示7个音调,发 出对应声音 关闭声音 播放内部存 储音乐 Bo/2=0 N Y Y N Y N 七程序七程序 #include #define keyport P1 #define uchar unsigned char #define uint unsigned int uchar high,low; /定时器预装值的高定时器预装值的高 8 8 位和低位和低 8 8 位位 sbit speak=P30; sbit gao=P35; sbit

14、 di=P36; sbit zdbf=P37; uchar yinjie=1; uchar time; uchar n=0; uchar bo=0; uchar code fre2= 0 x8c,0 xf8, 0 x5b,0 xf9, 0 x15,0 xfa, 0 x67,0 xfa, 0 x90,0 xfb, 0 xae,0 xfb, 0 x0c,0 xfc, /低音低音 0 x44,0 xfc, 0 xac,0 xfc, 0 x09,0 xfd, 0 x34,0 xfd, 0 x82,0 xfd, 0 xc2,0 xfd, 0 x06,0 xfe, /中音中音 0 x22,0 xfe, 0

15、 x56,0 xfe, 0 x85,0 xfe, 0 x9a,0 xfe, 0 xc1,0 xfe, 0 xe4,0 xfe, 0 x03,0 xff, /高音高音 ; void delay(uint ); void ITimer0(void);/定时器初始化定时器初始化 void key(void); void dtxs(int,int); void song() TH0=high; TL0=low; TR0=1; delay(time*240); void yinyue() uchar code hls= 5,2,2, 3,2,1, 5,2,1, 1,3,4, 6,2,2, 1,3,2,

16、5,2,4, 5,2,2, 1,2,1, 2,2,1 ,3,2,2 ,2,2,1, 1,2,1 ,2,2,6, 5,2,2, 3,2,1, 5,2,1, 1,3,3, 7,2,1, 6,2,2, 1,3,2, 5,2,4, 5,2,2, 2,2,1, 3,2,1, 4,2,3, 7,1,1, 1,2,6, 6,2,2, 1,3,2, 1,3,4, 7,2,2, 6,2,1, 7,2,1, 1,3,4 ,6,2,1, 7,2,1, 1,3,1 ,6,2,1, 6,2,1 ,5,2,1 ,3,2,1, 1,2,1, 2,2,6, 5,2,2, 3,2,1, 1,2,1, 1,3,3, 7,2,1,

17、 6,2,2, 1,3,2, 5,2,4, 5,2,2, 2,2,1, 3,2,1, 4,2,3, 7,1,1, 1,2,6 ; uchar m; n=0; while(n174) m=hlsn+7*(hlsn+1-1)-1; high=frem1; low=frem0; time=hlsn+2; n=n+3; song(); void main (void) uchar num; ITimer0(); speak=0; while(1) key(); switch(keyport) case 0 xfe:num=1;break; case 0 xfd:num=2;break; case 0

18、xfb:num= 3;break; case 0 xf7:num= 4;break; case 0 xef:num= 5;break; case 0 xdf:num= 6;break; case 0 xbf:num= 7;break; case 0 x7f:num= 8;break; default:num= 0;break; if(num=0) TR0=0; speak=0; else high=fre7*yinjie+num-11; low=fre7*yinjie+num-10; TR0=1; dtxs(yinjie,num); void ITimer0(void) TMOD |= 0 x

19、01; /使用模式使用模式 1 1,1616 位定时器,使用位定时器,使用|符号可以在使用符号可以在使用 多个定时器时不受影响多个定时器时不受影响 EA=1; /总中断打开总中断打开 ET0=1; /定时器中断打开定时器中断打开 TR0=1; /定时器开关打开定时器开关打开 void Timer0_isr(void) interrupt 1 TH0=high; TL0=low; speak=!speak; if(zdbf=0) delay(100); if(zdbf=0) bo+; if(bo/2=1) delay(100); if(n0;a-) for(b=110;b0;b-); void

20、dtxs(k,l)/k/k 是按键号,是按键号,l l 是工作方式是工作方式 char seg14=0 x6f,0 x0a,0 xe3,0 xcb,0 x8e,0 xcd, 0 xed,0 x0b,0 xef,0 xcf,0 xaf,0 xec,0 x65,0 xea; P2=0 x01;/选择第一个数码管选择第一个数码管 P0=segl;/显示按键号显示按键号 delay(4); P2=0 x02;/选择第二个数码管选择第二个数码管 P0=segk+10;/显示工作方式显示工作方式 delay(4); 八调试运行八调试运行 硬件调试 硬件调试主要是针对单片机部分进行的调试。 在上电之前,先确

21、保电路中不存在断路或短路情况,这一工作是整个调试工 作的第一步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万 用表,用来完成检测电路中是否存在断路或者短路情况的任务。注意焊点之间, 确保焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及短路的现 象出现。 在确保硬件电路正常且无异常情况(断路或短路)的情况下方可上电调试,上 电调试的目的是检验电路是否接错,同时还要检验原理是否正确,在本次设计 中,上电调试主要是检测单片机控制部分、数码管点亮部分、和音频转换电路 硬件调试。 1、数码管 LED 电路调试:接通电源,随机按下按钮可以看到数码管显示数 字。 2、键盘单片机控制部分调试:上电后,随机按动键盘可以发现各个按键对

温馨提示

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

最新文档

评论

0/150

提交评论