ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:117.17KB ,
资源ID:2475155      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2475155.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(keilc课程设计.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

keilc课程设计.docx

1、keilc课程设计题目:八键电子琴1.设计要求 设计一个八键电子琴,要求能够模仿电子琴,有按键输入实现1、2、3等音符输出,可以实现几首音乐输出。其中SW1,SW2,SW3,SW4,SW5,SW6能够实现按下分别输出Do,Re,Mi,Fa,So,La六个音节,SW7,SW8能够实现按下分别播出两首不同的音乐。2.设计方案与论证2.1设计方案(1).选择AT89C51单片机,通过延时程序产生音节和T0定时中断产生音乐,均配合P3.7引脚输出音频频率;(2).P3.7引脚输出接扬声器;(3).通过P2.0P2.7接入八个按键,包含16和两首音乐,通过查询方式获取输入;(4).在每个按键上都分别接上

2、一个指示灯,当有按键按下的时候对应的指示灯发光;(5).通过复位按钮实现能够随时停止正在播放的音乐。2.2总体框图3.设计原理及电路图3.1软件开发环境介绍 Proteus:Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机,与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器

3、,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。具有智能原理图设计,完善的电路仿真功能,单片机协同仿真功能,实用的PCB设计平台等功能。Proteus的资源丰富,Proteus可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。Proteus提供了比较丰富的测试信号用于电路测试这些测试包括模拟信号和测试信号。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTEUS提供了实验室无

4、法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。广泛应用到教学,技能考评,产品开发等众多领域。 KeilC: Keil uVision2是Keil Software公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。KEILC51标准C编译器为8051微控制器的软件开发提供

5、了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强, 使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用keil c51来开发您的单片机应用程序 。 3.2实验电路图图1 整体电路原理图图2 主体电路单片机 选择89C51单片机作为本次设计的CPU主体电路,如上图2所示;

6、 89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。打片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 图3 控制电路 本次设计所采用的控制电路的连

7、接方式如上图3所示,在控制电路中包含8个发光二级管和8个开关,并且都分别连接在89C51单片机的P2.0P2.7引脚上,目的是通过按不同的按键来实现发出不同的声音,并且通过发光二极管的亮和暗来观察按下的是哪个按键。前六个开关分别是控制发出Do,Re,Mi,Fa,So,La六个音节,而后两个开关分别是在按下的时候发出生日快乐歌和我是一只小小鸟两首不同的音乐。图4 发声电路 如图4所示,播放模块其实就是喇叭,它接到P3.7口上当有按键按下时,它就会发出相对应的声音声音.4.器件清单表格 1 元件清单元件序号型号主要参数数量备注1AT89C5112MHZ12cap30pf 30pf 01uf33cr

8、ystal12MHZ14respack-810k X 815res100k, 2k26button97pnp18led4V 10mA89speaker500ms15.器件的识别与检测 单片机:89C51是单芯片微型计算机。具备计算机的基本四要素,并且提供了足够的接口,允许硬件上进一步扩展,89C51单片机共有40个引脚,引脚的顺序是从单片机的缺口处逆时针查询;在其芯片背面有MS89C51字样,在电路中起到控制作用。 晶振:产生时钟周期,使单片机执行程序代码。 扬声器:声音的产生是一种音频振动的结果,用正弦波信号驱动喇叭即可产生悦耳的音乐,以脉冲信号或以正弦波信号所产生的音效,对于人类的耳朵很难

9、有所区别,所以在此电路中通过P3.7引脚的高低电平产生不同的频率,以PNP晶体管做扬声器的驱动电路即可产生乐耳的音乐。6.控制系统的实现6.1程序流程图6.2音调与音乐的产生在音乐中,通常是以Do、Re、Mi、Fa、So、La、Si、Do分别表示频率的一种声音,称之为”音调”,即Tone。表2为这几个音阶的参数表,每个音阶之间的频率相差一倍,例如:高音Do的频率(1046HZ)刚好是中音Do的频率(523HZ)的两倍,因此两个半音之间的频率比是,大约是1.059,以中音为例,Do的频率为523HZ,所以Do#的频率为523x1.059,约为554HZ,Re的频率为554x1.059,约为587

10、HZ,以此类推。表2 按钮、音阶,参数对照表按键音阶参数S1中音Do115S2中音Re102S3中音Mi91S4中音Fa86S5中音So77S6中音La68悦耳的音乐的产生式通过数组及基本的音阶数组(tone),采用定时器中断方式产生音阶、延时函数方式产生节拍。生日快乐歌的简谱与节拍如下所示: unsigned char code song1=1,1,2,1, 4,3, 1,1,2,1, 5,4, 1,1,8,6, 4,3,9, 7,7,6,4, 5,4, 15;unsigned char code beat1=4,4,8,8, 8,16, 4,4,8,8, 8,16, 4,4,8,8, 8,

11、8,8, 4,4,8,8, 8,16; 我是一只小小鸟的简谱与节拍如下所示: unsigned char code song2=1,1,1, 3,2,1, 3,3,3, 5,4,3, 5,4,3, 2, 2,1,0, 1,2,3, 4,3,2, 3,4,5, 5,4,3, 2,1,15;unsigned char code beat2=4,4,4, 6,2,4, 4,4,4, 6,2,4, 4,4,4, 12, 8,2,2, 4,4,4, 8,2,2, 4,4,4, 2,2,4,4, 12;6.3程序代码#include /包含reg51.h头文件#define SW_Port P2sbit

12、buzzer=P37;unsigned char keys,i;unsigned char tone_H,tone_L;void beat_125(unsigned char); /*声明生日快乐歌的音谱节拍数组*/unsigned char code song1=1,1,2,1, 4,3, 1,1,2,1, 5,4, 1,1,8,6, 4,3,9, 7,7,6,4, 5,4, 15;unsigned char code beat1=4,4,8,8, 8,16, 4,4,8,8, 8,16, 4,4,8,8, 8,8,8, 4,4,8,8, 8,16; /*声明我是一只小小鸟的音谱节拍数组*/

13、unsigned char code song2=1,1,1, 3,2,1, 3,3,3, 5,4,3, 5,4,3, 2, 2,1,0, 1,2,3, 4,3,2, 3,4,5, 5,4,3, 2,1,15;unsigned char code beat2=4,4,4, 6,2,4, 4,4,4, 6,2,4, 4,4,4, 12, 8,2,2, 4,4,4, 8,2,2, 4,4,4, 2,2,4,4, 12; /*声明数组Do、Re、Mi、Fa、So、La、Si、Do_H*/unsigned char code tone=115,102,91,86,77,68,61,57;unsigne

14、d char code tonea=1012,956,852,759,716,638, 568,506,478,426,379,531,10; /音阶定义void play1(void);void play2(void);void sound(unsigned char);void delay8us(unsigned char);main() /主程序 buzzer=1; /扬声器初始值 IE=0x82; /启用Timer0 TMOD=0x01; while(1) /while循环 SW_Port=0xff; keys=SW_Port; switch(keys) /判断哪个键被按下 case

15、0x01:sound(0);break; case 0x02:sound(1);break; case 0x04:sound(2);break; case 0x08:sound(3);break; case 0x10:sound(4);break; case 0x20:sound(5);break; case 0x40:play1();break; case 0x80:play2();break; buzzer=1; /扬声器不动作 void sound(unsigned char x) /发声函数 unsigned char i; for(i=0;i60;i+) buzzer=0;delay8us(tonex);

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

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