【四旋翼飞行器】76小时吃透四轴算法!史上最强软硬结合实战项目,👉戳此立抢👈

深入理解AMetal,掌握蜂鸣器和温度采集接口设计

周立功单片机 2018-01-17 08:29 次阅读

周立功教授新书《面向AMetal框架与接口的编程(上)》,对AMetal框架进行了详细介绍,通过阅读这本书,你可以学到高度复用的软件设计原则和面向接口编程的开发思想,聚焦自己的“核心域”,改变自己的编程思维,实现企业和个人的共同进步。

第八章为深入理解AMetal,本文内容为8.3 蜂鸣器接口和8.4 温度采集接口。

8.3 蜂鸣器接口

>>> 8.3.1 定义接口

1. 接口命名

由于操作的对象是蜂鸣器(buzzer),因此,接口命名以“am_buzzer_”作为前缀。对于蜂鸣器,基本的操作是打开和关闭蜂鸣器,可定义相应的两个接口名为:

  • am_buzzer_on

  • am_buzzer_off

特别地,在一些应用场合,还需要类似蜂鸣器“嘀一声”这样的操作,即鸣叫一定的时间后自动停止。可以定义其接口名为:

  • am_buzzer_beep

  • am_buzzer_beep_async

这里定义了两个接口,都是用于蜂鸣器鸣叫指定的时间,二者的区别在于函数返回的时机不同。am_buzzer_beep 会等待鸣叫结束后返回,am_buzzer_beep_async 不会等待,函数立即返回,蜂鸣器鸣叫指定时间后自动停止。

显然,对于am_buzzer_beep_async 接口,在最开始的蜂鸣器接口设计中,很可能是不会想到的,该接口是在大量实际应用中得出的,由于在一些特殊的应用场景,不希望程序被阻塞,因此,需要提供am_buzzer_beep_async 这样的异步接口。

2. 接口参数

在LED 通用接口的设计中,由于在一个系统中,可能存在多个LED,这就必须使用某种方法区分不同的LED,如使用了唯一ID 号led_id 表示来区分系统中的多个LED。按照这种逻辑,是否也需要一个buzzer_id 来区分不同的蜂鸣器呢?

蜂鸣器的功能单一,是一种发声器件,在一个具体应用中,发声器件往往只有一个,没有必要使用多个蜂鸣器。因此,蜂鸣器可以看做系统的一个单实例设备,基于此,也就无需使用类似于buzzer_id 这样的参数来区分多个蜂鸣器了,对于打开和关闭蜂鸣器的接口,则无需任何参数,即:

  • am_buzzer_on(void);

  • am_buzzer_off(void);

特别地,对于am_buzzer_beep 和am_buzzer_beep_async 接口,虽无需参数来区分多个蜂鸣器,但由于其功能是鸣叫一定的时间,因此,还需要一个用于指定鸣叫时长的参数。

  • am_buzzer_beep(uint32_t ms);

  • am_buzzer_beep_async (uint32_t ms);

其中,ms 用于指定鸣叫时长,单位为毫秒。

3. 返回值

接口无特殊说明,直接将所有接口的返回值定义为int 类型的标准错误号。基于此,蜂鸣器控制接口的完整定义详见表8.5。

表8.5 蜂鸣器通用接口(am_buzzer.h)

其对应的类图详见图8.8。

图8.8 蜂鸣器接口类图

>>> 8.3.2 实现接口

1. 抽象的蜂鸣器设备类

蜂鸣器共计4 个通用接口,其中,am_buzzer_beep()和am_buzzer_beep_async()接口可以直接基于am_buzzer_on()和am_buzzer_off()接口实现,am_buzzer_beep()的实现详见程序清单8.24。

程序清单8.24 am_buzzer_beep()的实现

程序中,首先使用am_buzzer_on()打开蜂鸣器,若打开蜂鸣器失败(返回值为负数),则直接返回相应的错误号,若打开成功,则使用am_mdelay()延时指定的时间,最后关闭蜂鸣器。对于am_buzzer_beep_async()接口,其需要立即返回,不能在函数内部直接使用延时函数,可以基于软件定时器实现,范例程序详见程序清单8.25。

程序清单8.25 am_buzzer_beep_async()的范例程序

程序中,首先使用am_buzzer_on()打开蜂鸣器,若打开蜂鸣器失败(返回值为负数),则直接返回相应的错误号,若打开成功,则启动软件定时器,定时时间为指定的鸣叫时间,启动定时器后,函数立即返回。软件定时器定时时间到后,需要调用自定义回调函数__beep_timer_callback(),在回调函数中,关闭了软件定时器和蜂鸣器,鸣叫结束。

显然,软件定时器在使用前,需要初始化,以将__beep_timer_callback()函数作为其定时时间到后的回调函数,如:

初始化语句放在哪里呢?这里仅仅展示了使用软件定时器实现am_buzzer_beep_async()函数的范例,后文再介绍初始化软件定时器的合适时机。

由于am_buzzer_beep()和am_buzzer_beep_async()接口可以直接基于am_buzzer_on()和am_buzzer_off()实现,因此实现蜂鸣器接口的核心是实现am_buzzer_on()和am_buzzer_off()接口,按照LED 或HC595 的设计方法,可以抽象对应的两个方法。即:

虽然按照这种设计方法是完全可行的,但是考虑到on 和off 是一组相互对称的接口,功能是同属一类的,具有很大的相似性,因此,可以仅抽象一个方法,使用一个布尔类型的参数区分操作是打开还是关闭,比如:

可见,定义抽象方法并不一定是原封不动的按照接口定义抽象方法,可以作适当的调整,只要基于抽象方法,能够实现通用接口即可。

虽然只有一个抽象方法,但是为了保证结构的统一,也为了方便后续扩展(如新增抽象方法等),往往还是将抽象方法放到一个虚函数表中。即:

类似地,将抽象方法和p_cookie 定义在一起,即为抽象的蜂鸣器设备。如:

在前面实现am_buzzer_beep_async()接口时,使用到了软件定时器,显然,软件定时器是用于实现一个蜂鸣器鸣叫功能的,是与蜂鸣器设备相关的,其不应定义为全局变量,取而代之的是,直接定义在抽象设备结构体中,即:

抽象设备中定义的抽象方法需要由具体的蜂鸣器设备来完成,am_buzzer_on()和am_buzzer_off()接口则可以直接基于抽象方法实现。

在定义蜂鸣器接口时,由于蜂鸣器是单实例设备(系统中只有一个),因此没有在接口中定义区分蜂鸣器对象的参数,如ID 号或者句柄参数等,那么,在实现接口时,如何找到相应的设备呢?由于在系统中只有一个蜂鸣器设备,因此,可以直接使用一个全局变量来指向蜂鸣器设备,am_buzzer_on()和am_buzzer_off()的实现详见程序清单8.26。

程序清单8.26 am_buzzer_on 和am_buzzer_off ()的范例程序

其中,__gp_buzzer_dev 是指向蜂鸣器设备的指针,初始没有任何有效的蜂鸣器设备,因此初始值为NULL。显然,要正常使用蜂鸣器,就必须使__gp_buzzer_dev 指向有效的蜂鸣器设备,这就需要由具体蜂鸣器设备实现pfn_buzzer_set 抽象方法。

为了完成__gp_buzzer_dev 的赋值,需要定义一个设备注册接口,用于向系统中注册一个有效蜂鸣器设备:

其中,为了方便向系统中添加一个蜂鸣器设备时,避免直接操作蜂鸣器设备的各个成员,将需要赋值的成员通过参数传递给接口函数。其实现详见程序清单8.27。

程序清单8.27 向系统中添加蜂鸣器设备

该程序首先判定参数的有效性,然后完成了抽象设备中抽象方法和p_cookie 赋值,接着给全局变量__gp_buzzer_dev 的赋值,使其指向有效的蜂鸣器设备,最后,初始化了抽象设备中的软件定时器,便于实现异步的蜂鸣器鸣叫接口,由此可见,软件定时器的初始化操作是在添加一个蜂鸣器设备时完成的。

显然,接下来,就需要基于抽象的蜂鸣器设备派生具体的蜂鸣器设备,在具体的蜂鸣器设备中,完成抽象方法pfn_buzzer_set 的实现,并使用am_buzzer_dev_register()接口向系统中添加一个蜂鸣器设备,使得用户可以使用蜂鸣器通用接口操作到具体有效的蜂鸣器。

为了便于查阅,如程序清单8.28 所示展示了蜂鸣器设备接口文件(am_buzzer_dev.h)的内容。其对应的类图详见图8.9。

程序清单8.28 am_buzzer_dev.h 文件内容

图8.9 抽象的蜂鸣器设备类

2. 具体的蜂鸣器设备类

以使用PWM 输出控制蜂鸣器发声为例,简述具体蜂鸣器设备的实现方法。首先应该基于抽象设备类派生一个具体的设备类,其类图详见图8.10,可直接定义具体的蜂鸣器设备类,如:

图8.10 具体的蜂鸣器设备类

am_buzzer_pwm_dev_t 即为具体的蜂鸣器设备类。具有该类型后,即可使用该类型定义一个具体的蜂鸣器设备实例,即:

特别地,由于蜂鸣器是单实例设备,不能够使用该类型定义多个实例,因此,可以直接在具体设备实现的文件内部定义一个蜂鸣器设备实例,无需用户使用该类型自定义设备实例。基于此,am_buzzer_pwm_dev_t 类型无需开放给用户,可以直接定义在.c 文件中,由于am_buzzer_pwm_dev_t 类型无需开放给用户,仅内部使用,因此可以修改类型名为双下划线“__”开头,如在am_buzzer_pwm.c 文件中定义设备类型以及对应的设备实例如下:

在使用PWM 输出控制蜂鸣器时,需要知道PWM 的句柄,通道号等相关信息,这些信息需要保存在设备中,因此更新设备类型的定义如下:

显然,这些成员需要初始化后才能使用,定义初始化函数的原型为:

其中,pwm_handle 为标准的PWM 服务句柄,chan 为PWM 通道号,duty_ns 和period_ns分别指定了输出PWM 波形的脉宽和周期,决定了蜂鸣器鸣叫的响度和频率,比如,AM824-Core 板载的蜂鸣器。

若使用SCT 输出PWM,由于PIO0_24 对应SCT 的通道1,因此初始话函数的调用形式如下:

程序中,使用了am_lpc82x_sct0_pwm_inst_init()函数获取到了PWM 句柄,使用了通道1,并设定输出PWM 的周期为400000ns,即 2.5KHz (1000000000 / 400000),脉宽恰好为周期的一半,即输出PWM 的占空比为50%。初始化函数的实现范例详见程序清单8.29。

程序清单8.29 初始化函数实现范例

该程序首先判定了参数的有效性,然后完成了设备实例中相关成员的赋值,接着调用了am_buzzer_dev_register()函数,将蜂鸣器设备添加到系统中,最后配置了PWM 输出通道的脉宽和周期。添加设备时,将p_funcs 赋值为&__g_buzzer_pwm_drv_funcs,p_cookie 赋值为具体设备的地址,即p_cookie 指向了设备自身。__g_buzzer_pwm_drv_funcs 中包含了抽象方法的具体实现,完整定义详见程序清单8.30。

程序清单8.30 抽象方法的实现

为了便于查阅,如程序清单8.31 所示展示了蜂鸣器设备接口文件(am_buzzer_pwm.h)的内容。

程序清单8.31 am_buzzer_pwm.h 文件内容

由此可见,与其它具体设备的接口文件(详见程序清单8.14、程序清单8.17 和程序清单8.23)相比,不同的是,其没有包含具体设备类型的定义,初始化接口的第一个参数,也不是指向具体设备的指针。这是由于蜂鸣器是单实例设备,系统中最多只能定义一个,因此直接在实现文件的内部完成了设备实例的定义,相关类型无需开放给用户。同理,由于是单实例设备,初始化函数初始化的必然是文件内部定义的设备实例,无需额外使用指向设备的指针指定要初始化的设备。

至此,详细介绍了LED 通用接口、HC595 接口和蜂鸣器接口,它们代表了AMetal 中典型的3 种类型的设备接口。

  • LED 通用接口:使用唯一ID 区分不同设备;

  • HC595 接口:使用句柄区分不同的设备,句柄本质上是指向设备的指针;

  • 蜂鸣器接口:不使用任何参数区分不同设备,是一种单实例设备。

8.4 温度采集接口

>>> 8.4.1 定义接口

1. 接口命名

由于操作的对象是温度(temperature),为了缩短接口名,将temperature 缩写为temp,因此,接口命名以“am_temp_”作为前缀。对于温度采集,主要的操作就是读取当前温度。可定义接口名为:

  • am_temp_read

2. 接口参数

显然,一个系统中可能存在多个温度传感器,可以简单的使用句柄来区分不同的温度传感器,因此第一个参数的类型定义为温度传感器句柄,和HC595 设备类似,其应该定义为指向抽象温度设备的指针,假定抽象温度设备的类型为am_temp_dev_t,则handle 的类型可以定义为:

读取温度接口的核心功能是返回当前的温度值,首先需要定义温度值的类型,然后再确定温度值的返回方式:通过返回值返回或通过出口参数返回。

通常使用1 位小数表示温度值,比如,37.5℃,由此可见,温度值需要使用小数表示,但要求的精度并不高,往往只会精确到小数点后一位,因此温度值可以使用float 类型表示。

由于AMetal 运行的实际硬件平台往往是以低端的Cortex-M0、Cortex-M0+和Cortex-M3等作为内核的芯片,这些芯片没有硬件浮点运算单元,浮点运算的效率很低。因此,AMetal平台中,不建议使用浮点类型,据此,可以使用整数表示温度值,同时,为了保证一定的精度,使用整数表示扩大1000 倍后的温度值。如实际温度为37.5 度,则使用整数37500 表示。使用这种方法巧妙的避免了使用浮点类型,但也能保证实际温度的精度为小数点后三位。由于温度可能存在负值,因此,使用有符号的32 位数据来表示温度值,即温度值的类型定义为int32_t。

在通用接口中,返回值往往定义为int 类型的错误号,且使用负数表示出错,显然,如果使用返回值直接返回温度,用户将无法区分温度为负数和读取温度出错的情况。为此,使用一个输出参数,用以返回温度值,即定义一个int32_t 类型的指针作为输出参数:

  • am_temp_read(am_temp_handle_t handle, int32_t *p_temp)

其中,handle 为温度传感器的句柄,p_temp 为输出参数,用于返回当前的温度值,其表示的温度值为实际温度值的1000 倍。

3. 返回值

接口无特殊说明,直接将所有接口的返回值定义为int 类型的标准错误号。基于此,完整的读取温度接口的原型为:

其对应的类图详见图8.11。

图8.11 温度采集接口

>>> 8.4.2 实现接口

1. 抽象的温度采集设备类

根据读取温度接口,可以定义相应的抽象方法,并将其存放在一个虚函数表中:

类似地,将抽象方法和p_cookie 定义在一起,即为抽象的温度采集设备。比如:

显然,具体的温度采集设备直接从抽象的温度采集设备派生,然后由具体的温度采集设备根据实际的硬件,实现读取温度的抽象方法。

在读取温度接口中,使用了handle 作为第一个参数,其本质上是指向设备的指针,读取温度接口可以直接调用抽象方法实现,详见程序清单8.32。

程序清单8.32 读取温度接口实现

在接口实现中,没有与硬件相关的实现代码,仅仅是简单的调用了抽象方法。抽象方法需要由具体的温度采集设备来实现。类似地,由于读取温度接口的实现非常简单,往往将其实现直接以内联函数的形式存放在.h 文件中。

为便于查阅,如程序清单8.33 所示展示了抽象温度采集设备接口文件(am_temp.h)的内容,其包含了抽象温度采集设备相关的抽象方法定义、类型定义和接口实现,对应的类图详见图8.12。

图8.12 抽象的温度采集设备类

程序清单8.33 am_temp.h 文件内容

2. 具体的温度采集设备类

以使用LM75B 温度传感器实现温度采集为例,简述具体温度采集设备的实现方法。首先应该基于抽象设备类派生一个具体的设备类,其类图详见图8.13,可直接定义具体的温度采集设备类。比如:

图8.13 具体的温度采集设备类

am_temp_lm75_t 为具体的温度采集设备类,具有该类型后,即可使用该类型定义一个具体的温度采集设备实例:

LM75B 是标准的I2C 从机器件,需要知道LM75B 的从机地址,才能使用I2C 总线读取LM75B 中的温度数据。由于从机地址与LM75 外部引脚电平相关,因此LM75 的地址信息需要由用户根据实际硬件电路设置。将需要由用户提供的设备相关信息存放到一个新的设备信息结构体类型中。比如:

当使用AM824-Core 上板载的LM75B 时,LM75B 的7 位I2C 从机地址为1001A2A1A0,由于A0、A1、A2 均与地连接为低电平,因此可得板载LM75B 的7 位从机地址为1001000,即:0x48。基于此,板载LM75B 对应的设备实例信息可以定义如下:

同理,在设备类中需要维持一个指向设备信息的指针。此外,由于使用I2C 接口从LM75B中读取温度数据时,LM75B 相当于是一个I2C 从设备,为了使用I2C 接口与之通信,需要为LM75B 定义一个与之对应的I2C 从设备,新增两个成员,完整的温度采集设备定义即为:

显然,在使用I2C 接口从LM75B 中读取温度之前,需要完成设备中各成员的赋值,这些工作通常在驱动的初始化函数中完成,定义初始化函数的原型为:

  • p_lm75 为指向am_temp_lm75_t 类型实例的指针;

  • p_devinfo 为指向am_temp_lm75_info_t 类型实例信息的指针。

handle 为I2C 句柄,便于使用I2C 接口读取温度数据,初始化函数的返回值即为温度采集设备句柄,其调用形式如下:

返回值即为温度采集设备的句柄,可以作为温度采集接口的第一个参数(handle)的实参,初始化函数的实现范例详见程序清单8.34。

程序清单8.34 初始化函数实现范例

该程序首先建立了标准的I2C 从设备,便于后续使用I2C 接口读取数据,然后初始化了p_info 成员,接着完成了抽象温度采集设备中p_funcs 和p_cookie 的赋值,最后返回设备地址作为用户操作温度采集设备的句柄。pfuncs 赋值为了&__g_temp_lm75_drv_funcs,其中包含了读取温度抽象方法的具体实现,完整定义详见程序清单8.35。

程序清单8.35 抽象方法的实现

在读取温度的实现函数__temp_lm75_read()中,首先使用I2C 接口从LM75B 中读取出当前的实际温度值,详见程序清单8.35(6);接着对数据进行简单处理,两字节数据整合为一个16 位有符号的温度值temp,详见程序清单8.35(10 ~ 11);最后,确认p_temp 指针有效后,将temp 乘以125,再除以32,最终的结果作为输出的温度值。

为什么将temp 乘以125,然后再除以32 呢?这是因为LM75B 中直接读取的数据时实际温度值的256倍,即:实际温度= temp / 256。

而温度采集接口需要返回的温度值是实际温度的1000 倍,即:

* p _ temp=实际温度*1000 = temp/ 256*1000 = temp*1000/ 256

化简可得:

为了便于查阅,如程序清单8.36 所示展示了具体温度采集设备(LM75B)接口文件(am_temp_lm75.h)的内容。

程序清单8.36 am_temp_lm75.h 文件内容

原文标题:周立功:深入理解AMetal——蜂鸣器接口和温度采集接口

文章出处:【微信号:Zlgmcu7890,微信公众号:周立功单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

家居环境辐射量无线检测仪的设计设计资料说明

家居辐射无线检测仪由辐射监测子系统、数据处理子系统、无线传送子系统、监控中心子系统、报警子系统组成,....
发表于 01-17 17:24 25次 阅读
家居环境辐射量无线检测仪的设计设计资料说明

verilog教程之分频计数实验的资料说明

这个实验可以说是verilog入门最基础的实验了,我们不做太多的理论分析,实践是硬道理。蜂鸣器与CP....
发表于 01-14 08:00 18次 阅读
verilog教程之分频计数实验的资料说明

如何有效编程单片机有源蜂鸣器驱动

蜂鸣器是很常见的设备,分为无源和有源两种。根据项目需求选择不同类型的蜂鸣器。
的头像 玩转单片机 发表于 01-11 15:04 1309次 阅读
如何有效编程单片机有源蜂鸣器驱动

AT89C52单片机对蜂鸣器的设计

该电路较简单,用PNP型三极管驱动蜂鸣器,当P3.7为低电平时,PN结正向偏置,三极管导通,蜂鸣器发....
发表于 01-10 15:28 105次 阅读
AT89C52单片机对蜂鸣器的设计

采用QT+OpenGL ES方案进行开发硬件平台

从特斯拉Model S问世,到最近的小鹏汽车G3的上市,在新能源汽车、智能互联网高速发展的背景下,越....
的头像 周立功单片机 发表于 01-08 13:43 1562次 阅读
采用QT+OpenGL ES方案进行开发硬件平台

如何使用单片机设计音乐盒的介绍和电路图及程序等资料说明

本设计是一个基于STC89C516单片机的音乐盒,该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣....
发表于 01-07 08:00 82次 阅读
如何使用单片机设计音乐盒的介绍和电路图及程序等资料说明

请教这两个蜂鸣器电路有什么区别?

发表于 01-03 14:56 112次 阅读
请教这两个蜂鸣器电路有什么区别?

IoT如何点亮生活,周立功的智能家居和汽车方案到底有何惊喜?

在2018年12月20日的深圳国际电子展上,周立功全面的展示阿里云网关和蓝牙MESH等方案,阐述 I....
发表于 01-02 10:50 1258次 阅读
IoT如何点亮生活,周立功的智能家居和汽车方案到底有何惊喜?

蜂鸣器在仿真的时候出现“在激活模式的错误Failed to intilze auio drive”是什么原因呢?

请问,蜂鸣器在仿真的时候出现“在激活模式的错误Failed to intilze auio drive”是什么原因呢?需要怎么改正呢?...
发表于 12-27 15:04 396次 阅读
蜂鸣器在仿真的时候出现“在激活模式的错误Failed to intilze auio drive”是什么原因呢?

HS2SA型独立式光电感烟火灾探测报警器的数据和使用手册免费下载

HS2SA型独立式光电感烟火灾探测报警器(以下简称报警器),是一款家用型光电感烟火灾报警器,能够探测....
发表于 12-27 08:00 98次 阅读
HS2SA型独立式光电感烟火灾探测报警器的数据和使用手册免费下载

用51蜂鸣器做音乐播放器

#include "reg52.h" #include typedef unsigned int u16;          //对数据类型进行声明...
发表于 12-24 14:03 119次 阅读
用51蜂鸣器做音乐播放器

求解9013驱动有源蜂鸣器的问题

如图所示:5V供电,用程序控制,测了蜂鸣器两端的电压4.8v,但是就是不响,如果把5V直接加在蜂鸣器两端就会响。求大神找找问题...
发表于 12-21 17:22 547次 阅读
求解9013驱动有源蜂鸣器的问题

请问怎么把闹钟蜂鸣器的短响换成下面的音乐,我弄的老是会有中断冲突,求救啊

#include #include"DS18B20.h" #include"DS1302.h" #include"LCD1602.h" #include"BUTTON.h" //定时...
发表于 12-20 13:32 108次 阅读
请问怎么把闹钟蜂鸣器的短响换成下面的音乐,我弄的老是会有中断冲突,求救啊

怎么把闹钟的蜂鸣器短响换成音乐代码

uchar code tale[]={ 0x0F,0x67, 0x19,0x03, 0x18,0x03, 0x17,0x02, 0x17,0x03,          &nb...
发表于 12-19 21:48 114次 阅读
怎么把闹钟的蜂鸣器短响换成音乐代码

请问怎么把闹钟的蜂鸣器短响换成下面的音乐代码

/**************闹钟程序: 将暂停键按下停止蜂鸣********************/             ...
发表于 12-19 21:45 98次 阅读
请问怎么把闹钟的蜂鸣器短响换成下面的音乐代码

单片机驱动蜂鸣器产生警报声的设计

//实验目的: //熟悉使用单片机驱动蜂鸣器产生警报声 //**************....
发表于 12-18 15:14 296次 阅读
单片机驱动蜂鸣器产生警报声的设计

使用51单片机设计的电子时钟程序资料免费下载

51单片机源代码,keil工程文件,电子时钟,可设置定时报时,整点报时,蜂鸣器报警等
发表于 12-17 08:00 97次 阅读
使用51单片机设计的电子时钟程序资料免费下载

使用C51单片机进行演奏生日快乐音乐程序的详细资料免费下载

本文档的主要内容详细介绍的是如何使用C51单片机进行演奏生日快乐音乐程序的详细资料免费下载,利用中级....
发表于 12-17 08:00 229次 阅读
使用C51单片机进行演奏生日快乐音乐程序的详细资料免费下载

5V有源蜂鸣器,一般的话蜂鸣器的额定电流多大?

如图 请问一下 此蜂鸣器为普通的5V有源蜂鸣器,一般的话蜂鸣器的额定电流多大?  该选择多大的电阻才能使蜂鸣器正常工...
发表于 12-16 15:57 150次 阅读
5V有源蜂鸣器,一般的话蜂鸣器的额定电流多大?

压电蜂鸣器20736?

嗨,我想连接一个村田压电蜂鸣器上的20736个SoC 但我正在使用 3通道驱动发光二极管 W 帽子是我的选择吗? 我可以用哪根针...
发表于 12-13 14:57 90次 阅读
压电蜂鸣器20736?

单片机有源蜂鸣器驱动之效率编程

蜂鸣器是很常见的设备,分为无源和有源两种。根据项目需求选择不同类型的蜂鸣器。最近的项目里有用到有源蜂....
的头像 单片机精讲吴鉴鹰 发表于 12-10 16:40 600次 阅读
单片机有源蜂鸣器驱动之效率编程

三极管驱动有源蜂鸣器

供电电压为5V,仿真后,测了蜂鸣器两端的电压4.8v,但是蜂鸣器并不能发出声音,但若直接加5V到蜂鸣器两端就能响。求大神们看下...
发表于 12-10 15:47 276次 阅读
三极管驱动有源蜂鸣器

隔离收发器的UL与CE认证需要测试什么项目?

ZLG隔离收发器通过美国UL、欧盟CE认证,打造世界级可靠性性隔离收发器,适用于各类工业CAN、RS....
的头像 人间烟火123 发表于 12-05 16:48 2540次 阅读
隔离收发器的UL与CE认证需要测试什么项目?

首发:周立功教授《嵌入式软件工程方法与实践丛书》在北航正式出版开售

11月24日,由周立功教授主导撰写的《嵌入式软件工程方法与实践丛书》前三本,共计200万字,在全国嵌....
的头像 人间烟火123 发表于 11-28 16:41 3269次 阅读
首发:周立功教授《嵌入式软件工程方法与实践丛书》在北航正式出版开售

基于RFID射频卡的超市购物结算系统项目开发

使用RF卡标识超市商品,用户进入超市后使用手机扫描超市购物车上的二维码(二维码和车上的RF卡绑定在一....
发表于 11-24 09:09 260次 阅读
基于RFID射频卡的超市购物结算系统项目开发

RTC时钟偶发性延时和超前现象解决方案

在非常温的工作环境下,RTC时钟出现偶发性的延时或者超时现象,成熟的RTC电路设计看似简单,但如何保....
的头像 人间烟火123 发表于 11-21 14:57 2959次 阅读
RTC时钟偶发性延时和超前现象解决方案

双11快递“次日送达”背后的无线技术

我国作为全球第二大经济体,是全球第一制造业大国,带动物流市场呈供需两旺态势。目前我国社会物流总费用超....
的头像 人间烟火123 发表于 11-21 14:36 3569次 阅读
双11快递“次日送达”背后的无线技术

如何用三极管驱动蜂鸣器

NPN型三极管,由三块半导体构成,其中两块N型和一块P型半导体组成,P型半导体在中间,两块N型半导体....
的头像 电子发烧友网 发表于 11-19 09:08 1551次 阅读
如何用三极管驱动蜂鸣器

单片机开发教程之蜂鸣器的详细资料介绍

电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过....
发表于 11-12 14:34 167次 阅读
单片机开发教程之蜂鸣器的详细资料介绍

周立功与全球知名电商京东通力合作共同布局工业物联网线上分销

业界领先的国内嵌入式系统领导品牌周立功宣布与全球知名电商京东JD.COM合作,开设周立功旗舰店。周立....
的头像 电子发烧友网工程师 发表于 11-09 09:44 573次 阅读
周立功与全球知名电商京东通力合作共同布局工业物联网线上分销

如何同时使用两个定时器控制蜂鸣器发声详细单片机程序免费下载

本文档的主要内容详细介绍的是如何同时使用两个定时器控制蜂鸣器发声嵌套运用的详细单片机程序免费下载。
发表于 11-05 08:00 123次 阅读
如何同时使用两个定时器控制蜂鸣器发声详细单片机程序免费下载

NE555和继电器及无源蜂鸣器的仿真电路和资料免费下载

本文档的主要内容详细介绍的是NE555和继电器及无源蜂鸣器的仿真电路资料免费下载。
发表于 11-02 08:00 294次 阅读
NE555和继电器及无源蜂鸣器的仿真电路和资料免费下载

如何判断蜂鸣器是有源还是无源

其一下拉电阻,如果R17输入端悬空,R18的存在能够使三极管可保持可靠的关断状态,如果没有R18,....
的头像 电源研发精英圈 发表于 10-04 09:57 2395次 阅读
如何判断蜂鸣器是有源还是无源

基于MCU单片机在蜂鸣器系统中的应用设计

我们都知道一般的定时器为16位或8位循环计数,例如对于16位的计数器当计数器数值从0增加到65535....
发表于 09-30 15:30 387次 阅读
基于MCU单片机在蜂鸣器系统中的应用设计

电阻,电容,晶体管,蜂鸣器,电感,桥堆,晶振,继电器电子元件资料介绍

本文档的主要内容详细介绍的是电阻,电容,晶体管,蜂鸣器,电感,桥堆,晶振,继电器电子元件资料介绍。
发表于 09-25 08:00 398次 阅读
电阻,电容,晶体管,蜂鸣器,电感,桥堆,晶振,继电器电子元件资料介绍

单片机MCU基础知识,初学者必看

1.MCU有串口外设的话,在加上电平转换芯片,如MAX232,SP3485就是RS232和RS485....
发表于 09-22 09:00 474次 阅读
单片机MCU基础知识,初学者必看

DBS32A开发板硬件介绍和实验的详细使用手册资料免费下载

本文档的主要内容详细介绍的是DBS32A开发板硬件介绍和实验的详细使用手册资料免费下载硬件介绍,实验....
发表于 09-20 15:20 92次 阅读
DBS32A开发板硬件介绍和实验的详细使用手册资料免费下载

LM75B 具有 I2C 接口的 ±2°C 工业标准温度传感器

LM75B和LM75C是行业标准的数字温度传感器,带有集成的Sigma-Delta模数转换器和I 2 C界面。 LM75提供9位数字温度读数,精度为±25°C至-25°C至100°C,±3°C至-55°C至125°C。 通讯是通过2线接口实现,工作频率高达400kHz。 LM75有三个地址引脚,允许多达八个LM75器件在同一条2线总线上工作。 LM75具有专用的超温输出(O.S.),具有可编程限制和迟滞。该输出具有可编程容错功能,允许用户定义在O.S之前必须发生的连续错误条件的数量。被激活了。 宽温度和电源范围以及I 2 C接口使LM75成为许多应用的理想选择,包括基站,电子测试设备,办公电​​子产品,个人电脑和任何应用热管理对性能至关重要的其他系统。 LM75B和LM75C采用SOIC封装或VSSOP封装。 特性 无需外部元件 关闭模式以最大限度地降低功耗 最多八个LM75可以连接到单个总线 上电默认值允许作为恒温器的独立操作 UL认可组件(LM75B和LM75C) 主要规格: ...
发表于 09-17 16:03 100次 阅读
LM75B 具有 I2C 接口的 ±2°C 工业标准温度传感器

蜂鸣器播放音乐C语言程序免费下载

本文档的作用内容详细介绍的是蜂鸣器播放音乐C语音程序免费下载(包含了播放生日快乐歌曲的详细设计资料)
发表于 09-13 15:26 156次 阅读
蜂鸣器播放音乐C语言程序免费下载

电子闹钟diy 从此不再被吵醒而是被吓醒

把电子钟的蜂鸣器换成汽车喇叭,不解释了 为什么要用无线模块,这闹钟你肯定不可能放在床头 应该放在远一....
的头像 39度创意研究所 发表于 09-12 11:27 2264次 阅读
电子闹钟diy 从此不再被吵醒而是被吓醒

NB-IoT在智慧城市中的发挥了什么作用

经过2017年“物联网元年”的爆发,目前物联网技术已经渗透各行各业,比如生产制造、交通物流、健康医疗....
的头像 人间烟火123 发表于 09-05 17:03 2626次 阅读
NB-IoT在智慧城市中的发挥了什么作用

水位报警器怎么做

本文主要介绍了水位报警器的两种制作方法及步骤。步骤:首先,将磁控开关的一端连到电池盒的红色导线,另一....
的头像 发烧友学院 发表于 09-02 10:07 1795次 阅读
水位报警器怎么做

HT47R20A-1蜂鸣器的功能及程序介绍

HT47R20A-1 单片机提供了一对与PA0 及PA1 共用引脚的蜂鸣器输出,分别是BZ 及BZ.....
的头像 电子设计 发表于 08-31 09:48 930次 阅读
HT47R20A-1蜂鸣器的功能及程序介绍

如何实现可演奏简易电子琴及自动播放音乐器的详细资料免费下载

本文档的主要内容详细介绍的是如何实现可演奏简易电子琴及自动播放音乐器的详细资料免费下载。使用无源蜂鸣....
发表于 08-30 08:00 209次 阅读
如何实现可演奏简易电子琴及自动播放音乐器的详细资料免费下载

CANDT一致性测试系统发布 保障CAN总线安全

CAN总线已经成为新能源汽车、军工、航空等行业的主控系统应用总线,ZLG致远电子致力于构建CAN总线....
的头像 ZLG致远电子 发表于 08-29 09:54 1677次 阅读
CANDT一致性测试系统发布 保障CAN总线安全

LoRa模块和Sub-G模块在无线传输中选择考量

当无线数据的传输越来越广泛,我们仿佛才意识到无线传输的技术真真切切的就在我们的身边。本文简单介绍两种....
的头像 ZLG致远电子 发表于 08-10 09:36 4695次 阅读
LoRa模块和Sub-G模块在无线传输中选择考量

ZLG致远电子发布了三款全新一代测量测试设备

ZLG致远电子高级产品经理刘玉才在“功率变换单元的研发测试技术”的技术分享中,提出功率变换单元的测试....
的头像 电子技术应用ChinaAET 发表于 08-09 09:20 1471次 阅读
ZLG致远电子发布了三款全新一代测量测试设备

如何进行CAN通信设备的批量老化测试

老化测试是产品生产中必不可少的环节,对于CAN通信设备如何进行批量高效的老化测试呢?本文将从成本及方....
的头像 人间烟火123 发表于 08-08 15:19 1784次 阅读
如何进行CAN通信设备的批量老化测试

500M示波器中颠覆性实现以太网分析功能

周立功教授领导的国内一流仪器开发团队,经过十几年如一日的技术攻关和创新,又一次在500M示波器中颠覆....
的头像 ZLG致远电子 发表于 08-08 10:14 2475次 阅读
500M示波器中颠覆性实现以太网分析功能

VK1622 32x8的LCD驱动器详细资料免费下载

VK1621B 是128模式(32x4),内存映射和多功能液晶驱动程序。S / W的VK1621配置....
发表于 08-08 08:00 137次 阅读
VK1622 32x8的LCD驱动器详细资料免费下载

蜂鸣器音乐程序与最简单蜂鸣器电路图之FPGA学习课程

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子....
发表于 08-07 10:35 1252次 阅读
蜂鸣器音乐程序与最简单蜂鸣器电路图之FPGA学习课程

如何针对微带线拐角进行详细仿真

微带线拐角是微带线不连续结构之一,一些有经验的工程师甚至某些大型通信公司的工艺规范用所谓的经验告诉你....
的头像 ZLG致远电子 发表于 08-06 09:11 4896次 阅读
如何针对微带线拐角进行详细仿真

数据采集记录仪如何准确测试温度?

使用热电偶测量温度最常见的测温方法,但是由于热电偶冷端温度不为0℃,直接测量往往会造成较大误差。ZL....
的头像 ZLG致远电子 发表于 08-02 11:03 1870次 阅读
数据采集记录仪如何准确测试温度?

NFC核心板为例讲述基于AWorks平台开发的具体方法

ZLG致远电子推出了一系列“MCU+无线”核心板,本文以NFC核心板为例讲述基于AWorks平台开发....
的头像 周立功单片机 发表于 08-01 10:23 2160次 阅读
NFC核心板为例讲述基于AWorks平台开发的具体方法

关注MVB通信内容以及稳定性为何十分必要

MVB技术广泛应用于现代城市轨道交通车辆通信,对维护车辆通信效益具有直接影响。本文围绕MVB技术展开....
的头像 ZLG致远电子 发表于 07-30 09:05 2329次 阅读
关注MVB通信内容以及稳定性为何十分必要

从接口定义和实现两个方面,深入理解AWbus-lite

在使用AWBus-lite对设备进行管理时,无论设备处于 AWBus-lite拓扑结构中的哪个位置,....
的头像 周立功单片机 发表于 07-23 09:08 2519次 阅读
从接口定义和实现两个方面,深入理解AWbus-lite

如何使用光敏电阻设计光控声音系统的详细资料概述

本次实验主要让大家学会如何使用一些特殊的电阻,接上了光敏电阻后,在没有光照时,正常发出声音,但声音特....
发表于 07-23 08:00 198次 阅读
如何使用光敏电阻设计光控声音系统的详细资料概述

如何使用蜂鸣器让电路发出声音设计的详细资料概述

用Arduino 可以完成的互动作品有很多,最常见也最常用的就是声光展示了,前面一直都是在用LED ....
发表于 07-23 08:00 219次 阅读
如何使用蜂鸣器让电路发出声音设计的详细资料概述

通过连接蜂鸣器到Arduino数字输出引脚配合程序设计报警器的方式概述

在这个项目中,我们将做一个报警器,通过连接蜂鸣器到Arduino数字输出引脚,并配合相应的程序就可以....
发表于 07-23 08:00 181次 阅读
通过连接蜂鸣器到Arduino数字输出引脚配合程序设计报警器的方式概述

如何使用蜂鸣器、电阻和按钮制作一个音乐键盘乐器的详细资料概述

将使用蜂鸣器、电阻和按钮,制作一个小型的音乐键盘 蜂鸣器的震动频率不同,会发出不同的声音。
发表于 07-23 08:00 170次 阅读
如何使用蜂鸣器、电阻和按钮制作一个音乐键盘乐器的详细资料概述

如何使用蜂鸣器和LM35温度传感器设计温度报警器的详细资料概述

这次我们要做一个更实际的应用——温度报警器。当温度到达我们设定的限定值时,报警器就会响。我们可以用于....
发表于 07-23 08:00 243次 阅读
如何使用蜂鸣器和LM35温度传感器设计温度报警器的详细资料概述