AVRWARE++开发笔记5:蜂鸣器驱动实验
2015-10-25 00:39
337 查看
本文只针对于初学者,高手请绕过!
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是不执行喂狗操作。
原创性文章,转载请注明出处 http://user.qzone.qq.com/2756567163。
CSDN:http://blog.csdn.net/qingwufeiyang12346。
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是不执行喂狗操作。
原创性文章,转载请注明出处 http://user.qzone.qq.com/2756567163。
CSDN:http://blog.csdn.net/qingwufeiyang12346。
相关文章推荐
- 自定义圆环进度条
- 转载:为什么首次进入界面是SwipeRefreshLayout.setRefreshing(true)没有动画效果
- Python模块Scrapy导入出错:ImportError: cannot import name xmlrpc_client
- 如何在shell下面实现a+b
- C语言二维数组的内存结构图与Java二维数组的内存结构图
- python 多线程和多进程的区别 mutiprocessing theading
- 惠普统一功能测试 (UFT) 11.5的简介
- 我遇到的cookie 中文乱码
- 10月24日 css学习笔记
- IOS常用正则表达式判断
- 使用jQuery的on("click")绑定事件莫名其妙地刷新页面
- IOS常用正则表达式判断
- cookie机制和session机制的区别
- Multiplexing SDIO Devices Using MAX II or CoolRunner-II CPLD
- Lesson 1 A simple first program
- IOS调取系统摄像头
- Android学习笔记(一)
- web安全 -- 常见攻击方法及预防措施
- IOS调取系统摄像头
- ionic+jpush通知栏事件