历史上的今天
返回首页

历史上的今天

今天是:2025年07月13日(星期日)

正在发生

2019年07月13日 | AVRWARE++开发笔记5:蜂鸣器驱动实验

2019-07-13 来源:eefocus

        本文只针对于初学者,高手请绕过!


    1、实验目的

    利用单片机的IO口,控制蜂鸣器,学会蜂鸣器的控制方法。 


    2、实验内容

    编写一段程序,使蜂鸣器以1秒为间隔鸣叫。


    3、硬件原理

    蜂鸣器硬件原理图如下图所示,使用排线与端子P1相连,则单片机相应端口的第4引脚即与端子P1的BEEP引脚相连接(例如,使用排线将P10端子与P1端子相连接,则PD4引脚则连接到了BEEP引脚上,在这里需要注意的是,端口从0起排,而端子从1起排,不要混淆)。BEEP通过基级电阻R11控制三级管Q1的通断,由于Q1(8550)为PNP三极管,则BEEP给低电平的时候,Q1导通,给蜂鸣器供电,蜂鸣器鸣叫;BEEP给高电平的时候,Q1截止,蜂鸣器停止鸣叫。

图片  


    4、实验参考程序及注解

    更改映射层1_AbstractionLayer_HAL.h文件    

//PortD

#define IO_PD_DIR  0b00010000        //此处指明第4引脚为输出

                                          //该处为二进制表示方式,最低位为0

#define IO_PD_OUT  0b00010000        //此处指明第4引脚默认初始状态为高电平,也就是说在上电时,

                                          //BEEP引脚给高电平,三极管不导通,蜂鸣器不鸣叫

                                          //该处为二进制表示方式,最低位为0

////////////////////////////////////////////////////////////////////////////////////

#define BEEP BIT4                      //BEEP与端口的第4引脚相连接

//功能宏定义

#define BEEP_OPEN CLRBIT(PORTD,BEEP)    //蜂鸣器打开,将端口D的第4引脚(PD4)置低电平

#define BEEP_SHUT SETBIT(PORTD,BEEP)    //蜂鸣器关闭,将端口D的第4引脚(PD4)置高电平


    更改逻辑层0_logiclayer_main.c文件 

//主程序

int main(void)

{

    //目标板初始化,该函数会自动初始化相应的外设文件

    TARGET_Init();

    //后台主循环

    while(1)

    {

        //在这里完成自己的项目逻辑

BEEP_OPEN;

TARGET_Delayms(1000,1);

BEEP_SHUT;

TARGET_Delayms(1000,1);

//喂狗语句,大部分的工程项目都不应该去除

#if WDT_MODE!=0

    TARGET_WatchDogReset();

#endif

    }

    return 0; //永不执行

}


    5、注解

     a、IO_PD_DIR

    IO_PD_DIR是系统预定义好的功能宏,表示端口引脚的方向,可以用一个8位的二进制来表示,0表示输入,1表示输出,本例把IO_PD_DIR定义为0b00010000表示,PD4引脚为输出,其余引脚为输入。  

     b、IO_PD_OUT     

     IO_PD_OUT 是系统预定义好的功能宏,表示端口引脚默认的初始状态的方向,可以用一个8位的二进制来表示,0表示低电平,1表示高电平,本例把 IO_PD_OUT 定义为0b00010000表示,PD4引脚上电时默认的初始状态为高电平,即三极管不导通,蜂鸣器不鸣叫。   

    c、 CLRBIT

    CLRBIT是系统预定义好的功能宏,可以将1个字节(8位)的某1位置0,例如CLRBIT(PORTD,BIT4)表示的意思是将PORTD寄存器的第4位置成0。  

    d 、 SETBIT

    SETBIT是系统预定义好的功能宏,可以将1个字节(8位)的某1位置0,例如SETBIT(PORTD,BIT4)表示的意思是将PORTD寄存器的第4位置成1。  

    e、 TARGET_Delayms

    TARGET_Delayms位ms延时函数,带有2个参数,第1个参数是延时的ms数,例如1000指1000ms,即1秒;第2个参数是指在延时的时候是否执行喂狗操作,1是执行喂狗操作,0是不执行喂狗操作。


推荐阅读

史海拾趣

Datasensor公司的发展小趣事

1972年,意大利的Romano Volta博士凭借对光电技术的深厚理解和前瞻性眼光,创立了DATALOGIC公司,并致力于自动化机器的光电传感器和控制产品的开发。这是Datasensor公司的起点,也是其日后成为全球工业自动化光电检测领域领导者的基石。在初创期,公司面临技术挑战、市场竞争和资金压力等多重困难,但Romano Volta博士的坚定信念和团队的共同努力,使公司逐渐站稳脚跟,并开始赢得市场的认可。

Fujitsu America公司的发展小趣事

随着云计算技术的兴起,Fujitsu America紧跟时代潮流,积极推动云计算服务的全球化布局。公司凭借其强大的技术实力和丰富的行业经验,为北美乃至全球的企业客户提供了一站式的云计算解决方案和服务。Fujitsu America的云计算服务不仅涵盖了基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)等多个层面,还注重与客户的深度合作,根据客户的实际需求提供定制化的解决方案,帮助客户实现数字化转型和业务升级。

天钰(FITIPOWER)公司的发展小趣事

随着云计算技术的兴起,Fujitsu America紧跟时代潮流,积极推动云计算服务的全球化布局。公司凭借其强大的技术实力和丰富的行业经验,为北美乃至全球的企业客户提供了一站式的云计算解决方案和服务。Fujitsu America的云计算服务不仅涵盖了基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)等多个层面,还注重与客户的深度合作,根据客户的实际需求提供定制化的解决方案,帮助客户实现数字化转型和业务升级。

DB Unlimited公司的发展小趣事

DB Unlimited始终将技术创新作为公司发展的核心驱动力。公司不断投入大量资源进行技术研发和创新,推出了多项具有行业领先水平的音频技术。这些技术的推出不仅提升了公司的竞争力,也推动了整个音频行业的发展。DB Unlimited的技术创新能力和成果得到了业界的广泛认可。

GHI Electronics公司的发展小趣事

GHI Electronics深知技术创新是企业持续发展的关键。因此,公司不断加大研发投入,致力于开发具有自主知识产权的产品。其中,ARM微控制器、显示模块、空气质量传感器、模块化系统以及微处理器等主打产品系列,凭借其卓越的性能和稳定的品质,在消费电子、便携设备、通讯/网络等领域获得了广泛应用。这些技术创新不仅巩固了GHI Electronics在市场上的领先地位,也为其未来的发展奠定了坚实的基础。

ELNA(依娜)公司的发展小趣事

进入电子领域后,ELNA迅速在电子元件领域取得了突破。公司凭借其在材料科学和制造工艺方面的专长,成功开发出了一系列高性能的电子元件产品。这些产品广泛应用于通信、计算机、消费电子等领域,为ELNA赢得了广泛的客户群。

为了保持技术领先,ELNA不断投入研发资源,加强技术创新。公司积极引进国际先进的生产设备和检测手段,提升产品品质和可靠性。同时,ELNA还加强了与国内外科研机构和高校的合作,共同推动电子元件技术的发展。

问答坊 | AI 解惑

IP网络摄像机高分辨率就是质变吗?

IP网络摄像机的质变在哪里?其实很简单,就在于取消了模拟视频的环节。熟悉视频监控系统的人都知道,模拟摄像头+DVS组合实际上就是将模拟视频输出接入到DVS中进行数字化和网络化,而IP摄像头则从视频感光模块开始就已完成数字化,之后的所有环节都 ...…

查看全部问答>

PADS助手:一个很好的软件献给用PADS Logic/Loyout(Power Logic/PCB)的人

[PADS助手]Logic自动编号+鼠标缩放拖拉图纸+键盘替代菜单快捷键 v2.0 Pads助手是一款帮助用户更方便地使用PADS Logic / PADS Layout(Power Logic / Power PCB)画图软件的辅助软件。 目前,Pads助手有三项主要功能: 1. 原理图元件批量编号功能 ...…

查看全部问答>

基于虹膜的人体特征识别方法研究

  人体特征识别方法,也叫生物特征识别方法,是指利用人的独特的生理及行为特征进行鉴别的身份验证的技术手段。它的产生及发展源于人们在迈进数字时代的过程中对身份验证方法的准确性与便捷性不断提高的需求。传统的身份验证方法主要包括身份标志 ...…

查看全部问答>

消费电子领域十大技术趋势

replyreload += \',\' + 373726;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

我想做一个有关防止病毒通过u盘传播的东西

我想做一个能防止通过u盘传播病毒的东西,但我现在对优盘的设计,驱动等方面不太了解。麻烦哪位高手介绍一些该如何入手,有哪些比较好的书。…

查看全部问答>

2440 + CE5.0下的中断驱动问题

小弟做过4.2下的中断驱动,不知道5.0下的中断驱动怎么着手做啊?哪位大哥给点指导啊?…

查看全部问答>

什么书适合VHDL初学者

想买本书看看,书太多不知道选哪本,请教各位啦。 还有谁看过《基于Quartus2的FPGA/CPLD数字系统设计实例》,谈谈感受吧。…

查看全部问答>

SCCB 总线 PK I2C总线

SCCB总线  SCCB是简化的I2C协议,SIO-l是串行时钟输入线,SIO-O是串行双向数据线,分别相当于I2C协议的SCL和SDA。SCCB的总线时序与I2C基本相同,它的响应信号ACK被称为一个传输单元的第9位,分为Don’t care和NA。Don’t care位由从机产 ...…

查看全部问答>

字库GT21H16S2Y

   我正在做LED字幕机,因字比较多需要字库支持,请老师帮忙写个字库GT21H16S2Y取字程序。谢谢裴京2011。07。28…

查看全部问答>

关于红外中断问题

最近在做一个红外调节的时钟  被卡住了  调试了好久就是没做出来  有谁做过能发程序来拜读一下吗 谢谢   由于本人是菜鸟 希望发过来的程序 能修改一下吗  我希望 用ds12c887来做时钟芯片  它的定时中断接 ...…

查看全部问答>