当前位置:首页 > 申请书大全 > 儿童电子琴 [简易电子琴毕业论文]
 

儿童电子琴 [简易电子琴毕业论文]

发布时间:2019-07-17 15:22:15 影响了:

姓 名 专 业 班 级 11论 文 名 称 指 导 教 师

王 坤 杰

电子4

简易电子琴

孙德刚

附件1:

毕业设计(论文)任务书

届:专业(班)::

进度安排

指导教师评语

指导教师签名:

评阅教师评语

评阅教师签名:

答辩小组组长 年 月 日

摘 要:

本文介绍了一种由AT89S51单片机、键盘、蜂鸣器、数码管等模块组成的简易电子琴的实施方案。

用AT89C51单片机为核心控制元件,设计一个简单的电子琴。以单片机作为主控核心,与键盘、蜂鸣器、数码管等模块组成核心主控制模块,在主控模块上设有8个按键和蜂鸣器。定时器按设置的定时参数产生中断,由于定时参数不同,就会发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同音调。

关键词:89c51单片机、键盘控制、数码管、蜂鸣器

Abstract

This paper introduces a kind of AT89S51, keyboard, buzzer,

digital tube composed of modules such as implementing scheme of electronic organ.

Use AT89C51 as the core control components, design a simple electronic organ. With single chip microcomputer as control core, and keyboard, buzzer, digital tube core modules such as main control module, on the main control module has eight buttons and a buzzer. Timer interrupt according to set timing parameters, because of the different timing parameters will make different pulse frequency, different frequency pulse after speaker driver circuit amplifier filtering, would be a different tone.

Keywords: 89 c51, the keyboard control, digital tube, the buzzer

.

目录

毕业设计任务书 . ................................................. 1 摘要 . ........................................................... 3 目 录 . ......................................................... 4 前 言 . ......................................................... 5 一、 系统基本设计思路 . .......................................... 6 二、 单元电路方案论证 . .......................................... 6

2.1 控制器模块 .............................................. 6 2.2 发声模块 ................................................ 7 2.3 编程软件模块 ............................................ 8 2.4 最终方案 ................................................ 8 三、硬件电路的设计 . ............................................. 8

3.1单片机的简介 . ............................................ 9 3.2 时钟电路 ............................................... 11 3.3音频放大电路 . ........................... 错误!未定义书签。 四、系统软件的调试仿真 . ........................................ 12 五、结 论 . .................................................... 14 致谢 . .......................................................... 14 参考文献 . ...................................................... 15 附录 1 主要源程序 . ............................................. 17

前 言

单片机因其体积小,功能强,价格低廉而得到广泛应用,同时随着我国经济的飞速发展,单片机在越来越多的领域得到了广泛的应用,现在国内的单片机多用于电话,玩具和LCD 等产品,预计在未来,利用单片机发明的产品会越来越多,作为一名应用电子的应届毕业生来说,理解和掌握单片机的工作原理和使用技巧是必备的技能,基于这种考虑,我这次毕业设计的题目为简易电子琴。

钢琴,自从它发明的那天起,就成为人类的朋友,有的人们不能负担起钢琴的高额价钱,但随着时间的推移,科学技术的不断发展,电子琴的发明让人们找到了能与钢琴媲美的声音。怎样让我们的电子琴随身携带呢?这就要求人们不断设计出新型电子琴。

我所设计的该产品时根据自身的兴趣和爱好所设计的,通过对传统电子琴的认识和了解,知道了传统的电子琴是利用单片机的汇编语言的编程来实现的,而且功能单一,只能弹奏而不能随意的播放音乐,我所设计的产品是基于对89c51单片机的深入理解对传统电子琴的小小的改革和创新,并且以简单的C 语言程序替代了复杂的汇编语言程序,声和光是新电子琴的主题,我相信在声光电子琴的不断革新达到人们所需娱乐设备的标准的时候,电子琴会被投入到批量生产之中。 下面就是制作电子琴的具体过程。

一、 系统基本设计思路

此设计是在LED 小灯上显示灯光的变换,蜂鸣器播放弹奏的曲子。电路包括:键盘、单片机及LED 显示电路,声音电路。 各部分说明:

(1) 键盘用于弹奏音乐,八个按键8种音符。

(2) 单片机通过输出各种电脉冲信号驱动控制各部分正常工作。 (3) 单片机发送的信号分别经过LED 显示电路通过译码最终在LED 小灯和声音电路通过蜂鸣器显示出来。

系统工作过程:单片机要产生音频脉冲,主要处理过程是在CPU 中完成的,CPU 会随时对音符输入信号进行读取数据的操作。在读取了相应的寄存器的值后,CPU 将读取的值进行处理,再通过I/O口把音乐通过扬声器播放出来。

二、单元电路方案论证

根据设计要求,本系统主要由控制器模块、显示模块和输入模块构成。为较好的实现各模块的功能,我们分别设计了以下几种方案并分别进行了论证。

2.1 控制器模块

方案1:采用凌阳系列单片机为系统的控制器

凌阳系列单片机可以实现各种复杂的逻辑功能,模块大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性。凌阳系列单片机提高了系统的处理速度,适合作为大规模实时系统的控制核心。

方案2:采用51系列作为系统控制器

单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。由于其功耗低、体积较小、技术成熟和成本低等优点,在各个领域应用广泛。而且抗干扰性能好。

因51单片机价格比凌阳系列低得多,且本设计不需要很高的处理速度,从经济和方便使用角度考虑,本设计选择了方案2。

2.2 发声模块

发声模块是本设计的最主要的部分。

基本方案:发生电路是这次设计电路中最重要的组成部分,他承载着把单片机所产生的声音信号放大并输出的重要作用,而我的设计中的发声电路主要是由两个CS9013组成。CS9013是一种小功率的放大管,属于NPN型号三极管,而对三极管引脚的判断有以下方法。

(1)判断三极管的基极。对于NPN型号的三极管,用黑表笔接某一个电极,红表笔分别接另外两个电极,若测量电阻值两个都小,调换表笔后被测电阻值都较大,则可判断第一次测量中黑表笔所接的是基极;如果测量值一大一小,相差很大,则第一次测量中黑表笔接的不是基极,应该更换其他电极重测。

(2)测量三极管发射极e 和集电极c 。三极管基极确定后,通过交换表笔,两次测量e,c 极间的电阻,如果两次测量结果不相等,其中测得电阻值较小的一次为红表笔的是e 极黑表笔接的是c 极。对于PNP型号的三极管,方法与NPN的相似,只是红黑表笔的作用相反,在测量e,c 极间电阻时要注意,由于三极管的V (BR )CEO 很小,很容易将发射结击穿。 当我们三极管的管脚判断结束以后,我们就可以用两个三极管构成一个达林顿结构。首先当单片机P1.0口输出一个高电平,由两个三极管构成的达林顿成能导通,导通后又能对电流又一定的放大作用,这样传到扬声器时信号能让我们听的更清楚。

图1

2.3 编程软件模块

方案1:采用汇编语言编程

汇编语言指令是用一些具有相应含义的助忆符来表达的,所以,它要比机器语言容易掌握和运用,但另一方面,它要直接使用CPU 的资源,相对高级程序设计语言来说,它又显得难掌握。

方案2:采用C语言编程

C 语言与其他高级语言相比, 具有运算符的丰富性、语法表述的灵活性、对软硬件操作的兼容性、输入输出方式的新颖性等主要特征. 深入分析研究这些特征, 可以加深对C 语言的认识; 正确应用这些特征, 可以灵活高效地解决各种实际问题.

因为我在大学期间对汇编语言没有深入的了解,而且在编程时一直用C 语言,所以我选择了方案2。 2.4 最终方案

经过反复论证,最终确定了如下方案: (1)采用STC89C51单片机作为主控制器。 (2)采用达林顿效应使音乐信号放大 (3)采用C语言编程

三、硬件电路的设计

一个完整的控制系统,单纯依靠一块单片机是远远不够的。它必须与外围电路元件相互搭配,共同完成任务。硬件电路的设计主要包括芯片89C51, 、LED 显示电路、振荡电路、音频电路等组成。

简易电子琴硬件电路图如图2所示:

图2 3.1 单片机的简介

单片微型计算机(Single Chip Microcomputer )简称单片机,是指集成在一块芯片上的计算机,它具有结构简单、控制功能强、可靠性高、体积小、价格低、等优点。单片机技术作为计算机技术的一个重要分支,广泛地应用于工业控制、智能化仪器仪表、家用电器、电子玩具等各领域。尽管单片机种类很多,但无论是从世界范围还是从全国范围来看,使用最为广泛的应属MCS-51系列单片机。其生产厂家有:Intel 公司、Atmel 公司、Philips 公司等。本设计采用Atmel 公司的AT89S51,其它厂家单片机这里不再多说,以下是对AT89S51的介绍。

Atmel 公司生产的AT89S51单片机是一种低功耗/低电压、高性能的8位单片机,内部除CPU 外,还包括128B 的内部用户数据存储器RAM ,4KB 的内部用户程序存储器,4个8位并行可编程I/0口,2个16位计数/定时器,5

个中断源,2个优先级别,1个可编程的串行通信口。

STC89C51是一种带8K 字节可编程可檫除只读存储器的低电压、高性能COMOS8位微处理器,俗称单片机。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

单片机引脚图如图3所示。

图3 STC89C51单片机引脚图

从外部结构图我们可以看到,S51单片机有40个管脚。正电源和地线两根,外置石英振荡器的时钟线两根,一个复位端RESET,/EA,ALE,/PSEN三根线,P0-P3共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:

(1)主电源引脚Vcc 和Vss Vcc (40脚):主电源接+5V Vss (20脚):接地

(2)时钟电路引脚XTAL1和XTAL2:接外部晶体振荡器的引线端。当使用芯片内部时钟时,两引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。这两个引脚连接的电路成为时钟电路,用来产生

单片机正常工作时所需要的时钟脉冲信号。

(3)控制信号RST/Vpd、ALE/(/PROG) 、/ PSEN和 (/EA)/Vpp

RST/Vpd(9脚):复位端。高电平有效,保持在2个机器周期宽度以上,使单片机复位,用于完成单片机的复位初始化操作。在进行单片机应用系统设计时,这个引脚一定要连接相应的电路,即复位电路。该引脚有复用功能,Vpd 为备用电源输入端,防止主电源掉电。

(4)输入/输出引脚P0、P1、P2和P3口

P0.0~P0.7(39~32脚):访问片外存贮器时作为低八位地址线和八位数据线(复用)。负载能力为8个LSTTL 门。

P1.0~P1.7(1~8脚): 8位准双向I/O口。负载能力为3个LSTTL 门。 P2.0~P2.7(21~28脚):访问片外存贮器时作为高八位地址线。 P3.0~P3.7(10~17脚):8位准双向I/O口。负载能力为3个LSTTL 门。另外还有专门的第二功能。

P3口的第二功能是

P3.0(10脚): RXD(串行口输入端) P3.1(11脚): TXD(串行口输出端) P3.2(12脚): /INT0(外部中断0输入端) P3.3(13脚): /INT1(外部中断1输入端) P3.4(14脚): T0(定时器/计数器0外部输入端) P3.5(15脚): T1(定时器/计数器1外部输入端) P3.6(16脚): /WR(片外数据存贮器写选通信号输出端) P3.7(17脚): /RD(片外数据存贮器读选通信号输出端)

3.2 时钟电路

STC89C51内部有时钟电路,但石英晶体和微调电容需外接。用于产生整个单片机运行的脉冲时序,系统允许的晶振频率一般位6MHz 和12MHz ,在应用精度要求较高的场合一般选用11.0592MHz ,可以使定时器/计数器更精确。

STC89C51内部有一个用于构成振荡器的高增益反相放大器,引脚RXD 和TXD 分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部时钟在此不做详细介绍。外部方式的时钟电路如图4所示,RXD

接地,TXD 接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率在12MHz 左右的方波信号。

图4 89c51内部时钟电路

3.3音频放大电路

使用PNP 管来放大,其中发射极接5V 电源,集电极接喇叭,电路中的电容是用来隔离直流电用的。

PNP 管放大原理:当PNP 管的VC

IE=IB+IC=IB(1+β·IB)。即,基极电流可以控制集电极电流,这种控制作用就称为管子的放大作用。本课程设计的音频放大电路图如图5下所示

图5

四、系统软件的调试仿真

硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。

这里我们使用Proteus 软件进行仿真,加载编译好的.HEX 即件到单片机后,

点击运行按钮

即可,仿真电路图如图6所示:(当我们按键时如果

成功就会听到我们想要的音乐)

图6

五、结 论

通过对自己在大学三年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考及书面表达能力,最终完成了本设计。这为自己今后进一步深化学习,积累了一定宝贵的经验。设计的过程不是一帆风顺,遇到过各种各样的问题。特别是设计软件时,一些很细小的问题都可能导致功能性的错误,修改了多次才通过仿真。在设计过程中我发现自己对以前所学过的知识理解得不够深刻,掌握得不够牢固,所以也利用图书馆、网络资源查阅了大量文献资料,也请教了老师和同学。同时在具体的制作过程中我们发现一些书本上的知识与实际的应用存在着一定的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方面的问题,这也让我更深刻地体会到在今后的学习工作中也要注重理论联系实际。

撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练,培养了我运用所学知识解决实际问题的能力

致谢

经过了几个月查资料、制作毕业设计、写作论文,今天终于可以顺利的

完成了自己的毕业设计和论文。在大学中帮助我的同学和老师有很多,四年的时光匆匆飞逝,在4年的大学生活里学习到了许多专业知识,同时也学习到了许多的做人道理,为我以后的闯入社会奠定了基础。

论文和毕业设计得以完成,首先要感谢我的指导老师宋荣老师,制作这个毕业设计是宋老师为我选的题,并指引我的论文的写作的方向和架构。在此,谨向宋老师表示崇高的敬意和衷心的感谢!

另外,要感谢在大学期间所有传授我知识的老师,是你们的悉心教导使我有了良好的专业课知识,通过此次的论文,我学到了很多知识,跨越了传统方式下的教与学的体制束缚,在论文的写作过程中,通过查资料和搜集有关的文献,培养了自学能力和动手能力。并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。在以往的传统的学习模式下,我们可能会记住很多的书本知识,但是通过毕业论文,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。

总之,此次论文的写作过程,我收获了很多,即为大学三年划上了一个句号,也为将来的人生之路做好了一个很好的铺垫。再次感谢我在大学传授给我知识以及给我帮助和鼓励的老师,同学和朋友,谢谢你们!

参考文献

[1] 白炽贵编著, 单片机C 语言案例教程,北京:电子工业出版社,2011.1 [2] 周良权主编. 模拟电子技术基础 北京:高等教育出版社,2005.6 [3] 卜锡滨主编. 数字电子技术 北京:中国水利水电出版社,2011.1 [4] 李华. 单片机C语言编程[M].北京:北京航空航天大学出版社,联单2005.8.1

[5] 徐爱钧.单片机原理实用教程--基于Protrues 虚拟仿真[M].北

京:电子工业出版社.2009.1

[6] 李萍.AT89S51单片机、原理、开发与应用实例[M].北京:中国电

力出版社.2008.7

[7] 张晔、王玉民等.单片机应用技术[M] .北京:高等教育出版社.2006.3

[8] 付家才等.单片机控制工程实践技术[M] .北京:化学工业出版社.2004.5

[9] 及力主编. 电子CAD 基于protel 99 SE 北京: 北京邮电大学出版社,2008

[10]徐红升主编. 电工基础及实训 北京:清华大学出版社,2009.5

附录 主要源程序

sfr P4=0xe8;//定义P4组I0口 #include #define uint unsigned int #define uchar unsigned char sbit speaker=P1^4;//喇叭接30脚 sbit key1=P1^0;//流水灯按键(暂时) sbit key2=P1^1;//播放音乐按键(暂定) uchar a,b,num1,s1num,n1,n2; char num;//定义num 为可以负数

uchar code yinfu[]={0xfb,0xe9, //Do 0xfc,0x5c, //Re 0xfc,0xc1, //Mi 0xfc,0xef, //Fa 0xfd,0x45, //So 0xfd,0x92, //La 0xfd,0xd0, //Si 0xfd,0xee, //Do# };

uchar code shengri_tone[]={ 1,0,1,2,1,4,3,0, //生日快乐音调 1,0,1,2,1,5,4,0, 1,0,1,8,6,4,3,2,0,

7,0,7,6,4,5,4,0 //0代表不发声,即停顿;数字即为音调 };

0x00,0x00, //间隔

uchar code shengri_beat[]={ 24,1,24,48,48,48,72,5,//节拍 24,1,24,48,48,48,72,5, 24,1,24,48,48,48,48,72,5, 24,1,24,48,48,48,72,5 //节拍,即tone 表各音调的延时 };

uchar code ledtable[]={0x7f,0xbf,0xdf,0xef, //取反

0xf7,0xfb,0xfd,0xfe};//P0组口的发光二极管代码(焊接过程可能会相反,具体更改)

uchar code ledtable2[]={0x7f,0xbf,0xdf,0xef, //取反 0xf7,0xfb,0xfd,0xfe};//P2组口发光二极管代码, 相反! void check_key();//改为P3组为按键 void keyscan();

void turn();//顺时针流动 void back(); void qianhou(); void dangshuang();

void delay(uint z);//延时函数声明 void delay1(void);//声明第二个延时函数 void play1(void);//播放生日快乐

void main() {

s1num=0;//流水灯种类标志 key1=1; key2=1;

}

TMOD=0x01; TH0=a; TL0=b;

ET0=1;//打开定时器,但是未允许中断 TR0=1; while(1) {

check_key(); keyscan(); }

void time0() interrupt 1 { }

void check_key() {

P3=0xff;//先赋给P2组口高电平 switch(P3)//按下一个键相应4个灯亮 {

case 0xfe:P0=0xee;P2=0x77;a=0xfb;b=0xe9;EA=1;peak;//P0,P2TH0=a; TL0=b;

speaker=~speaker;

组为发光二极管组

case 0xfd:P0=0xdd;P2=0xbb;a=0xfc;b=0x5c;EA=1;peak;//注意:

EA 不能改为TR0

}

}

case 0xfb:P0=0xbb;P2=0xdd;a=0xfc;b=0xc1;EA=1;peak; case 0xf7:P0=0x77;P2=0xee;a=0xfc;b=0xef;EA=1;peak; case 0xef:P0=0xee;P2=0x77;a=0xfd;b=0x45;EA=1;peak; case 0xdf:P0=0xdd;P2=0xbb;a=0xfd;b=0x92;EA=1;peak; case 0xbf:P0=0xbb;P2=0xdd;a=0xfd;b=0xd0;EA=1;peak; case 0x7f:P0=0x77;P2=0xee;a=0xfd;b=0xee;EA=1;peak; default:EA=0;speaker=0;//P0=0xff;P2=0xff ;

void delay(uint z) { }

void keyscan() {

uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);

if(key1==0) {

delay(5);

if(key1==0) {

s1num++; while(!key1); if(s1num==1) {

turn();

}

}

}

if(s1num==2) { }

if(s1num==3) { }

if(s1num==4) { }

if(s1num==5)

s1num=1; dangshuang(); qianhou(); back();

}

if(key2==0) { }

delay(5); while(~key2); play1();

void delay1(void)//第二个延时函数 {

uchar n=15; while(n--) {

uchar i;

for(i=0;i

void play1(void)//播放生日快乐 {

uchar m=0; uchar s; uchar c=1; P0=0xaa;

P2=0x55;

while(1) {

EA=0;

c=shengri_tone[m]; //符

s=shengri_beat[m]; // a=yinfu[2*c-2]; b=yinfu[2*c-1]; EA=1; while(s--) {

delay1();

取音取节拍

P0=~P0; P2=~P2;

} m++;

if(m>=33) return; //数值是shengri 相关表中的元素数量 } }

/*以下为N 种流水灯流动花式*/

void turn()//流水灯顺时针走动(5次){ for(num1=0;num1

for(num=0;num

P0=ledtable[num]; delay(30);//时间暂定

}

P0=0xff;//之后关闭P1组 for(num=7;num>-1;num--) {

P2=ledtable2[num]; delay(30);

}

P2=0xff;//之后关闭P2组

}

}

void back()//逆时针流动 { for(num1=0;num1

for(num=0;num

} P2=0xff;

for(num=7;num>-1;num--) { P0=ledtable2[num]; delay(30); } P0=0xff; }

}

void qianhou()//前后来回 { for(num1=0;num1

for(num=0;num

P0=ledtable[num];

P2=ledtable2[num]; delay(30);

}

P0=0xff; P2=0xff;

for(num=7;num>-1;num--) { P0=ledtable[num]; P2=ledtable2[num]; delay(30);

} P0=0xff; P2=0xff; }

}

void dangshuang()//单数双数 { for(num1=0;num1

P0=0x55; P2=0xaa; delay(150); P0=0xaa; P2=0x55; delay(150);

}

}

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3