单片机课程设计报告.docx
《单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告.docx(12页珍藏版)》请在冰豆网上搜索。
单片机课程设计报告
专业方向综合设计
课程(论文)
电子琴设计
THEKEYBOARDDESIGN
学生姓名
张永博
学院名称
电信工程学院
学号
20110504145
班级
11电信1
专业名称
电子信息科学与技术
指导教师
黄为勇
2014年12月26日
摘要
随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。
我们都会抽空欣赏世界名曲,作为对精神的洗礼。
本论文设计一个基于单片机的简易电子琴。
我们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇。
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有7个按键和扬声器。
本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。
关键词:
AT89S51单片机c语言音色扬声器
目录
1绪论-------------------------------------------------------------------------------2
1.1.单片机技术及其发展----------------------------------------------------2
1.1.1单片机定义-----------------------------------------------------------2
1.1.2单片机技术的发展现------------------------------------------------2
2项目的要求和原理-------------------------------------------------------------3
2.1项目简介------------------------------------------------------------------3
2.2设计目的要求-------------------------------------------------------------3
2.3工作原理------------------------------------------------------------------3
3设计方案-------------------------------------------------------------------------3
3.1系统整体功能描述--------------------------------------------------------3
3.2单片机选择----------------------------------------------------------------4
3.3按键电路------------------------------------------------------------------4
3.4蜂鸣器电路设计-----------------------------------------------------------5
4硬件说明------------------------------------------------------------------------6
4.1单片机的选择-------------------------------------------------------------6
4.2其他附属模块的设计------------------------------------------------------6
5总结与体会---------------------------------------------------------------------7
6器件清单-----------------------------------------------------------------------7
参考文献-----------------------------------------------------------------------7
1.绪论
1.1单片机技术及其发展
1.1.1单片机定义
单片机(Singlechipmicrocomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
1.1.2单片机技术的发展现状
自单片机出现至今,单片机技术已走过了近20年的发展路程。
纵观20年来单片机发展历程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。
单片机长寿命这里所说的长寿命,一方面指用单片机开发的产品可以稳定可靠地工作十年、二十年,另一方面是指与微处理器相比的长寿命。
随着半导体技术的飞速发展,MPU更新换代的速度越来越快,以386、486、586为代表的MPU,很短的时间内就被淘汰出局,而传统的单片机如68HC05、8051等年龄已有15岁,产量仍是上升的。
这一方面是由于其对相应应用领域的适应性,另一方面是由于以该类CPU为核心,集成以更多I/O功能模块的新单片机系列层出不穷。
可以预见,一些成功上市的相对年轻的CPU核心,也会随着I/O功能模块的不断丰富,有着相当长的生存周期。
新的CPU类型的加盟,使单片机队伍不断壮大,给用户带来了更多的选择余地。
8位、16位、32位单片机共同发展这是当前单片机技术发展的另一动向。
长期以来,单片机技术的发展是以8位机为主的。
随着移动通讯、网络技术、多媒体技术等高科产品进入家庭,32位单片机应用得到了长足发展。
以Motorola68K为CPU的32位单片机97年的销售量达8千万枚。
过去认为由于8位单片机功能越来越强,32位机越来越便宜,使16位单片机生存空间有限,而16位单片机的发展无论从品种和产量方面,近年来都有较大幅度的增长。
2.项目的要求和原理
2.1设计项目简介
电子乐器的产生,首先是模仿”乐器之王“管风琴(PipeOrgan)。
管风琴发明于公元前,鼎盛于17世纪。
它是靠水力或人力鼓风,吹响与建筑物一样高大的管子而发音的乐器。
管风琴是大型键盘乐器,结构非常复杂。
管风琴有手键盘和脚键盘构成,有些手键盘多达4-5层。
一架管风琴的演奏可以和一个管弦乐队媲美。
管风琴结构复杂,体积庞大,造价昂贵,受演出场地、环境限制,不易搬动
电子琴基于琴键原理,运用现代的技术使效果更加绚丽。
本设计采用按键,通过检测电路的通断来判断按键是否按下。
不同的键按下,蜂鸣器会发出不同的声调。
2.2设计目的要求
本设计旨在完成电子琴的简单设计,完成7个音符对应的手动按键,电路图的设计,硬件电路仿真。
本设计基本要求为完成按键的设计,完成按键能弹奏出相应的音调,能演奏出不同的曲子。
2.3工作原理
音乐相关知识:
乐音听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低声音就低,不同音调的乐音是用C、D、E、F、G、A、B表示的,这7个字母就是乐音的音名,它们一般依次唱成DO,RE,MI,FA,SO,LA,SI,这是唱曲时的发音,所以叫唱名。
音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发生。
一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。
发声原理:
利用定时计数器,通过载入不同的计数初值,产生频率不同的方波,输入到蜂鸣器(SOUNER)中,使其发出频率不同的声音。
本设计中单片机晶振为1.0592MHz,通过计算各音阶频率,可得1、2、3、4、5、6、7共7个音应赋给定时器。
在此基础上,可将乐曲的简谱转化为单片机可以“识别”的“数组谱”,进一步加入对音长、休止符等的控制量后,可以实现音乐的播放。
实现原理:
当系统扫描到键盘上有键被按下,则快速检测出是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲输入到蜂鸣器后,就会发出相应的音调如果在前一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到后按的键的发音程序,发出后按的键的音调。
3.设计方案
3.1系统整体功能描述
由以上电路图可知,本设计有7个按键,所以本系统可以产生七种音调。
在系统刚上电的时候,按键开关为断开,通过用手按下控制键,来弹奏出不同的声音,从而可以编弹出不同的曲子。
系统整体设计电路图:
3.2单片机选择
本设计采用89c51为主控芯片。
89c51不仅可以采用汇编和c语言编程,并且便宜,硬件电路简单,符合本课程所主讲的内容。
运用此芯片不仅可以增加实际操作能力,也能够达到学以自用的效果。
3.3按键电路设计
设计一个电子琴。
利用所给键盘的1,2,3,4,5,6,7七个键,能够发出7个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键则发另一音调的声音。
按键是本系统设计的一个关键部分,本部分有七个按键,通过按下不同的按键来控制蜂鸣器发出不同的声音,系统不支持同时按下多键的情况。
设计电路图如下:
按键检测电路
3.4蜂鸣器电路设计
通过控制单片机的定时器的定时时间产生不同频率的音频脉冲,经放大后驱动蜂鸣器发出不同音乐的声音。
用软件延时来控制发音时间的长短。
把音乐的音符和相应的节拍变换为定时常数和延时常数,分别来控制定时器产生的脉冲频率和发出该音频脉冲持续时间。
蜂鸣器电路
4、硬件说明
由于51单片机实验、开发学习机的各功能模块已经设计好,在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。
硬件电路由按键模块、蜂鸣器模块、复位电路和电源电路部分组成。
4.1单片机选用
根据设计方案的分析,可以选用带有EPROM的单片机,应用程序直接存储在片内,不用在外部扩展程序存储器,电路可以简化。
ATMEL公司生产的AT89CXX系列单片机,AT89CXX系列与MCS—51系列单片机相比,有两大优势:
第一,片内程序存储器采用闪速存储器,使程序的写入更方便;第二,提供了更下尺寸的芯片,使整个硬件电路的体积更下。
他以较下的体积、良好的性能价格比备受亲睐。
本次课程设计采用89S51单片机。
4.2其他附属模块的设计
复位是单片机的初始化操作,其作用是使CPU与系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。
本系统采用上电与按键复位电路,为了防止干扰串扰复位端,所以再接一个去耦电容。
时钟脉冲电路的设计可以两个电容与一个晶振即可,用来产生一个约等于12MHZ的稳定的频率。
中断按键电路,采用一个手动按键与一个瓷片电容并联。
这里的瓷片电容是去抖动防止干扰设计的。
当按下按键便可以给单片机一个外部信号供其查询中断。
5.总结体会
本课程实践的目的是,掌握单片机测量模拟量和数字量的测量方法,掌握单片机的外部控制方法,掌握单片机的显示器、键盘的扩展方法。
通过学习和设计为毕业设计和科研开发打下良好的基础。
本课程以MCS-51系列单片机为机型,介绍了单片机的基础知识、基本原理结构、51指令系统、中断、定时器计数器、串行通信、C51程序设计、单片机的扩展、应用实例及抗干扰设计等知识。
学生通过学习可较全面的掌握单片机的应用技术。
通过这次课程设计发现,只有理论水平提高了,才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。
这个课程设计十分有意义,使我们获得很深刻的经验。
通过这次课程设计,我们知道了理论和实际的距离,也知道了理论与实际相结合的重要性,也从中得到了很多书本上无法得知的知识。
我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要与实践相结合,理论知道即实践课题,解决问题既课程研究,学习自己就是一个专家,通过自己的受来解决问题比用脑子解决问题更深刻。
学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的问题。
这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。
当然,做课程设计的过程中,难免出现一些问题,硬件软件上的各种问题,但通过我们一起协商努力,终于克服了这些问题。
只有经历了错误,才能学会避免下一次的错误,课程设计需要认真、高度热情。
6.器件清单
本设计所需器件清单
器件名称
数量
Stc89c51单片机
1
Stc89c51底座
1
12M晶振
1
无源蜂鸣器
1
按键
8
电容30p,10uf
若干
电阻5k,10k,330R
若干
排针
10
洞洞板
3
电池盒
1
参考文献:
1.高玉芹《单片机原理与应用及C51编程技术》机械工业出版社。
2.胡汉才编著,《单片机原理及其接口技术》清华大学出版社,2004。
3.楼然苗等编著,《51系列单片机设计实例》北京航空航天大学出版社,2006。
4.汪道辉编著,《单片机系统设计与实践》电子工业出版社2005。
5.王迎旭编《单片机原理与应用》机械工业出版社。
附件:
程序清单
#include
sbitkey_1=P2^1;//激光按键输入
sbitkey_2=P2^2;
sbitkey_3=P2^3;
sbitkey_4=P2^4;
sbitkey_5=P2^5;
sbitkey_6=P2^6;
sbitkey_7=P2^7;
sbitspeaker=P3^6;//蜂鸣器
unsignedchartimer0H,timer0L,whichKey,flag,levelLMH,time;
codeunsignedcharmid_TH0[]={0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE};
codeunsignedcharmid_TL0[]={0x44,0xAC,0x09,0x34,0x82,0xC8,0x06};//要显示的不同的//定时初始值
//延时函数
voiddelay(unsignedchart)
{
unsignedchart1;
unsignedlongt2;
for(t1=0;t1for(t2=0;t2<8000;t2++)
{;}
TR0=0;
}
//发音函数
voiddiaplayKey(unsignedcharlevel)
{
TH0=mid_TH0[level];
TL0=mid_TL0[level];
TR0=1;
}
voidmain(void)
{
levelLMH=2;
TMOD=1;
EA=1;
ET0=1;
while
(1)//六种声调
{//P0=0XFF;
if(!
key_1)//检测那个按键按下
{ET0=1;
P0=0XFE;
flag=0;
whichKey=0;
diaplayKey(0);
while(!
key_1);
TR0=0;//关闭定时器和定时中断防止相互影响发音
ET0=0;
speaker=1;//把蜂鸣器关闭防止影响下一个状态
}
if(!
key_2)
{ET0=1;
flag=0;
P0=0XFC;
whichKey=1;
diaplayKey
(1);
while(!
key_2);
TR0=0;
ET0=0;
speaker=1;
}
if(!
key_3)
{ET0=1;
P0=0XF8;
flag=0;
whichKey=2;
diaplayKey
(2);
while(!
key_3);
TR0=0;
ET0=0;
speaker=1;
}
if(!
key_4)
{ET0=1;
P0=0XF0;
flag=0;
whichKey=3;
diaplayKey(3);
while(!
key_4);
TR0=0;
ET0=0;
speaker=1;
}
if(!
key_5)
{ET0=1;
P0=0XE0;
flag=0;
whichKey=4;
diaplayKey(4);
while(!
key_5);
TR0=0;
ET0=0;
speaker=1;
}
if(!
key_6)
{ET0=1;
flag=0;
P0=0XC0;
whichKey=5;
diaplayKey(5);
while(!
key_6);
TR0=0;
ET0=0;
speaker=1;
}
if(!
key_7)
{ET0=1;
flag=0;
P0=0X80;
whichKey=6;
diaplayKey(6);
while(!
key_7);
TR0=0;
ET0=0;
speaker=1;}
//==========================
}
}
//定时中断
voidtimer0()interrupt1
{
TR0=0;
speaker=!
speaker;
if(flag==0)
{
TH0=mid_TH0[whichKey];//根据不同的激光按键显示不同的调
TL0=mid_TL0[whichKey];
}
TR0=1;
}