keilc课程设计.docx

上传人:b****1 文档编号:2475155 上传时间:2022-10-29 格式:DOCX 页数:12 大小:117.17KB
下载 相关 举报
keilc课程设计.docx_第1页
第1页 / 共12页
keilc课程设计.docx_第2页
第2页 / 共12页
keilc课程设计.docx_第3页
第3页 / 共12页
keilc课程设计.docx_第4页
第4页 / 共12页
keilc课程设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

keilc课程设计.docx

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

keilc课程设计.docx

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.0~P2.7接入八个按键,包含1~6和两首音乐,通过查询方式获取输入;

(4).在每个按键上都分别接上一个指示灯,当有按键按下的时候对应的指示灯发光;

(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系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

具有智能原理图设计,完善的电路仿真功能,单片机协同仿真功能,实用的PCB设计平台等功能。

Proteus的资源丰富,Proteus可提供的仿真元器件资源:

仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。

Proteus提供了比较丰富的测试信号用于电路测试这些测试包括模拟信号和测试信号。

在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:

*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。

课程设计、毕业设计是学生走向就业的重要实践环节。

由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。

广泛应用到教学,技能考评,产品开发等众多领域。

KeilC:

KeiluVision2是KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。

KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。

C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。

C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:

编译器,汇编器,实时操作系统,项目管理器,调试器。

uVision2IDE可为它们提供单一而灵活的开发环境。

KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用keilc51来开发您的单片机应用程序。

3.2实验电路图  

图1整体电路原理图

图2主体电路单片机

选择89C51单片机作为本次设计的CPU主体电路,如上图2所示;89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

打片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。

89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

图3控制电路

本次设计所采用的控制电路的连接方式如上图3所示,在控制电路中包含8个发光二级管和8个开关,并且都分别连接在89C51单片机的P2.0~P2.7引脚上,目的是通过按不同的按键来实现发出不同的声音,并且通过发光二极管的亮和暗来观察按下的是哪个按键。

前六个开关分别是控制发出Do,Re,Mi,Fa,,So,La六个音节,而后两个开关分别是在按下的时候发出《生日快乐歌》和《我是一只小小鸟》两首不同的音乐。

图4发声电路

如图4所示,播放模块其实就是喇叭,它接到P3.7口上当有按键按下时,它就会发出相对应的声音声音.

4.器件清单

表格1元件清单

元件序号

型号

主要参数

数量

备注

1

AT89C51

12MHZ

1

2

cap

30pf30pf01uf

3

3

crystal

12MHZ

1

4

respack-8

10kX8

1

5

res

100k,2k

2

6

button

9

7

pnp

1

8

led

4V10mA

8

9

speaker

500ms

1

5.器件的识别与检测

单片机:

89C51是单芯片微型计算机。

具备计算机的基本四要素,并且提供了足够的接口,允许硬件上进一步扩展,89C51单片机共有40个引脚,引脚的顺序是从单片机的缺口处逆时针查询;在其芯片背面有MS89C51字样,在电路中起到控制作用。

晶振:

产生时钟周期,使单片机执行程序代码。

扬声器:

声音的产生是一种音频振动的结果,用正弦波信号驱动喇叭即可产生悦耳的音乐,以脉冲信号或以正弦波信号所产生的音效,对于人类的耳朵很难有所区别,所以在此电路中通过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,约为587HZ,以此类推。

表2按钮、音阶,参数对照表

按键

音阶

参数

S1

中音Do

115

S2

中音Re

102

S3

中音Mi

91

S4

中音Fa

86

S5

中音So

77

S6

中音La

68

悦耳的音乐的产生式通过数组及基本的音阶数组(tone[]),采用定时器中断方式产生音阶、延时函数方式产生节拍。

《生日快乐歌》的简谱与节拍如下所示:

unsignedcharcodesong1[]={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};

unsignedcharcodebeat1[]={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};

《我是一只小小鸟》的简谱与节拍如下所示:

unsignedcharcodesong2[]={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};

unsignedcharcodebeat2[]={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头文件

#defineSW_PortP2

sbitbuzzer=P3^7;

unsignedcharkeys,i;

unsignedchartone_H,tone_L;

voidbeat_125(unsignedchar);

/*声明《生日快乐歌》的音谱节拍数组*/

unsignedcharcodesong1[]={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};

unsignedcharcodebeat1[]={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};

/*声明《我是一只小小鸟》的音谱节拍数组*/

unsignedcharcodesong2[]={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};

unsignedcharcodebeat2[]={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*/

unsignedcharcodetone[]={115,102,91,86,77,68,61,57};

unsignedcharcodetonea[]={1012,956,852,759,716,638,

568,506,478,426,379,531,10};//音阶定义

voidplay1(void);

voidplay2(void);

voidsound(unsignedchar);

voiddelay8us(unsignedchar);

main()//主程序

{

buzzer=1;//扬声器初始值

IE=0x82;//启用Timer0

TMOD=0x01;

while

(1)//while循环

{SW_Port=0xff;

keys=~SW_Port;

switch(keys)//判断哪个键被按下

{case0x01:

sound(0);break;

case0x02:

sound

(1);break;

case0x04:

sound

(2);break;

case0x08:

sound(3);break;

case0x10:

sound(4);break;

case0x20:

sound(5);break;

case0x40:

play1();break;

case0x80:

play2();break;

}buzzer=1;//扬声器不动作

}

}

voidsound(unsignedcharx)//发声函数

{

unsignedchari;

for(i=0;i<60;i++)

{

buzzer=0;delay8us(tone[x]);

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

当前位置:首页 > 求职职场 > 职业规划

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

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