CAD课程设计模板.docx
- 文档编号:27936520
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:21
- 大小:270.92KB
CAD课程设计模板.docx
《CAD课程设计模板.docx》由会员分享,可在线阅读,更多相关《CAD课程设计模板.docx(21页珍藏版)》请在冰豆网上搜索。
CAD课程设计模板
课程设计说明书
题目简易电子琴的设计
姓名唐超林
学号1210402015
专业年级2012级电信2班
指导教师肖景
2011年12月12日
摘要
本论文要设计的为基于单片机的简易电子琴,基本要求为能够发出1、2、3、4、5、6、7等七个音符即可。
众所周知,由于一首音乐是由许多不同的音阶组合而成的,而每个音阶则对应着不同的频率,因此我们可以利用不同的频率来进行音阶的组合,即可产生美妙的音乐了。
对于单片机来说,产生不同的频率非常方便,只要算出某一音频的周期,然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后,就将输出脉冲的I/O反相,然后重复计时,此半周期再对I/O反相,即可在I/O脚上得到此频率的脉冲。
因此我们可以利用单片机的定时器,使其工作在计数器模式MODE1下,改变计数值TH0及TL0来产生不同频率的信号。
从而产生不同的音符[1]。
关键词:
音阶,频率,电子琴,单片机
Abstract
Thisthesisdesignedforsimplekeyboard,thebasicrequirementistosend1,2,3,4,5,6,7sevennotes.
Well-known,themusicismadeupbymanydifferentscales,andeachscalecorrespondstodifferentfrequency,sowecanusedifferentfrequencytomakecombinationofscales,andthenproducewonderfulmusic.
Asforsingle-chipmicrocomputer,itisveryconvenienttoproducedifferentfrequency,wejustcalculateanaudiocycle,thenthiscycledividedby2,namelyhalfcycletime,usingtimertotimethehalfcycletime.
Whenevertiming,itwilloutputpulseI/Oreversephase,andrepeatthetiming,thehalfcycleagaintotheI/Oreversed-phase,thencangetthisfrequencypulsefromtheI/Ofeet.Sowecanusemicrocontrollertimertomakeitworkinthecountermodeandgeneratedifferentfrequencysignal.Thusproducedifferentnotes.
Keywords:
scales,frequency,thesis,single-chipmicrocomputer
目录
1绪论1
1.1论文特点及研究意义1
1.2系统简介1
2元器件介绍1
2.1元器件的种类1
2.2AT89C511
2.3LM3863
3硬件电路4
3.1硬件电路图4
3.2电路各部分简要分析5
3.3元件参数4
3.4单片机音符与单片机频率的关系5
4软件流程5
4.1设计思路与流程图5
4.2程序设计7
5制作与调试方法12
6总结11
参考文献13
1绪论
1.1论文特点及研究意义
本论文设计的为电子琴,电子琴又称作电子键盘,属于电子乐器(区别于电声乐器),发音音量可以自由调节。
音域较宽,和声丰富,甚至可以演奏出一个管弦乐队的效果,表现力极其丰富。
它还可模仿多种音色,甚至可以奏出常规乐器所无法发出的声音(如合唱声,风雨声,宇宙声等)。
另外,电子琴在独奏时,还可随意配上类似打击乐音响的节拍伴奏,适合于演奏节奏性较强的现代音乐。
另外,电子琴还安装有效果器,如混响、回声、延音,震音轮和调制轮等多项功能装置,表达各种情绪时运用自如。
本论文设计的电子琴虽是简易电子琴,功能和真正电子琴有不小差距,但本论文设计的电子琴是很多高档电子琴的基础,对进一步研究电子琴有很大的促进作用。
本设计易懂、简练,所用器件常见,上网查询资料方便,电路模块具有通用性,非常适合广大电子爱好者制作。
1.2系统简介
本系统主要由硬件电路和软件流程组成。
硬件电路主要包括芯片AT89C51、和CM38、喇叭和按键等以及由它们组成的电路图,软件流程主要包括主程序流程图和相关程序。
本论文还对本设计用到的芯片AT89C51和CM38等做了一些介绍。
2元器件介绍
2.1元器件的种类
本设计要用到的元器件有芯片AT89C51、CM38、喇叭和按键、电阻、电容等。
2.2AT89C51
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,AT89C51是一种高效微控制器。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图2.1所示
图2.1AT89C51外形管脚图
主要特性:
与MCS-51兼容4K字节可编程FLASH存储器寿命:
1000写/擦循环数据保留时间:
10年全静态工作:
0Hz-24MHz
AT89C51管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写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)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通) P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
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.3四运放集成电路LM386
LM386是四运放集成电路,采用8脚双列直插塑料封装,外形如图2.2所示。
图2.2LM386外形管脚图
它的内部包含运算放大器,运算放大器可用图1所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vs”为输出端。
两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vs的信号与该输入端的位相反;Vi+(+)为同相输入端,表示运放输出端Vs的信号与该输入端的相位相同。
由于LM386运放电路具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,因此被广泛应用在各种电路中。
正是因为如此,本论文才选用它。
3硬件电路
3.1硬件电路图
基于AT89C51芯片的简单电子琴的电路图[4],如图3.1。
图3.1硬件电路图
3.2电路各部分简要分析
单片机P1口为输入接口,接有一组按键,共8个。
这8个按键S1~S8分别按顺序与单片机的P2口P1.0~P1.7相接。
单片机P3.6口与芯片LM386第3各管脚通过电阻R1相连。
3.3元件参数
本论文根据实际要求所选定的元件参数如下:
电阻R1为10k欧,输入电阻R2为470欧,C1、C3分别为10uf和104。
LM386的第五个管脚接一个电解电容C7(47uf)和电阻R3(10欧)、电容C4(473)并联驱动喇叭发声。
单片机P3.6接入一个按键和一个分压电阻,组成放歌按键,来控制整个电路运行扩展功能(播放一段音乐)。
C6、C5接一个晶振,作为控制反向震荡放大器的输入和输出,并且确定内部时钟的工作频率。
单片机RESET端口接入一个复位电路,此部分由电解电容C2(此电容为去耦电容,防止其他信号引起的错位复位)和控制电阻R4共同组成,主要功能是当按下按键时给予芯片RESET端口一个高电平复位信号。
3.4单片机音符与单片机频率的关系
本次设计中,单片机晶振为12MHz,那么定时器的技术周期为1MHz,加入选择工作方式1,那T值便为T=216-x(x为THX、TLX的初值)。
那么根据不同的频率计算出应赋给定时器的计算值,表3.1列出不同音符与单片机计数T0相关的计数值。
表3.1音符与单片机频率对应表
4软件流程
4.1设计思路与流程图
本电子琴的设计我们采用的是设计7个音符,与键盘的7个按键一一对应,并且计算出每个音符对应的频率值。
音符通过定时器T0产生,然后通过键盘不断的扫描,根据按键功能,将不同按键对应的频率信号发送到集成运放中放大,最后送给喇叭发出对应的音符以发出相应的声音。
图4.1为流程示意图[6]
图4.1流程示意图
在主程序流程图中,T0初始化以后,首先要通过扫描键盘,判断是否有按键按下。
若没有按键按下,则要继续扫描,不断重复循环过程,直到发现按键按下,程序才能根据按键的功能,将相对应的音符T值装入到T0以后,T0开始启动。
程序随后继续扫描按键,若按键保持按下状态,则T0继续保持工作状态,直到按键松开,T0停止工作,返回初始状态,等待下一次的扫描按键结果。
图4.2为T0中断子程序图。
图4.2T0中断子程序图
当程序中断时,程序保存现场,并重装TH0、TL0的初值,然后将P1、0按位取反,重新送入P1、0,最后中断返回。
4.2程序设计
#include
sbitsp=P1^0;
charth,tl,key;
unsignedintcodetab[]=//音频编码表
{
63628,63836,64020,64103,64260,64400,64524,
64580,64694,64777,64820,64898,64968,65030,
65058,65110,65164,65178,65217,65252,65283,
};
unsignedcharcodesrg[]=//生日快乐音谱
{
5,5,6,5,8,7,0,
5,5,6,5,9,8,0,
5,5,12,10,8,7,6,0,
4,4,3,1,2,1,0
};
unsignedcharcodelzlf[]=//两只老虎音谱
{
1,2,3,1,0,1,2,3,1,0,3,4,5,0,
3,4,5,0,5,6,5,4,3,1,0,5,6,5,4,3,1,0,
2,5,1,0,2,5,1
};
dealy(unsignedintz)//延时
{
while(z--);
}
voidmain(void)//主函数
{
unsignedchari,go;
TMOD=0x01;
ET0=1;
EA=1;//定时器初使化
for(i=0;i<28;i++)//播放生日快乐
{
key=srg[i]-1;
if(srg[i]!
=0)
{
TR0=1;
dealy(65530);
}
elsedealy(10000);
TR0=0;
dealy(30);
}
dealy(65530);dealy(65530);//停顿
for(i=0;i<39;i++)//播放两只老虎
{
key=lzlf[i]-1;
if(lzlf[i]!
=0)
{
TR0=1;
dealy(65530);
}
elsedealy(10000);
TR0=0;
dealy(30);
}
while
(1)//键盘检测和产生音频
{
P3=0xfe;
switch(P3)//检测第一排
{
case0xee:
{dealy(20);if(P3==0xee){key=go+0;TR0=1;while(P3==0xee);TR0=0;}};break;
case0xde:
{dealy(20);if(P3==0xde){key=go+1;TR0=1;while(P3==0xde);TR0=0;}};break;
case0xbe:
{dealy(20);if(P3==0xbe){key=go+2;TR0=1;while(P3==0xbe);TR0=0;}};break;
case0x7e:
{dealy(20);if(P3==0x7e){key=go+3;TR0=1;while(P3==0x7e);TR0=0;}};break;
}
P3=0xfd;
switch(P3)//检测第二排
{
case0xed:
{dealy(20);if(P3==0xed){key=go+4;TR0=1;while(P3==0xed);TR0=0;}};break;
case0xdd:
{dealy(20);if(P3==0xdd){key=go+5;TR0=1;while(P3==0xdd);TR0=0;}};break;
case0xbd:
{dealy(20);if(P3==0xbd){key=go+6;TR0=1;while(P3==0xbd);TR0=0;}};break;
case0x7d:
{dealy(20);if(P3==0x7d){go=7;while(P3==0x7d);}};break;
}
P3=0xfb;
switch(P3)//检测第三排
{
case0xeb:
{dealy(20);if(P3==0xeb){key=go+7;TR0=1;while(P3==0xeb);TR0=0;}};break;
case0xdb:
{dealy(20);if(P3==0xdb){key=go+8;TR0=1;while(P3==0xdb);TR0=0;}};break;
case0xbb:
{dealy(20);if(P3==0xbb){key=go+9;TR0=1;while(P3==0xbb);TR0=0;}};break;
case0x7b:
{dealy(20);if(P3==0x7b){key=go+10;TR0=1;while(P3==0x7b);TR0=0;}};break;
}
P3=0xf7;
switch(P3)//检测第四排
{
case0xe7:
{dealy(20);if(P3==0xe7){key=go+11;TR0=1;while(P3==0xe7);TR0=0;}};break;
case0xd7:
{dealy(20);if(P3==0xd7){key=go+12;TR0=1;while(P3==0xd7);TR0=0;}};break;
case0xb7:
{dealy(20);if(P3==0xb7){key=go+13;TR0=1;while(P3==0xb7);TR0=0;}};break;
case0x77:
{dealy(20);if(P3==0x77){go=0;while(P3==0x77);}};break;
}
}
}
voidt0(void)interrupt1//定时器中断函数
{
TH0=tab[key]/256;
TL0=tab[key]%256;
sp=~sp;
}
5制作与调试方法
本电子琴的制作比较简单,大的方面主要分为两步,第一步是绘制PCB板并制成电路,第二步是写程序,驱动程序发声。
调试也很简单,共有八个按键,按下不同按键便会产生相对应的声音。
具体步骤如下:
1.由设计要求选择合适元器件设计并绘制出电路图;
实验原理图如图(3.1)所示,在protel99里根据原理图放置元器件
并相应的连好线,此部分比较简单。
首先新建一个设计并保存到自己的目录下,然后再新建一个.sch和.pcb的文件。
然后再打开.sch文件,根据原理图,摆放好元器件并连好线。
2.绘制元器件的元件符号库、封装库;
对于protel99里没有的元件,自己根据相应的要求绘制出来,首先新建一个sch.library文件并在其中绘制好原理图,例如CM38。
然后再添加到.sch文件的原件库中。
对于protel99里没有的封装,自己也要根据相应的要求绘制出来,首先新建一个pcb.library的文件并在其中按要求绘制好相应的封装。
然后一样的添加到.pcb文件的原件库中。
当所有的线都原理图连接好了后,对原理图使用“电气规则检查”,如果电路图没有绘制错误,就可以对各元件添加封装了。
封装添加好后,点击设计—》创建网络表,再在Pcb文件中添加网络表,生成pcb图。
3.PCB设计时的走线、布局技巧;
生成pcb图后就是走线了,首先要摆放好器件,尽量使pcb图摆放紧凑,美观以及跳线尽量少,摆放过程中可以结合原理图及元器件的原理来放置,这样走线是就没那么复杂。
最后我们在底层布线,电源线和接地线一定要粗,其他线路也是越粗越好,但一般连线的宽度是0.8mm,线太细在腐蚀的时候就会断线。
同时在跳线处要放置焊盘。
PCB电路如下:
4.使用热转印方式制作印制电路板;
PCB走线、布局好后,把pcb电路图打印出来,并用热转印方式把pcb图转印到板子上。
使用FeCl3或类似溶液腐蚀电路板;
电路图转印好后,把板子放到FeCl3溶液中对其进行腐蚀。
使用高速对印制电路板打;
板子腐蚀好后,用电钻对焊盘打孔,电钻使用0.8mm或1.0mm的针孔,针孔应大些,不然焊元件的时候针脚会插不进去。
元器件的焊接;
板子只好后就是焊接元器件了,把元器件插在板子上相应的地方,注意有些元器件的正负极不要插反,芯片不要插反,不然上电后会把板子给烧掉。
在焊接的时候要注意技巧,不要有虚焊、漏焊的地方。
使用酒精松香溶液保护电路板防止氧化;
6总结
通过本次论文设计,使我加深了对单片机的认识,并且熟悉了单片机系统的设计流程,收获丰硕。
功能上达标,硬件设施基本合乎要求,软件设计可以配合硬件实现其功能,达到设计预期。
此次PCB板的制作给了我难忘的回忆,虽然以前也自己制作过一些板子,但本次却是我第一次从头到尾完成最认真的一次。
在制作过程中出现了很多问题同时也掌握了一些技巧。
以下是我在此次制作过中得到的一些技巧和方法:
1.在绘制原理图是,元器件一定要选对,有些原理图看似和要求的原理图很像,但稍微一个管脚不同制出来的板子就会出错。
同时在连线的时候有很多同学由于不熟练,使得其中有很多的交叉线,出现一些节点,但他们就只是单单的把节点删掉,在元器件检查的时候出现了很多的错,甚至都找不出原因,不得不重新再绘制。
2.在绘制PCB图时首先要摆放好器件,尽量使pcb图摆放紧凑,美观以及跳线尽量少,摆放过程中可以结合原理图及元器件的原理来放置,这样走线是就没那么复杂。
对于本设计,在PCB走线时可以相应的对按键和89C51的连线顺序做一些该变,这样PCB连线看着没那么复杂同时连线时可以少掉很多不必要的跳线,看起来更清晰、明了。
由于89C51的那些管脚都是输入管脚,功能是一样的,所以对其改变对实验结果不会有什么影响。
在布线时,一定要选择好板层,此次我们制作的是单层板,应选择底层布线。
很多同学对于密密麻麻的线不知从何下手,可以把原理图分成几个小部分,然后先把每个小部分连接好,再放到一起来连接,这样不仅更容易连接、用时也更少。
同时电源线和接地线一定要粗,其他线路也是越粗越好,但一般连线的宽度是0.8mm,线太细在腐蚀的时候就会断线,热转印时也会很难转印到板子上,难度更大。
在跳线处要放置焊盘。
每个元器件的焊盘应该也要重新改过,一般x为2.5mm,y为2.0mm,不然在打孔的时候会将焊盘全部打坏,不利于焊接。
3.在热转印时,一定要仔细,最好一次就全部转印上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CAD 课程设计 模板