抽样z变换频率抽样理论:我们将先阐明:(1)z变换与DFT的关系(抽样z变换),在此基础上引出抽样z变换的概念,并进一步深入讨论频域抽样不失真条件。(2)频域抽样理论(频域抽样不失真条件)(3)频域内插公式一、z变换与DFT关系(1)引入连续傅里叶变换引出离散傅里叶变换定义式。离散傅里叶变换看作是序列的傅里叶变换在 频 域 再 抽 样 后 的 变 换 对.在Z变换与L变换中,又可了解到序列的傅里叶 变换就是单位圆上的Z 变 换.所以对序列的傅里叶变换进行频域抽样时, 自 然可以看作是对单位圆上的 Z变换进行抽样. (2)推导Z 变 换 的 定 义 式 (正 变 换) 重 写 如 下: 取z=ejw 代 入 定 义 式, 得 到 单 位 圆 上 Z 变 换 为w是 单 位 圆 上 各 点 的 数 字 角 频 率.再 进 行 抽 样-- N 等 分.这 样w=2kπ/N, 即w值为0,2π/N,4π/N,6π/N…, 考虑到x(n)是N点有限长序列, 因而n只需0~N-1即可。将w=2kπ/N代入并改变上下限, 得 则这正是离散傅里叶变换 (DFT)正变换定义式.
上传时间: 2014-12-28
上传用户:zhaistone
计算机的指令系统是表征计算机性能的重要指标,每种计算机都有自己的指令系统。MCS—51单片机的指令系统是一个具有255种代码的集合,绝大多数指令包含两个基本部分:操作码和操作数。操作码表明指令要执行的操作的性质;操作数说明参与操作的数据或数据所存放的地址。MCS—51指令系统中所有程序指令是以机器语言形式表示,可分为单字节、双字节、三字节3种格式。用二进制编码表示的机器语言由于阅读困难,且难以记忆。因此在微机控制系统中采用汇编语言指令来编写程序。本章介绍MCS—51指令系统就是以汇编语言来描述的。 一条汇编语言指令中最多包含4个区段,如下所示: 标号: 操作码目的操作数,源源操作数;注释 标号与操作码之间“:”隔开; 操作码与操作数之间用“空格”隔开; 目的操作数和源源操作数之间有“,”分隔; 操作数与注释之间用“;”隔开。 标号是由用户定义的符号组成,必须用英文大写字母开始。标号可有可无,若一条指令中有标号,标号代表该指令所存放的第一个字节存储单元的地址,故标号又称为符号地址,在汇编时,把该地址赋值给标号。 操作码是指令的功能部分,不能缺省。MCS—51指令系统中共有42种助记符,代表了33种不同的功能。例如MOV是数据传送的助记符。 操作数是指令要操作的数据信息。根据指令的不同功能,操作数的个数有3、2、1或没有操作数。例如MOV A,#20H,包含了两个操作数A和#20H,它们之间用“,”隔开。注释可有可无,加入注释主要为了便于阅读,程序设计者对指令或程序段作简要的功能说明,在阅读程序或调试程序时将会带来很多方便。
上传时间: 2013-11-04
上传用户:kr770906
离散傅里叶变换,(DFT)Direct Fouriet Transformer(PPT课件) 一、序列分类对一个序列长度未加以任何限制,则一个序列可分为: 无限长序列:n=-∞~∞或n=0~∞或n=-∞~ 0 有限长序列:0≤n≤N-1有限长序列在数字信号处理是很重要的一种序列。由于计算机容量的限制,只能对过程进行逐段分析。二、DFT引入由于有限长序列,引入DFT(离散付里叶变换)。DFT它是反映了“有限长”这一特点的一种有用工具。DFT变换除了作为有限长序列的一种付里叶表示,在理论上重要之外,而且由于存在着计算机DFT的有效快速算法--FFT,因而使离散付里叶变换(DFT)得以实现,它使DFT在各种数字信号处理的算法中起着核心的作用。三、本章主要讨论离散付里叶变换的推导离散付里叶变换的有关性质离散付里叶变换逼近连续时间信号的问题第二节付里叶变换的几种形式傅 里 叶 变 换 : 建 立 以 时 间 t 为 自 变 量 的 “ 信 号 ” 与 以 频 率 f为 自 变 量 的 “ 频 率 函 数 ”(频谱) 之 间 的 某 种 变 换 关 系 . 所 以 “ 时 间 ” 或 “ 频 率 ” 取 连 续 还 是 离 散 值 , 就 形 成 各 种 不 同 形 式 的 傅 里 叶 变 换 对 。, 在 深 入 讨 论 离 散 傅 里 叶 变 换 D F T 之 前 , 先 概 述 四种 不 同 形式 的 傅 里 叶 变 换 对 . 一、四种不同傅里叶变换对傅 里 叶 级 数(FS):连 续 时 间 , 离 散 频 率 的 傅 里 叶 变 换 。连 续 傅 里 叶 变 换(FT):连 续 时 间 , 连 续 频 率 的 傅 里 叶 变 换 。序 列 的 傅 里 叶 变 换(DTFT):离 散 时 间 , 连 续 频 率 的 傅 里 叶 变 换.离 散 傅 里 叶 变 换(DFT):离 散 时 间 , 离 散 频 率 的 傅 里 叶 变 换1.傅 里 叶 级 数(FS)周期连续时间信号 非周期离散频谱密度函数。 周期为Tp的周期性连续时间函数 x(t) 可展成傅里叶级数X(jkΩ0) ,是离散非周期性频谱 , 表 示为:例子通过以下 变 换 对 可 以 看 出 时 域 的 连 续 函 数 造 成 频 域 是 非 周 期 的 频 谱 函 数 , 而 频 域 的 离 散 频 谱 就 与 时 域 的 周 期 时 间 函 数 对 应 . (频域采样,时域周期延 拓)2.连 续 傅 里 叶 变 换(FT)非周期连续时间信号通过连续付里叶变换(FT)得到非周期连续频谱密度函数。
上传时间: 2013-11-19
上传用户:fujiura
数据类型和运算符、表达式是是C51语言程序设计的最基础知识,C51语言把数据分成了多种数据类型,并提供了丰富的运算对数据进行处理。本章对C51语言的基本数据类型、常量变量、运算符及表达式等进行详细介绍。1.掌握数据类型的概念,了解C51语言能够处理的数据类型。2.掌握常量的概念,掌握各种类型常量的特点及表示形式。3.掌握变量的概念,了解int、float、char型变量的特点,掌握这三种类型变量的定义、赋值和使用方法。理解C51中变量的存储和编译模式的关系,掌握单片机片内资源的访问方法。4.了解C51语言的基本运算符及其特点,掌握运算符的优先级和结合性的概念。5.了解算术运算表达式、关系表达式及逻辑表达式的特点,熟练进行表达式计算,能熟练进行实际问题的表达式描述。6.熟悉自增、自减运算的特点,掌握赋值运算,了解逗号运算符和逗号表达式。7.掌握数据类型转换的概念,能进行基本的数据类型转换。
标签: C51
上传时间: 2013-12-26
上传用户:dingdingcandy
含原理图+电路图+程序的波形发生器:在工作中,我们常常会用到波形发生器,它是使用频度很高的电子仪器。现在的波形发生器都采用单片机来构成。单片机波形发生器是以单片机核心,配相应的外围电路和功能软件,能实现各种波形发生的应用系统,它由硬件部分和软件部分组成,硬件是系统的基础,软件则是在硬件的基础上,对其合理的调配和使用,从而完成波形发生的任务。 波形发生器的技术指标:(1) 波形类型:方型、正弦波、三角波、锯齿波;(2) 幅值电压:1V、2V、3V、4V、5V;(3) 频率值:10HZ、20HZ、50HZ、100HZ、200HZ、500HZ、1KHZ;(4) 输出极性:双极性操作设计1、 机器通电后,系统进行初始化,LED在面板上显示6个0,表示系统处于初始状态,等待用户输入设置命令,此时,无任何波形信号输出。2、 用户按下“F”、“V”、“W”,可以分别进入频率,幅值波形设置,使系统进入设置状态,相应的数码管显示“一”,此时,按其它键,无效;3、 在进入某一设置状态后,输入0~9等数字键,(数字键仅在设置状态时,有效)为欲输出的波形设置相应参数,LED将参数显示在面板上;4、 如果在设置中,要改变已设定的参数,可按下“CL”键,清除所有已设定参数,系统恢复初始状态,LED显示6个0,等待重新输入命令;5、 当必要的参数设定完毕后,所有参数显示于LED上,用户按下“EN”键,系统会将各波形参数传递到波形产生模块中,以便控制波形发生,实现不同频率,不同电压幅值,不同类型波形的输出;6、 用户按下“EN”键后,波形发生器开始输出满足参数的波形信号,面板上相应类型的运行指示灯闪烁,表示波形正在输出,LED显示波形类型编号,频率值、电压幅值等波形参数;7、 波形发生器在输出信号时,按下任意一个键,就停止波形信号输出,等待重新设置参数,设置过程如上所述,如果不改变参数,可按下“EN”键,继续输出原波形信号;8、 要停止波形发生器的使用,可按下复位按钮,将系统复位,然后关闭电源。硬件组成部分通过综合比较,决定选用获得广泛应用,性能价格高的常用芯片来构成硬件电路。单片机采用MCS-51系列的89C51(一块),74LS244和74LS373(各一块),反相驱动器 ULN2803A(一块),运算放大器 LM324(一块) 波形发生器的硬件电路由单片机、键盘显示器接口电路、波形转换(D/ A)电路和电源线路等四部分构成。1.单片机电路功能:形成扫描码,键值识别,键功能处理,完成参数设置;形成显示段码,向LED显示接口电路输出;产生定时中断;形成波形的数字编码,并输出到D/A接口电路;如电路原理图所示: 89C51的P0口和P2口作为扩展I/O口,与8255、0832、74LS373相连接,可寻址片外的寄存器。单片机寻址外设,采用存储器映像方式,外部接口芯片与内部存储器统一编址,89C51提供16根地址线P0(分时复用)和P2,P2口提供高8位地址线,P0口提供低8位地址线。P0口同时还要负责与8255,0832的数据传递。P2.7是8255的片选信号,P2.6是0832(1)的片选,P2.5是0832(2)的片选,低电平有效,P0.0、P0.1经过74LS373锁存后,送到8255的A1、A2作,片内A口,B口,C口,控制口等寄存器的字选。89C51的P1口的低4位连接4只发光三极管,作为波形类型指示灯,表示正在输出的波形是什么类型。单片机89C51内部有两个定时器/计数器,在波形发生器中使用T0作为中断源。不同的频率值对应不同的定时初值,定时器的溢出信号作为中断请求。控制定时器中断的特殊功能寄存器设置如下:定时控制寄存器TCON=(00010000)工作方式选择寄存器(TMOD)=(00000000)中断允许控制寄存器(IE)=(10000010)2、键盘显示器接口电路功能:驱动6位数码管动态显示; 提供响应界面; 扫面键盘; 提供输入按键。由并口芯片8255,锁存器74LS273,74LS244,反向驱动器ULN2803A,6位共阴极数码管(LED)和4×4行列式键盘组成。8255的C口作为键盘的I/O接口,C口的低4位输出到扫描码,高4位作为输入行状态,按键的分布如图所示。8255的A口作为LED段码输出口,与74LS244相连接,B口作为LED的位选信号输出口,与ULN2803A相连接。8255内部的4个寄存器地址分配如下:控制口:7FFFH , A口:7FFFCH , B口:7FFDH , C口:7FFEH 3、D/A电路功能:将波形样值的数字编码转换成模拟值;完成单极性向双极性的波形输出;构成由两片0832和一块LM324运放组成。0832(1)是参考电压提供者,单片机向0832(1)内的锁存器送数字编码,不同的编码会产生不同的输出值,在本发生器中,可输出1V、2V、3V、4V、5V等五个模拟值,这些值作为0832(2)的参考电压,使0832(2)输出波形信号时,其幅度是可调的。0832(2)用于产生各种波形信号,单片机在波形产生程序的控制下,生成波形样值编码,并送到0832(2)中的锁存器,经过D/A转换,得到波形的模拟样值点,假如N个点就构成波形的一个周期,那么0832(2)输出N个样值点后,样值点形成运动轨迹,就是波形信号的一个周期。重复输出N个点后,由此成第二个周期,第三个周期……。这样0832(2)就能连续的输出周期变化的波形信号。运放A1是直流放大器,运放A2是单极性电压放大器,运放A3是双极性驱动放大器,使波形信号能带得起负载。地址分配:0832(1):DFFFH ,0832(2):BFFFH4、电源电路:功能:为波形发生器提供直流能量;构成由变压器、整流硅堆,稳压块7805组成。220V的交流电,经过开关,保险管(1.5A/250V),到变压器降压,由220V降为10V,通过硅堆将交流电变成直流电,对于谐波,用4700μF的电解电容给予滤除。为保证直流电压稳定,使用7805进行稳压。最后,+5V电源配送到各用电负载。
上传时间: 2013-11-08
上传用户:685
单片机接口技术(C51版)课件:单片机接口技术(C51版)课件精品课程,该书由张道德根据多年单片机教学、科研经验编著,中国水利水电出版社2007年3月出版。 1.掌握数据类型的概念,了解C51语言能够处理的数据类型。2.掌握常量的概念,掌握各种类型常量的特点及表示形式。3.掌握变量的概念,了解int、float、char型变量的特点,掌握这三种类型变量的定义、赋值和使用方法。理解C51中变量的存储和编译模式的关系,掌握单片机片内资源的访问方法。4.了解C51语言的基本运算符及其特点,掌握运算符的优先级和结合性的概念。5.了解算术运算表达式、关系表达式及逻辑表达式的特点,熟练进行表达式计算,能熟练进行实际问题的表达式描述。6.熟悉自增、自减运算的特点,掌握赋值运算,了解逗号运算符和逗号表达式。7.掌握数据类型转换的概念,能进行基本的数据类型转换。
上传时间: 2013-10-10
上传用户:jcljkh
介绍用PIC16F84单片机制作的电子密码锁。PIC16F84单片机共18个引脚,13个可用I/O接口。芯片内有1K×14的FLASHROM程序存储器,36×8的静态RAM的通用寄存器,64×8的EEPROM的数据存储器,8级深度的硬堆栈。 用PIC单片机设计的电子密码锁微芯公司生产的PIC8位COMS单片机,采用类RISC指令集和哈弗总线结构,以及先进的流水线时序,与传统51单片机相比其在速度和性能方面更具优越性和先进性。PIC单片机的另一个优点是片上硬件资源丰富,集成常见的EPROM、DAC、PWM以及看门狗电路。这使得硬件电路的设计更加简单,节约设计成本,提高整机性能。因此PIC单片机已成为产品开发,尤其是产品设计和研制阶段的首选控制器。本文介绍用PIC16F84单片机制作的电子密码锁。PIC16F84单片机共18个引脚,13个可用I/O接口。芯片内有1K×14的FLASHROM程序存储器,36×8的静态RAM的通用寄存器,64×8的EEPROM的数据存储器,8级深度的硬堆栈。硬件设计 电路原理见图1。Xx8位数据线接4x4键盘矩阵电路,面板布局见表1,A、B、C、D为备用功能键。RA0、RA7输出4组编码二进制数据,经74LS139译码后输出逐行扫描信号,送RB4-RB7列信号输入端。余下半个139译码器动扬声器。RB2接中功率三极管基极,驱动继电器动作。有效密码长度为4位,根据实际情况,可通过修改源程序增加密码位数。产品初始密码为3345,这是一随机数,无特殊意义,目的是为防止被套解。用户可按*号键修改密码,按#号键结束。输入密码并按#号确认之后,脚输出RB2脚输出高电平,继电器闭合,执行一次开锁动作。 若用户输入的密码正确,扬声器发出一声稍长的“滴”提示声,若输入的密码与上次修改的不符,则发出短促的“滴”声。连续3次输入密码错误之后,程序锁死,扬声器报警。直到CPU被复位或从新上电。软件设计 软件流程图见图3。CPU上电或复位之后将最近一次修改并保存到EEPROM的密码读出,最为参照密匙。然后等待用户输入开锁密码。若5分钟以内没有接受到用户的任何输入,CPU自动转入掉电模式,用户输入任意值可唤醒CPU。每次修改密码之后,CPU将新的密码存入内部4个连续的EEPROM单元,掉电后该数据任有效。每执行一次开锁指令,CPU将当前输入密码与该值比较,看是否真确,并给出相应的提示和控制。布 局 所有元件均使用SMD表贴封装,缩小体积,便于产品安装,60X60双面PCB板,顶层是一体化输入键盘,底层是元件层。成型后的产品体积小巧,能很方便的嵌入防盗铁门、保险箱柜。
上传时间: 2013-10-31
上传用户:uuuuuuu
用单片机AT89C51改造普通双桶洗衣机:AT89C2051作为AT89C51的简化版虽然去掉了P0、P2等端口,使I/O口减少了,但是却增加了一个电压比较器,因此其功能在某些方面反而有所增强,如能用来处理模拟量、进行简单的模数转换等。本文利用这一功能设计了一个数字电容表,可测量容量小于2微法的电容器的容量,采用3位半数字显示,最大显示值为1999,读数单位统一采用毫微法(nf),量程分四档,读数分别乘以相应的倍率。电路工作原理 本数字电容表以电容器的充电规律作为测量依据,测试原理见图1。电源电路图。 压E+经电阻R给被测电容CX充电,CX两端原电压随充电时间的增加而上升。当充电时间t等于RC时间常数τ时,CX两端电压约为电源电压的63.2%,即0.632E+。数字电容表就是以该电压作为测试基准电压,测量电容器充电达到该电压的时间,便能知道电容器的容量。例如,设电阻R的阻值为1千欧,CX两端电压上升到0.632E+所需的时间为1毫秒,那么由公式τ=RC可知CX的容量为1微法。 测量电路如图2所示。A为AT89C2051内部构造的电压比较器,AT89C2051 图2 的P1.0和P1.1口除了作I/O口外,还有一个功能是作为电压比较器的输入端,P1.0为同相输入端,P1.1为反相输入端,电压比较器的比较结果存入P3.6口对应的寄存器,P3.6口在AT89C2051外部无引脚。电压比较器的基准电压设定为0.632E+,在CX两端电压从0升到0.632E+的过程中,P3.6口输出为0,当电池电压CX两端电压一旦超过0.632E+时,P3.6口输出变为1。以P3.6口的输出电平为依据,用AT89C2051内部的定时器T0对充电时间进行计数,再将计数结果显示出来即得出测量结果。整机电路见图3。电路由单片机电路、电容充电测量电路和数码显示电路等 图3 部分组成。AT89C2051内部的电压比较器和电阻R2-R7等组成测量电路,其中R2-R5为量程电阻,由波段开关S1选择使用,电压比较器的基准电压由5V电源电压经R6、RP1、R7分压后得到,调节RP1可调整基准电压。当P1.2口在程序的控制下输出高电平时,电容CX即开始充电。量程电阻R2-R5每档以10倍递减,故每档显示读数以10倍递增。由于单片机内部P1.2口的上拉电阻经实测约为200K,其输出电平不能作为充电电压用,故用R5兼作其上拉电阻,由于其它三个充电电阻和R5是串联关系,因此R2、R3、R4应由标准值减去1K,分别为999K、99K、9K。由于999K和1M相对误差较小,所以R2还是取1M。数码管DS1-DS4、电阻R8-R14等组成数码显示电路。本机采用动态扫描显示的方式,用软件对字形码译码。P3.0-P3.5、P3.7口作数码显示七段笔划字形码的输出,P1.3-P1.6口作四个数码管的动态扫描位驱动码输出。这里采用了共阴数码管,由于AT89C2051的P1.3-P1.6口有25mA的下拉电流能力,所以不用三极管就能驱动数码管。R8-R14为P3.0-P3.5、P3.7口的上拉电阻,用以驱动数码管的各字段,当P3的某一端口输出低电平时其对应的字段笔划不点亮,而当其输出高电平时,则对应的上拉电阻即能点亮相应的字段笔划。
上传时间: 2013-12-31
上传用户:ming529
用AT89C2051单片机制作的数字电容表:AT89C2051作为AT89C51的简化版虽然去掉了P0、P2等端口,使I/O口减少了,但是却增加了一个电压比较器,因此其功能在某些方面反而有所增强,如能用来处理模拟量、进行简单的模数转换等。本文利用这一功能设计了一个数字电容表,可测量容量小于2微法的电容器的容量,采用3位半数字显示,最大显示值为1999,读数单位统一采用毫微法(nf),量程分四档,读数分别乘以相应的倍率。
上传时间: 2013-11-19
上传用户:wuyuying
单片机音乐中音调和节拍的确定方法:调号-音乐上指用以确定乐曲主音高度的符号。很明显一个八度就有12个半音。A、B、C、D、E、F、G。经过声学家的研究,全世界都用这些字母来表示固定的音高。比如,A这个音,标准的音高为每秒钟振动440周。 升C调:1=#C,也就是降D调:1=BD;277(频率)升D调:1=#D,也就是降E调:1=BE;311升F调:1=#F,也就是降G调:1=BG;369升G调:1=#G,也就是降A调:1=BA;415升A调:1=#A,也就是降B调:1=BB。466,C 262 #C277 D 294 #D(bE)311 E 330 F 349 #F369 G 392 #G415A 440. #A466 B 494 所谓1=A,就是说,这首歌曲的“导”要唱得同A一样高,人们也把这首歌曲叫做A调歌曲,或叫“唱A调”。1=C,就是说,这首歌曲的“导”要唱得同C一样高,或者说“这歌曲唱C调”。同样是“导”,不同的调唱起来的高低是不一样的。各调的对应的标准频率为: 单片机演奏音乐时音调和节拍的确定方法 经常看到一些刚学单片机的朋友对单片机演奏音乐比较有兴趣,本人也曾是这样。在此,本人将就这方面的知识做一些简介,但愿能对单片机演奏音乐比较有兴趣而又不知其解的朋友能有所启迪。 一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。 在音乐中所谓“音调”,其实就是我们常说的“音高”。在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz。当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程, 在音乐中1(do)与 ,2(来)与 ……正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度音内,有12个半音。以1—i八音区为例, 12个半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。这12个音阶的分度基本上是以对数关系来划分的。如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。 知道了一个音符的频率后,怎样让单片机发出相应频率的声音呢?一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A为例: A的频率f = 440 Hz,其对应的周期为:T = 1/ f = 1/440 =2272μs 由上图可知,单片机上对应蜂鸣器的I/O口来回取反的时间应为:t = T/2 = 2272/2 = 1136μs这个时间t也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0,则定时器的予置初值由下式来确定: t = 12 *(TALL – THL)/ f0 式中TALL = 216 = 65536,THL为定时器待确定的计数初值。因此定时器的高低计数器的初值为: TH = THL / 256 = ( TALL – t* f0/12) / 256 TL = THL % 256 = ( TALL – t* f0/12) %256 将t=1136μs代入上面两式(注意:计算时应将时间和频率的单位换算一致),即可求出标准音高A在单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值为 : TH440Hz = (65536 – 1136 * 12/12) /256 = FBH TL440Hz = (65536 – 1136 * 12/12)%256 = 90H根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。 音符的节拍我们可以举例来说明。在一张乐谱中,我们经常会看到这样的表达式,如1=C 、1=G …… 等等,这里1=C,1=G表示乐谱的曲调,和我们前面所谈的音调有很大的关联, 、 就是用来表示节拍的。以 为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。比如: 其中1 、2 为一拍,3、4、5为一拍,6为一拍共三拍。1 、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5的时长为四分音符的一半,即为八分音符长,6的时长为四分音符长。那么一拍到底该唱多长呢?一般说来,如果乐曲没有特殊说明,一拍的时长大约为400—500ms 。我们以一拍的时长为400ms为例,则当以四分音符为节拍时,四分音符的时长就为400ms,八分音符的时长就为200ms,十六分音符的时长就为100ms。可见,在单片机上控制一个音符唱多长可采用循环延时的方法来实现。首先,我们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间,那么,对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符,则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。通过上面关于一个音符音调和节拍的确定方法,我们就可以在单片机上实现演奏音乐了。具体的实现方法为:将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数……,如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。下面给出部分音符(三个八度音)的频率以及以单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值 : C调音符 频率Hz 262 277 293 311 329 349 370 392 415 440 466 494TH/TL F88B F8F2 F95B F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FC0BC调音符 1 1# 2 2# 3 4 4# 5 5# 6 6# 7频率Hz 523 553 586 621 658 697 739 783 830 879 931 987TH/TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05C调音符 频率Hz 1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1971TH/TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02
上传时间: 2013-10-20
上传用户:哈哈haha