单片机课程设计报告.docx

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

单片机课程设计报告.docx

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

单片机课程设计报告.docx

单片机课程设计报告

武夷学院

《单片机原理与应用》课程设计报告

基于AT89S52的简易电子琴

 

院系:

机电工程学院

专业(班级):

xx电子信息工程(x)

姓名:

xxx

学号:

xxxxxxxxxxx

指导教师:

xxxx

职称:

讲师

完成日期:

2013年12月20日

 

目录

1设计任务-1-

2系统设计方案-1-

2.1设计目的-1-

2.2设计要求-1-

3系统硬件设计-1-

3.1基本原理-1-

3.2芯片及原理图介绍-3-

3.2.1AT89C52简介-3-

3.2.2电子琴设计的原理图-3-

3.3各个模块介绍-3-

3.3.1系统硬件设计-4-

3.3.2子系统模块一-4-

3.3.3子系统模块二-5-

3.3.4子系统模块三-5-

3.3.5AT89C52晶振模块-6-

4系统软件设计-6-

4.1软件设计总流程图流程-7-

4.2软件程序-8-

5系统的硬件调试及软件调试-8-

5.1软件调试-8-

5、2硬件调试-9-

6课程设计心得体会-10-

参考文献-11-

附录1源程序-12-

附录2仪器清单-16-

附录3系统原理图-17-

 

简易电子琴

1设计任务

实现电子琴发声控制系统;要求电路实现如下功能:

利用蜂鸣器作为发声部件,两个数码管作为显示部件,设置16个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音。

用PROTEUS实现的电子琴仿真设计。

说明:

单片机的工作时钟频率为11.0592MHz。

2系统设计方案

2.1设计目的

本次设计提出了用AT89C52单片机为核心控制元件,设计一个简易的电子琴.本方案以AT89C52单片机作为主控核心,与键盘、蜂鸣器等模块组成核心主控制模块在主控模块上设有4*4个按键和蜂鸣器。

根据使用者的操作随意弹奏想要表达的音乐。

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号。

2.2设计要求

1、4*4键盘组成16个按钮,可以随意弹奏想要表达的音乐。

2、通过数码管显示按的是哪个键,发出哪个音高。

3系统硬件设计

3.1基本原理

要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。

利用定时器计时半周期时间,每当计时终止后就将P3.3反相,然后重复计时再反相。

就可在P3.3引脚上得到此频率的脉冲。

利用AT89C52的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。

计数脉冲值与频率的关系式是:

N=fi÷2÷fr,式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。

其计数初值T的求法如下:

T=65536-N=65536-fi÷2÷fr

例如:

设K=65536,fi=1MHz,求中音DO(261Hz)。

T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。

单片机12MHZ晶振,中音符与计数T0相关的计数值如表所示:

音符

频率(HZ)

简谱码(T值)

 

音符

频率(HZ)

简谱码(T值)

低1 DO

262

63628

#4FA#

740

64860

#1 DO#

277

63731

中5SO

784

64898

低2 RE

294

63835

#5SO#

831

64934

#2RE#

311

63928

中6LA

880

64968

低3M

330

64021

#6

932

64994

低4FA

349

64103

中7SI

988

65030

#4FA#

370

64185

高1DO

1046

65058

低5SO

392

64260

#1DO#

1109

65085

#5SO#

415

64331

高2RE

1175

65110

低6LA

440

64400

 

#2RE#

1245

65134

#6

466

64463

高3M

1318

65157

低7SI

494

64524

高4FA

1397

65178

中1DO

523

64580

#4FA#

1480

65198

#1DO#

554

64633

高5SO

1568

65217

中2RE

587

64684

#5SO#

1661

65235

#2RE#

622

64732

高6LA

1760

65252

中3M

659

64777

#6

1865

65268

中4FA

698

64820

高7SI

1967

65283

用单片机播放音乐,或者弹奏电子琴,实际上是按照特定的频率,输出一连串的方波。

为了输出合适的方波,首先应该知道音符与频率的关系。

3.2芯片及原理图介绍

3.2.1AT89C52简介

AT89C52(图1-1)为8位低功耗单片机,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。

功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。

主要管脚有:

XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。

RST(9脚)为复位输入端口,外接电阻电容组成的复位电路。

VCC(40脚)和GND(20脚)为供电端口,分别接+5V电源的正负端。

P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)定义为双向8位三态I/O接口,它既可以作为通用I/O接口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口;P1端口(1~8脚)定义为准双向I/O接口,内部具有上拉电阻;P2端口(21~28脚)定义为8位准双向I/O接口,内部具有上拉电阻,可直接连接外部I/O设备,同时与地址高8位复用;P3端口(10~17)定义为8位准双向I/O接口,内部具有上拉电阻,它是双功能复用口,每个引脚可驱动4个TTL负载。

图1-1AT89C52

3.2.2电子琴设计的原理图(见附录)

3.3各个模块介绍

本系统采用单片机AT89C52为电子琴的控制核心,系统主要包括按键弹奏模块,数码管显示模块。

下面对各模块的设计逐一进行论证比较。

3.3.1系统硬件设计

停止键

开始键

播放键

 

图2-1总体硬件组成框图

实验中每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置,通过程序来控制,使喇叭发出不同频率(音调)的声音,声音延迟一段时间,等到按键放开之后,声音停止。

然后再继续扫描,看是否有键按下。

如此循环,即可实现基本的琴键功能。

3.3.2子系统模块一

琴键模块如图2-2所示,利用AT89C52单片机的P1端口及P2端口与键盘(图2-2a)、数码管(图2-2b)的连接。

图2-2(a)单片机与键盘的连接图2-2(b)单片机与数码管的连接

3.3.3子系统模块二

播放模块是蜂鸣器构成。

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。

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

图2-3发声模块电路图

3.3.4子系统模块三

电子琴设有16个按键,分别代表16个音符,包括中音段的全部音符。

通过软硬件设计,按键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴。

然后通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现各种琴键的声音。

矩阵键盘模块图如下:

图2-4矩阵键盘模块

3.3.5AT89C52晶振模块

XTAL1脚为片内振荡电路的输入端,XTAL2脚为片内振荡电路的输入端。

8952的时钟有两种方式:

一种是片内时钟振荡方式,但需在18和19脚外接石英晶体(频率为1.2~12MHZ)和振荡电容,振荡电容值一般取10~30pf,典型值为30pf;另一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。

下面为方式一电路图。

图2-6晶振模块

4系统软件设计

软件是该电子琴控制系统的重要组成部分,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。

KEILC51µVision2集成开发环境是KEILSoftware,Inc/KEILelectronikGmbH开发的基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立到管理、编译、链接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程尤其是C编译工具在产生代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。

4.1软件设计总流程图流程

4.2软件程序

本系统的上位机软件主要是编辑电子琴播放状态的内容,在设计中采用C语言编写了电子琴控制系统控制和播放内容的程序。

见附录一。

5系统的硬件调试及软件调试

5.1软件调试。

利用protuse与keil联调,对电路原理图进行仿真。

当按下K0按键的时候,数码管显示如下,同时,蜂鸣器发出音乐的(音高)。

当按下K6按键的时候,数码管显示如下,同时,蜂鸣器发出音乐(音高。

5、2硬件调试。

将焊接好的硬件接到电源上,进行调试。

按下K0键时,数码管显示为‘0’,并且蜂鸣器有发出相对应的音高。

按下K6键时,数码管显示为‘9’,并且蜂鸣器有发出相对应的音高。

按下K15键时,数码管显示为‘F’,并且蜂鸣器有发出相对应的音高。

综合以上几次操作,发现硬件调试成功,硬件的功能与仿真的功能一样。

6课程设计心得体会

通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。

创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。

在这周的单片机课程设计中,我合理的安排的时间。

提前确定自己要做的课程,以及提前去查找资料,去购买元器件。

在这次的课程设计中,我学到了很多只是,这些知识在课堂上很难学到。

这次课程让我受益颇多,无论从知识上还是其他的各个方面。

上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。

但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。

课程设计中,我加强了自己的动手能力,以及更好的将理论的只是运用到实践当中去。

在这次课程设计中又让我体会到了合作与团结的力量,这实验中,我也遇到了很多难题,当遇到不会或是设计不出来的地方,我们就会去询问同学和老师,老师都会很认真的给予我们帮助。

同学之间还互相交流,互帮互助,遇到问题能够相互探讨,体现了团结的力量。

 

参考文献

[1]杨凌霄.微型计算机原理与应用,中国矿业大学出版社.2008年8月第一版

[2]康华光.电子技术基础(数字部分),高等教育出版社.第五版

[3]邓红.单片机实验与应用设计教程出版日期:

2004年05月第1版

[4]余发山、王福忠.单片机原理及应用技术.中国矿业大学出版社.2008年6月第1版

 

 

附录1源程序

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodeDSY_Table[]=

{0x7e,0x18,0x6d,0x3d,0x1b,0x37,0x77,0x1c,0x7f,0x3f,0x5f,0x73,0x66,0x79,0x67,0x47};

uintcodeTone_Delay_Table[]=

{64021,64103,64260,64400,64524,64580,64684,64777,

64820,64898,64968,65030,65058,65110,65157,65178};

sbitBEEP=P3^0;

ucharKeyNo;

voidDelayMS(ucharx)

{

uchari;

while(x--)for(i=0;i<120;i++);

}

voidKeys_Scan()//按键扫描

{

ucharTmp,k;

P1=0x0F;//按键初始化

DelayMS

(2);

Tmp=P1^0x0F;

switch(Tmp)

{

case1:

k=0;break;

case2:

k=1;break;

case4:

k=2;break;

case8:

k=3;break;

default:

return;

}

P1=0xF0;

DelayMS

(2);

Tmp=(P1>>4)^0x0F;

switch(Tmp)

{

case1:

k+=0;break;

case2:

k+=4;break;

case4:

k+=8;break;

case8:

k+=12;break;

default:

return;

}

KeyNo=k;

}

voidplay_Tone()interrupt1

{

TH0=Tone_Delay_Table[KeyNo]/256;

TL0=Tone_Delay_Table[KeyNo]%256;

BEEP=~BEEP;

}

voidmain()

{

P2=0xBF;

TMOD=0x01;

IE=0x82;

while

(1)

{

P1=0xF0;//初始值

if(P1!

=0xF0)//有按键按下

{

Keys_Scan();//调用按键发音子程序

P2=DSY_Table[KeyNo];//显示按键的键位

TR0=1;//开中断

}

else

{

TR0=0;//关中断

}

DelayMS

(2);

}

}

 

附录2仪器清单

仪器名称

个数

4*4矩阵键盘

1

电阻

若干

STC89C52

1

蜂鸣器

1

三极管(NPN)

1

晶振11.0592MHZ

1

数码管

1

电容

2

 

附录3系统原理图

 

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

当前位置:首页 > 小学教育 > 数学

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

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