1、单片机课程设计报告武夷学院单片机原理与应用课程设计报告基于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.1 AT89C52简介 - 3 -3.2.2 电子琴设计的原理图 - 3 -3.3 各个模块介绍 - 3 -3.3.1 系统硬件
2、设计 - 4 -3.3.2 子系统模块一 - 4 -3.3.3 子系统模块二 - 5 -3.3.4 子系统模块三 - 5 -3.3.5 AT89C52晶振模块 - 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 设计任务实现电子琴发声控制系统;要求电路实现如下功能:利用蜂鸣器作为
3、发声部件,两个数码管作为显示部件,设置16个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音。用PROTEUS实现的电子琴仿真设计。说明:单片机的工作时钟频率为11.0592MHz。2 系统设计方案2.1 设计目的本次设计提出了用AT89C52单片机为核心控制元件,设计一个简易的电子琴. 本方案以AT89C52单片机作为主控核心,与键盘、蜂鸣器等模块组成核心主控制模块在主控模块上设有4*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
5、1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值与频率的关系式是:Nfi2fr,式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下:T65536N65536fi2fr例如:设K65536,fi1MHz,求中音DO(261Hz)。T65536N65536fi2fr6553610000002fr65536500000/fr,中音DO的T65536500000/52364580。 单片机12MHZ晶振,中音符与计数T0相关的计数值如表所示:
6、音符频率(HZ)简谱码(T值) 音符频率(HZ)简谱码(T值)低1DO26263628# 4 FA#74064860#1DO#27763731中 5 SO78464898低2RE29463835# 5 SO#83164934#2 RE#31163928中 6 LA88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#37064185高 1 DO104665058低 5 SO39264260# 1 DO#110965085# 5 SO#41564331高 2 RE117565110低 6 LA44064400 # 2
7、 RE#124565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580# 4 FA#148065198# 1 DO#55464633高 5 SO156865217中 2 RE58764684# 5 SO#166165235# 2 RE#62264732高 6 LA176065252中 3 M65964777# 6186565268中 4 FA69864820高 7 SI196765283用单片机播放音乐,或者弹奏电子琴,实际上是按照特定的频率,输出一连串的方波。为了输出合适的方波,首先应该知道音符与频率
8、的关系。3.2 芯片及原理图介绍3.2.1 AT89C52简介 AT89C52(图1-1)为8位低功耗单片机,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和GND(20 脚)为供电端口,分别接+5V电源的正
9、负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)定义为双向8位三态I/O接口,它既可以作为通用I/O接口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口;P1端口(18脚)定义为准双向I/O接口,内部具有上拉电阻;P2端口(2128脚)定义为8位准双向I/O接口,内部具有上拉电阻,可直接连接外部I/O设备,同时与地址高8位复用;P3端口(1017)定义为8位准双向I/O接口,内部具有上拉电阻,它是双功能复用口,每个引脚可驱动4个TTL负载。 图1-1 AT89C52 3.2.2 电子琴设计的原理图(见附录) 3.3 各个模块介绍本系
10、统采用单片机AT89C52为电子琴的控制核心,系统主要包括按键弹奏模块,数码管显示模块。下面对各模块的设计逐一进行论证比较。3.3.1 系统硬件设计 停止键 开始键 播放键 图2-1 总体硬件组成框图实验中每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置,通过程序来控制,使喇叭发出不同频率(音调)的声音,声音延迟一段时间,等到按键放开之后,声音停止。然后再继续扫描,看是否有键按下。如此循环,即可实现基本的琴键功能。3.3.2 子系统模块一琴键模块如图2-2所示,利用AT89C52单片机的P1端口及P2端口与键盘(图2-2 a)、数码管(图2-2 b)的连接。 图2-2(a) 单片机
11、与键盘的连接 图2-2 (b)单片机与数码管的连接3.3.3 子系统模块二播放模块是蜂鸣器构成。蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。而且由于所需驱动功率较小,且价格低廉,所以,被广泛应用。 图2-3 发声模块电路图 3.3.4 子系统模块三电子琴设有16个按键,分别代表16个音符,包括中音段的全部音符。通过软硬件设计,按键触发外部中断,中断使
12、程序跳转,实现模式转换,启动电子琴。然后通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现各种琴键的声音。矩阵键盘模块图如下: 图2-4 矩阵键盘模块3.3.5 AT89C52晶振模块 XTAL1脚为片内振荡电路的输入端,XTAL2脚为片内振荡电路的输入端。8952的时钟有两种方式:一种是片内时钟振荡方式,但需在18和19脚外接石英晶体(频率为1.212MHZ)和振荡电容,振荡电容值一般取1030pf,典型值为30pf;另一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。下面为方式一电路图。 图2-6 晶振模块4 系统软件设计软件是该电子琴控制系统
13、的重要组成部分,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。KEIL C51 Vision2集成开发环境是KEIL Software,Inc/KEIL electronik GmbH开发的基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立到管理、编译、链接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程尤其是C编译工具在产生代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。4. 1 软件设计总流程图流程4. 2 软件程序本系统的上位机软件主要是编辑电子琴播放状态的内容,
14、在设计中采用C语言编写了电子琴控制系统控制和播放内容的程序。见附录一。5 系统的硬件调试及软件调试5.1 软件调试。利用protuse与keil联调,对电路原理图进行仿真。当按下K0按键的时候,数码管显示如下,同时,蜂鸣器发出音乐的(音高)。 当按下K6按键的时候,数码管显示如下,同时,蜂鸣器发出音乐(音高。)5、2 硬件调试。将焊接好的硬件接到电源上,进行调试。按下K0键时,数码管显示为0,并且蜂鸣器有发出相对应的音高。按下K6键时,数码管显示为9,并且蜂鸣器有发出相对应的音高。按下K15键时,数码管显示为F,并且蜂鸣器有发出相对应的音高。综合以上几次操作,发现硬件调试成功,硬件的功能与仿真
15、的功能一样。6 课程设计心得体会通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。 在这周的单片机课程设计中,我合理的安排的时间。提前确定自己要做的课程,以及提前去查找资料,去购买元器件。在这次的课程设计中,我学到了很多只是,这些知识在课堂上很难学到。这次课程让我受益颇多,无论从知识上还是其他的各个方面。上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。但在实习中见过甚至使用了单片机及其系统,能够理
16、论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。课程设计中,我加强了自己的动手能力,以及更好的将理论的只是运用到实践当中去。在这次课程设计中又让我体会到了合作与团结的力量,这实验中,我也遇到了很多难题,当遇到不会或是设计不出来的地方,我们就会去询问同学和老师,老师都会很认真的给予我们帮助。同学之间还互相交流,互帮互助,遇到问题能够相互探讨,体现了团结的力量。参 考 文 献1 杨凌霄. 微型计算机原理与应用,中国矿业大学出版社.2008年8月第一版2 康华光. 电子技术基础(数字部分),高等教育出版社.第五版3 邓红. 单片机实验与应用设计教程 出版日期:2004年05月第1版4 余
17、发山、王福忠. 单片机原理及应用技术. 中国矿业大学出版社.2008年6月第1 版附录1 源程序#include#define uchar unsigned char#define uint unsigned intuchar code DSY_Table=0x7e,0x18,0x6d,0x3d,0x1b,0x37,0x77,0x1c,0x7f,0x3f,0x5f,0x73,0x66,0x79,0x67,0x47;uint code Tone_Delay_Table=64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,6496
18、8,65030,65058,65110,65157,65178;sbit BEEP=P30;uchar KeyNo;void DelayMS(uchar x) uchar i; while(x-) for(i=0;i4)0x0F; switch(Tmp) case 1:k+=0;break; case 2:k+=4;break; case 4:k+=8;break; case 8:k+=12;break; default:return; KeyNo=k;void play_Tone() interrupt 1 TH0=Tone_Delay_TableKeyNo/256; TL0=Tone_Delay_TableKeyNo%256; BEEP=BEEP;void main() P2=0xBF; TMOD=0x01; IE=0x82; while(1) P1=0xF0;/初始值 if(P1!=0xF0)/有按键按下 Keys_Scan();/调用按键发音子程序 P2=DSY_TableKeyNo;/显示按键的键位 TR0=1;/开中断 else TR0=0;/关中断 DelayMS(2); 附录2 仪器清单仪器名称个数4*4矩阵键盘1电阻若干STC89C521蜂鸣器1三极管(NPN)1晶振11.0592MHZ1数码管1电容2附录3 系统原理图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1