单片机课程设计报告.docx
《单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
![单片机课程设计报告.docx](https://file1.bdocx.com/fileroot1/2022-11/28/aadff5e3-8692-4498-a9c6-d86378806e39/aadff5e3-8692-4498-a9c6-d86378806e391.gif)
单片机课程设计报告
武夷学院
《单片机原理与应用》课程设计报告
基于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系统原理图