怎样在应用程序中得到声音不同频率的电平值?

newyearday 2000-07-24 06:31:00
用什么样的api函数?有相应的控件吗?
...全文
214 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
voiceview 2001-05-03
  • 打赏
  • 举报
回复
我也极想得到这方面的资料。有热心人士帮忙吗?
我想使用软件技术让聋哑人恢复语言能力。
先要得到带通滤波算法,再得到语音处理方面的知识。
聋哑终结者WEB http://lmxinnet.163.net
有意义,也有经济前途哟。
newyearday 2001-04-29
  • 打赏
  • 举报
回复
smdd,你能给我一份c的缘程序吗?,关于小波转换有这方面的资料吗?
smdd 2001-02-23
  • 打赏
  • 举报
回复
有大量的Fortran,C源程序。
其实算法简单,自己写一个就可以了。不过对于短时FFT,还有一个加窗的问题。
得看你要求到什么样的精度了。如果FFT不能达到要求,还有小波变换作为选择。
newyearday 2001-01-31
  • 打赏
  • 举报
回复
有vb的源程序,或者是ocx控件马?
shines77 2000-08-13
  • 打赏
  • 举报
回复
关注。
dolphin 2000-08-12
  • 打赏
  • 举报
回复
需要一系列的数学变换与滤波算法,如:
快速傅里叶变换(FFT)
α-β-γ滤波
带通滤波等算法。
本人认为最有用、最易读的参考书是徐士良编著的QBASIC常用算法程序集
(清华大学出版社,ISBN 7-302-02662-9)
如果您不愿意或没时间深入研究算法,情与我联系(frankqin@263.net)
本人有使用Delphi 编写的控件程序,可以使您的程序看起来
象高级音响的分频器控制面板。(控件程序价格人民币268元,源程序另议)。
Areslee 2000-08-01
  • 打赏
  • 举报
回复
我也想知道。aresljc@163.net
基于单片机的数字抢答器设计 摘 要:数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参 赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分 组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时 功能,构成扩展电路。 引言:单片机的发展史单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。 1.SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。2.MCU 即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各 种外围电路与接口电路,突显其对象的智能化控制能力。3.单片机是嵌入式系统的独立 发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此 ,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展 ,基于SoC的单片机应用系统设计会有较大的发展。 硬件电路设计 总体设计 根据抢答器的基本功能,可以设计出如下的单片机外围电路: 图3-1 总体设计 如图3-1,P3.0为开始抢答,P3.2为停止,P1.0- P1.7为八路抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器(用绿灯代替)输出为 P3.6口。P3.2为时间加1调整,P3.3为时间减1调整。 3.2 外部振荡电路 图3-2 外部振荡电路 一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产 生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路两个 电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型 为30PF。 3.3 复位电路的设计 单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位 ,复位后单片机的各状态都恢复到初始化状态,其电路图如图4所示: 图3-3 复位电路 在方案使用到了硬件复位和软件复位两种功能,由上面的硬件复位可使寄存器及存 储器的都恢复到初始,而前面的功能提到了倒计时间需要有记忆功能,该功能实现的 前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当 程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。 3.1.1 显示电路的设计 显示电路使用了七段数码管7SEG-MPX4-CC,它是共阴极的,由高电平点亮。 图3-4 阴极七段数码管 3.1.2 按钮输入电路的设计 抢答器的输入按钮使用常开开关, 图3-5 抢答按键 这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序 消除在按键过程产生的"毛刺"现象就可以了。这里采用最常用的方法即延时法,其 的原理为:因为"毛刺"脉冲一般持续时间短,约为几ms,而按键的时间一般远远大于这 个时间,所以当单片机检测到有按键动静后再延时一段时间(这里取10ms)后再判断此电平 是否保持原状态,如果是则为有效按键,否则无效。 3.1.3 发声 这里能利用程序来控制单片机P3.6口线反复输出高电平或低电平,即在该口线上产生 一定频率的矩形波,接上扬声器就能发出一定频率声音,再利用延时程序控制"高""低 "电平的持续时间,就能改变输出频率,从而改变音调,使扬声器发出不同声音。 第四章 系统软件设计 4.1 抢答器流程图 流程图是使用图形表示算法的思路是一种极好的方法,不论采用何种程序设计方法, 程序总体结构确定后,一般以程序流程图的形式对其进行描述。总体框图的各个子模 块或各个子任务也应该结合具体的教学模型和算法画出较详细的程序流程图,供后面编 写具体程序和阅读程序使用。 流程图是由一些图框和流程线组成的,其图框表示各种操作的类型,图框的文字 和符号表示操作的内容,流程线表示操作的先后次序。流程图的基本结构为顺序结构, 分支结构(又称选择结构),循环结构。为便于识别,绘制流程图的习惯做法是: 方框表示:要执行的处理(Process) 平行四边型表示:代表资料输入(Input) 不规则图形代表资料输出(Output)或报表输出(Print) 菱形表示:决策或判断(例如:If...Then...Else) 图4-1-1抢答器主程序流程图 图4-1-2 抢答器定时器断流程图 图4-1-3 外部断程序图 4.2 主程序 我们组所设计的抢答器的程序采用的是C程序设计,C语言的显著特点是用二进制来编 写程序,程序的各个部分除了必要的信息交流外彼此之间相互独立。这种结构化方式可使 程序层次清晰, 便于使用、维护以及调试。C语
用AT89C51单片机实现流水灯的控制设计 1.引言   目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。 学习单片机的最有效方法就是理论与实践并重,本文笔者用AT89C51单片机自制了一款简 易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单 片机领域的优秀人才。      2.硬件组成      按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗 系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计 数器、5个向量两级断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和 0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是 一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电 源等电路和必要的软件组成的单个单片机。其具体硬件组成如图1所示。 从原理图可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变 为低电平就可以了;相反, 如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1 .7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将 发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我 们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们 在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到"流水"效果了。      3.软件编程      单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还 不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序 控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应 用系统的一个重要的组成部分,是单片机学习的重点和难点。下面我们以最简单的流 水灯控制功能即实现8个LED灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法 。      3.1位控法      这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每 一个位输出高低电平,从而来控制相应LED灯的亮灭。程序如下:      ORG 0000H ;单片机上电后从0000H地址执行   AJMP START ;跳转到主程序存放地址处   ORG 0030H ;设置主程序开始地址   START:MOV SP,#60H ;设置堆栈起始地址为60H   CLR P1.0 ;P1.0输出低电平,使LED1点亮   ACALL DELAY ;调用延时子程序   SETB  P1.0 ;P1.0输出高电平,使LED1熄灭   CLR   P1.1 ;P1.1输出低电平,使LED2点亮   ACALL DELAY ;调用延时子程序   SETB  P1.1 ;P1.1输出高电平,使LED2熄灭   CLR   P1.2 ;P1.2输出低电平,使LED3点亮   ACALL DELAY ;调用延时子程序   SETB  P1.2   ;P1.2输出高电平,使LED3熄灭   CLR   P1.3 ;P1.3输出低电平,使LED4点亮   ACALL DELAY ;调用延时子程序   SETB  P1.3 ;P1.3输出高电平,使LED4熄灭   CLR   P1.4 ;P1.4输出低电平,使LED5点亮   ACALL DELAY ;调用延时子程序   SETB  P1.4 ;P1.4输出高电平,使LED5熄灭   CLR   P1.5 ;P1.5输出低电平,使LED6点亮   ACALL DELAY ;调用延时子程序   SETB  P1.5 ;P1.5输出高电平,使LED6熄灭   CLR   P1.6 ;P1.6输出低电平,使LED7点亮   ACALL DELAY ;调用延时子程序   SETB  P1.6 ;P1.6输出高电平,使LED7熄灭   CLR   P1.7 ;P1.7输出低电平,使LED8点亮   ACALL DELAY ;调用延时子程序   SETB  P1.7 ;P1.7输出高电平,使LED8熄灭   ACALL DELAY ;调用延时子程序   AJMP  START ;8个LED流了一遍后返回到标号START处再循环   DELAY:  ;延时子程序   MOV R0,#255  ;延时一段时间   D1: MOV R1,#255   DJNZ R1,$   DJNZ R0,

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧