C51课程设计-电子琴

发布时间:2021-09-20 04:01:25

C51 程序设计课程报告
——电子琴

学 班 学 姓

院:电气信息工程学院 级:自动化(3) 号:1114210114 名: 雷星星

摘要:
随着电子产业的发展和人民生活水*的提高, 电子琴在人们生活中将扮演着 越来越重要的角色,它改善人们的生活,给人们带来快乐和陶冶人的情操。电子 琴,它是现代电子科技与音乐结合的产物,是一种新型的键盘乐器,电子琴采用 控制功能强大的微处理技术和电子技术,使它融入现代人的生活中,成为不可或 缺的一部分。 本设计在充分了解音乐音阶基础上, 以 AT89S51 单片机作为核心控制器件而 设计的,以这款单片机作为主控核心,通过程序控制与键盘,运放电路,扬声器 等电路组成电子琴的基本单元,本文设计的电子琴,采用十六键技术,模拟了市 场上电子琴的基本功能。 可以用弹奏出简单的乐曲;弹奏电子琴时能播放出准确 的声音,不弹奏时可以播放内置音乐。 本设计给出了电子琴的详细设计方案, 电路组成及程序流程并对电子琴可行 性模拟仿真,Proteus 试验仿真表明本文设计的电子琴运行稳定,电路简单,软 件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。在本 文设计的基础上,功能可以延伸和拓展,由于是程序控制,电子琴升级方便,具 有很强的市场推广价值。 关键词:AT89S51,电子琴,Proteus 仿真,音阶

目录
一 设计背景 .............................................. 2 二 设计目的和要求 ........................................ 2 1.设计目的 ........................................... 2 2.设计要求 ............................................ 3 三 设计原理 .............................................. 3 1. 定时/计数器原理 .................................... 3 2.中断控制 ............................................ 3 3.七段数码管 .......................................... 4 4.矩阵式键盘的识别和显示 .............................. 6 四 设计组成 .............................................. 7 1.设计的模块组成 ...................................... 7 2.设计的软件实现流程 .................................. 7 五 设计的电路原理图 ...................................... 8 六 本实验的 C 语言程序 .................................... 9 七 仿真和调试 ........................................... 12 1.仿真结果 ........................................... 12 2.调试过程 ........................................... 13 八 实验成果和心得 ....................................... 13 1.实验成果 ........................................... 13 2.心得体会 ........................................... 13 参考文献: .............................................. 15

一 设计背景
随着人们生活水*的提高和电子产业的高速发展, 越来越多的电子产品融入 到人们的生活当中,电子琴也不例外,它作为一种陶冶人们情操,给人们生活增 天乐趣的一种乐器, 在生活中扮演比较重要的角色,逐步成为人们生活当中的一 部分。电子琴本身是一种敲击乐器,通过敲击不同按键,由于音阶不同而发出不 同声响, 给人们的带来快乐, 音阶的控制和声音大小是通过微控制器和电子电路 实现的。 简易电子琴结构组成: 电子乐器的结构较为复杂, 音源是由晶体管产生电 振动,并通过音色回路而产生各种音色;同时由周波数调制产生颤音效果,由振 幅调制产生各种乐器的音效。 乐器特色:属于电子乐器,发音音量可以自由调 节。音域较宽,和声丰富,甚至可以演奏出一个管弦乐队的效果,表现力极其丰 富。它还可模仿多种音色,甚至可以奏出常规乐器所无法发出的声音(如人声, 风雨声等) 。 另外, 电子琴在独奏时, 还可随意配上类似打击乐音响的节拍伴奏, 适合于演奏节奏性较强的现代音乐。 另外, 电子琴还安装有混响、 回声、 延长音、 震 音和颤音等多项功能装置,表达各种情绪时运用自如。简易电子琴是电声乐 队的中坚力量, 常用于独奏主旋律并伴以丰富的和声。 还常作为独奏乐器出现, 具有鲜明时代特色。但电子琴的局限性也十分明显:旋律与和声缺乏音量变化, 过于协和、单一;在模仿各类管、弦乐器时,音色还不够逼真,模仿提琴类乐器 的音色时,失真度更大,还需要不断改进。 本设计在充分了解音乐音阶基础上,AT89C51 单片机作为核心控制器件而设 计的,以这款单片机作为主控核心,通过程序控制与键盘,运放电路,扬声器等 电路组成电子琴的基本单元,本文设计的电子琴,采用十六键技术,模拟了市场 上电子琴的基本功能。 可以用弹奏出简单的乐曲;弹奏电子琴时能播放出准确的 声音,不弹奏时可以播放内置音乐。

二 设计目的和要求
1.设计目的 (1)熟悉单片机的内部结构。 (2)掌握 C51 编程方法。 (3)掌握定时器与发声的关系。 (4)掌握交流蜂鸣器的发声原理和程序控制方法。 (5)掌握串行控制键盘键的识别方法。

2

2 .设计要求 (1)使用 AT89C51 作为核心控制器件。 (2)编写 C 语言程序。 (3)利用定时器来控制频率。 (4)要求达到电子琴的基本功能,可以用弹奏出简单的乐曲。 (5)用键盘作出电子琴的按键,每键代表一个音符。 (6)各音符按一定的顺序排列,必须符合电子琴的按键排列顺序。

三 设计原理
1. 定时/计数器原理 MCS-51 单片机内部有 2 个 16 位的可编程定时/计数器,定时/计数器 0 由计 数器 TH0 和 TL0 组成,定时/计数器 1 由计数器 TH1 和 TL1 组成,THX 和 TLX (X=0,1)分别为两个 8 位计数器,连接起来可组成 16 位计数器。定时/计数器 的工作方式由方式控制字 TMOD 选择,定时/计数器的启停由控制寄存器 TCON 控制,这两个寄存器均属于特殊功能寄存器。定时/计数器的工作原理图如下: 其核心是一个加 1 计数器,加 1 计数器的脉冲有两个来源:一个是外部脉冲源, 另一个是系统的时钟振荡器。当脉冲源为时钟振荡器(等间隔脉冲序列)时,由 于计数器脉冲周期相同, 所以脉冲数乘以脉冲周期就是定时时间,此时为定时功 能。当脉冲源为外部脉冲时,就是外部事件的计数器,此时为计数功能。

2 中断控制 (1)TCON 用于中断请求 TF 1 降沿触发。 IT1 外部中断请求触发方式。作用同 IT0。 IE0:外部中断请求标志位。当发中断请求时,置 1,否则置 0。 IE1:外部中断请求标志位。作用同 IE0。
3

TF 0

IE1

IT1

IE0

IT0

IT0:外部中断请求触发方式。当 IT0=0 时,低电*触发;当 IT0=1 时,下

TF0:片内定时/计数器 0 的溢出请求标志位,定时/计数器 0 溢出时,置 1, 否则置 0. TF1:片内定时/计数器 1 的溢出中断请求标志位,作用同 TF0. (2)中断允许寄存器 IE EA ES 1 ET 1 EX 0 ET 0 EX

EA:开中断标志位。当 EA=1 时,CPU 开中断;EA=0 时,CPU 关中断。 ES:串行口的中断允许位。当 ES=1 时,串行口允许中断;ES=0 时,则不 允许中断。 ET0(ET1):定时/计数器 0(1)的中断允许位。当 ET0=1,定时/计数器 0(1) 溢出,允许中断,否则不允许。
EX0(EX1):?? INTO 的中断允许位,当 EX0=1 时,允许中断,否则,不允许。

3.七段数码管 (1)七段数码管简介 数码管使用条件: a、段及小数点上加限流电阻 b、使用电压:段:根据发光颜色决定; 点:根据发光颜色决定 c、 使用电流: 静态: 总电流 80mA (每段 10mA );动态:*均电流 4-5mA 峰值电流 100mA上 面这个只是七段数码管引脚图, 其中共阳极数码管引 脚图和共阴极的是一样的。 (共阳管与共阴管的判断 方法:在公共端加高电*,段码端加低电*,看是否 点亮二极管,若亮则为共阳管,不亮则为共阴管) 数码管使用条件: (2)数码管的分类 数码管按段数分为七段数码管和八段数码管, 八段数码管比七段数码管多一 个发光二极管单元(多一个小数点显示) ;按能显示多少个“8”可分为 1 位、2 位、4 位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数 码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的 数码管。共阳数码管在应用时应将公共极 COM 接到+5V,当某一字段发光二极管 的阴极为低电*时,相应字段就点亮。当某一字段的阴极为高电*时,相应字段 就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM) 的数码管。 共阴数码管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发 光二极管的阳极为高电*时,相应字段就点亮。当某一字段的阳极为低电*时,
4

小数

七段数码管

相应字段就不亮。

外观图

共阳极

共阴极

数码管要正常显示, 就要用驱动电路来驱动数码管的各个段码,从而显示 出想要的数字, 因此根据数码管的驱动方式不同, 可以分为静态式和动态式两类。 (3)数码管的驱动方式 静态显示驱动 静态显示驱动也称直流驱动。 静态显示驱动是指每个数码管的每一个段码都 由一个单片机的 I/0 端口进行驱动,或者使用如 BCD 码二-十进制译码器译码 进行驱动。静态显示驱动的优点是编程简单、显示亮度高,缺点是占用 I/0 端 口多,如驱动 5 个数码管静态显示时需要 40(5×8)根 I/0 端口,要知道一个 89551 单片机可用的 I/0 端口才 32 个,所以实际应用时必须增加译码驱动器进 行驱动,从而增加了硬件电路的复杂性。 动态显示驱动 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一, 动态显 示驱动是将所有数码管的 8 个显示笔画“a、b、c、d、e、f、g、dp”的同名端 连在一起,另外为每个数码管的公共极 COM 增加位选通控制电路,位选通由各 自独立的 I/0 线控制。当单片机输出字形码时,所有数码管都接收到相同的字 形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通 COM 端电路 的控制, 所以我们只要将需要显示的数码管的选通控制打开, 该位就显示出字形, 没有选通的数码管就不会亮。通过分时轮流控制各个数码管的 COM 端,使各个 数码管轮流受控显示,这就是动态显示驱动。在轮流显示过程中,每位数码管的 点亮时间为 1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实 际上各位数码管并非同时点亮, 但只要扫描的速度足够快,给人的印象就是一组 稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,但能够 节省大量的 I/0 端口,而且功耗更低。

5

4.矩阵式键盘的识别和显示 ( 1)矩阵式键盘的结构与工作原理 在键盘中按键数量较多时, 为了减少 I/O 口的占用,通常将按键排列成矩阵 形式,在矩阵式键盘中,每条水*线和垂直线在交叉处不直接连通,而是通过一 个按键加以连接。这样,一个端口(如 P1 口)就可以构成 4*4=16 个按键,比之直 接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条 线就可以构成 20 键的键盘,而直接用端口线则只能多出一键(9 键)。由此可见, 在需要的键数比较多时,采用矩阵法来做键盘是合理的。 矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过 电阻接正电源,并将行线所接的单片机的 I/O 口作为输出端,而列线所接的 I/O 口则作为输入。这样,当按键没有按下时,所有的输出端都是高电*,代表无键 按下。行线输出是低电*,一旦有键按下,则输入线就会被拉低,这样,通过读 入输入线的状态就可得知是否有键按下了。 (2)的按键识别方法 行扫描法行扫描法又称为逐行(或列)扫描查询法, 是一种最常用的按键识 别方法.判断键盘中有无键按下将全部行线 Y0-Y3 置低电*,然后检测列线的状 态。只要有一列的电*为低,则表示键盘中有键被按下,而且闭合的键位于低电 *线与 4 根行线相交叉的 4 个按键之中。若所有列线均为高电*,则键盘中无键 按下。 判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。 其方法是:依次将行线置为低电*,即在置某根行线为低电*时,其它线为高电 *。在确定某根行线位置为低电*后,再逐行检测各列线的电*状态。若某列为 低,则该列线与置为低电*的行线交叉处的按键就是闭合的按键。

矩阵式键盘的结构

6

四 设计组成
1.设计的模块组成。

2.设计的软件实现流程

7

五 设计的电路原理图

8

六 本实验的 C 语言程序
#include <AT89C51.H> unsigned char code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; unsigned char temp; unsigned char key; unsigned char i,j; unsigned char STH0; unsigned char STL0; unsigned int code tab[]={64021,64103,64260,64400, 64524,64580,64684,64777, 64820,64898,64968,65030, 65058,65110,65157,65178}; void main(void) { TMOD=0x01; ET0=1; EA=1; while(1) { P3=0xff; P3_4=0; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) { for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3; temp=temp & 0x0f; if (temp!=0x0f) {
9

temp=P3; temp=temp & 0x0f; switch(temp) { case 0x0e: key=0; break; case 0x0d: key=1; break; case 0x0b: key=2; break; case 0x07: key=3; break; } temp=P3; //P1_0=~P1_0; P2=table[key]; STH0=tab[key]/256; STL0=tab[key]%256; TR0=1; temp=temp & 0x0f; while(temp!=0x0f) { temp=P3; temp=temp & 0x0f; } TR0=0; } } P3=0xff; P3_5=0; temp=P3;
10

temp=temp & 0x0f; if (temp!=0x0f) { for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3; temp=temp & 0x0f; if (temp!=0x0f) { temp=P3; temp=temp & 0x0f; switch(temp) { case 0x0e: key=4; break; case 0x0d: key=5; break; case 0x0b: key=6; break; case 0x07: key=7; break; } temp=P3; //P1_0=~P1_0; P2=table[key]; STH0=tab[key]/256; STL0=tab[key]%256; TR0=1; temp=temp & 0x0f; while(temp!=0x0f) {
11

七 仿真和调试
1.仿真结果

12

2.调试过程 为了检验本文设计的电子琴的软、硬件能否达到设计要求,本文对电路进行 了仿真操作, 仿真在 Proteus 软件中进行,首先在 Proteus 软件中虚拟制作出电 路图, 然后导入事先编制好的软件程序,就可以进行动态仿真了,与在真实电 路板上进行调试的过程基本一样。这样,如果在仿真过程中发现软、硬件不能正 常工作, 那么就能及时查找原因并做出相应修改,直到仿真的结果与实际相符为 止。 (1)出现的问题 仿真时发现按下相应按键时,相应功能没能实现。 (2)解决办法 经分析得知是标志量没有设置好, 进而改正了程序, 使之实现了相应的功能。 通过各方面努力,本次单片机课程设计任务完成,系统大部分功能已实现。 可以随意演奏一首喜欢的曲子, 并可以显示在数码管上,可以通过功能切换进行 自动播放歌曲, 基本达到预定的效果。通过这次的设计提高了我运用所学的专业 基础知识来解决面临实际问题的能力,同时也提高了我查阅各种文献资料、设计 手册、 设计规范以及软件编程排版的水*。対单片机课程设计的整个流程和设计 要求都有了深刻的认识,对以后的学*和设计都有很大的帮助。

八 实验成果和心得
1.实验成果 课程设*峁灸芄荒苁迪郑 (1)能产生纯音; (2)用键盘代替电子琴的键盘,控制演奏音乐,并根据键值控制发声; (3)演奏一支乐曲。 2.心得体会 本次基于 C51 单片机的电子琴设计主要涉及硬件和软件两方面的内容, 通过 这次课程,我的硬件和软件开发能力都获得了提高。首先硬件方面,更加熟悉了 51 单片机的结构以及它的实用,基本了解了电子产品的开发流程和所要做的工 作。基本掌握了 C51 并设计了一个单片机最小系统。通过 C 语言编程的过程,使 我对 C 语言的编程能力和 C51 单片机的功能有了更深层次的理解, 熟悉了一些单 片机常用的外围电路引脚和连接方法,如 LED 数码管,键盘等,并且我学会了遇 到问题要分析问题及解决问题的能力,加深了对所学理论知识的理解和运用。我 的动手能力得到了很大的提高,尤其是团队合作和沟通交流能力得到明显锻炼。 这次课程的设计不仅仅培养了我的实际操作能力, 也培养了我灵活运用课本 知识,理论联系实际,独立自主的进行设计的能力。它不仅仅是一个学*新知识 新方法的好机会, 同时也是对我所学知识的一次综合的检验和复*,使我明白了 自己的缺陷所在,从而查漏补缺。
13

在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就 会导致结果的不正确, 而对错误的检查要求我要有足够的耐心,通过这次设计和 设计中遇到的问题, 也积累了一定的经验,对以后从事集成电路设计工作会有一 定的帮助。 每次实际的经历都会给自己带来很多技能的提升,虽然现在的自己还 仅仅是一名学生, 可也就是学生的不断学*和创新,一个又一个创新和进步带来 了生活的丰富,把握实践,成就将来,感谢老师的辛勤给我带来的收获,以后更 加努力。

14

参考文献:

[1] 彭伟.单片机 C 语言程序设计实训 100 例.电子工业出版社.2009 年 [2] 李建忠.单片机原理及应用.西安:西安电子科技大学,2002 年 [3] 马忠梅等.单片机的 C 语言应用程序设计[M].北京航空航天大学出版社, 2006 年

15


相关文档

  • c51单片机课程设计——电子琴
  • 基于c51单片机的电子琴设计
  • 基于C51的电子琴
  • 单片机电子琴课程设计
  • 单片机 C51电子琴
  • C51电子琴
  • 简易电子琴单片机c51程序
  • 单片机课程设计 电子琴
  • C51单片机电子琴程序
  • 接口课程设计电子琴
  • 猜你喜欢

  • 2017-2023年中国模板纸市场发展规划及投资战略可行性预测报告(目录)
  • 新苏教版一年级数学下册 1.3 练*一(2) 教学课件
  • 推土机安全操作规程
  • 嘉兴亚盛信息技术有限公司企业信用报告-天眼查
  • 经期穿紧身裤易导致不孕
  • Aspose系列(一) Aspose Words-->DocumentBuilder
  • 描写人生感悟的优美段落-作文
  • 山东省滕州市善国中学高二上学期期中考试化学试题 Wor
  • 美国功能纤维公司加快业务拓展
  • 204年安全生产应急管理知识培训课件
  • (完整word版)XXX小学教师安全教育培训记录
  • 关于教师节的随笔_读后感
  • iptables TIPS
  • 【精品解析】2019年调研卷-普通高等学校招生全国统一考试模拟(二)语文试题(附解析)
  • 中学XX—XX学年第二学期半期政治考试质量分析
  • x86汇编语言 屏幕是如何控制字符的显示?
  • 历史中真实的周瑜是怎么样的
  • 标准的购房合同模板
  • 香港基督少年军第
  • 最新部编人教版二年级语文上册第3课《植物妈妈有办法》教案(教学设计、导学案)
  • 福建省尤溪县第七中学2017_2018学年高二英语上学期第二次“周学*清单”反馈测试试题
  • 创业英雄汇的改版
  • 80后员工管理:突破瓶颈,路在何方
  • 浅析农产品供应链的营运资金管理绩效问题
  • 最新教科版一年级科学上册:第1单元第3课《观察叶》(教案)
  • 2016年考研英语:历年真题高频词组(3)
  • 幼儿园中班上学期班务工作计划_1
  • 国内英语资讯:Audience satisfaction with Chinese films reaches 5
  • 对“体育”概念演变历程的剖析
  • 信息技术环境下初中化学教学改革研究
  • 最新尔雅通识课-《项目管理学》期末考试(1)
  • 2014-2015年度营销计划及操盘思路汇报0213(终)
  • cocos2d-lua 手游之RichText的改写
  • 高职贫困生的主观幸福感状况研究
  • 傲霜怒菊
  • 冒牌乳粉案让奶粉真假难辨,Bimbosan宾博奶粉原罐原装更有保证!
  • 农村中学英语口语教学问题和对策
  • 三年级上册数学作业课件-第1章 克、千克、吨 第1课时 克、千克的认识|西师大版
  • 【推荐下载】201X年骨干教师自我评价-范文word版 (5页)
  • 12-13学年高一数学 2.3.3 直线与*面垂直的性质2课件 新人教A版
  • 张艺谋新片《影》定档暑期
  • 医疗废物、医疗污水处理整改措施
  • 电脑版