蜂鸣器奏乐
单片机课程设计报告(利用蜂鸣器播放音乐)
课程设计:嵌入式系统应用题目名称:利用蜂鸣器实现音乐播放功能姓名:学号:班级:完成时间:1设计的任务设计内容:动手焊接一个51单片机设计目标:利用单片机上的蜂鸣器实现音乐播放功能2 设计的过程2.1 基本结构1.STC89C52RC在本次的试验中采用了STC89C52RC单片机,STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期,工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机),工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz,用户应用程序空间为8K字节。
(STC89C52RC引脚图)STC89C52RC单片机的工作模式:(1)典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序(2)空闲模式:典型功耗2mA(3)正常工作模式:典型功耗4Ma~7mA(4)唤醒,适用于水表、气表等电池供电系统及便携设备2.蜂鸣器及其工作原理:蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
本实验采用的是电磁式蜂鸣器。
蜂鸣器按其是否带有信号源又分为有源和无源两种类型。
有源蜂鸣器只需要在其供电端加上额定直流电压,其内部的震荡器就可以产生固定频率的信号,驱动蜂鸣器发出声音。
无源蜂鸣器可以理解成与喇叭一样,需要在其供电端上加上高低不断变化的电信号才可以驱动发出声音。
本实验采用的是有源蜂鸣器。
(蜂鸣器与单片机连接电路图)2.2 软件设计过程1.蜂鸣器发声原理本实验由于采用有源蜂鸣器,只需将引脚端口P3^4清零,蜂鸣器即可发声;P3^4置位,蜂鸣器停止发声。
Arduino控制蜂鸣器播放音乐设计说明书
目录一、新媒体装置艺术1、作品原理介绍 (1)2、作品设计的意义 (1)3、作品的主要内容 (1)4、制作方法和流程 (1)5、成果 (9)6、价值和影响 (9)7、创新点 (10)二、结论8、技术方面 (10)9、艺术方面 (10)10、不足及展望 (11)11、谢辞 (11)设计说明书一、作品原理介绍:能感应到物体靠近并且低于50CM时,蜂鸣器发出音乐,并且小灯泡随着音乐节奏变化。
二、作品设计意义:将它应用到图书馆或者购物的地方,当人们靠近的时间能只能朗读出这一栏或者这一块区域有什么东西,能够更加让人们更快速的找到自己需要的东西,很大程度上节约的时间! 也可以应用到车上,当开车的人快要和前面或者后面的物体撞上的时候,会发出声音来提醒你,从而给生命和财产加上保护套。
三、作品主要内容:1、Arduino控制蜂鸣器播放音乐、小灯泡。
2、小灯泡跟随蜂鸣器的音乐节奏变化。
3、当物体离超声波低于50CM时发出指令,控制蜂鸣器、小灯泡。
四、制作方法和流程:adruino uno一块(其他Arduino板子也可,注意引脚就行),面保线若干条,蜂鸣器或小喇叭一个。
原理:首先讲下简单的乐理知识,知道音乐是怎么演奏出来的自然就可以通过代码来进行编排了。
1.演奏单音符的原理一首音乐由若干音符组成,每一个音符唯一对应一个频率。
如果我们知道了音符相对应的频率,再让 Arduino 按照这个频率输出到蜂鸣器或喇叭,蜂鸣器或喇叭就会发出相应频率下的声音。
Arduino官方网站给出了不同音符对应的不同频率的头文件,具体请见下文介绍。
2.音符演奏的持续时间每个音符都会播放一定的时间,这样才能构成一首优美的曲子,而不是每个音符都播放一样长的时间。
如何确定每个音符演奏的单位时间呢?我们知道,音符节奏分为1拍、1/2拍、1/4拍、1/8拍等等,我们规定一拍音符的时间为1;半拍为0.5;1/4拍为0.25;1/8拍为0.125……,所以我们可以为每个音符赋予这样的拍子播放出来,音乐就成了。
PT2262_PT2272讲解
51单片机综合学习系统之无线遥控模块应用篇《电子制作》2008年6月站长原创,如需引用请注明出处大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了数字温度传感器DS18B20的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习无线电遥控的基本原理与应用实例。
先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。
图1 51单片机综合学习系统上图是我们将要使用的51单片机综合学习系统硬件平台,如图1所示,本期实验我们用到了综合系统主机、200米无线遥控器,无线接收板,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。
PT2262/PT2272无线模块工作原理PT2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编/解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。
PT2262/2272最多可有12位(A0-A11)三态(悬空,接高电平,接低电平)地址设定管脚,任意组合可提供531441个地址码。
PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚(Dout)串行输出,可用于无线遥控发射电路。
PT2262和PT2272的引脚排列见图2。
对于编码器PT2262,A0~A5共6根线为地址线,而A6~A11共6根线可以作为地址线,也可以作为数据线,这要取决于所配合使用的解码器。
若解码器没有数据线,则A6~A11作为地址线使用,这种情况下,A0~A11共12根地址线,每线都可以设置成“1”、“O”、“开路”三种状态之一,因此共有编码数312=531441种;但若配对使用的解码器的A6~A11是数据线,例如PT2272,那么这时PT2262的A6~A11也作为数据线用,并只可设置为“1”和“0”两种状态之一,而地址线只剩下A0~A5共6根,编码数降为36=729种。
(完整)spi总线协议详细说明
SPI总线原理与应用篇《电子制作》2008年9月站长原创,如需引用请注明出处大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了使用IIC总线的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习SPI总线的基本原理与应用实例。
先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI 总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。
主体系统如图1所示,其配套书本教程《单片机快速入门》如图2所示。
图1 51单片机综合学习系统主机部分图片图2 51单片机综合学习系统配套书本教程——《单片机快速入门》上图是我们将要使用的51单片机综合学习系统硬件平台,如图1所示,本期实验我们用到了综合系统主机、板载的AT93C46芯片,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。
SPI总线简介SPI总线基本概念SPI ( Serial Peripheral Interface ———串行外设接口) 总线是Motorola公司推出的一种同步串行接口技术。
SPI总线系统是一种同步串行外设接口,允许MCU 与各种外围设备以串行方式进行通信、数据交换。
外围设备包括FLASHRAM、A/ D 转换器、网络控制器、MCU 等。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。
其工作模式有两种:主模式和从模式。
SPI是一种允许一个主设备启动一个从设备的同步通讯的协议,从而完成数据的交换。
也就是SPI是一种规定好的通讯方式。
这种通信方式的优点是占用端口较少,一般4根就够基本通讯了(不算电源线)。
创新实验电子琴实验报告
山东科技大学电工电子实验教学中心创新性实验研究报告实验项目名称_创新型实验_专题__简易电子琴的设计与制作_姓名_X)学号_X姓名X 学号X手机XEmail X指导教师及职称____赵洪亮______开课学期2011 至2012 学年_ 2 _学期提交时间2012 年 6 月28 日一、实验摘要本实验采用555集成定时器组成简易电子琴。
整个电路由主振荡器,颤音振荡器,蜂鸣器,扬声器和琴键按钮等部分组成。
二、实验目的1、将课程的理论知识转换为技能。
2、掌握简易电子琴的组成原理及设计方法。
3、掌握集成555定时器应用电路的设计、制作与调试方法。
4、掌握制作电子电路的技能。
5、进一步熟悉常用电子器件的类型和特性,并掌握合理选用的原则,掌握电子仪器的正确使用6、学会电子电路的安装与调试技能。
7、学会撰写课程设计总结报告。
8、通过课程设计的综合训练,为以后毕业设计打下一定的基础。
三、实验场地及仪器、设备和材料:实验场地:院数电实验室实验设备及材料:两个SYB-120面包板、NE555 1个、LM386 1个、琴键开关8个(小体积)、单刀双掷开关2个、扬声器1个、音乐蜂鸣器1个、陶瓷电容0.1μF1个、电解电容10uF1个、电解电容220uF1个、系列电阻:510 kΩ、20kΩ、10 kΩ、1 kΩ、6.8k Ω、2 kΩ、4.7kΩ、3.3 kΩ、100Ω、200Ω、10Ω若干。
可调电阻(电位器)1kΩ1个,面包板用独股线导线若干、直流稳压电源一台。
四、实验内容1、实验原理555定时器是一种中规模集成电路,外形为双列直插8脚结构,体积很小,使用起来方便。
只要在外部配上几个适当的阻容元件,就可以构成史密特触发器、单稳态触发器及自激多谐振荡器等脉冲信号产生与变换电路。
它在波形的产生与变换、测量与控制、定时电路、家用电器、电子玩具、电子乐器等方面有广泛的应用。
简易电子琴主要使用555定时器和电子元件实现C调八个音阶1.2.3.4.5.6.7.i,具有一般基音演奏功能,其颤音振荡器振荡频率较低为64Hz,若将其输出电压U连接到主振荡器555定时器复位端4,则主振荡器输出端出现颤音。
单片机蜂鸣器音乐
单片机蜂鸣器音乐单片机在我们的生活中无处不在,它被广泛地应用在各种电子产品中,为我们的生活带来了便利。
今天,我要向大家介绍的是一种基于单片机的蜂鸣器音乐播放器。
一、硬件部分1、单片机:我们选用的是AT89C51单片机,它具有低功耗、高性能的特点,非常适合用于音乐播放器。
2、蜂鸣器:蜂鸣器是用来发出声音的,我们将其连接在单片机的输出口上。
3、存储芯片:为了能够播放存储在芯片中的音乐,我们需要将音乐以某种格式存储在芯片中。
常用的存储芯片有EEPROM和Flash芯片。
4、按键:为了能够选择播放不同的音乐,我们需要添加一个按键。
二、软件部分1、音乐编码:我们需要将音乐转换成二进制编码,这样才能被单片机读取并播放。
常用的音乐编码格式有MIDI、WAV等。
2、音乐播放:当按下按键时,单片机读取存储芯片中的音乐数据,并通过蜂鸣器播放。
3、音乐选择:通过按键可以选择不同的音乐进行播放。
4、音量控制:我们可以通过编程来控制蜂鸣器的音量大小。
三、调试与测试1、硬件调试:检查连接是否正确,确保没有短路或断路的情况。
2、软件调试:将程序下载到单片机中进行调试,确保能够正常播放音乐。
3、综合测试:将所有硬件和软件都连接起来进行测试,确保能够正常工作。
四、总结与展望通过本次实验,我们成功地制作了一个基于单片机的蜂鸣器音乐播放器。
它具有简单、实用的特点,可以用来播放存储在芯片中的音乐。
未来,我们可以进一步扩展其功能,例如添加更多的按键来选择不同的音乐、添加显示屏来显示歌曲名称等。
我们也可以将其应用到其他领域,例如智能家居、智能安防等。
单片机蜂鸣器唱歌程序在许多应用中,单片机蜂鸣器经常被用来发出声音或音乐。
下面是一个使用单片机蜂鸣器唱歌的程序示例。
我们需要确定单片机和蜂鸣器的连接方式。
通常,单片机具有一个内置的蜂鸣器输出引脚,可以将蜂鸣器连接到这个引脚上。
在以下的示例中,我们将假设单片机具有一个内置蜂鸣器输出引脚,并将其连接到P1.0端口上。
超详细的ds1302使用说明及其例程
DS1302时钟芯片简介
DS1302是 DALLAS 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静 态 RAM,可以通过串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、 星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过 AM/PM 标 志位决定采用24或12小时时间格式。DS1302与单片机之间能简单地采用同步串行的方式进 行通信,仅需三根 I/O 线:复位(RST)、I/O 数据线、串行时钟(SCLK)。时钟/RAM 的读 /写数据以一字节或多达31字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时 钟信息时,功耗小于1mW。
Write1302 (WRITE_PROTECT,0x80); 允许写保护
}
//十六进制转十
//禁止写保 //秒位初始 //分钟初始化
// //
51单片机综合学习系统之 DS1302时钟应用篇 《电子制作》2008年10月 站长原创,如 需引用请注明出处
大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有 所了解与熟悉,学会了使用 AD 模数转换的基本知识,体会到了综合学习系统的易用性与易 学性,这一期我们将一起学习 DS1302时钟的基本原理与应用实例。
fpga课设——蜂鸣器音乐演奏
少年易学老难成,一寸光阴不可轻- 百度文库FPGA实验报告实验名称:蜂鸣器音乐演奏实验日期:姓名:学号:一、实验目的1.熟悉QuartusII 软件的使用。
2.熟悉EDA实验开发系统的基本使用。
3.学习VHDL基本单元电路的设计应用。
进一步掌握EDA的多层次设计方法。
4.学习音乐发生器的设计。
除了报警,蜂鸣器还可以用来奏乐。
让它发出悦耳动听的声音,加深理解蜂鸣器的控制电路原理。
二.设计要求1.自动循环播放歌曲《义勇军进行曲》。
2.由数码管分别显示高、中、低音的音符。
三.实验原理1、乐曲硬件电路产生音乐是和音乐频率和音乐的持续时间有关;音符的持续时间需根据乐曲的速度和每个音符的节拍数来确定。
其简谱中音符和频率的关系如下:2、该演奏电路演奏的乐曲是《友义勇军进行曲》,其最小的节拍为1拍,将1拍的时长定位0.2S,则只需要再提供一个5hz的时钟频率即可产生1拍的时长,演奏的时间控制通过ROM查表的方式来完成。
对于占用时间较长的节拍,(一定是节拍的整数倍),如全音符为4拍,2/4音符为2拍,1/4音符为1拍。
3、乐曲硬件演奏电路系统主要有音调分频器和乐曲存储模块两个部分组成,其余还有音乐节拍发生器等等。
音调分频器对1mhz(由基准频率产生)的频率进行分频,得到与各个音节对应的频率输出。
乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中存放一个乐曲曲谱真值表(实验中用的ROM存储),由一个计数器来控制此真值表的输出,而由计数器的技术时钟信号作为乐曲节拍控制信号。
4、其中5hz和1mhz的频率由基准频率分频产生,分别作用给每个模块。
四、方案设计a.设计分析:实验中采用层次化设计思路,音乐发生器的设计包括四个模块:时钟分频模块fdiv、自动演奏模块autoplay、查表及显示模块table、音调分频模块fenpin。
分好层次之后,编写每个模块的程序。
时钟分频模块fdiv通过基准时钟频率clk(50mhz)产生两个时钟信号clk1(1mhz),clk2(5hz)。
智能车结构原理及程序控制基础课程教学大纲
智能车结构原理及程序控制基础课程教学大纲一、课程名称:智能车结构原理及程序控制基础二、课程简介本课程是在物联网技术飞速发展的大背景下,面向智能网联专业开设的一门新的专业课。
本课程的主要教学内容是指导学生在Arduino开源软硬件平台上实现各种有潜在应用价值的电子产品原型。
Arduino的入门难度较低,因此,与传统的电类专业课相比,本课程对先修课程基本没有要求。
在开设传统的电类专业课之前开设该课程,能引导学生尽可能早的接触电子信息领域的专业知识,发现其中蕴藏的无穷乐趣,并激发学生的创新潜能。
三、课程教学目标(一)知识目标1.掌握Arduino相关的专业基础理论知识,并能用于解决物联网中感知层相关的复杂工程问题。
重点掌握Arduino软硬件基础、语言基础、函数基础。
2.掌握物联网工程感知层涉及的相关知识、技能、方法和行业规范、标准,了解社会、健康、安全、法律、文化以及环境等因素对Arduino 开发的影响。
重点掌握Arduino 类库使用及编写、I/O 接口及软硬件串口通信协议应用。
4.能对物联网工程特定需求进行感知层模块的设计与实现,并能在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。
(二)能力目标使学生对Arduino开源软硬件技术从整体上有一个较清晰的把握,了解电子产品原型系统的制作流程。
在掌握基本的电子制作常识的基础上,通过若干实验进行实际操作,使学生初步具备设计和制作基于Arduino平台的电子产品原型系统的能力。
(三)素质目标学习与物人关系有关的单片机原理和应用设计:激发创新能力,并且能够按照自己的创新思想设计有关的概念产品:.使公共艺术专业学生学会与工程师交流配合完成全部设计制造过程。
四、课程学时分配五、课程教学内容第一章 arduino 概述第一节概述【本节教学目标】:1.了解arduino开发板版本及各引脚需求【本节教学重难点】1、arduino主要特征【本节核心教学内容】【本节作业】1. arduino电源引脚说明?2.Arduino扩展板有哪些?【本节小结】2、arduino概述3、arduino主要特征第二节开发板内部结构【本节教学目标】:1.掌握开发板内部结构【本节教学重难点】1、开发板内部机理【本节核心教学内容】【本节作业】1.简述Arduino Mega 2560内部结构?2.AVRA微控器分类?【本节小结】1、arduino内部结构解析第三节 arduino发展趋势【本节教学目标】:1.了解arduino开发板发展前景【本节教学重难点】1、Arduino特点【本节核心教学内容】【本节作业】1. arduino开发板优势有哪些?【本节小结】1、arduino概述2、arduino主要特征第二章软硬件开发基础油第一节开发环境搭建【本节教学目标】:1.掌握arduino软件开发环境搭建【本节教学重难点】开发环境搭建【本节核心教学内容】【本节作业】1.简述Arduino Mega 2560开发板的性能指标?2. Arduino Mega 2560开发板原理图?【本节小结】2、arduino软件开发环境搭建【本节小结】3、arduino概述4、arduino主要特征第二节开发语言概述【本节教学目标】:1.了解掌握开发板开发语言【本节教学重难点】1、标识符、运算符复合赋值运算符认知【本节核心教学内容】【本节作业】1.运算符有哪些?2.C语言中什么是关键字?【本节小结】1、了解开发板开发语言2、什么是复合赋值运算符第三节基本函数认知【本节教学目标】:1.了解掌握开发板开发语言【本节教学重难点】1、标识符、运算符复合赋值运算符认知【本节核心教学内容】【本节作业】1.运算符有哪些?2.C语言中什么是关键字?【本节小结】3、了解开发板开发语言4、什么是复合赋值运算符第四节常量和数据类型【本节教学目标】:1.了解掌握常量数据类型【本节教学重难点】1、数据类型转换函数认知【本节核心教学内容】【本节作业】1.什么是整数常量?2.数据变量类型有哪些?【本节小结】常量和数据类型认知第五节控制语句【本节教学目标】:1.了解掌握开发语言控制语句功能使用方法【本节教学重难点】1、continue语句2、do...while语句【本节核心教学内容】【本节作业】1.break语言使用规范?【本节小结】掌握开发语言控制语句功能使用方法第六节运算符【本节教学目标】:1.了解掌握余数、加减乘除和赋值符使用【本节教学重难点】1、逻辑运算符2、复合运算符【本节核心教学内容】【本节作业】1.复合运算符使用规范?【本节小结】了解掌握余数、加减乘除和赋值符使用第三章开发板常用模块及其应用第一节超声波雷达模块【本节教学目标】:1.了解超声波雷达模块结构原理以及应用【本节教学重难点】超声波雷达模块函数应用【本节核心教学内容】【本节作业】1.超声波雷达测距原理?2.使用函数调用雷达测距实验?【本节小结】了解超声波雷达模块结构原理以及应用第二节蜂鸣器模块模块【本节教学目标】:1.了解蜂鸣器模块结构原理以及应用【本节教学重难点】蜂鸣器程序认知【本节核心教学内容】【本节作业】1.蜂鸣器原理?2.使用函数调用演奏音乐实验【本节小结】了解蜂鸣器模块结构原理以及应用第二节直流电机模块【本节教学目标】:1.了解掌握直流电机模块结构原理以及应用【本节教学重难点】直流电机程序认知【本节核心教学内容】【本节作业】1. 直流电机的调速原理.?2.直流电机转速控制及测量实例实验【本节小结】了解掌握直流电机模块结构原理以及应用第三节部进电机模块【本节教学目标】:1.了解掌握步进电机模块结构原理以及应用【本节教学重难点】步进电机控制程序认知【本节核心教学内容】【本节作业】1. 部进电机的调速原理.?2.部进电机转速控制及测量实例实验【本节小结】了解掌握部进电机模块结构原理以及应用。
2051单片机 红外线遥控
2051单片机红外线遥控先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。
上图是我们将要使用的51单片机综合学习系统硬件平台,本期实验我们用到了综合系统主机,1602液晶屏、超薄型红外线遥控器,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。
红外线遥控是目前使用最广泛的一种通信和遥控方式。
由于红外线遥控装置具有体积小、功耗低、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也被纷纷采用。
1、红外遥控系统通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。
发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
这就是我们将要实验使用的高质量超薄型红外线遥控器。
2、遥控发射器及其编码遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理,我们使用的超薄型红外线遥控器使用的就是6121编码。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。
上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。
然后再通过红外发射二极管产生红外线向空间发射,如图3所示。
PT2262-PT2272无线遥控接收发送讲解
硬件原理图
图 8 无线遥控实验演示图
程序流程图
图 9 硬件原理图
图 10 软件流程图
软件代码
/******************************************************************** *******/
/*杭州晶控电子有限公司 */
/*
图 5 解码接收模块和电路原理图
图 6 无线遥控接收板
无线收发模块的地址码设定 在通常使用中,我们一般采用 8 位地址码和 4 位数据码,这时编码芯片 PT2262 和解
码芯片 PT2272 的第 1~8 脚为地址设定脚,有三种状态可供选择:悬空、接正电源、接地三 种状态,地址编码不重复度为 38=6561 组,只有发射端 PT2262 和接收端 PT2272 的地址编码 完全相同,才能配对使用,遥控模块的生产厂家为了便于生产管理,出厂时遥控模块的 PT2262 和 PT2272 的八位地址编码端全部悬空,这样用户可以很方便选择各种编码状态,用 户如果想改变地址编码,只要将 PT2262 和 PT2272 的 1~8 脚设置相同即可,例如将发射机
基于 PT2262 的无线编码模块 编码发射模块外形小巧、美观,与很多车辆防盗系统中的遥控器一样。根据功能的 多少按键数也不一样,我们本章所用的发射模块为 A、B、C、D 四个按键。编码发射模块主 要由 PT2262 编码 IC 和高频调制、功率放大电路组成,常用的编码发射模块实物和内部框图 如图 3 所示。 遥控发射器工作电压为 DC 12V(电池供电) ,尺寸(mm): 58*39*14 ,工作频率:315MHz , 工作电流(mA):13 编码类型: 固定码(板上焊盘跳接设置) 应用说明:与各类型带解码功能的 接收模块联合使用,解码输出后进行相应控制,如采用单片机进行读取接收并解码数据然后控制 相应的灯或电源开关。
2051单片机综合学习系统
2051单片机综合学习系统先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。
主体系统如图1所示,其配套书本教程《单片机快速入门》如图2所示。
图1 51单片机综合学习系统主机部分图片图2 51单片机综合学习系统配套书本教程——《单片机快速入门》上图是我们将要使用的51单片机综合学习系统硬件平台,如图1所示,本期实验我们用到了综合系统主机、板载的DS1302时钟芯片,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。
在很多单片机系统中都要求带有实时时钟电路,如最常见的数字钟、钟控设备、数据记录仪表,这些仪表往往需要采集带时标的数据,同时一般它们也会有一些需要保存起来的重要数据,有了这些数据,便于用户后期对数据进行观察、分析。
本小节就介绍市面上常见的时钟芯片DS1302的应用。
DS1302是美国DALLAS公司推出的一款高性能、低功耗、带内部RAM的实时时钟芯片(RTC),也就是一种能够为单片机系统提供日期和时间的芯片。
通过本小节的学习,我们将会把RTC相关的一些技术粗略介绍一下,然后介绍DS1302与单片机之间的软硬件应用。
DS1302时钟芯片简介DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机进行通信。
实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。
DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:复位(RST)、I/O数据线、串行时钟(SCLK)。
时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。
PT2262_PT2272讲解要点
51单片机综合学习系统之无线遥控模块应用篇《电子制作》2008年6月站长原创,如需引用请注明出处大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了数字温度传感器DS18B20的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习无线电遥控的基本原理与应用实例。
先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。
图1 51单片机综合学习系统上图是我们将要使用的51单片机综合学习系统硬件平台,如图1所示,本期实验我们用到了综合系统主机、200米无线遥控器,无线接收板,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。
PT2262/PT2272无线模块工作原理PT2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编/解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。
PT2262/2272最多可有12位(A0-A11)三态(悬空,接高电平,接低电平)地址设定管脚,任意组合可提供531441个地址码。
PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚(Dout)串行输出,可用于无线遥控发射电路。
PT2262和PT2272的引脚排列见图2。
对于编码器PT2262,A0~A5共6根线为地址线,而A6~A11共6根线可以作为地址线,也可以作为数据线,这要取决于所配合使用的解码器。
若解码器没有数据线,则A6~A11作为地址线使用,这种情况下,A0~A11共12根地址线,每线都可以设置成“1”、“O”、“开路”三种状态之一,因此共有编码数312=531441种;但若配对使用的解码器的A6~A11是数据线,例如PT2272,那么这时PT2262的A6~A11也作为数据线用,并只可设置为“1”和“0”两种状态之一,而地址线只剩下A0~A5共6根,编码数降为36=729种。
音乐蜂鸣器
第一章 美音蜂鸣器的应用美音蜂鸣器在空调中的应用主要是通过不同的音乐来表达控制器不同状态,或者,对不同操作用不同音乐响应。
而不同的 音乐是通过控制芯片内的两个蜂鸣器管脚来控制。
一个是控制蜂鸣器的工作情况。
而音乐的尾音则是通过关闭控制蜂鸣器,从而附带着 的电容放电所造成的。
另一个则是控制蜂鸣器的音乐情况。
具体是从晶振到预分频再到分频个计数器的一连 串的控制,进而达到人们想发的音阶、音乐的实现。
第二章 程序设计2.1 用东芝807芯片组成的空调控制器是单片机在家电应用中的一个典型例子。
现对该控制器进行二次应用开发,对空调系统的蜂鸣器部份进行再设计修改,使其产生新的控制感觉。
本设计课题是用科龙柜机对原蜂鸣器进行修改设计。
2.2 美音蜂鸣器的发音原理:1)按照曲目音阶用定时器中断产生相应的中断频率2)按照曲目音阶的节拍,用定时器控制相应的延时3)在蜂鸣器控制程序按曲目顺序调出要发音的音阶和节拍延时,完成完整的曲目发音2.3美音蜂鸣器的设计安排:1)先设定好要选的曲目(1-15)。
2)根据定好的曲目列出音谱表。
因查表语句 LD (HL+C)中变址寄存器C的有效范围是 –128 ..+127, 为防止查表过限,分为两个表处理: Sound_TBL1:DB 3,1DB 1,1,5,5,6,6,5 ;一闪一闪亮晶晶DB 5,6,3,7,7,1,7,6,6 ;爱你一万年DB 3,5,5,5,5,3,5,6,6,6,6,6,3,5 ;忘情水DB 1,2,3,2,3,2,1,2,5 ;铁达尼号DB 5,5,1,6,5,6,5,5,5,5,3,5 ; 冰雨DB 1,1,1,5,6,6,6,2 ; 命运交响曲DB 3,5,3,1,7,7,6,6,5,6 ; 我不够爱你Sound_TBL2:DB 6,6,3,5,4,3,2,3 ; 小草DB 1,7,7,5,4,3,2,1 ;她比我丑DB 6,6,7,6,6,7 ;雪绒花DB 5,3,3,1,2,3,2,3,3,6,5,1,2,1 ;军港之夜DB 3,3,2,1,1 ;送战友DB 3,2,3,4,3,1,7,5,6 ;祖国啊,我的母亲DB 5,5,5,3,6,6,4 ;请到天涯海角来DB 3,2,1,5,1,1,6,6,6,7,6,5 ;快乐老家;---------------------------------------------------------------3)根据定好的音谱,列出节拍延时表,同样,分为两个表处理:Delay_TBL1:DB 4,4DB 8,8,8,8,8,8,8 ;1. 一闪一闪亮晶晶DB 4,4,4,6,2,6,2,2,8 ;2. 爱你一万年DB 2,2,2,2,6,2,8,2,2,2,2,6,2,8 ;3. 忘情水DB 4,4,8,2,2,2,2,4,8;4. 铁达尼号DB 4,4,4,4,4,6,2,4,6,2,4,4 ;5. 冰雨DB 2,2,2,8,2,2,2,8 ;6. 命运交响曲DB 4,4,4,4,4,4,4,4,6,8 ;7. 我不够爱你Delay_TBL 2:DB 2,2,4,4,4,2,2,8 ;8. 小草DB 6,2,4,4,6,2,4,8 ;9. 她比我丑DB 4,4,8,4,4,8 ;10.雪绒花DB 4,4,4,4,2,2,6,2,8,4,4,2,2,8 ;11.军港之夜DB 8,6,4,2,8 ;12. 送战友DB 2,2,2,2,2,2,6,2,8 ;13.祖国啊,我的母亲DB 6,2,2,2,6,2,2 ;14. 请到天涯海角来DB 4,2,2,2,2,8,6,2,2,2,2,8 ;15. 快乐老家4)按照音谱频率,列出所对应的中断分频和溢出计数器初值表蜂鸣器音调输出使用T807芯片的TC3定时器中断,其设置如下:;------------------------------------------------------------------------- ;TC3CR 地址:001A( Timer Conter 3 Control); ┏━━┳━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ; ┃名称┃ TFF3 │ TC3CK │ TC3S │ TC3M ┃ ; ┠──╂───┼───────────┼───┼───────────┨ ; ┃ 0 ┃PPG 清│ TC3 频率选择 │ 停止 │ TC3 模式选择 ┃ ; ┠──╂───┤ ├───┤ ┃ ; ┃ 1 ┃PPG 置│ │ 启动 │ ┃ ; ┠──╂───┼───┬───┬───┼───┼───┬───┬───┨ ; ┃复位┃ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 ┃ ; ┗━━┻━━━┷━━━┷━━━┷━━━┷━━━┷━━━┷━━━┷━━━┛ ; TC3CK TC3M; 条件 DV7CK=0; 000 fc/2.11 000 8位计时器; 001 fc/2. 7 001 8位可编程分频输出(PDO) ; 010 fc/2. 5 010 8位脉宽调制输出(PWM) ; 011 fc/2. 3 011 16位模式(由TC4M选择) ; 100 fs; 101 fc/2. 2; 110 fc/2. 0; 111 无效;------------------------------------------------------------------------ 现TC3M 选择 000 :把TC3作为8位计时器使用现TC3CK 选择 010 (音调 1,2) 32分频011 (其他音调) 8分频; 晶振频率 8MHz;------------------------------------------------------------------------- ; 音调 #G #A C #C #D #F G #G; 简谱 1 2 3 4 5 6 7 高1; 音调频率 1661 1865 2093 2217 2489 2794 3136 3322; 分频 32 32 8 8 8 8 8 8; 计数初值 75 67 239 226 201 179 159 151;------------------------------------------------------------------------- ; 中断分频表;------------------------------------------------------------------------- Divider_tbl:DB 0Y00000000 ;DB 0Y00101000 ;2 '5 32分频 音调 1DB 0Y00101000 ;2 '5 32分频 音调 2DB 0Y00111000 ;2 '3 8分频 音调 3DB 0Y00111000 ;2 '3 8分频 音调 4DB 0Y00111000 ;2 '3 8分频 音调 5DB 0Y00111000 ;2 '3 8分频 音调 6DB 0Y00111000 ;2 '3 8分频 音调 7DB 0Y00111000 ;2 '3 8分频 音调 高1;------------------------------------------------------------------------- ; 溢出中断初值表;------------------------------------------------------------------------- Tune_tbl:DB 0,75,67,239,226,201,179,159,151; 音调 1 2 3 4 5 6 7 高1;-------------------------------------------------------------------------5)按15个曲目的音调数,列出发音音符数目表Tune_count1A:DB 2,7,9,14,9,12,8,10Tune_count2A:DB 8,8,6,14,5,9,7,12此表表示,第一个曲目,有16个音符,第二个曲目,有16个音符,第三个曲目,有21个音符,。
PT2262-PT2272无线收发讲解
51单片机综合学习系统之无线遥控模块应用篇《电子制作》2008年6月站长原创,如需引用请注明出处大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了数字温度传感器DS18B20的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习无线电遥控的基本原理与应用实例。
先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。
图1 51单片机综合学习系统上图是我们将要使用的51单片机综合学习系统硬件平台,如图1所示,本期实验我们用到了综合系统主机、200米无线遥控器,无线接收板,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。
PT2262/PT2272无线模块工作原理PT2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编/解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。
PT2262/2272最多可有12位(A0-A11)三态(悬空,接高电平,接低电平)地址设定管脚,任意组合可提供531441个地址码。
PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚(Dout)串行输出,可用于无线遥控发射电路。
PT2262和PT2272的引脚排列见图2。
对于编码器PT2262,A0~A5共6根线为地址线,而A6~A11共6根线可以作为地址线,也可以作为数据线,这要取决于所配合使用的解码器。
若解码器没有数据线,则A6~A11作为地址线使用,这种情况下,A0~A11共12根地址线,每线都可以设置成“1”、“O”、“开路”三种状态之一,因此共有编码数312=531441种;但若配对使用的解码器的A6~A11是数据线,例如PT2272,那么这时PT2262的A6~A11也作为数据线用,并只可设置为“1”和“0”两种状态之一,而地址线只剩下A0~A5共6根,编码数降为36=729种。
蜂鸣器与音乐编程(教与学)
蜂鸣器与音乐编程体验蜂鸣器演奏音乐没有亲自体验过自己导出的代码可以让蜂鸣器奏乐的人,怎么会想着会有学习音乐编程的冲动呢。
在向下进行之前,小编在这希望即将走向热爱音乐编程道路上的朋友将下面附录1中的代码复制粘贴,然后烧写到开发板中,体验一把音乐编程的快乐。
认识蜂鸣器奏乐原理其实,这个也没有必要,因为我学习音乐编程的过程中也没有走这个过程,不过原因呢是我小时候学过一段时间的乐理知识,现在有那么一点印象。
假如你没有我那么好的音乐功底(呵呵,开个玩笑,我也只是低等玩家),没关系,告诉你捷径,看好了-------跳过此部分。
我们都知道,音调和音调的时长是音符的主要特征,通过产生不同的音调和音调的时长可以奏出不同的音符来。
然后一个个音符串联在一起就可以产生美妙的音乐来了。
音调主要由声音的频率决定,通过单片机给蜂鸣器不同的音频脉冲来产生不同的音调。
要产生音频脉冲,只要算出某一音频的周期(周期=1/频率),然后将此周期除以2即为半周期的时间。
利用单片机的定时器工作在计数模式MODE1下,设定TH0和TL0的值以产生这半个周期,每当计时到达时就将输出脉冲的I/O(即接蜂鸣器的那个管脚)反相,然后重复计时此半个周期再对I/O反相,就可以在I/O引脚上得到此频率的脉冲。
如果没有必要进行精确的计时,可以用for循环空语句来粗略计时即可(本文选用此法)。
当单片机使用11.0592Mhz的晶振时,for(i=0;i<115;i++);这个空循环延时约为1ms;当晶振选用12Mhz时,可使用for(i=0;i<125;i++);这个空循环来延时1ms。
在这个空循环外头再进行一次循环就可以实现延时若干ms。
首先介绍蜂鸣器的发声原理。
如:下面附上不同音调所对应的频率表:准备相关基础知识假如你只是想体验一把让自己的开发板唱歌,那你在这里可以找到好几个完整源码。
假如你是想让自己掌握音乐编程,那你必须具备以下小编认为的能力:1、开发板初级使用能力2、使用框架的能力3、细心、认真、耐心以上三种能力,让你在往下的学习中可以掌握音乐编程的其中之一的方法。
智能小车设计论文
智能小车设计报告姓名: 黄俊才学院:信息学院班级:电科1004学号:201048360417摘要本系统基于AT89S52单片机的小车寻迹系统,该系统采用两组高灵敏度的红外反射式光电传感器,对路面的黑色轨迹进行检测,将检测的数据送入单片机进行处理,并利用单片机产生PWM波,并以最短时间完成寻迹。
同时采用红外传感器对障碍物进行躲避功能。
对于交通灯的检测采用固定频率的红外线信号表示不同的交通指示灯,使控制系统更加智能。
在软件程序上采用一定的控制算法,使得小车在直到上加速行驶,在弯道上可以实现减速转弯,因此,本系统由红外光电传感器,单片机和驱动单元共同作用,保证小车能在预先设定的轨迹上行驶。
关键词:单片机寻迹传感器避碍交通灯检测本设计的主要特色:1.自制的三轮结构小车,采用PWM调速。
2.采用6V电池供电,直流稳压电路工作稳定,可使小车在不断行驶过程中更换电源。
3.采用红外发射传感器接收对黑线标志进行识别,具有高精度和高灵敏度。
4.通过程序编写音乐,在小车停车后自动播放。
5.通过载波调制与解调的原理,实现红外交通灯信号的远距离检测。
一、系统的基本原理与方案;1.1系统基本原理分析系统可以分为几个基本功能模块,如图1-1图 1-1对各功能模块的设计,分别有以下不同的设计方案;1.2传感器选择方案;方案一:采用发光二极管发光,用光敏二极管接收;发光二极管发出的可见光照射到黑带时,光线被黑带吸收,光敏二极管为检测到信号。
呈高阻抗,使输出端为低电平。
当发光二极管发出的可见光照射到地面时,它发出的可见光反射回来被光敏二极管检测到,其阻抗迅速降低,此时输出端为高电平。
但是由于光敏二极管受环境中可见光影响较大,电路的稳定性很差,但可以通过运放对检测信号进行处理。
方案二:采用反射式红外光电传感器。
用ST198A型反射式红外对管组成的路径识别传感器模块,检测距离和灵敏度均能达到系统要求,该器件具有如下特点:当发光二极管发出的光反射回来时,三极管导通输出低电平,该光电对管调理电路简单,工作性能稳定。
基于Proteus蜂鸣器播放音乐(ATMega16)
/*************************************************************File name : T1 单音音乐播放器(CTC)Chip type : ATmega16Program type : NO.8_7Clock frequency : 1.000000 MHz*************************************************************/#include <iom16v.h>#include <macros.h>#define Max_Note 32int Note[9] = {0,956,865,759,716,638,568,506,470}; // 音符频率int Beat[9] = {0,105,116,132,140,157,176,198,209}; // 节拍周期int Music[Max_Note] = {5,2,8,2,5,2,4,2,3,2,2,2,1,4,1,2,1,2,2,2,3,2,3,2,1,2,3,2,4,2,5,8}; // 乐谱(奇数为音符,偶数为节拍)int Note_n; // 记录乐谱音符节拍模拟指针int Count; // 记录单个音符播放时间int Play_on; // 判定是否从头开始播放音乐( 0_从头开始播放/ 1_音乐正在播放)void port_init(void){PORTA = 0x00;DDRA = 0x00;PORTB = 0x00;DDRB = 0x00;PORTC = 0x00;DDRC = 0x00;PORTD = 0x08; // PD3 (INT1) 按键下降沿触发打开内部上拉电阻DDRD = 0x20; // PD5 (OCR1A) 输出模式脉冲驱动发声}void timer1_init(void){TCCR1B = 0x00; // 关闭T1TCNT1H = 0x00;TCNT1L = 0x00;OCR1AH = 0x00;OCR1AL = 0x00;OCR1BH = 0x00;OCR1BL = 0x00;ICR1H = 0x00;ICR1L = 0x00;TCCR1A = 0x40;TCCR1B = 0x08; //打开T1 ——设置无时钟源模式——停止T1}#pragma interrupt_handler timer1_compa_isr:iv_TIM1_COMPA // T1 比较匹配中断void timer1_compa_isr(void){if(!Play_on) // 从头开始播放音乐{Note_n = 0; // 乐谱音符节拍模拟指针指向乐谱第一个音符Count = 1; // 设置单个音符播放时间= 0 目的:兼容--Count,方便设置Play_on = 1; // 阻止从头开始播放}else // 正在进行音乐播放{if(--Count == 0) // 判定是否完成当前音符的播放时间(0 ——一个音符播放完成,修改设置下个音符){TCCR1B = 0x08; // 停止T1if(Note_n < Max_Note) // 判定是否播放完成所有音符{OCR1A = Note[Music[Note_n]]; // 从乐谱中提取音符,再由音符确定PWM 波频率Count = Beat[Music[Note_n]]; // 从乐谱中提取音符,再由音符确定1/4拍时间Note_n++; // 乐谱音符节拍模拟指针指向乐谱节拍Count = Count * Music[Note_n];// 单个音符播放时间= 1/4节拍音符本身所需震动频率周期* 乐谱节拍(N个1/4节拍)Note_n++; // 乐谱音符节拍模拟指针指向乐谱音符TCCR1B = 0x09;}else{Play_on = 0; // 允许从头开始播放}}}}#pragma interrupt_handler int1_isr:iv_INT1void int1_isr(void){if(!Play_on){TCCR1B = 0x09; // 不经过分配器模式——启动T1 }}void init_devices(void){CLI();port_init();timer1_init();MCUCR = 0x08;GICR = 0x80;TIMSK = 0x10;SEI();}int main(){init_devices();while(1){}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
uchar i,j;
for( i = 0;i < n; i++ )
{
for( j = 0;j < 3;j++ )
ቤተ መጻሕፍቲ ባይዱ _NOP();
}
}
/*******************************************
#pragma vector = TIMERA0_VECTOR
__interrupt void TimerA_ISR(void)
{
counter++;
}
/*******************************************
函数名称:Delay_Nms
程序功能:MCU控制蜂鸣器演奏歌曲《祝你平安》
----------------------------------------------
拨码开关设置:将BUZZER位拨至ON,其余位拨至OFF
测试说明:聆听蜂鸣器“唱出”的乐曲
既然是演奏乐曲对于一个音符应该包括两个部分
一是声调 二是持续时间,在这个程序中声调是用简单的
{
TACTL &=~MC_1; //停止计数
Delay_Nms(100);
}
else if ( Temp1 == 0x00 ) //歌曲结束符
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
/*------选择系统主时钟为8MHz-------*/
BCSCTL1 &= ~XT2OFF; // 打开XT2高频晶体振荡器
{
counter = 0;
break;
}
}
}
}
}
return;
}
else
{
Temp2 = SONG[addr++];
TACTL |=MC_1; //开始计数
while(1)
uchar addr = 0;
counter = 0; //中断计数器清0
while(1)
{
Temp1 = SONG[addr++];
if ( Temp1 == 0xFF ) //休止符
#include "music.h"
#define Buzzer BIT7
#define Buzzer_Port P6OUT
#define Buzzer_DIR P6DIR
uchar counter;
void Play_Song(void);
do
{
IFG1 &= ~OFIFG; //清除晶振失败标志
for (i = 0xFF; i > 0; i--); // 等待8MHz晶体起振
}
while ((IFG1 & OFIFG)); // 晶振失效标志仍然存在?
BCSCTL2 |= SELM_2 + SELS; //主时钟和从时钟都选择高频晶振
//设置定时器A每10ms中断一次
CCTL0 = CCIE;
CCR0 = 10000;//改变这个值就改变了演奏的速度
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0XFF;
P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换
Play_Song();
}
}
/*******************************************
函数名称:TimerA_ISR
功 能:定时器A的中断服务函数
参 数:无
返回值 :无
********************************************/
延时-电平翻转来实现的,改变了延时的时间就改变了
声调,而时间是通过计数比较来实现的,当计数值相等时
就跳出循环演奏下一个音符。
*********************************************/
#include <msp430x14x.h>
typedef unsigned char uchar;
/***************主函数****************/
void main(void)
{
uchar i;
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF;P1OUT = 0XFF;
P2DIR = 0XFF;P2OUT = 0XFF;
功 能:延时N个ms的函数 ps:不知道这个地方怎么算出来的是延时毫秒
参 数:n--延时长度
返回值 :无
********************************************/
void Delay_Nms(uchar n)
{
Buzzer_Port ^= Buzzer;//电平取反
Delay_Nms(Temp1);//Temp1的值决定了延时的长短,也决定了声音的频率
if ( Temp2 == counter )//决定了音调持续的时间,计数时间到时就跳出循环演奏下一个。
TACTL |= TASSEL_2 + ID_3;
//设置控制蜂鸣器的IO方向为输出
Buzzer_DIR |= Buzzer;
//打开全局中断
_EINT();
//循环演奏歌曲
while(1)
{
函数名称:Play_Song
功 能:播放《祝你平安》的乐曲
参 数:无
返回值 :无
********************************************/
void Play_Song(void)
{
uchar Temp1,Temp2;