单片机课程设计论文1.docx

上传人:b****4 文档编号:12246179 上传时间:2023-04-17 格式:DOCX 页数:27 大小:266.88KB
下载 相关 举报
单片机课程设计论文1.docx_第1页
第1页 / 共27页
单片机课程设计论文1.docx_第2页
第2页 / 共27页
单片机课程设计论文1.docx_第3页
第3页 / 共27页
单片机课程设计论文1.docx_第4页
第4页 / 共27页
单片机课程设计论文1.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

单片机课程设计论文1.docx

《单片机课程设计论文1.docx》由会员分享,可在线阅读,更多相关《单片机课程设计论文1.docx(27页珍藏版)》请在冰豆网上搜索。

单片机课程设计论文1.docx

单片机课程设计论文1

 

单片机课程设计

 

项目名称基于单片机的电子琴设计

专业班级通信103班

学生姓名王欢

指导教师靳展

 

2012年12月10日

摘要

本课程设计利用AT89C51单片机模拟了简单的电子琴系统。

运用Proteus仿真、AltiumDesigner09软件绘制原理图,生成PCB,使用Keil软件编写C程序并通过单片机的I/O端口控制矩阵键盘及喇叭发声。

实验原理简单清晰,使我们能够很容易的理解电子琴的工作原理。

本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。

通过这次动手实验,既培养了对小设计的兴趣,又体会到了理论与实际的差距。

关键词:

AT89C51;矩阵键盘;喇叭;

 

Abstract

ThecourseisdesignedbyusingAT89C51single-chipmicrocomputersimulatethesimplekeyboardsystem.UsingtheProteussimulation,drawingprinciplediagrambyAltiumDesigner09software,generatingPCB,usingKeilsoftwarewriteCprogram,throughtheS-M'sI/Oportcontrolmatrixkeyboardandatrumpetsound.Experimentprinciplesimpleandclean,sothatwecaneasilyunderstandtheworkingprincipleofthekeyboards.Thesystem’soperationstable,itsadvantageishardwarecircuitissimple,softwareperfectfunction,controlsystemreliable,ratioishigher,hasacertainpracticalandreferencevalue.Throughthishands-onexperiment,itisnotonlycultivateinterestinthesmalldesign,butalsoexperiencedthetheorywithpracticalgap.

Keywords:

AT89C51;Matrixkeyboard;Loundspeaker

目录

摘要I

AbstractII

第1章绪论1

1.1课题背景1

1.2音乐产生原理1

1.3主要设计任务2

第2章电子琴系统的基本理论3

2.1AT89C513

2.1.1AT89C51简介3

2.1.2AT89C51性能简介3

2.1.3AT89C51引脚简介4

2.2LM3865

2.2.1LM386简介5

2.2.2LM386内部电路5

2.2.2LM386引脚简介6

第3章系统的硬件设计7

3.1系统工作原理7

3.2总体设计框图7

3.3中心控制模块8

3.4播放模块9

3.5按键模块9

3.6电路仿真图10

第4章系统软件设计11

4.1主程序流程图11

4.2定时器T0程序流程图12

结论13

参考文献14

附录1原理图15

附录2PCB及3D视图16

附录3源程序17

附录4实物图23

第1章绪论

1.1课题背景

电子琴是电声乐队的中坚力量,常用于奏主旋律并伴以丰富的和声。

还常作为独奏乐器出现,具有鲜明时代特色,但电子琴的局限性也十分明显:

旋律与和声缺乏音量变化,过于协和、单一;在模仿各类管、弦乐器时,音色还不够逼真,模仿提琴类乐器的音色时,失真度更大,还需要不断改进。

电子琴的演奏较大一部分通过和弦伴奏来配合完成的,在音乐中和弦的连接推动了旋律地进行,不同的和声连接,形成了不同的音乐色彩。

本次设计用AT89C51单片机为核心控制元件与按键和喇叭等模块,设计一个简易的电子琴。

1.2音乐产生原理

乐曲是由不同音符编制而成的,每个音符(音名)都有一个固定的振动频率,频率的高低决定了音调的高低。

简谱中从低音1至高音1之间每个音名对应的频率参见表1-2[1]。

表1-2简谱中音名与频率的关系

音名

频率/Hz

音名

频率/Hz

音名

频率/Hz

低音1

262

中音1

523

高音1

1047

低音2

294

中音2

587

高音2

1175

低音3

330

中音3

659

高音3

1319

低音4

349

中音4

699

高音4

1397

低音5

392

中音5

784

高音5

1569

低音6

440

中音6

880

高音6

1760

低音7

494

中音7

988

高音7

1976

现以低音6这个音名为例来进行分析。

低音6的频率数位440Hz,则其周期为:

T=1/f=1/440=0.00228s=2.28ms

如果用定时器1方式1作定时,要P2.3输出周期为2.28ms的等宽方波,则定时值为1.14ms,设计数初值为X,根据:

定时值=(2^16-X)*(12/晶振频率),求出计数初值为:

X=64396(为计算方便,设晶振频率为12MHz)。

计算出计数器初值后,只要将计数初值装入TH0、TL0,就能使P2.3的高电平或低电平的持续时间为1.14ms,从而发出440Hz的音调(音乐的音长由按键控制,按键按下时发声,按键释放时停止发声)[2]。

表1-3所列是采用定时器1的方式1时,各音名与计数初值的对照表。

表1-3各音名与计数初值对照表

音名

计数初值

音名

计数初值

音名

计数初值

低音1

63636

中音1

64586

高音1

65066

低音2

63836

中音2

64686

高音2

65116

低音3

64026

中音3

64776

高音3

65156

低音4

64106

中音4

64816

高音4

65176

低音5

64256

中音5

64896

高音5

65216

低音6

64396

中音6

64966

高音6

65256

低音7

64526

中音7

65026

高音7

65286

1.3主要设计任务

用矩阵按键的16个按键模拟电子琴的16个音符。

具体音符为:

按压S0、S1、S2、S3、S4键,发出低音3、4、5、6、7;按压S5、S6、S7、S8、S9、S10、S11键,发出中音1、2、3、4、5、6、7;按压S12、S13、S14、S15键,发出高音1、2、3、4。

矩阵按键与各音符的对应关系如表1-1所示[3]。

表1-1矩阵按键与键盘对应关系

低音3

低音4

低音5

低音6

低音7

中音1

中音2

中音3

中音4

中音5

中音6

中音7

高音1

高音2

高音3

高音4

第2章电子琴系统的基本理论

2.1AT89C51

2.1.1AT89C51简介

AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机。

片内含4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高价比的应用场合,可灵活应用于各种控制领域。

2.1.2AT89C51性能简介

AT89C51具有如下特点:

40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

AT89C51在空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

主要特性[4]:

·与MCS-51兼容

·4K字节可编程闪烁存储器

·全静态工作:

0Hz-24Hz

·三级程序存储器锁定

·128*8位内部RAM

·32可编程I/O线

·两个16位定时器/计数器

·5个中断源

·可编程串行通道

·低功耗的闲置和掉电模式

·片内振荡器和时钟电路

2.1.3AT89C51引脚简介

图2-1为AT89C51的引脚图

图2-1AT89C51引脚图

AT89C51的引脚功能[5]:

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高电阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

2.2LM386

2.2.1LM386简介

LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。

LM386是一种音频功率集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和谐波失真小等优点,广泛应用于录音机和收音机之中。

2.2.2LM386内部电路

LM386内部电路原理图如图2-2所示。

与通用型集成运放相类似,它是一个三级大电路。

图2-2LM386内部电路原理图

第一级为差分放大电路,T1和T3、T2和T4分别构成复合管,作为差分放大电路的放大管;T5和T6组成镜像电流源作为T1和T2的有源负载;T3和T4信号从管的基极输入,从T2管的集电极输出,为双端输入单端输出差分电路。

使用镜像电流源作为差分放大电路有源负载,可使单端输出电路的增益近似等于双端输出电容的增益[6]。

第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数。

第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。

二极管D1和D2为输出级提供合适的偏置电压,可以消除交越失真。

引脚2为反相输入端,引脚3为同相输入端。

电路由单电源供电,故为OTL电路。

输出端(引脚5)应外接输出电容后再接负载。

电阻R7从输出端连接到T2的发射极,形成反馈通路,并与R5和R6构成反馈网络,从而引入了深度电压串联负反馈,使整个电路具有稳定的电压增益。

2.2.2LM386引脚简介

图2-3LM386引脚图

LM386的外形和引脚的排列如图所示。

引脚2为反相输入端,3为同相输入端;引脚5为输出端;引脚6和4分别为电源和地;引脚1和8为电压增益设定端;使用时在引脚7和地之间接旁路电容,通常取10μF[7]。

第3章系统的硬件设计

3.1系统工作原理

乐音实际上是固有周期的信号。

我们用AT89C51的定时器T0来控制,在P2.3脚上输出方波周期信号,产生乐音。

根据不同的按键,调节T0溢出的时间可输出不同频率的乐音,这样就做出了一台简易的电子琴。

音乐产生的原理及硬件设计是由于一首音乐的许多不同的音阶组成的,而每个音阶对应着不同的频率,这样就可以用不同的频率的组合,就可构成我们想要的音乐了,对于单片机来产生不同的频率非常的方便,我们利用单片机的定时器/计数器来产生这样的方波,因此只要把一首歌的音阶对应频率的关系弄正确即可。

在此次设计中单片机晶振为12MHZ,定时器的技术周期为1MHZ。

3.2总体设计框图

图3-1硬件组成框图

3.3中心控制模块

图3-2中心控制模块

本次设计中心控制模块是采用AT89C51单片机来控制整个系统,其中P2.3口作为输入口连接喇叭的放大滤波电路,而P3口连接按键控制电路,当系统扫描到按键上有按键被按下,则快速检测出是哪一个键被按下,然后单片机的定时器被启动,一定的频率脉冲,该频率脉冲经过喇叭放大滤波后就会发出相应的音调,从而实现播放音乐的功效。

3.4播放模块

图3-3播放模块

播放模块是喇叭和音频功率放大器LM386构成。

信号脉冲经P1口输出,由LM386同相输入端输入,经过放大滤波后,最后经喇叭播放音调。

它几乎不存在噪声,音响效果较好。

而且由于所需驱动功率较小,且价格低廉,所以被广泛应用

3.5按键模块

图3-4矩阵按键模块

电子琴设有16个按键,能够发出16个不同的音调,并且要求按下按键发声,松开一段时间停止,中间在按别的按键按下则发另一音调的声音,当有按键按下时系统就会扫描到是哪个按键按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲经音频功率放大器,放大滤波后,就会发出相应的音调。

如果在前一个按下的按键发出声的同时有另一个按键被按下,则启用中断系统,前面按键的发音停止,转到后按的按键的发音程序,发出音调。

3.6电路仿真图

图3-5电路仿真图

用矩阵按键的16个按键模拟电子琴的16个音符。

具体音符为:

按压S0、S1、S2、S3、S4键,发出低音3、4、5、6、7;按压S5、S6、S7、S8、S9、S10、S11键,发出中音1、2、3、4、5、6、7;按压S12、S13、S14、S15键,发出高音1、2、3、4,通过按下不同的按键发出不同的音符。

(电路原理图详见附录一)

第4章系统软件设计

4.1主程序流程图

否否

图4-1主程序流程图

主函数是一个无限循环的函数,用来组织和调用各函数。

工作时,首先对定时器T0进行初始化,暂时不开启定时器。

然后调用矩阵键盘扫描函数,判断按键是否按下。

若未按下,继续扫描;若按下,则求出按键号,送入显示缓冲区disp_buf,同时将对应的计数初值装入定时器T0,并开启定时器T0,然后等待按键释放。

在等待按键释放的过程中,若定时时间到,则进入定时器T0中断函数。

4.2定时器T0程序流程图

图4-2定时器T0程序流程图

在定时器T0函数中,重新计数初值,并将P2.3不断取反,这样,就可以驱动喇叭发出与按键相对应的按键音符音。

结论

通过本次设计,我懂得了如何解决电路中出现的问题,从而能够使自己更好的学习和掌握一些电路常识,在本次设计中,我对一些常用的集成块有了一些了解,如AT89C51,LM386。

在本次设计中我犯了许多问题,如喇叭没有驱动就可以发音,在老师的指导下选择正确的放大电路使喇叭发音,使电路可以正确的仿真,经过这一阶段的设计,我深刻明白了理论与社会实践相结合的道理,从中得到了书本中没有学到的东西,明白了如今信息时代电子技能知识的重要性,通过本次设计我对自己的动手能力有了信心,使我充分体会到再创造过程中探索的艰难与成功的喜悦。

 

参考文献

[1]刘启文,刘启武,王丽娟.电子琴中的放大器[J].电子技术,1982,(05):

56-70.

[2]陆大钧,鲁文焕.单音电子琴的音源[J].电子技术,1981,(04):

100-120.

[3]路民峰.集成电路电子音阶[J].电子技术,1981,(06):

130-140.

[4]杨应全.简易电子琴模拟程序[J].电脑知识与技术,1998,(03):

246-253.

[5]杜丽芳.用单片机设计的电子琴[J].电子世界,2005,(07):

230-270.

[6]冯博琴.微型计算机原理与接口技术.清华大学出版社,2004:

20-25.

[7]李林涛,梁宜勇.  基于单片机的简易电子琴录/放音系统[J].数字技术与应用,2010(02):

346-354.

附录1原理图

附录2PCB及3D视图

附录3源程序

#include

#defineucharunsignedchar

#defineuintunsignedint

uchartable[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF};//0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、-的显示码

uintcodetab[]={64026,64106,64256,64396,64526,64586,64686,64776,64816,64896,64966,65026,65066,65116,65156,65176};

//低音3、4、5、6、7,中音1、2、3、4、5、6、7,高音1、2、3、4的计数数值表

ucharSTH0;

ucharSTL0;

sbitBEEP=P2^3;//蜂鸣器驱动线

uchardisp_buf;//显示缓存

uchartemp;//暂存器

ucharkey;//键顺序码

//---------以下是延时函数---------------------------------

voidDelay_ms(uintxms)

{

uinti,j;

for(i=xms;i>0;i--)//i=xms即延时约xms

for(j=110;j>0;j--);

}

//---------以下是矩阵按键扫描函数---------------------

voidMatrixKey()

{

P3=0xff;

P3=0xef;

temp=P3;

temp=temp&0x0f;

if(temp!

=0x0f)

{

Delay_ms(10);

temp=P3;

temp=temp&0x0f;

if(temp!

=0x0f)

{

temp=P3;

switch(temp)

{

case0xee:

key=0;break;

case0xed:

key=1;break;

case0xeb:

key=2;break;

case0xe7:

key=3;break;

}

temp=P3;

disp_buf=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;

BEEP=1;

}

}

P3=0xff;

P3=0xdf;

temp=P3;

temp=temp&0x0f;

if(temp!

=0x0f)

{

Delay_ms(10);

temp=P3;

temp=temp&0x0f;

if(temp!

=0x0f)

{

temp=P3;

switch(temp)

{

case0xde:

key=4;break;

case0xdd:

key=5;break;

case0xdb:

key=6;break;

case0xd7:

key=7;break;

}

temp=P3;

disp_buf=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;

BEEP=1;

}

}

P3=0xff;

P3=0xbf;

temp=P3;

temp=temp&0x0f;

if(temp!

=0x0f)

{

Delay_ms(10);

temp=P3;

temp=temp&0x0f;

if(temp!

=0x0f)

{

temp=P3;

switch(temp)

{

case0xbe:

key=8;break;

case0xbd:

key=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

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

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