EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Lx00591 于 2020-2-12 18:35 编辑 , v" x4 ?8 u- p7 t2 e
: A: U+ R8 ]# V' g8 V! ] d基于单片机的简易电子琴设计
A# g! y0 V2 z摘要 本设计核心内容是关于基于STC89C51单片机的简易电子琴设计。硬件构成有;STC89C51+最小系统+声音模块+按键。 本设计首先要对STC89C51单片机有一定的认识,继而按照电子琴功能制作出硬件电路并编写源程序,外部加上外放设备,以此来实现音乐演奏控制器的硬件电路,八个按键发出八个音符; 特点是软硬件具有很好的通用型,有一定的使用价值,为广大的单片机爱好者有一定的借鉴作用。 电子琴是现代电子科技与音乐结合的产物,单片机具有强大的控制功能和灵活的编程实现特性,已溶入现代人的生活中。我设计的电子琴是以89C51单片机为核心控制元件。电子琴使用简单,深受广大热爱音乐者喜爱。
7 p6 ], h4 T5 s$ d! ~, i
+ S7 D3 A& M4 k# s6 f' P' w& s/ E2 Y3 L& ^* B0 K d+ d
! r, S% U5 i/ K# P/ u+ H% d
; w f' \/ k' ]/ A0 b# n# `& Z
) m, a+ X* b: \) C; A7 {
, K) w# E6 V% i' g# L6 ~3 H" w/ ?5 j' [" s+ H
目 录
5 {* `" s x f1 M9 ]9 t第一章 绪论 ……………………………………………………………………1 1.1 课题背景 ………………………………………………………………………5 1.2 设计依据 ………………………………………………………………………7 第二章 系统方案设计及主控芯片介绍………………………………………… 6 2.1 系统基本设计思路……………………………………………………………6 2.2 单元电路方案论证………………………………………………………………6 2.2.1 控制器模块 …………………………………………………………………7 2.2.2 发声模块 …………………………………………………………………7 2.2.3 编程软件模块…………………………………………………………………9 2.2.4 最终方案 …………………………………………………………………9 2.2.5 STC89C51单片机……………………………………………………………10 第三章 硬件电路设计 ……………………………………………………………16 3.1系统总体框图 ………………………………………………………………17 3.2 最小系统设计 ………………………………………………………………18 3.3 时钟电路 ……………………………………………………………………19 3.4 复位电路 ……………………………………………………………………20 3.5 控制器模块……………………………………………………………………20 3.6 播放模块 ……………………………………………………………………20 第四章 系统软件设计 ……………………………………………………………23 4.1单片机发声概述 ……………………………………………………………24 4.2 编程软件Keil C51……………………………………………………………25 4.3 系统总体程序流程图 ………………………………………………………26 第五章 调试与实现………………………………………………………………27 致谢…………………………………………………………………………………30 本人声明 …………………………………………………………………………31 附录1 原理图……………………………………………………………………32 附录2 PCB板图 ………………………………………………………………33 , {. x" ]( \" U9 w7 a, ?
第一章 绪论 1.1 课题背景 单片微型计算机简称单片机,是典型的 嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写 mcu表示单片机,它最早是被用在工业控制领域。由于单片机在工业控制领域的广泛应用,为使更多的业内人士、学生、爱好者,产品开发人员掌握单片机这门技术,于是产生单片机开发板,比较有名的例如电子人DZR-01A, ARM,STM32,C51,MSP430等。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。单片机因其体积小,功能强,价格低廉而得到广泛应用,同时随着我国经济的飞速发展,单片机在越来越多的领域得到了广泛的应用,现在国内的单片机多用于电话,玩具和LCD等产品,预计在未来,利用单片机发明的产品会越来越多,作为一名应用电子的应届毕业生来说,理解和掌握单片机的工作原理和使用技巧是必备的技能,基于这种考虑,我这次毕业设计的题目为简易电子琴。 我所设计的该产品时根据自身的兴趣和爱好所设计的,通过对传统电子琴的认识和了解,知道了传统的电子琴是利用单片机的汇编语言的编程来实现的,而且功能单一,我所设计的产品是基于对89c51单片机的深入理解对传统电子琴的小小的改革和创新,并且以简单的C语言程序替代了复杂的汇编语言程序,我相信在电子琴的不断革新达到人们所需娱乐设备的标准的时候,电子琴会被投入到批量生产之中。单片微型计算机室大规模集成电路技术发展的产物,属于第四代电子计算机它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。他的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题. 1.2 设计依据 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用STC89C51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘扬声器等模块组成核心主控制模块,在主控模块上设有8个按键。 主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴硬件的组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏要表达的音符。并且分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。 对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样的方波频率信号,因此,就可以弹奏出不同的歌曲和音调。 第二章 系统方案设计及主控芯片介绍 2.1 系统基本设计思路 此设计是用扬声器播放弹奏的曲子。电路包括:键盘、单片机以及单片机周边最小系统和晶振电路。 2.1.1 各部分说明 (1)键盘用于弹奏音乐,八个按键8种音符。 (2)单片机通过输出各种电脉冲信号驱动控制各部分正常工作。 2.1.1系统工作过程 单片机要产生音频脉冲,主要处理过程是在CPU中完成的,CPU会随时对音符输入信号进行读取数据的操作。在读取了相应的寄存器的值后,CPU将读取的值进行处理,再通过I/O口把音乐通过扬声器播放出来。 2.2 单元电路方案论证 根据设计要求,本系统主要由控制器模块和输入模块构成。采用51系列作为系统控制器 2.2.1 控制器模块 单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。由于其功耗低、体积较小、技术成熟和成本低等优点,在各个领域应用广泛。而且抗干扰性能好。故障率低,易于设备的扩展 2.2.2 发声模块 发声模块是本设计的最主要的部分。 基本方案:发生电路是这次设计电路中最重要的组成部分,他承载着把单片机所产生的声音信号放大并输出的重要作用,而我的设计中的发声电路主要是由两个S8050三极管驱动组成。S8050三极管是一种小功率的放大管,属于NPN型号三极管,而对三极管引脚的判断有以下方法。 1.大家知道,三极管是含有两个PN结的半导体器件。根据两个PN结连接方式不同,可以分为NPN型和PNP型两种不同导电类型的三极管, 测试三极管要使用万用电表的欧姆挡,并选择R×100或R×1k挡位。 2.假定我们并不知道被测三极管是NPN型还是PNP型,也分不清各管脚是什么电极。测试的第一步是判断哪个管脚是基极。这时,我们任取两个电极(如这两个电极为1、2),用万用电表两支表笔颠倒测量它的正、反向电阻,观察表针的偏转角度;接着,再取1、3两个电极和2、3两个电极,分别颠倒测量它们的正、反向电阻,观察表针的偏转角度。在这三次颠倒测量中,必然有两次测量结果相近:即颠倒测量中表针一次偏转大,一次偏转小;剩下一次必然是颠倒测量前后指针偏转角度都很小,这一次未测的那只管脚就是我们要的基极。 2.测量三极管发射极e和集电极c。三极管基极确定后,通过交换表笔,两次测量e,c极间的电阻,如果两次测量结果不相等,其中测得电阻值较小的一次为红表笔的是e极黑表笔接的是c极。对于PNP型号的三极管,方法与NPN的相似,只是红黑表笔的作用相反,在测量e,c极间电阻时要注意,由于三极管的V(BR)CEO很小,很容易将发射结击穿。 当我们三极管的管脚判断结束以后,我们就可以用两个三极管构成一个达林顿结构。首先当单片机P1.0口输出一个高电平,由两个三极管构成的达林顿成能导通,导通后又能对电流又一定的放大作用,这样传到扬声器时信号能让我们听的更清楚。
Q. `2 G5 L' {- K j2.2.3 编程软件模块 C语言与其他高级语言相比,具有运算符的丰富性、语法表述的灵活性、对软硬件操作的兼容性、输入输出方式的新颖性等主要特征.深入分析研究这些特征,可以加深对C语言的认识;正确应用这些特征,可以灵活高效地解决各种实际问题.C语言是一门通用计算机编程语言,广泛应用于底层开发。 2.2.4 最终方案 经过反复论证,最终确定了如下方案: (1)采用STC89C51单片机作为主控制器。 (2)采用达林顿效应使音乐信号放大。 (3)采用C语言编程。 . j4 P5 I! i9 d+ ~( L, [$ M
2.2.5STC89C51单片机 STC89C51是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。另外STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。 2 F( p+ }9 \5 m9 \2 b
) r: v/ {0 m( f9 B6 C
: x* c9 d+ {. ]4 S! P$ q. h单片机是美国STC公司最新推出的一种新型51内核的单片机。片内含有Flash程序存储器、SRAM、UART、SPI、PWM等模块。 (一)STC89C51主要功能、性能参数如下: (1)内置标准51内核,机器周期:增强型为6时钟,普通型为12时钟; (2)工作频率范围:0~40MHZ,相当于普通8051的0~80MHZ; (3)STC89C51RC对应Flash空间:4KB; (4)内部存储器(RAM):512B; (5)定时器\计数器:3个16位; (6)通用异步通信口(UART)1个; (7)中断源:8个; (8)有ISP(在系统可编程)\IAP(在应用可编程),无需专用编程器\仿真器; (9)通用I\O口:32\36个; (10)工作电压:3.8~5.5V; (11)外形封装:40脚PDIP、44脚PLCC和PQFP等。 (二)STC89C51单片机的引脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。这是由硬件自动完成的,不需要我们操心,1然后再实行读引脚操作,否则就可能读入出错,为什么看上面的图,如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1,该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1,也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1。若先执行置1操作,则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类I/O口被称为准双向口。89C51的P0/P1/P2/P3口作为输入时都是准双向口。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 (三)STC89C51单片机最小系统: 最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。 STC89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。用STC89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,结构如图2-3所示,由于集成度的限制,最小应用系统只能用作一些小型的控制单元。 9 `2 _$ O7 u3 V
& W5 i. H& g1 u5 f" S( p$ x * o1 }$ s3 a, U8 N
图2-3 单片机最小系统原理框图
( T8 k" X0 o" I/ N6 m
' |0 s# p5 m/ }+ c) I 图2-4 中断响应和处理过程 # E$ K G; N# d' N# X
中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并作出快速响应、及时处理。这是由片内的中断系统来实现的。当中断请求源发出中断请求时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求。中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。 如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。采用中断技术完全消除了单片机在查询方式中的等待现象,大大地提高了单片机的工作效率和实时性。 如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。采用中断技术完全消除了单片机在查询方式中的等待现象,大大地提高了单片机的工作效率和实时性。 第三章 硬件电路设计 3.1系统总体框图 本设计采用STC89C51单片机作为主控制器,外部加上三极管驱动放音设备。系统总体框图如下 ' T5 N+ X) [- r* J( Y
9 j$ g+ H5 y. x" S, S7 j
3.2 最小系统 最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。 3.3 时钟电路 STC89C51内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部时钟在此不做详细介绍。外部方式的时钟电路如图3所示,RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要 求,只要求保证脉冲宽度,一般采用频率在12MHz或11.0592MHZ晶振 图3-1 89c51内部时钟电路 3.4 复位电路 当在89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。 复位电路通常采用上电自动复位和按钮复位两种方式。 最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。 除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST(9)端与电源Vcc接通而实现的。按键手动复位电路见图4。时钟频率用11.0592MHZ时C取 图3-2 89C51 复位电路 3.5 按键控制模块 电子琴设有8个按键,8个按键分别代表8个音符,包括中音段的全部音符,通过软硬件设计。 如下图: 3.6 播放模块 播放模块是由2个三极管构成,三级管将信号放大,然后传输到喇叭,喇叭它几乎不存在噪声,音响效果较好。 下图是该模块电路: 三极管是电流放大器件,有三个极,分别叫做集电极C,基极B,发射极E。分成NPN和PNP两种。我们仅以NPN三极管的共发射极放大电路为例来说明一下三极管放大电路的基本原理。 (1)电流放大 下面的分析仅对于NPN型硅三极管。如上图所示,我们把从基极B流至发射极E的电流叫做基极电流Ib;把从集电极C流至发射极E的电流叫做集电极电流Ic。这两个电流的方向都是流出发射极的,所以发射极E上就用了一个箭头来表示电流的方向。三极管的放大作用就是:集电极电流受基极电流的控制(假设电源 能够提供给集电极足够大的电流的话),并且基极电流很小的变化,会引起集电极电流很大的变化,且变化满足一定的比例关系:集电极电流的变化量是基极电流变 化量的β倍,即电流变化被放大了β倍,所以我们把β叫做三极管的放大倍数(β一般远大于1,例如几十,几百)。如果我们将一个变化的小信号加到基极跟发射 极之间,这就会引起基极电流Ib的变化,Ib的变化被放大后,导致了Ic很大的变化。如果集电极电流Ic是流过一个电阻R的,那么根据电压计算公式U=R*I 可以算得,这电阻上电压就会发生很大的变化。我们将这个电阻上的电压取出来,就得到了放大后的电压信号了。 (2)偏置电路 三极管在实际的放大电路中使用时,还需要加合适的偏置电路。这有几个原因。首先是由于三极管BE结的非线性(相当于一个二极管),基极电流必须在输入电压 大到一定程度后才能产生(对于硅管,常取0.7V)。当基极与发射极之间的电压小于0.7V时,基极电流就可以认为是0。但实际中要放大的信号往往远比0.7V要小,如果不加偏置的话,这么小的信号就不足以引起基极电流的改变(因为小于0.7V时,基极电流都是0)。如果我们事先在三极管的基极上加上一 个合适的电流(叫做偏置电流,上图中那个电阻Rb就是用来提供这个电流的,所以它被叫做基极偏置电阻),那么当一个小信号跟这个偏置电流叠加在一起时,小 信号就会导致基极电流的变化,而基极电流的变化,就会被放大并在集电极上输出。另一个原因就是输出信号范围的要求,如果没有加偏置,那么只有对那些增加的 信号放大,而对减小的信号无效(因为没有偏置时集电极电流为0,不能再减小了)。而加上偏置,事先让集电极有一定的电流,当输入的基极电流变小时,集电极 电流就可以减小;当输入的基极电流增大时,集电极电流就增大。这样减小的信号和增大的信号都可以被放大了。 (3)开关作用 下面说说三极管的饱和情况。像上面那样的图,因为受到电阻Rc的限制(Rc是固定值,那么最大电流为U/Rc,其中U为电源电压),集电极电流是不能无限增加下去的。当基极电流的增大,不能使集电极电流继续增大 时,三极管就进入了饱和状态。一般判断三极管是否饱和的准则是:Ib*β〉Ic。进入饱和状态之后,三极管的集电极跟发射极之间的电压将很小,可以理解为 一个开关闭合了。这样我们就可以拿三极管来当作开关使用:当基极电流为0时,三极管集电极电流为0(这叫做三极管截止),相当于开关断开;当基极电流很 大,以至于三极管饱和时,相当于开关闭合。如果三极管主要工作在截止和饱和状态,那么这样的三极管我们一般把它叫做开关管。
1 H" \7 U1 e1 s6 ?+ X, `. |5 g图3-6 三极管引脚介绍 第四章 系统软件设计 4.1单片机发声概述 声音的不同音调对应的频率不同,声音产生是机械振动的结果, 也就是说振动的快慢频率不同发出的声音不同,所以你只要改变单片机引脚输出的高低电平的频率去驱动音乐模块,就能得到不同的声音 一般来说,单片机不像其他专业乐器那样能奏出多种音色的声音,即不包含相应幅度的谐振频率。单片机演奏的音乐基本都是单音频率。因此单片机演奏音乐比较简单,只需能清楚“音调”和“节拍”两个概念即可。 音调表示一个音符唱多高的频率。 节拍表示一个音符唱多长的时间。 知道了一个音符的频率后,便可以让单片机发出相应频率的振荡信号,从而产生相应的音符声音。通过单片机的定时器进行定时中断,在中断服务程序中将单片机上完结单片机I/O口来回置高电平或者是低电平的,从而让扬声器发出声音。通过节拍计算出每个音符所需要的时间,采用循环延时的方法来实现控制一个音符唱多长的时间,从而构成一首完整的音乐。 音调主要由声音的频率决定。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随响度增加而下降,高频纯音的音调却随响度增加而上升。 音调的高低还与发声体的结构有关,因为发声体的结构影响了声音的频率。大体上,2000 赫兹以下的低频纯音的音调随响度的增加而下降,3000 赫兹以上高频纯音的音调随响度的增加而上升。 例如,在音乐中常常把中音C上方的A音定位标准高音,其频率F=440HZ,其余音均与其进行比较。F1和F2为两个音符,如果这两个音符的频率相差一倍时,也即F2=2*F1时,则称F2比F1高一个频程。 在音乐中音符1与音符2,音符2与音符3……等等之间正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度内,有12个半音。由于人耳的听觉效果,这12个音阶的分度基本上是以对数的关系来划分的。只要知道12个音符的音高,也就是其基本频率,就可以根据音符之间的倍频关系得到其他音符的基本音调频率[3]。 以标准高音A的频率F=440HZ,其对应的周期为: T=1/F=1/440=2272us 因此需要在单片机I/O端口输出周期为T=2272us的方波脉冲,也就是t=T/2=2272/2=1136us 也就是说,单片机上定时器的中断出发时间为1136us。如果单片机采用定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设外接晶振的振荡器频率为f,则定时器的预置初始值有以下公式来确定: Temp = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC) TH = Temp /256 TL = Temp %256 4.2 编程软件KeilC51 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。Keil_c软件界面如图4-1:
; a' K3 o# k, u0 q p! |4 G1 S | |
# J, s# W4 Q7 l+ e \
# w B. }8 Y7 J; o0 j( t# P | | 2 b1 a) y. V$ x4 w: [
/ @2 O3 i' f3 ~8 d) P 图4-1 Keil_c软件界面 该软件是一款集编程和仿真于一体的软件,它支持汇编、C语言及二者的混合编程。 4.5 系统总体程序流程图
$ C: | {+ G7 J8 u
1 A0 \) l7 }% @
0 V, L) N6 V( h' I, R9 e
6 ]- h A. i2 I8 d/ Z; ? " O! ]9 Q) }* f/ i
* q8 g- B. j7 x: f) I
& u5 j9 _% p! H; j0 C
6 h2 B( K' V, u( M3 q: p! I# Z" [; a# D% `: p
第五章 调试与测试 这是本设计较为困难的一部分,需要经过反反复复的调试,才能达到理想中的效果,以下将分文硬件与软件两部分介绍此次调试的过程,以及调试过程中遇到的困难和解决办法。 程序主要取自一个音乐播放程序,但没有功率放大部分,更没有按钮部分。 在此基础之上,首先是对其进行一定的修改,在保留原来音调产生程序的前提下,进行主程序的设计,首先对所有端口进行初始化操作,接着进入不断循环部分,直到按键按下,进入防止抖动程序,如果不是抖动,则进入音乐播放程序,直到按键松开,再次进入等待按键按下部分。 在keil软件经不断改进后,生成hex文件,再用开发板烧入程序,并通过stc-isp烧录软件烧录后,最终得以完成。 程序在开始之初是用简单的中断延迟来实现,对于编歌曲来讲需要很大的工作量,在网上查找大量的资料之后,找到了一个做音乐播放器的程序,他也是基于中断延迟来实现播放功能,但是他对于歌曲编辑的灵活性,有很大的发展空间,所以我就采用了他的部分程序。 所以,主要考虑到的是如何在播放完一个音节后,进入在此等待状态。对于该段程序中的主要保护手段,就是按钮防治抖动部分,因此在等待按钮按下后,采用一小段的延迟程序,再次判定是否有按钮的按下,再进入播放程序。 1)元器件的装插焊接应遵循先小后大,先轻后重,先低后高,先里后外的原则,这样有利于装配顺利进行。 2)在瓷介电容、电解电容及三极管等元件立式安装时,引线不能太长,否则降低元器件的稳定性;但也不能过短,以免焊接时因过热损坏元器件。一般要求距离电路板面2mm,并且要注意电解电容的正负极性,不能插错。 3)集成电路的焊接,在焊接时,首先要弄清引线脚的排列顺序,并与线路板上的焊盘引脚对准,核对无误后,先固定IC,然后再重复检查,确认后再焊接其余脚位。由于IC引线脚较密,焊接完后要检查有无虚焊,连焊等现象,确保焊接质量。 4)焊锡之前应该先插上电烙铁的插头,给电烙铁加热。 5)焊接时,焊锡与电路板、电烙铁与电路板的夹角最好成45度,这样焊锡与电烙铁夹角成90度。 6)焊接时,焊锡与电烙铁接触时间不要太长,以免焊锡过多或是造成漏锡;也不要过短,以免造成虚焊。 7)焊完时,焊锡最好呈圆滑的圆锥状,而且还要有金属光泽 8)设计装上3节5 号电池,确保电压在4.5v~5.5v之间,首先检电路板有无焊接短路,然后通电。确保万无一失! 参考文献 [1] 白炽贵编著.单片机C语言案例教程.北京:电子工业出版社,2011.1 [2] 周良权主编.模拟电子技术基础.北京:高等教育出版社,2005.6 [3] 卜锡滨主编.数字电子技术.北京:中国水利水电出版社,2011.1 [4] 李华.单片机C语言编程[M].北京:北京航空航天大学出版社,2005.8.1 [5] 徐爱钧.单片机原理实用教程--基于Protrues虚拟仿真[M].北京:电子工业出版社.2009.1 [6] 李萍.AT89S51单片机、原理、开发与应用实例[M].北京:中国电力出版社.2008.7 [7] 张晔,王玉民等.单片机应用技术[M].北京:高等教育出版社.2006.3
9 v( w" K- a j& c0 |& { |