虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

延时<b>函数</b>

  • 8051单片机C语言软件设计的艺术

    第1章:介绍如何输出方波信号,使喇叭发出声音的方法,包括发出“哗”声的函数和分别传递一个、二个及三个白变量的“哗”声函数,以及利用定时器产生方波信号而令喇叭发出“哗”声,并叙述音阶与频率的关系,以此作为演奏音乐的基础。第2章:演奏音乐的程序由main()函数开始,将其所有函数定义在·个main.c的模块内,并分别以各种指令结构来循序渐进地介绍软件构建的思维与解决方法。第3章:以模块化的设计方式将单独的个main.c模块细分为main.c模块、initial.c模块、delay.c模块、music.c模块以及其对应的包括文件,可以使种序易于了解,节省开发时间。而且,用范例来说明各种应用方法,以使读者建立.整体思维,并进行有效的学习。第4章:详细介绍如何利用定时器钓中断方法来产生音阶的频率,并山1/)输出此方波信号而驱动喇叭发出正确的音阶。当连续产生各音符的音调频率时,则形成演奏音乐,并渐进式地说明什么样的设计方法是最好的。第5章:音符的形成有两个要素:音调及音长,当音调以定时器中断方法来生,音长是否也可以由定时器来产生呢?本章介绍如何利用timerO及timer]两个定时器中断方法来演奏音乐,并特别说明当音长计时中断时间太短时所造成的影响以及解决的方法。第6章:说明音乐中“移调”的概念,分别以查表法和计算法来举例说明D大调、降E大调、F大调、G大调、降A大调、降B大调。并以TACT开关的按键动作来阐述移调的功能,而以外部中断的方法来达到音乐演奏中实时移调的功能。第7章:介绍如何以按键开关来选曲,以“哗”声和LED闪烁方式作为选曲的提示动作,并以下列技巧来说明按键的处理方法:开关持续按着的重复动作、开关持续按着也动作一次、消除按键弹跳波的程序规划、持续按键以延时方式来继续执行动作,及持续按键以定时器计时方式来继续执行动作。同时,通过此方式来培养读者软件设计的能力并使读者养成慎密的思维方式。第8章:以9个按键开关分别代表1~9首的按键选曲,并介绍如何以l/O的方式、SCAN的方式以及ADC的方式来检测按键动作,以及当微电脑1/0不敷使用时的解决方法。更多相关内容已全部上传:8051单片机彻底研究-基础篇:http://dl.21ic.com/download/8051-330965.html 8051单片机彻底研究-经验篇:http://dl.21ic.com/download/8051-330966.html 8051单片机彻底研究-入门篇:http://dl.21ic.com/download/8051-330967.html 8051单片机彻底研究-实习篇:http://dl.21ic.com/download/8051-330969.html 8051单片机C语言软件设计的艺术:http://dl.21ic.com/download/8051-330970.html 

    标签: 8051 单片机 C语言

    上传时间: 2022-06-25

    上传用户:

  • FPGA技术在全数字化超声诊断仪中的应用研究

    数字超声诊断设备在临床诊断中应用十分广泛,研制全数字化的医疗仪器已成为趋势。尽管很多超声成像仪器设计制造中使用了数字化技术,但是我们可以说现代VLSI 和EDA 技术在其中并没有得到充分有效的应用。随着现代电子信息技术的发展,PLD 在很多与B 型超声成像或多普勒超声成像有关的领域都得到了较好的应用,例如数字通信和相控雷达领域。 在研究现代超声成像原理的基础上,我们首先介绍了常见的数字超声成像仪器的基本结构和模块功能,同时也介绍了现代FPGA 和EDA 技术。随后我们详细分析讨论了B 超中,全数字化波束合成器的关键技术和实现手段。我们设计实现了片内高速异步FIFO 以降低采样率,仿真结果表明资源使用合理且访问时间很小。正交检波方法既能给出灰度超声成像所需要的回波的幅值信息,也能给出多普勒超声成像所需要的回波的相移信息。我们设计实现了基于直接数字频率合成原理的数控振荡器,能够给出一对幅值和相位较平衡的正交信号,且在FPGA 片内实现方案简单廉价。数控振荡器输出波形的频率可动态控制且精度较高,对于随着超声在人体组织深度上的穿透衰减,导致回波中心频率下移的声学物理现象,可视作将回波接收机的中心频率同步动态变化进行补偿。 还设计实现了B 型数字超声诊断仪前端发射波束聚焦和扫描控制子系统。在单片FPGA 芯片内部设计实现了聚焦延时、脉宽和重复频率可动态控制的发射驱动脉冲产生器、线扫控制、探头激励控制、功能码存储等功能模块,功能仿真和时序分析结果表明该子系统为设计实现高速度、高精度、高集成度的全数字化超声诊断设备打下了良好的基础,将加快其研发和制造进程,为生物医学电子、医疗设备和超声诊断等方面带来新思路。

    标签: FPGA 全数字 中的应用 超声诊断仪

    上传时间: 2013-06-18

    上传用户:hfmm633

  • 基于FPGA的多路E1反向复用传输芯片的设计与实现

    随着电信数据传输对速率和带宽的要求变得越来越迫切,原有建成的网络是基于话音传输业务的网络,已不能适应当前的需求.而建设新的宽带网络需要相当大的投资且建设工期长,无法满足特定客户对高速数据传输的近期需求.反向复用技术是把一个单一的高速数据流在发送端拆散并放在两个或者多个低速数据链路上进行传输,在接收端再还原为高速数据流.该文提出一种基于FPGA的多路E1反向复用传输芯片的设计方案,使用四个E1构成高速数据的透明传输通道,支持E1线路间最大相对延迟64ms,通过链路容量调整机制,可以动态添加或删除某条E1链路,实现灵活、高效的利用现有网络实现视频、数据等高速数据的传输,能够节省带宽资源,降低成本,满足客户的需求.系统分为发送和接收两部分.发送电路实现四路E1的成帧操作,数据拆分采用线路循环与帧间插相结合的方法,A路插满一帧(30时隙)后,转入B路E1间插数据,依此类推,循环间插所有的数据.接收电路进行HDB3解码,帧同步定位(子帧同步和复帧同步),线路延迟判断,FIFO和SDRAM实现多路数据的对齐,最后按照约定的高速数据流的帧格式输出数据.整个数字电路采用Verilog硬件描述语言设计,通过前仿真和后仿真的验证.以30万门的FPGA器件作为硬件实现,经过综合和布线,特别是写约束和增量布线手动调整电路的布局,降低关键路径延时,最终满足设计要求.

    标签: FPGA 多路 传输 片的设计

    上传时间: 2013-07-16

    上传用户:asdkin

  • 全数字化超声诊断仪中的应用研究

    数字超声诊断设备在临床诊断中应用十分广泛,研制全数字化的医疗仪器已成为趋势。尽管很多超声成像仪器设计制造中使用了数字化技术,但是我们可以说现代VLSI 和EDA 技术在其中并没有得到充分有效的应用。随着现代电子信息技术的发展,PLD 在很多与B 型超声成像或多普勒超声成像有关的领域都得到了较好的应用,例如数字通信和相控雷达领域。 在研究现代超声成像原理的基础上,我们首先介绍了常见的数字超声成像仪器的基本结构和模块功能,同时也介绍了现代FPGA 和EDA 技术。随后我们详细分析讨论了B 超中,全数字化波束合成器的关键技术和实现手段。我们设计实现了片内高速异步FIFO 以降低采样率,仿真结果表明资源使用合理且访问时间很小。正交检波方法既能给出灰度超声成像所需要的回波的幅值信息,也能给出多普勒超声成像所需要的回波的相移信息。我们设计实现了基于直接数字频率合成原理的数控振荡器,能够给出一对幅值和相位较平衡的正交信号,且在FPGA 片内实现方案简单廉价。数控振荡器输出波形的频率可动态控制且精度较高,对于随着超声在人体组织深度上的穿透衰减,导致回波中心频率下移的声学物理现象,可视作将回波接收机的中心频率同步动态变化进行补偿。 还设计实现了B 型数字超声诊断仪前端发射波束聚焦和扫描控制子系统。在单片FPGA 芯片内部设计实现了聚焦延时、脉宽和重复频率可动态控制的发射驱动脉冲产生器、线扫控制、探头激励控制、功能码存储等功能模块,功能仿真和时序分析结果表明该子系统为设计实现高速度、高精度、高集成度的全数字化超声诊断设备打下了良好的基础,将加快其研发和制造进程,为生物医学电子、医疗设备和超声诊断等方面带来新思路。

    标签: 全数字 中的应用 超声诊断仪

    上传时间: 2013-05-30

    上传用户:tonyshao

  • Arduino学习笔记A10_Arduino数码管骰子实验

    电路连接 由于数码管品种多样,还有共阴共阳的,下面我们使用一个数码管段码生成器(在文章结尾) 去解决不同数码管的问题: 本例作者利用手头现有的一位不知品牌的共阳数码管:型号D5611 A/B,在Eagle 找了一个 类似的型号SA56-11,引脚功能一样可以直接代换。所以下面电路图使用SA56-11 做引脚说明。 注意: 1. 将数码管的a~g 段,分别接到Arduino 的D0~D6 上面。如果你手上的数码管未知的话,可以通过通电测量它哪个引脚对应哪个字段,然后找出a~g 即可。 2. 分清共阴还是共阳。共阴的话,接220Ω电阻到电源负极;共阳的话,接220Ω电阻到电源+5v。 3. 220Ω电阻视数码管实际工作亮度与手头现有原件而定,不一定需要准确。 4. 按下按钮即停。   源代码 由于我是按照段码生成器默认接法接的,所以不用修改段码生成器了,直接在段码生成器选择共阳极,再按“自动”生成数组就搞定。   下面是源代码,由于偷懒不用写循环,使用了部分AVR 语句。 PORTD 这个是AVR 的端口输出控制语句,8 位对应D7~D0,PORTD=00001001 就是D3 和D0 是高电平。 PORTD = a;就是找出相应的段码输出到D7~D0。 DDRD 这个是AVR 语句中控制引脚作为输出/输入的语句。DDRD = 0xFF;就是D0~D7 全部 作为输出脚了。 ARDUINO CODECOPY /* Arduino 单数码管骰子 Ansifa 2011-12-28 */ //定义段码表,表中十个元素由LED 段码生成器生成,选择了共阳极。 inta[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; voidsetup() { DDRD = 0xFF; //AVR 定义PortD 的低七位全部用作输出使用。即0xFF=B11111111对 应D7~D0 pinMode(12, INPUT); //D12用来做骰子暂停的开关 } voidloop() { for(int i = 0; i < 10; i++) { //将段码输出PortD 的低7位,即Arduino 的引脚D0~D6,这样需要取出PORTD 最高位,即 D7的状态,与段码相加,之后再输出。 PORTD = a[i]; delay(50); //延时50ms while(digitalRead(12)) {} //如果D12引脚高电平,则在此死循环,暂停LED 跑 动 } }      

    标签: Arduino 10 数码管 实验

    上传时间: 2013-10-15

    上传用户:baitouyu

  • AVR常用库函数介绍

    目录: 1. Character Type Functions - 字符类型函数 2. Standard C Input/Output Functions - 标准输入输出函数 3. Standard Library Functions - 标准库和内存分配函数 4. Mathematical Functions - 数学函数 5. String Functions - 字符串函数 6. BCD Conversion Functions - BCD 转换函数 7. Memory Access Functions - 存储器访问函数 8. Delay Functions - 延时函数 9. LCD Functions - LCD函数 10. LCD Functions for displays with 4x40 characters - 4×40 字符型LCD函数 11. LCD Functions for displays connected in 8 bit memory mapped mode -以8 位外部存储 器模式接口的LCD显示函数 12. I2C Bus Functions - I2C 总线函数 13. National Semiconductor LM75 Temperature Sensor Functions - LM75 温度传感器函数 14. Dallas Semiconductor DS1621 Thermometer/Thermostat Functions - DS1621 温度计函 数 15. Philips PCF8563 Real Time Clock Functions - PCF8563 实时时钟函数 16. Philips PCF8583 Real Time Clock Functions - PCF8583 实时时钟函数 17. Dallas Semiconductor DS1302 Real Time Clock Functions - DS1302 实时时钟函数 18. Dallas Semiconductor DS1307 Real Time Clock Functions - DS1307 实时时钟函数 19. 1 Wire Protocol Functions - 单线通讯协议函数 20. Dallas Semiconductor DS1820/DS1822 Temperature Sensors Functions - DS1820/1822 温度传感器函数 21. SPI Functions - SPI 函数 22. Power Management Functions - 电源管理函数 23. Gray Code Conversion Functions - 格雷码转换函数

    标签: AVR 库函数

    上传时间: 2013-10-22

    上传用户:归海惜雪

  • PIC 单片机的组成习题解答

    PIC 单片机的组成习题解答 解答部分1. PIC 单片机指令的执行过程遵循着一种全新哈佛总线体系结构的原则,充分利用了计算机系统在程序存储器和数据存储器之间地址空间的相互独立性,取指过程和执行指令过程可以流水线操作同时进行。因此,当PIC 时钟频率为4MHZ时,执行一条非转移类指令需要4 个系统时钟周期,即1us,但其指令执行的真实时间应为2us(在执行n—1 条指令时取第n 条指令,然后执行第n 条指令)。所以选项B 正确2. 端口RE 共有3 个引脚RE0~RE2,它们除了用做普通I/O 引脚和第5~7 路模拟信号输入引脚外,还依次分别承担并行口读出/写入/片选控制端引脚。A. 对。读出/写入(REO~RE1)。B.错。同步串行的相关引脚与端口C 有关。C.错。通用异步/同步串行的相关引脚与端口C有关。D. 错。CCP模块的相关引脚也是与端口C有关。所以选项A正确。3. 上电延时电路能提供一个固定的72ms 上电延时,从而使VDD有足够的时间上繁荣昌盛到单片机合适的工作电压。所以选项B 正确。

    标签: PIC 单片机

    上传时间: 2013-11-09

    上传用户:glxcl

  • 微机灯光控制系统

    一、实验目的1.掌握定时/计数器、输入/输出接口电路设计方法。    2.掌握中断控制编程技术的方法和应用。3.掌握8086汇编语言程序设计方法。 二、实验内容与要求 微机灯光控制系统主要用于娱乐场所的彩灯控制。系统的彩灯共有12组,在实验时用12个发光二极管模拟。1. 基本要求:灯光控制共有8种模式,如12个灯依次点亮;12个灯同时闪烁等八种。系统可以通过键盘和显示屏的人机对话,将8种模式进行任意个数、任意次序的连接组合。系统不断重复执行输入的模式组合,直至键盘有任意一个键按下,退出灯光控制系统,返回DOS系统。2. 提高要求:音乐彩灯控制系统,根据音乐的变化控制彩灯的变化,主要有以下几种:第一种为音乐节奏控制彩灯,按音乐的节拍变换彩灯花样。第二种音律的强弱(信号幅度大小)控制彩灯。强音时,灯的亮度加大,且被点亮的数目增多。第三种按音调高低(信号频率高低)控制彩灯。低音时,某一部分灯点亮;高音时,另一部分点亮。 三、实验报告要求 1.设计目的和内容 2.总体设计 3.硬件设计:原理图(接线图)及简要说明 4.软件设计框图及程序清单5.设计结果和体会(包括遇到的问题及解决的方法) 四、设计原理我们以背景霓虹灯的一种显示效果为例,介绍控制霓虹灯显示的基本原理。设有一排 n 段水平排列的霓虹灯,某种显示方式为从左到右每0.2 秒逐个点亮。其控制过程如下: 若以“ 1 ”代表霓虹灯点亮,以“ 0 ”代表霓虹灯熄灭,则开始时刻, n 段霓虹灯的控制信号均为“ 0 ”,随后,控制器将一帧 n 个数据送至 n 段霓虹灯的控制端,其中,最左边的一段霓虹灯对应的控制数据为“ 1 ”,其余的数据均为零,即 1000 … 000 。当 n 个数据送完以后,控制器停止送数,保留这种状态(定时) 0.2 秒,此时,第 1 段霓虹灯被点亮,其余霓虹灯熄灭。随后,控制器又在极短的时间内将数据 1100 … 000 送至霓虹灯的控制端,并定时 0.2 秒,这段时间,前两段霓虹灯被点亮。由于送数据的过程很快,我们观测到的效果是第一段霓虹灯被点亮 0.2 秒后,第 2 段霓虹灯接着被点亮,即每隔 0.2 秒显示一帧图样。如此下去,最后控制器将数据 1111 … 111 送至 n 段霓虹灯的控制端,则 n 段霓虹灯被全部点亮。 只要改变送至每段霓虹灯的数据,即可改变霓虹灯的显示方式,显然,我们可以通过合理地组合数据(编程)来得到霓虹灯的不同显示方式。 五、总体方案论证分析系统设计思路如下:1) 采集8位开关输入信号,若输入数据为0时,将其修改为1。确定输入的硬件接口电路。采样输入开关量,并存入NUM的软件程序段。2) 以12个灯依次点亮为例(即灯光控制模式M1),考虑与其相应的灯光显示代码数据。确定显示代码数据输出的接口电路。输出一个同期显示代码的软件程序段(暂不考虑时隙的延时要求)。3) 应用定时中断服务和NUM数据,实现t=N×50ms的方法。4) 实现某一种模式灯光显示控制中12个时隙一个周期,共重复四次的控制方法。要求在初始化时采样开关输入数据NUM,并以此控制每一时隙的延时时间;在每一时隙结束时,检查有无键按下,若是退出键按下,则结束灯光控制,返回DOS系统,若是其他键就返回主菜单,重新输入控制模式数据。5) 通过人机对话,输入8种灯光显示控制模式的任意个数、任意次序连接组合的控制模式数据串(以ENTER键结尾)。对输入的数据进行检查,若数据都在1 - 8之间,则存入INBUF;若有错误,则通过屏幕显示输入错误,准备重新输入灯光显示控制模式数据。6) 依次读取INBUF中的控制模式数据进行不同模式的灯光显示控制,在没有任意键按下的情况下,系统从第一个控制模式数据开始,顺序工作到最后一个控制模式数据后,又返回到第一个控制模式数据,不断重复循环进行灯光显示控制。7) 本系统的软件在总体上有两部份,即主程序(MAIN)和实时中断服务程序(INTT)。讨论以功能明确、相互界面分割清晰的软件程序模块化设计方法。即确定有关功能模块,并画出以功能模块表示的主程序(MAIN)流程框图和定时中断服务程序的流程框图。    六、硬件电路设计   以微机实验平台和PC机资源为硬件设计的基础,不需要外加电路。主要利用了以下的资源:1.8255并行口电路8255并行口电路主要负责数据的输入与输出,可以输出数据控制发光二极管的亮灭和读取乒乓开关的数据。实验时可以将8255的A口、B口和一组发光二极管相连,C口和乒乓开关相连。2.8253定时/计数器8253定时/计数器和8259中断控制器一起实现时隙定时。本设计的定时就是采用的t=N×50ms的方法,50ms由8253定时/计数器的计数器0控制定时,N是在中断服务程序中软件计时。8253的OUT0接到IRQ2,产生中断请求信号。8253定时/计数器定时结束会发出中断信号,进入中断服务程序。3.PC机资源本设计除了利用PC机作为控制器之外,还利用了PC机的键盘和显示器。键盘主要是输入控制模式数据,显示器就是显示提示信息。   七、软件设计   软件主要分为主程序(MAIN)和中断服务程序(INTT),主程序包含系统初始化、读取乒乓开关、读取控制模式数据以及按键处理等模块。中断服务程序主要是定时时间到后根据控制模式数据点亮相应的发光二极管。1.主程序主程序的程序流程图如图1所示。

    标签: 微机 灯光控制

    上传时间: 2014-04-05

    上传用户:q986086481

  • 单片机音乐中音调和节拍的确定方法

    单片机音乐中音调和节拍的确定方法:调号-音乐上指用以确定乐曲主音高度的符号。很明显一个八度就有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

  • 低能耗和低时延的无线传感器网络数据融合算法

    针对无线传感器网络的节点能量有限,且在进行信息传输时存在数据冲突、传输延时等问题,提出并设计了基于最大生存周期的无线传感器网络数据融合算法。该算法将整个网络中的节点分成多个簇,并根据节点的传输范围,将每个簇中的节点均匀分布,每个节点根据自己的本地信息和剩余能量选择通信方式向簇头节点传输数据,从而形成传输数据的最短路径;并根据集中式TDMA(时分多址)调度模型,运用基于微粒群的Pareto优化方法,使得网络在完成规定的信息传输时每个节点耗费的平均时隙和平均能耗最优。仿真结果表明,上述算法不但可以最大化网络的生存时间,还可以有效的降低数据融合时间,减少网络延时。

    标签: 低能耗 时延 无线传感器 网络数据

    上传时间: 2014-12-29

    上传用户:看到了没有