单片机电子琴课程设计 (2)

上传人:fgh****35 文档编号:173411853 上传时间:2022-12-10 格式:DOC 页数:33 大小:1.21MB
收藏 版权申诉 举报 下载
单片机电子琴课程设计 (2)_第1页
第1页 / 共33页
单片机电子琴课程设计 (2)_第2页
第2页 / 共33页
单片机电子琴课程设计 (2)_第3页
第3页 / 共33页
资源描述:

《单片机电子琴课程设计 (2)》由会员分享,可在线阅读,更多相关《单片机电子琴课程设计 (2)(33页珍藏版)》请在装配图网上搜索。

1、桂 林 电 子 科 技 大 学微 机 综 合 设 计设计报告指导老师: wuzhaohua 学 生: lushengbao学 号:0900150118 桂林电子科技大学机电工程学院微机综合设计报告目录一、设计题目4二、设计内容与要求42.1内容与要求42.2课程设计的设计步骤42.3任务分析42.4方案比较及选择4三、设计目的及意义5四、系统硬件电路图54.1Proteus软件简介及仿真电路图54.2 Protel199SE简介以及所绘图形6五、程序流程框图与源程序105.1流程框图105.2源程序清单11六、系统设计说明146.1 8051单片机介绍156.1.1stc89c54单片机156

2、.1.2 振荡特性206.1.3 芯片擦除216.2单片机最小系统216.2.1复位电路226.2.2 晶振电路236.3 STC-ICP-V480软件介绍246.3.1软件功能246.3.2 软件应用流程246.4KEIL软件介绍266.5音乐与频率相关知识276.5.1初值的确定276.5.2改变音调的方法296.6蜂鸣器及其驱动电路设计296.7调试过程306.8调试过程收获316.9改进意见及措施31七、综合设计总结31八、参考文献33一、设计题目简易电子琴设计二、 设计内容与要求2.1 内容与要求 用8031单片机控制电子琴发出1、2、3、4、5、6、7七个音节的声音,音调可控。2.

3、2 课程设计的设计步骤1、 理解任务设计要求(通过阅读有关资料及调查研究);2、 对总体方案进行分析,论证,验证其可行性;3、 系统硬件电路的设计:使用protel软件制作硬件电路原理图并生成PCB,根据PCB图制作系统硬件电路板并且焊上相关元器件,检测电路是否导通;4、 系统控制软件的设计:1) 以功能明确、相互界面能清晰分割的软件程序为基础,确定主程序的流程框图;2) 以主程序流程图为基础,确定各个模块程序算法及实现的功能,进一步确定各个模块程序流程框图;3) 根据软件流程框图,用汇编语言或者C语言编写主程序和延时子程序;4) 系统软件仿真、硬件电路制造、硬件的测试;5) 编写课程设计说明

4、书,答辩验收。2.3 任务分析1) 用单片机控制蜂鸣器使之发出1、2、3、4、5、6、7七个音节的声音(各种不同的声音可以用定时器产生不同的频率得到)。2) 通过按键控制单片机定时器以得到不同的输出频率,当按键按下时发出声音,当按键释放时停止发音。3) 通过按键控制声音的低、中、高三种音调。2.4 方案比较及选择1) 单片机:由于本实验受到程序烧录软件的限制,选择用STC89c54单片机。2) 键盘输入接口:可供选择的键盘形式有独立式按键、矩阵式键盘按键。独立式按键的每个按键各占用一位I/O口线,其状态相互独立,相互之间没有影响,只要单独检测I/O口线状态即可判断按键状态,具有电路简单,按键识

5、别软件也相对简单的优点,适用于系统需要按键数目较少的场合。但按键数量较多的情况下,采用独立式按键就会需要大量的I/O口资源,这时往往采用矩阵式键盘,以节约对I/O口资源的占用。由于本实验需要按键不多,本着电路简单,软件识别简单的原则,选择使用独立式按键。3) 音调控制:收到硬件资源的限制,使用单个按键控制声音的低、中、高。声音按低中高低的规律进行切换。三、设计目的及意义1、在系统掌握单片机相应基础知识的前提下,熟悉单片机最小应用系统系统的设计方法及系统设计的基本步骤。2、完成所需单片机最小应用系统原理图设计绘制的基础上完成系统的电路图设计、3、完成系统所需的硬件设计制造,在提高实际手动能力的基

6、础之上进一步巩固所学知识。4、进行题目要求功能基础上的软件程序编程,会用相应软件进行程序测试和调试工作。四、系统硬件电路图4.1 Proteus软件简介及仿真电路图Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机

7、与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。Proteus软件具有其它EDA工具软件(例如multisim)的功能。这些功能是:1、原理布线2、PCB自动或人工布线3、SPICE电路仿真下面图1-1是使用prot

8、eus软件建立的模型,经仿真,程序实现了预定的功能图1-14.2 Protel199SE简介以及所绘图形Protel99SE是应用于Windows9X/2000/NT操作系统下的EDA设计软件,采用设计库管理模式,可以进行联网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源-地层和16个机加工层。Protel99SE 的系统组成 按照系统功能来划分,Protel99se 主要包含以下两大部分和 6 个功能模块。 1、电路工程设计部分 (1) 电路原理设计部分(Advan

9、ced Schematic 99):电路原理图设计部分包括电路图编辑器(简称 SCH 编辑器)、电路图零件库编辑器(简称 Schlib 编辑器)和各种文本编辑器。本系统的主要功能是:绘制、修改和编辑电路原理图;更新和修改电路图零件库;查看和编辑有关电路图和零件库的各种报表。 (2)印刷电路板设计系统(Advanced PCB 99):印刷电路板设计系统包括印刷电路板编辑器(简称 PCB 编辑器)、零件封装编辑器(简称 PCBLib 编辑器)和电路板组件管理器。本系统的主要功能是:绘制、修改和编辑电路板;更新和修改零件封装;管理电路板组件。 (3)自动布线系统(Advanced Route 99

10、):本系统包含一个基于形状(Shape-based)的无栅格自动布线器,用于印刷电路板的自动布线,以实现 PCB 设计的自动化。 2、电路仿真与 PLD 部分 (1)电路模拟仿真系统(Advanced SIM 99):电路模拟仿真系统包含一个数字/模拟信号仿真器,可提供连续的数字信号和模拟信号,以便对电路原理图进行信号模拟仿真,从而验证其正确性和可行性。 (2)可编程逻辑设计系统(Advanced PLD 99):可编程逻辑设计系统包含一个有语法功能的文本编辑器和一个波形编辑器(Waveform)。本系统的主要功能是;对逻辑电路进行分析、综合;观察信号的波形。利用 PLD 系统可以最大限度的精

11、简逻辑部件,使数字电路设计达到最简化。 (3)高级信号完整性分析系统(Advanced Integrity 99):信号完整性分析系统提供了一个精确的信号完整性模拟器,可用来分析 PCB 设计、检查电路设计参数、实验超调量、阻抗和信号谐波要求等。 Protel99SE 的功能特性: (1)开放式集成化的设计管理体系 (2)超强功能的、修改与编辑功能 (3)强大的设计自动化功能 Protel99SE 有强大的功能,在本最小系统设计中使用 Protel99SE 制图,所制电路原理如图1-2所示。图1-2所用到的单片机芯片如图1-3所示。图1-3晶振电路模块如图1-4所示。图1-4单片机复位电路如图

12、1-5所示。图1-5蜂鸣器及驱动模块如图1-6所示。图1-6原理图生产的PCB及其布线图如图1-7所示。图1-7五、程序流程框图与源程序5.1流程框图主程序流程图如图1-8所示。开始初始化T0并开放T0中断允许 音调变换按键是否按下? Y变换音调 N按键识别独立式按键是按下? 根据按键功能,装入音符T值到T0中启动T0按键是否释放?结束,停止T0图1-8中断子程序流程图如图1-9所示。 T0中断入口 中断返回P2.6取反重装TH0,TL0初值 图1-95.2 源程序清单5.2.1STH0 EQU 31H ;用于存储高八位初值STL0EQU 32H ;用于存储第八位初值TEMP EQU 33H

13、;存储中间变量COUNT EQU 34H ;存储计算次数ORG 00HLJMP MAINORG 0BH;定时器T0入口地址LJMP INT_T0MAIN:;主函数入口 MOV TMOD,#01h;定时器T0初始化,采用方式0 SETB EA ;总中断允许 SETB ET0;定时器T0溢出中断允许 SETB P2.6;无输出 MOV DPTR,#TABLE1 ;初始化默认指针地址 KEY_CH:;按键检测JNB P1.0,KEY0JNB P1.1,KEY1JNB P1.2,KEY2JNB P1.3,KEY3JNB P1.4,KEY4JNB P1.5,KEY5JNB P1.6,KEY6JNB P1

14、.7,KEY7SJMP KEY_CHKEY0:;按键处理MOV R1,#00HLJMP DKKEY1:MOV R1,#01HLJMP DKKEY2:MOV R1,#02HLJMP DKKEY3:MOV R1,#03HLJMP DKKEY4:MOV R1,#04HLJMP DKKEY5:MOV R1,#05HLJMP DKKEY6: MOV R1,#06HLJMP DKKEY7: INC COUNT;音调变换处理CJNE A,#0FFH,NFULLMOV A,#0HMOV COUNT,ANFULL:MOV A,COUNTMOV B,#03HDIV AB MOV A,BLCALL DELAY100

15、MSLCALL DELAY100MSCJNE A,#0H,T2MOV DPTR,#TABLE1LJMP KEY_CHT2:CJNE A,#01H,T3MOV DPTR,#TABLE2LJMP KEY_CHT3:MOV DPTR,#TABLE3LJMP KEY_CHDK: ;按键值处理入口MOV A,R1MOV B,#2MUL ABMOV TEMP,AMOVC A,A+DPTR;获取表格地址及读表MOV STH0,A;存储高八位MOV THO,A;预赋定时器高八位INC TEMP;TEMP加一为了读取第八位MOV A,TEMPMOVC A,A+DPTR MOV STL0,AMOV TL0,ASE

16、TB TR0;开启定时器T0允许DKA:;检测音阶按键是否释放程序入口MOV A,P1ANL A,#0FHCJNE A,#0FH,DKA;确定按键是否释放,若没有,继续检测 LCALL DELAY100MS;音阶声音延时LCALL DELAY100MSLCALL DELAY100MSLCALL DELAY100MSCLR TR0;关闭T0溢出中断允许SETB P2.6;关闭输出LJMP KEY_CH;继续检测DELAY10MS: ;延时10MS子程序 MOV R6,#10D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RETDELAY100MS:;延时100MS子程序

17、 MOV R5,#0DDHDL0: MOV R4,#0CFH DJNZ R4,$ DJNZ R5,DL0 RETINT_T0:MOV TH0,STH0MOV TL0,STL0CPL P2.6 RETITABLE1: DW 63628,63835,64021,64103 ;低音初值表 DW 64260,64400,64524,64580TABLE2: DW 64580,64684,64777,64820;中音初值表 DW 64898,64968,65030,65058TABLE3: DW 65058,65110,65157,65178;高音初值表 DW 65217,65252,65283,653

18、12END5.2.2延时子程序:一个单片机工作于12M晶振,它的时钟周期是1/12(微秒)。它的一个机器周期是12*(1/12)也就是1微秒。MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要2个机器周期,还有两条指令要4个机器周期才行。DJNZ指令是双周期指令,所以延时10MS的指令如下:DELAY10MS: ;延时10ms程序MOV R6,#10D1:MOV R7,#248DJNZ R7,$DJNZ R6,D1RET六、系统设计说明6.1 8051单片机介绍8051 是一种4K 字节闪烁可编程可擦除(FPEROMFalshProgramma

19、bleand Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,是一种带 2K 字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除次 10万 次以上 。8051系列单片机选型如图1-10所示。图1-106.1.1 stc89c54单片机选用的stc89c54RD+是一种带16K字节片内flash闪存的高性能单片机。其主要特性如下:高速:1个时钟/机器周期,RISC型CPU内核,速度比普通8051快12倍宽电压:3.4到5.5V,2.0到3.8V(STC12LE2052AD系列)低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)工作频率:035MH

20、z,相当于普通8051:0420MHz时钟:外部晶体或内部RC振荡器可选16K片内flash程序存储器,擦写次数达到10万次以上芯片内EEPROM功能ISP/IAP,在系统可编程2个模拟比较器8通道高精度8位ADC2通道捕获/比较单元,提供PWM功能2个16位定时器看门狗功能告诉SPI通信端口增强型UART先进的RISC精简指令集结构,兼容普通8051指令集其包含中央处理器(CPU)、存储器(程序存储器 ROM 和数据存储器 RAM)、定时/计数器、并行I/O 接口(P1、P2、P3、P0 共4 个8 位口)、一个双工串行接口和 5 个中断源等几大单元及数据总线、地址总线和控制总线三大总线等结

21、构组成。下图(1-11)是 MCS-51 系列单片机的内部结构示意图。图1-11 MCS-51 系列单片机中的 8031、8051 及 8751 均采用 40Pin 封装的双列直接 DIP 结构,右图是它们的引脚配置,40 个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组 8 位共 32 个I/O 口,中断口线与 P3 口线复用。现在我们对这些引脚的功能加以说明:图1-12为stc89c54封装引脚图。图1-12图1-13为8051单片机封装图图1-13图1-14为P0口:图1-14P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口的管脚第一

22、次写 1 时,被定义为高阻输入。 P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。图1-15为P1口:图1-15P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。图1-16为P2口: 图1-16 P2 口为一个内部上拉电阻的 8 位

23、双向 I/O 口,P2 口缓冲器可接收,输出4 个 TTL 门电流,当P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。图1-17为P3口:图1-18P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4个 TTL 门

24、电流。当 P3 口写入“1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也可作为 AT89C51 的一些特殊功能口,如下表所示:P3 口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要

25、注意的是:每当用外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时,A只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执状态 ALE 禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PS有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。 /EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA

26、 端保持高电平时,此间内部程存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。6.1.2 振荡器特性XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2 应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。6.1.3 芯片擦除 整个 PEROM 阵列和三个锁定位的电擦除可通过正确的控制信号组合,

27、并保持 ALE 管脚处于低电平 10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89C51 设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU 停止工作。但 RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存 RAM 的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。6.1.4 编程与校验如图1-19图1-196.2单片机最小系统图1-20单片机最小系统6.2.1 复位电路在复位过程中,控制 CPU 的复位状态:这段时间内让 CPU 保持复位状

28、态,而不是一上电或刚复位完毕就工作,防止 CPU 发出错误的指令、执行错误操作,也可以提高电磁兼容性能。无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。 基本的复位方式单片机在启动时都需要复位,以使 CPU 及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从 RST 引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果 RST 引

29、脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU 就可以响应并将系统复位。单片机系统最常见的复位方式是手动按钮复位,如下图。图1-216.2.2 晶振电路 晶振在应用具体起到的作用,微控制器的时钟源可以分为两类:基于机械谐振器件的时钟源,如晶振、陶瓷谐振槽路;RC(电阻、电容)振荡器。另一种为简单的分立 RC 振荡器。基于晶振与陶瓷谐振槽路的振荡器通常能提供非常高的初始精度和较低的温度系数。RC 振荡器能够快速启动,成本也比较低,但通常在整个温度和工作电源电压范围内精度较差,会在标称输出频率的 5%至 50%范围内变化。但其性能受环境条件和电路元件选择的影响。需认真对待振荡器

30、电路的元件选择和线路板布局。在使用时,陶瓷谐振槽路和相应的负载电容必须根据特定的逻辑系列进行优化。具有高 Q值的晶振对放大器的选择并不敏感,但在过驱动时很容易产生频率飘逸(甚至可能损坏)。影响振荡器工作的环境因素有:电磁干扰(EMI)、机械震动与冲击、湿度和温度。这些因素会增大输出频率的变化,增加不稳定性,并且在有些情况下,还会造成振荡器停振。上述大部分问题都可以通过使用振荡器模块避免。这些模块自带振荡器、提供低阻方波输出,并且能够在一定条件下保证运行。最常用的两种类型是晶振模块和集成 RC 振荡器(硅振荡器)。晶振模块提供与分立晶振相同的精度。硅振荡器的精度要比分立 RC 振荡器高,多数情况

31、下能够提供与陶瓷谐振槽路相当的精度。 选择振荡器时还需要考虑功耗。分立振荡器的功耗主要由反馈放大器的电源电流以及电路内部的电容值所决定。CMOS 放大器功耗与工作频率成正比,可以表示为功率耗散电容值。比如,HC04 反相器门电路的功率耗散电容值是 90pF。在 4MHz、5V 电源下工作时,相当于 1.8mA 的电源电流。再加上 20pF 的晶振负载电容,整个电源电流为 2.2mA。陶瓷谐振槽路一般具有较大的负载电容,相应地也需要更多的电流。相比之下,晶振模块一般需要电源电流为 10mA 60mA。硅振荡器的电源电流取决于其类型与功能,范围可以从低频(固定)器件的几个伟岸到可编程器件的几个毫安

32、。一种低功率的硅振荡器,如 MAX7375,工作在 4MHz 时只需不到 2mA 的电流。在特定的应用场合优化时钟源需要综合考虑以下一些因素:精度、成本、功耗以及环境需求。图1-22晶振电路原理图 6.3 STC-ICP-V480软件介绍STC89C52单片机采用STC_ISP_V4.80向内部烧写程序。6.3.1 软件功能STC_ISP_V4.80是由STC公司研发,可以向STC89C51、STC89C52等系列单片机内烧写程序。可以设置波特率,串口等参数。同时STC_ISP_V4.80还可以作为串口调试工具,用于串口收发数据的调试软件。6.3.2 软件应用流程第一:打开STC_ISP_V4

33、.80软件,分别设置最高,最低波特率,并选择相应的串口等参数。如图1-23所示:图1-23第二:打开所要下载的.hex文件,如图1-24所示:图1-24第三:点击DownLoad,程序就开始烧写了。如图1-25所示:图1-256.4 KEIL软件介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇

34、编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种Keil软件图标是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂

35、商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的

36、软件仿真调试工具也会令你事半功倍。6.5音乐与频率相关知识音乐由许多不同的音阶组成的,而每个音阶对应着不同的频率,一般来说,单片机演奏音乐基本都是单音频率,它不包含相应振幅的谐波频率,也就是说不像电子琴哪有能演奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长时间。这样,我们就可以利用不同的频率组合,构成我们想要的音乐。 简易电子琴是按下拨码开关时,单片机stc89c54定时器会产生不同的频率而发出不同的声音,声音从P2.6端口经过三极管放大以后传入喇叭。声音主要是由单片机P1.0P1.6口的键盘按键产生,这里只用到7个按键来产生do re mi

37、fa so la si七个音阶,而音调的高低则有P2.8口从低、中、高三种进行选择,按键每按一下一次进行一次音调变换。通过赋予单片机定时器初值,每次计时结束改变一次输出口P2.6的电平状态,可以得到方波的输出,而改变定时器的初值,则可产生不同的方波。不同音节是用C、D、E、F、G、A、B来表示,这七个字母就是音乐的声名,它们一般一次唱成DO、RE、MI、FA、SO、LA、SI,即唱成1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音这是唱曲时音乐的发音,所以叫“音调”,即Tone。6.5.1 初值的确定要产生音频脉冲,只要算出某一个音频的周期(1/频率),然后将此周期除以2,即为半

38、周期的时间。利用定时器计时这半个周期的时间,每次计时结束后就将输出脉冲的I/O口取反一次,然后重复计时此半周期时间再对I/O口取反,就可在I/O引脚上得到次频率的脉冲。利用SCT89C54的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0、TL0以产生不同的频率。此外结束符合休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示结束,若查表结果为FFH则表示产生相应的停顿效果。例如频率523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us、1us=956,在每次计数956次时将I/O口取反,就可以得到中音DO(523Hz)。计算脉冲与频率的关系

39、公式如下:N=Fi/2/FrN:计算值;Fi:内部计时一次为1us,故其频率为1MHz;其计数值的求法如下:T=65536-N=65536-Fi/2/Fr 例如:设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz),中音DO(523Hz),高音DO(1046Hz)的计算值T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr低音DO的T=65536-500000/262=63627中音DO的T=65536-500000/523=64580高音DO的T=65536-500000/1047=65059各音符频率

40、与计数值的对应关系如下表所示:音符频率HZ半周期us初值码音符频率HZ半周期us初值码低1DO262190863628#4FA#74067664860#1DO#277180563731中5SO78463864898低2RE294170063835#5SO#83160264934#2RE#311160863928中6LA88056864968低3MI330151664021#6LA#93253664994低4FA349143364103中7SI98850665030#4FA#370135064185高1DO104647865058低5SO392127664260#DO#110945165085#

41、5SO#415120564331高2RE117542665110低6LA440113664400#2RE124540265134#6LA#466107264463高3MI131837265157低7SI494101264524高4FA139735865178中1DO523095664580#4FA#148033865198#1DO#554090364633高5SO156831965217中2RE578084264684#5SO#166129265235#2RE#622080464732高6LA176028465252中3MI659075964777#6LA#186526865268中4FA69

42、8071664820高7SI197625365283得出的计数初值表如下:TABLE1: DW 63628,63835,64021,64103;低音调表值 DW 64260,64400,64524,64580TABLE2: DW 64580,64684,64777,64820;中音调表值 DW 64898,64968,65030,65058TABLE3: DW 65058,65110,65157,65178;高音调表值 DW 65217,65252,65283,653126.5.2 改变音调的方法 在设计中我们设定了一个用于存储计数值的地址COUNT,内容初始化为0,每当P1.7口改变音调高低

43、的按键按下之后计数值加1,再用COUNT值除以3,取出余数,此时余数以0120的规律变化,再通过判断余数的大小得知所要发出的音调高低。当余数为0时为低音,把低音初值表地址#TABEL1地址赋给指针DPTR;当余数为1时为中音,把中音初值表地址#TABEL2地址赋给指针DPTR,当余数为2时为低音,把低音初值表地址#TABEL3地址赋给指针DPTR。当计数值满后COUNT从0开始重新计数,从而实现音调高低的变换。6.6 蜂鸣器及其驱动电路的设计蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电

44、流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.515V直流工作电压),多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。蜂鸣器按其是否带有信号源又分为有源和无源两种类型。有源蜂鸣器只需要在其供电端加上额定直流电压,其内部的震荡器就可以产生固定频率的信号,驱动蜂鸣器发出声音。无源蜂鸣器可以理解成与喇叭一样,需要在其供电端上加上高低不断变化的电信号才可以驱动发出声音。由于用有源蜂鸣器,可能会因为二种

45、不同频率声音(有源蜂鸣器本身固有发音频率与单片机驱动频率)互相叠加,造成效果混乱、发音不清。因此本设计采用的是无源蜂鸣器。单片机引脚的驱动能力一般只有几个毫安,而蜂鸣器的额定工作电流需要几十毫安,所以单片机不能直接驱动蜂鸣器,而且蜂鸣器是感性负载,直接接到单片机上很可能会导致单片机损坏或程序损坏。因此需要增加一个三极管以放大电流驱动蜂鸣器工作。单片机2.6脚输出接三极管的基极,通过控制三极管的导通或截止来控制蜂鸣器上是否有电流,从而发出声音。下图1-26为蜂鸣器实物:图1-26蜂鸣器结构如图1-27所示。图1-27蜂鸣器模块如图1-28所示。图1-286.7 调试过程由于设备齐全,本次调试并没

46、有在实验室进行,在科协蚀刻好电路板之后我们便进行了proteus的电路仿真实验,一开始并没有得到预期的发音效果,然而在仿真时按下发音按键后三极管的基极确实是有电流通过,可是蜂鸣器就是不发音。后来焊接好PCB之后,进行烧录程序调试,与仿真实验一样,也没有实现预期的效果。之后经过仔细推敲,并且请教了其他同学才得知,原先接的三极管是S9014,它的放大倍数过小,我们决定换了一个放大倍数更大的8050,经过三极管的更换,最终蜂鸣器发出了声音。在软件设计方面,由于老师只提供一个按键更换音调的高低,所以软件设计要求较高,一开始烧录程序后发现,音调更换按键并没有起到效果,有时需要连续按下好几次才更换音调,后

47、来通过计数的方法实现了每按下一次音调键音调从低中高有规律的更换。整体功能达到了预期的要求。6.8 调试过程收获 总的来说本次设计对我来说最难的是制作电路板,由于实际跟理论的差别,制作电路板的时候没有注意电路图形的线宽,一开始制作的板子线宽过小,很容易断线,因此我连续弄了2块板子才得到自己满意的PCB。6.9 改进意见与措施改进:1) 本次设计采用的是蜂鸣器以及三极管的发音模块,发出的声音效果不是很好。2) 音调控制按键只有一个,软件设计的难度大大增加了。措施:1) 采用扬声器加驱动模块以发出更清晰的音调。2) 增加2个音调变换按键,以降低软件设计难度,也符合实际电子琴的设计。七、综合设计总结这

48、次的课程设计是单片机知识、微机原理知识、音乐知识的一个大综合,要求我们能灵活使用单片机的各种指令,熟练操作单片机的I/O口,掌握汇编语言及其循环结构程序以及分支结构程序,还要求对单片机的电路连接结构有一定的知识,要求具有通过查阅相关资料获取音乐方面知识的能力,不然就会想设计的一开始那样,对如何发出各种不同音调一无所知。这次的课设是以上各种知识的一个综合,通过完成这次课程设计任务,使我对单片机有来更深的了解,通过自己制作电路板,懂得了PCB的制作流程,不再是单纯的在理论课程上学习PCB的知识,能让理论知识得到一个很好的应用。不仅如此,通过此次设计,还提高了自己的团队合作能力。 1、在硬件设计上。

49、我查阅了一些单片机方面的资料,包括8051系列,AVR系列单片机,扩展了自己单片机方面的一些知识,比如说普通的SCT单片机是没有AD转换功能的,而AVR单片机功能更加强大,由于实验硬件条件的限制以及本实验的难度不大,所以8051系列足够我们使用。以前大一大二的时候学习过单片机的知识,但是那时候的知识实在是太多理论化,这次的单片机最小系统实践,驱动模块设计让我对单片机的引脚方面的知识有了更进一步的了解。2、在软件方面。一开始软件的设计实在是无从下手,因为以前没碰到过类似的设计,没有一点头绪,后来在同学的建议下在网上下载了好多相关电子琴的软件程序来分析,读懂它们的流程,每一行代码,之后自己第一次编

50、写出来的程序还是问题多多。比如说音调调节按键使用效果不好,偶尔要按下好几次才转换音调,因为老师只给了一个按键我们改变音调,软件设计难度大大增加了,最后是在科协的一位同学的建议下增加了一个计数器才让问题得以解决。3、在音乐知识方面。一看到这个课设题目就感觉很迷茫,因为自己对音调可谓是一窍不通,不知道1、2、3、4、5、6、7这几个音调是如何发出来的,最后只能自己上网大量搜索相关音乐方面的资料才解决了问题,这在某种程度上让我增强了网上搜索有用知识的能力。 4、在PCB设计方面。总的来说这次PCB设计是让我很头疼的事,包括电路原理图绘制,生产PCB后需要布线,这都不是很大的难题。难题是PCB制作后总是短路,因为线宽过小,又或者焊盘设计过小无法焊接,经过我对PCB的改之又改,才得以蚀刻出满意的PCB。总而言之,这次课程设计是让理论知识付诸实践的一次大考核,让我学会了很多。最后,还要感谢在课设中给我提供帮助的老师、学长、还有各位同学。八、参考文献1李晓峰.AVR单片机原理与应用.北京:北京理工大学出版社,2010.22赵全利.单片机原理及应用指南.北京:机械工艺出版社,2007.73徐惠民,安德宁.单片微型计算机原理、接口及应用M.北京:北京邮电大学出版 社.2000.4李伯成.单片机及嵌入式系统(第2版).北京:清华大学出版社,2008.933

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!