




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Zigbee无线传感网技术与应用ZigBee无线控制音乐盒0501了解BasicRF点对点工作机制03熟悉无线发送和接收函数05理解串口读写函数04理解发送地址和接收地址、PAN_ID、RF_CHANNEL等概念02掌握蜂鸣器驱动方法学习目标Learningobjectives任务一:单点音乐盒任务要求要求读者查看元件资料以及学习资料,掌握如何修改系统频率与定时器频率,实现使用CC2530控制蜂鸣器的方法。任务目标Missionobjectives01掌握蜂鸣器的控制方法03了解什么是振荡器02了解系统时钟概念04掌握控制系统时钟方法储备知识系统使用蜂鸣器为音乐盒的声音发生来源,使用两块ZigBee板,一个作为发送端控制另一个接收端从而响起音乐。1.音乐盒图:蜂鸣器储备知识2.什么是蜂鸣器蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。蜂鸣器分为压电式及电磁式的二大类:压电式蜂鸣器是以压电陶瓷的压电效应,来带动金属片的振动而发声;电磁式蜂鸣器,则是用电磁的原理,通电时将金属振动膜吸下,不通电时依振动膜的弹力弹回,故压电式蜂鸣器是以方波来驱动,电磁式是1/2方波驱动,压电式蜂鸣器需要比较高的电压才能有足够的音压,一般建议为9V以上。压电的有些规格,可以达到120dB以上,较大尺寸的也很容易达到100dB。储备知识2.什么是蜂鸣器蜂鸣器的发声原理由振动装置和谐振装置组成,而蜂鸣器又分为无源他激型与有源自激型。无源他激型蜂鸣器的工作发声原理是:方波信号输入谐振装置转换为声音信号输出,无源他激型蜂鸣器的工作发声原理图如下:图:无源蜂鸣器储备知识2.什么是蜂鸣器有源自激型蜂鸣器的工作发声原理是:直流电源输入经过振荡系统的放大取样电路在谐振装置作用下产生声音信号,有源自激型蜂鸣器的工作发声原理图如下:图:有源蜂鸣器储备知识2.什么是蜂鸣器相比之下有源蜂鸣器的控制更为简单但是由于频率已经固定所以在声音方面只能响起单一的声音,控制时只需要低电平、高电平响起即可。无源蜂鸣器在控制方面无法直接使用低电平、或高电平控制,需要在控制端输入一个高低电平起伏的方波信号,信号的翻转频率直接影响着声音的高低起伏,因此可发出各种频率的声音如音符do、re、mi、fa等等。储备知识3.CC2530控制蜂鸣器电路如图所示,P2.0作为I/O口通过三极管Q1来驱动无源蜂鸣器LB1,控制蜂鸣器只需在P2.0产生一定频率的方波。图:蜂鸣器连接电路图储备知识3.CC2530控制蜂鸣器电路根据图所示的电路,完成蜂鸣器控制电路的焊接与组装。并将该电路与Zigbee模块1连接,即:蜂鸣器的正极连接到模块1的J11的1脚,P2.0连接到J8的2脚,蜂鸣器控制电路的负极与J11的5脚连接。技能拓展图:蜂鸣器电路图储备知识4.系统时钟频率时钟频率CC2530内部有一个内部系统时钟或主时钟,在CC2530中系统时钟源是从所选的主系统时钟源获得的,主时钟一般由32MHz晶振或16MHzRC振荡器提供。由于32MHz晶振启动时间比较长,因此当选用32MHz晶振作为主时钟源时,内部首先选择16MHzRC振荡器使系统运转起来,当32MHz晶振稳定之后才使用32MHz晶振作为主时钟源,可以通过操作时钟寄存器选择使用哪个时钟源。系统时钟频率即芯片执行指令的速度,他代表着程序执行一条指令的时间,如默认芯片默认频率为16MHZ,一条指令所需时间即1/16000000=0.0625us,系统默认时钟频率可根据需求进行修改,CC2530芯片支持32MHZ、16MHZ的频率。储备知识4.系统时钟频率振荡器CC2530共有4个振荡器,它们为系统时钟提供时钟源。振荡器分两种类型高频振荡器、低频振荡器。高频振荡器有32MHZ外部晶振、16MHZ内部RC振荡器。低频振荡器由32KHZ外部晶振、32KHZ内部RC振荡器。RC振荡器:成本较低,但由于电阻电容的精度导致震荡率会有误差,同时会受到温度、湿度之类的环境的影响。晶体振荡器:振荡频率比较稳定,但价格相对较高,使用时还需要接两个15-33pF的起振电容。储备知识4.系统时钟频率振荡器的作用32MHZ外部晶振:作为内部时钟提供时钟源,主要用于RF收发器(使用RF时必须设置成32MHZ频率)。但32MHZ的启动时间较长16MHZ内部RC振荡器:可作为内容时钟提供时钟源,但16MHZRC振荡器不能用于RF接收器操作。32KHZ外部晶振:运行在32.768KHZ上,为系统需要的时间精度提供一个稳定的时钟信号。32KHZ内部RC振荡器:运行在32.768KHZ上,当系统时钟需要校准时使用此振荡器,校准只能发生在系统时钟工作由16MHZRC振荡器转到32MHZ时。储备知识5.改变时钟频率如表所示,CLKCONCMD可控制系统工作的时钟,OSC默认为1则系统默认工作在16MHZ的频率下,如需使系统工作在32MHZ则需要将OSC设置为0。代码如下所示:CLKCONCMD&=~(0x40);//(01000000)系统时钟设置为32MHZCLKCONCMD除了可定义系统时钟外,还可定义定时器频率,如将去设置为1MHZ则定时器的频率就将为1MHZ。(注意由于复位时TICKSPD为001所以需要将3位同时置位)代码如下所示:CLKCONCMD=0xA8;//10101000//注意CLKCONCMD不可多次赋值必须一步到位,故需要直接计算结果赋值储备知识5.改变时钟频率表:CLKCONCMD寄存器位名称复位功能介绍7OSC32K132KHZ时钟振荡器选择。设置改为只能发器一个时钟源改变,要改变改位,必须选择16MHZRCOSC作为系统时钟。0:表示32KHZ外部晶振1:表示32KHZ内部RC振荡器6OSC1系统时钟源选择。设置该位只能发起一个时钟源改变。0:32MHZ外部晶振1:16MHZ内部RC振荡器5:3TICKSPD001设置定时器频率:(注意不可高于OSC设置的系统频率)000:32MHZ001:16MHZ010:8MHZ011:4MHZ100:2MHZ101:1MHZ110:500KHZ111:250KHZ储备知识5.改变时钟频率一、在下方空白处编写将系统时钟设置为外部晶振32KHZ代码。二、在下方空白处编写将定时器设置为32MHZ频率代码。三、在下方空白处编写将定时器设置为2MHZ频率代码。思考练习:储备知识6.使用定时器3定时器3和定时器4所有功能都是基于一个8位定计数器,它所运行的模式包含自由运行模式,倒计数模式,模模式,正计数/倒计数模式。与定时器1相比为其仅为8位计数器。定时器3使能定时器3使能定时器3与使能定时器1类似,所需寄存器为T3CTL、IEN1、T3CC0。其具体参数如下所示。储备知识6.使用定时器3表:T3CTL寄存器位名称复位功能介绍7:5DIV[2:0]000划分频率,如下所示:000:1分频001:2分频010:4分频011:8分频100:16分频101:32分频110:64分频111:128分频4START0启动定时器。正常运行时设置,暂停时清除。3OVFIM1溢出中断屏蔽0:中断禁止1:中断使能2CLR0清除计数器。1:0MODE[1:0]00定时器3模式:00:自由运行模式,从0x00到0xff反复计数;01:倒计数,从T3CC0到0x00技术;10:模,从0x00到T3CC0重复计数;11:正计数/倒计数,从0x00到T3CC0重复计数,降到0x00。储备知识如表所示,如需要将定时器3工作在模模式,则代码为:T3CTL|=0x03;//(00000011)工作模式如表所示,如需要将定时器3工作在64分频下,则代码为:T3CTL|=0xc0;//(11000000)工作在64分频6.使用定时器3如表所示,如需要将定时器3启动,则代码为:T3CTL|=0x10;//(00010000)启动定时器储备知识一、在下方空白处编写将定时器3设置为倒计数模式代码。二、在下方空白处编写将定时器3设置为32分频代码。思考练习:6.使用定时器3储备知识6.使用定时器3表:IEN1寄存器位名称复位功能介绍5P0IE0端口0中断使能0:中断关闭1:中断开启4T4IE0定时器4中断使能0:中断关闭1:中断开启3T3IE0定时器3中断使能0:中断关闭1:中断开启2T2IE0定时器2中断使能0:中断关闭1:中断开启1T1IE0定时器1中断使能0:中断关闭1:中断开启0DMAIE0DMA传输中断使能0:中断关闭1:中断开启如表所示,如需要将定时器3开启中断使能,代码为:IEN1|=0x08;//(00001000)开启中断使能7.响起音符本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器、1块ZigBee开发板、蜂鸣器模块、5V电源适配器、USB下载线。环境准备任务实施任务实施
将系统时钟修改为32MHZ,定时器频率变为1MHZ。
按下按钮,响起音符do、re、mi声音。任务要求编写代码步骤1:新建工程->工程名称为“按钮音乐盒”->保存->main.c文件名称为“main.c”->设置Opion->编写最简单的代码,代码如下所示。(新建工程具体步骤,不再重复介绍)7.响起音符#include"iocc2530.h"voidmain(){
while(1){
}}任务实施步骤2:编写代码将系统时钟变为32MHZ,代码如下所示。7.响起音符#include"iocc2530.h"voidmain(){
//设置系统时钟为32MHZCLKCONCMD=0x80;
while(1){
}}任务实施步骤3:声明一个整型变量“i”,编写一段小延迟程序,等待系统时钟稳定,代码如下所示。7.响起音符#include"iocc2530.h"voidmain(){
unsigned
inti=0;CLKCONCMD=0x80;
i=1000;
while(--i);
while(1){
}}任务实施步骤4:封装方法为系统时钟函数,方便后续调用,代码如下所示:7.响起音符#include"iocc2530.h"voidsystemInit(){
unsigned
inti=0;
//设置系统时钟为32MHZCLKCONCMD=0x80;}voidmain(){systemInit();
while(1){
}}任务实施步骤5:宏定义蜂鸣器接口P2_0为beep,I/O口设置为输出,并在while死循环中编写一个高低电平翻转的代码,代码如下所示。7.响起音符代码小贴士:代码:beep=!beep;说明:表示ioP2_0取反,对位进行取反,使用符合“!”…#defineP1_0beep…voidmain(){unsigned
chartmp=0;P2DIR
|=
0x01;//设置输出systemInit();
while(1){beep=!beep;//取反,产生方波tmp=255;//延迟频率
while(tmp--);}}…任务实施步骤6:全速执行代码,查看蜂鸣器是否发出声响,如图所示。7.响起音符图:全速执行代码任务实施7.响起音符蜂鸣器响起的声音可通过产生的方波控制其声音频率,音乐的频率为音乐频率范围约为20Hz---20KHz,可使用定时器进行精确控制从而产生音符声音do、re、mi等。常用的音符对照表如右所示。知识补充任务实施7.响起音符定时器工作在250HZ频率下,其定时器初始数值如下所示://音阶频率表定时器8位constunsignedcharFREQ[]={0,110,100,94,89,79,71,63}知识补充任务实施步骤8:删除死循环产生方波代码,编写定时器3中断初始化函数,与中断函数,使定时器工作在“正计数/倒计数模式”,并调用该函数,方便后续调用,将音符对应的频率数组写入代码中,代码如右所示。7.响起音符…//音阶频率表定时器3八位constunsignedcharFREQ[]={0,110,100,94,89,79,71,63//0,do,re,mi,fa,so,la,xi};voidtimerInit(){T3CTL|=0x03;//定时器3工作在正计数/倒计数模式T3CTL|=0xe0;//定时器3128分频T3CTL|=0x10;T3CC0=FREQ[1];;//启动
定时器3//初始响起do频率的声音IEN1|=0x08;//开启定时器3中断EA=1;
}…voidmain(){P2DIR|=0x01;systemInit();timerInit();
while(1){
}}#pragmavector=T3_VECTOR__interruptvoidT3_INT(void){beep=!beep;}任务实施7.响起音符代码小贴士:代码:T3CC0=FREQ[1]说明:获取数组频率1为do、并将频率赋值给定时器。步骤9:全速执行代码,查看蜂鸣器是否发出声响do,如图所示。任务实施步骤10:编写按钮代码,实现按下按钮响起另一个音符。代码如下所示。7.响起音符…voidmain(){
unsigned
charmode=1;P2DIR|=0x01;P1DIR&=~(0x03);P1DIR|=0x01;systemInit();timerInit();
while(1){
if(P1_2==0){delay_ms(20);
if(P1_2==1){mode++;T3CC0=FREQ[mode];
if(mode==7){mode=0;}}}}}…任务实施7.响起音符代码小贴士:unsignedcharmode=1;说明:表示当前的蜂鸣器响起为do的声音,加1则响起另外的声音。代码:f=FREQ[mode];说明:将当前频率赋给定时器,频率的变化由变量mode控制,mode初始值为8,加1则变化音符。代码:if(mode==7){mode=0;}说明:防止mode不断累加超出限定数值,在7时返回0,表示do、re、mi、so、la、xi七个音符。任务实施步骤11:全速执行按下按钮测试结果是否正确。7.响起音符一、在原有程序的基础上修改代码,完成如下任务:
按下另外一个sw2,使声音停止;
将当前音符发送给电脑显示,每秒显示一次;二、若使用16MHZ系统频率,代码将如何修改?技能拓展8.响起一段完整的乐曲本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器、1块ZigBee开发板、蜂鸣器模块、5V电源适配器、USB下载线。环境准备任务实施任务实施
按下按钮,循环播放一段乐曲;
再次按下,结束播放。任务要求编写代码步骤1:复制上述任务工程到新的工程中,保留部分代码,while主循环代码,代码如右所示。voidmain(){P2DIR|=0x01;P1DIR&=~(0x03);IEN1&=~(0x08);//关闭定时器中断systemInit();timerInit();
while(1){}}8.响起一段完整的音曲任务实施代码小贴士:代码:IEN1&=~(0x08);//关闭定时器中断说明:关闭定时器,停止蜂鸣器播放声音,需要播放时开启定时器中断。步骤2:编写音乐音z符与节拍数组,教材选小星星乐谱部分。代码如下所示。8.响起一段完整的音曲const
unsigned
charmusic[]={
1,1,5,5,6,6,5,4,4,3,3,2,2,1};const
unsigned
charmusic_time[]={
4,4,4,4,4,4,8,4,4,4,4,4,4,8};任务实施一个最简单的音乐,需要由音符与节拍组成音符即:do、re、mi、fa、so、la、xi简谱为1、2、3、4、5、6、7节拍即:一个音符持续的时间,教材将一节拍定义为4,半拍定义为2知识补充8.响起一段完整的音曲任务实施步骤3:编写按钮逻辑代码,按下按钮开启定时器中断响起音符,代码如下所示。8.响起一段完整的音曲unsignedcharmusic_count=0;unsigned
charflag=0;voidmain(){P2DIR|=0x01;P1DIR&=~(0x03);P1DIR|=0x01;systemInit();timerInit();
while(1){
if(P1_2==0){delay_ms(20);
if(P1_2==1){
if(flag){flag=0;}
else{flag=1;}}}}}任务实施代码小贴士:代码:
if(flag){flag=0;}
else{flag=1;}说明:判断当前的flag标志,如果为1标志清0、为0置1,表示开关音乐。8.响起一段完整的音曲任务实施步骤4:编写定时器3中断函数,并使用flag来控制是否产生音频信号,代码如下所示。代码小贴士:代码:
if(flag){beep=!beep;}说明:判断当前的flag标志,如果为1则开启音乐,为0则关闭音乐。8.响起一段完整的音曲#pragmavector=T3_VECTOR__interruptvoidT3_INT(void){
if(flag){beep=!beep;}}任务实施步骤5:编写音符产生、节拍切换代码,代码如下所示。8.响起一段完整的音曲voidmain(){P2DIR|=0x01;P1DIR&=~(0x03);systemInit();timerInit();
while(1){
if(P1_2==0){delay_ms(20);
if(P1_2==1){
if(flag){flag=0;IEN1&=~(0x03);}
else{flag=1;IEN1|=(0x03);}}}
if(flag){T3CC0=FREQ[music[music_count]];delay_ms(500*music_time[music_count]);music_count++; //音符中间停顿IEN1&=~(0x08);delay_ms(300);IEN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品创新与技术升级战略研究
- 中医美容养颜之秘
- 企业社会责任实践与探索
- 中国独立游戏开发者如何在海外立足
- 企业人才培养及团队建设的思考与实践
- 个人品牌打造与网络推广策略
- 小学英语试卷分析稿子
- 林业育苗技术与病虫害防治技术综述及其关联研究
- 合理规划鲜食玉米栽培操作流程和科学推广运用分析
- 从团队管理角度看品牌建设与维护
- 自行车采购合同模板
- 2024年基本级执法资格考试题库及解析(100题)
- DB22-T5131-2022预拌盾构砂浆应用技术标准
- 中国邮政四川省分公司暑期招聘笔试真题2022
- 山东省济宁市2022-2023学年高一7月期末生物试题(原卷版)
- 川教版信息技术六年级下册全册教案【新教材】
- 国家开放大学《合同法》章节测试参考答案
- 中学生学习动机量表(MSMT)
- 初中英语七选五经典5篇(附带答案)
- 2024高三一模宝山作文题解析及范文(用怎样的目光看待事物)
- (正式版)YST 1693-2024 铜冶炼企业节能诊断技术规范
评论
0/150
提交评论