MPS430F149单片机之_蜂鸣器
单片机蜂鸣器工作原理单片机驱动蜂鸣器原理与编程
单片机蜂鸣器工作原理单片机驱动蜂鸣器原理与编程蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。
多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
下面是电电磁式蜂鸣器实物图:磁式蜂鸣器的外形图片及结构图。
电磁式蜂鸣器结构示意图:图1电磁式蜂鸣器内部构成:1.防水贴纸2.线轴3.线圈4.磁铁图25.6.7.8.底座引脚外壳铁芯9.封胶10.小铁片11.振动膜12.电路板一、电磁式蜂鸣器驱动原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。
S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图3:S51增强型单片机实验板蜂鸣器驱动原理图:图3如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。
程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
单片机蜂鸣器发声代码
单片机蜂鸣器发声代码蜂鸣器是一种常见的电子元件,可以发出短促的蜂鸣声用于提醒或警示。
在单片机应用中,蜂鸣器可以用来作为声音提示的一种方式。
下面介绍一段单片机蜂鸣器的发声代码。
1. 引脚连接在使用单片机控制蜂鸣器发声之前,需要将蜂鸣器与单片机的引脚连接。
通常情况下,蜂鸣器有两个引脚,其中一个为正极,一个为负极。
将蜂鸣器的正极连接到单片机的一个IO口上,将负极连接到单片机的GND上。
2. 代码实现单片机发出频率为f的声音,需要将IO口以1/f的频率高低电平切换。
以下是一个基本的单片机蜂鸣器发声代码:#include 'reg51.h' //单片机头文件#define BEEP P1_5 //定义蜂鸣器连接的IO口void Delay(unsigned int Time) //延时函数{unsigned int i,j;for(i=Time;i>0;i--)for(j=110;j>0;j--);}void Beep(unsigned int Time) //发出一次蜂鸣声{BEEP = 0; //使IO口输出低电平Delay(Time); //延时BEEP = 1; //使IO口输出高电平Delay(Time); //延时}void main(void){while(1){Beep(100); //发出100ms的蜂鸣声}}在上述代码中,我们首先定义了蜂鸣器连接的IO口为P1_5,然后定义了一个延时函数Delay和一个发出蜂鸣声函数Beep。
Delay函数用于延时,Beep函数用于发出一次蜂鸣声。
在main函数中,我们使用一个while循环不停地发出蜂鸣声。
在Beep函数中,我们首先使IO口输出低电平,然后延时一段时间,再使IO口输出高电平,再延时一段时间,从而在IO口上形成一个频率为1/(2*Time)的方波信号,从而发出蜂鸣声。
3. 修改参数如果我们想要修改蜂鸣器发出的声音的频率和时长,只需要在Beep函数中修改Time的值即可。
用单片机驱动蜂鸣器的演奏说明
用单片机驱动蜂鸣器演奏的方法说明音的产生是由于物体的振动,通过单片机供电来控制蜂鸣器振动来发声。
单片机IO 口通过高低电平快速切换形成频率可以驱动蜂鸣器发音。
这样蜂鸣器就会以不同的音调“鸣响”。
这里主要理解“音调”和“节拍”两个概念。
音调表示一个音的频率是多少。
即就是音的高低。
在钢琴上,中央C 所在音阶的A ,(C D E F G A B )A 的频率作为基准频率,440Hz 。
同时,需要知道如果f2 = f1*2,则称f2是f1的高八度,即f2和f1的音名相同,高度高了一个音阶。
按照钢琴12平均律,将一个音阶的音均分成12份,那么每一个对应的音都可以计算出确定的频率了。
注意!八度音指频率加倍,将八度音分为12等份,是分为12个等比级数。
f2=f1*2,且f1*12q =f2,可以计算,这个等比数列的比值是q=122=1212=1.05946.为了实现不同音的频率,需要单片机通过定时器不停的产生中断,实现管脚电平反转,来产生相应频率。
这时定时器装载初始值如何计算呢?以标准A 为例,A (f=440Hz),T=1/f=1/440=0.00227273s=2272.73us ,即单片机管脚要输出周期为2272.73us 或者f=440Hz 的方波。
通过单片机定时中断来实现反转的话,考虑单片机定时器装载数值为多少才能形成2272us 的定时中断呢?假设系统时钟8MHz ,则x/8MHz=2272.73us ,x = 18181.1818... x 取整数18181,即定时器应装载18181,才能产生440Hz 的频率。
对应参考表格FIG1.音名 C C# D D# E F F# G G# A A# B 大字组频率f(Hz)65 69 73 78 82 87 92 98 104 110 117 123 周期T(us)15289 14431 13621 12856 12135 11454 10811 10204 9631 9091 8581 8099音名 c c# d d# e f f# g g# a a# b 小字组频率f(Hz)131 139 147 156 165 175 185 196 208 220 233 247 周期T(us)7644 7215 6810 6428 6067 5727 5405 5102 4816 4545 4290 4050音名c1(中央C)c1# d1 d1# e1 f1 f1# g1 g1#a1(基准音)a1# b1小字1组频率f(Hz)262 277 294 311 330 349 370 392 415 440 466 494 周期T(us)3822 3608 3405 3214 3034 2863 2703 2551 2408 2273 2145 2025音名c2 c2# d2 d2# e2 f2 f2# g2 g2# a2 a2# b2 小字2组频率f(Hz)523 554 587 622 659 698 740 784 831 880 932 988 周期T(us)1911 1804 1703 1607 1517 1432 1351 1276 1204 1136 1073 1012音名c3 c3# d3 d3# e3 f3 f3# g3 g3# a3 a3# b3 小字3组频率f(Hz)785 832 881 933 989 1048 1110 1176 1246 1320 1398 1482 周期T(us)1274 1203 1135 1071 1011 954 901 850 803 758 715 675FIG 1.节拍音乐的调号和节拍被表示成 1=C44或者1=G 43,其中的C,或者G 或者位于“=”之后的其他音名表示的意思是,以这个音名作为基础,唱作do 。
应用MSP430F149单片机的超低频波形发生器
应用MSP430F149单片机的超低频波形发生器摘要:介绍了应用MSP430F149芯片开发超低频波形发生器的设计原理及其在生理滤波器调试中的应用。
关键词:MSP430F149芯片单片机波形发生器滤波系统在载人运输系统振动分析仪中常用超低频波形发生器作为仿真的信号源。
要求在0.1Hz~100Hz范围内稳定工作,波形失真小,且能以0.1Hz为步长细调。
传统超低频波形发生器设计中存在着很多的不足:(1)应用通用电路,元器件多,尤其是电容的体积大,且波形的稳定性差、失真大,调节上极不方便;(2)应用专用电路,如ICL8038、MAX038,其失真和稳定性方面有明显提高,但在超低频应用上仍不合适。
而且电路调节器件多,对电源的要求较高,代价较大。
鉴于目前开发的振动分析仪常采用微控制器,利用其富余的软硬件资源,建立调节方便、高精度的超低频波形发生器,极有推广价值。
根据《铁路车辆内旅客振动舒适性评价准则》UIC513国际标准开发的SSD-J-2振动舒适度测量仪是基于MSP430F149的三维振动便携式分析仪,内含上下、左右、前后振动的生理滤器。
为了调整和标定这组生理滤波器的精度,利用该单片机的一个PWM输出端配上II型的RC滤波,在软件支持下构成调节方便的超低频波发生器。
经实用表明其性能达到UIC513标准的技术要求。
1 MSP430F149的内部结构MSP430F149 是美国TEXAS INSTRUCMENTS公司最新推出的16位超低功耗混合信号单片机,带有Flash 存储器,具备很强的灵活性,方便修改代码及产品售后升级。
它采用精简指令集(RISC),125ns指令周期,大部分的指令在一个指令周期内完成。
1.8V~3.6V的供电电压,其超低功耗(供电电压2.2V,工作频率 32kHz时,工作电流为7μA;供电电压2.2V,工作频率1MHz时,工作电流为250μA.)使超低频波形发生器可被设计成电池供电且长时间工作的系统。
基于msp430f149单片机制作的简易自动抽油烟机的设计
目录摘要.............................................................第一章绪论.......................................................油烟的危害...............................................油烟机、评定............................................第二章系统结构与原理............................................. 第三章硬件设计与计算.............................................检测电路设计............................................3.1.1 煤气检测...........................................3.1.2 油烟检测...........................................3.1.3 按键输入...........................................3.1.4 系统自动复位电路...................................主控制电路设计..........................................3.2.1 AT89C51............................................3.2.2 对油烟机的开关控制.................................3.2.3自动照明控制.......................................3.2.4定时显示电路.......................................3.2.5报警电路........................................... 第四章软件程序设计...............................................软件设计................................................4.1.1 主程序的设计.......................................4.1.2 中断键盘扫描.......................................4.1.3 LED显示子程序.....................................4.1.4 INTI中断报警服务程序.............................. 第五章结论.......................................................参考文献..........................................................第三章硬件设计与计算检测电路设计3.1.1 煤气检测1 对气敏元件的选择对煤气检测选用气敏电阻,气敏电阻是一种半导体敏感器件,它是利用气体的吸附而使半导体本身的电导率发生变化这一机理来进行检测的。
毕业设计-单片机控制蜂鸣器
图3 JH51多功能实验板LED数码管部分电路图8 9 A B C D E F80H 90H 88H 83H 0C6H 0A1H 86H 8EH数码管显示程序请参考51多功能单片机综合测试程序,LED数码管显示部分。
.按键输入口的P3.0~P3.3接了K1~K4共4 个按钮开关,用作键盘。
.字符型液晶接口液晶显示器由于体积小、重量轻、功耗低等优点,日渐成为各种便携式电子产品的理想显示器。
从液晶显示器显示内容来分,可分为段式、字符式和点阵式三种。
其中字符式液晶显示器以其价廉、显示内容丰富、美观、无须定制、使用方便等特点成为LED显示器的理想替代品。
字符型液晶显示器专门用于显示数图形符号并可显示少量自定义符号。
这类显示器均把LCDvoid T1_ISR() interrupt 3{ TR1 = 0;TH1 = ReloadH;TL1 = ReloadL;TR1 = 1;SPEAKER = !SPEAKER; //音乐声频的半个波}/************************************************************* 函数:Delay()功能:延时0.001~65.536s参数:t>0时,延时(t*0.001)st=0时,延时65.536s*************************************************************/ void Delay(unsigned int t){ do{ TH0 = 0xFC; //定时器赋初值,定时1msTL0 = 0x66+17;TR0 = 1; //启动定时器while ( !TF0 ); //等待定时器溢出TR0 = 0; //关闭定时器TF0 = 0; //清除溢出标志} while ( --t != 0 ); //循环t次}/*********************************************************** 函数:Sound()功能:演奏一个音符参数:*note,音符指针,指向要演奏的音符***********************************************************/ void Sound(CNote *note){ //利用定时器T1发出音符的频率if ( note->mFreq != 0 ){ ReloadH = (unsigned char)(note->mFreq >> 8);ReloadL = (unsigned char)(note->mFreq);TH1 = 0xFF;TL1 = 0xF0;TR1 = 1;}Delay(note->mDelay); //发声延时TR1 = 0; //停止发声TF1 = 0;SPEAKER = 1;Delay(5);}/************************************************************ 函数:Play()功能:演奏一段乐曲参数:music[],要演奏的乐曲*************************************************************/ void Play(CNote music[]){ unsigned int n = 0;while(1){ if ( music[n].mDelay == 0 ) break;Sound(&(music[n]));n++;}}#include "MusicTab.h" //包含乐曲头文件void main() //主程序{unsigned int i,j;TMOD = 0x11; //设定时器EA = 1;ET1 = 1;成绩评定。
基于MSP430F149单片机实现的步进电机通用控制器
1.前言基于步进电机的控制系统,除了步进电机一般还需要专门的驱动电源,驱动电源仅仅完成功率驱动部分,用户并不能使整个控制系统按预定的、期望的工作状态运行,必须对它的驱动电源予以控制,用户需要再次开发。
鉴于此,设计了基于MSP430F149单片机实现的步进电机通用控制器,可以满足大多数控制场合下的要求。
控制器的主要功能为:①可控制多套步进电机驱动系统;目前可同时控制3套系统。
②工作方式灵活,可按设定的曲线运行,曲线最多达8段;可按外部检测到的控制信号运行;可按模拟调节测试功能运行;2.系统的设计2.1系统的结构本控制器主要实现了多台步进电机在多段曲线上的运行控制。
系统结构如图1所示。
本设计选用了TI公司所生产的MSP系列单片机MSP430F149。
目的是应用其丰富的接口资源和强大的定时器功能,MSP430F149的性能特点如下:①6个八位并行接口;完全可以实现该系统所有信号的输入、输出,无须硬件扩展,其中P1、P2八位并行端口的每根口线都具有中断功能,使键盘的软、硬件设计变的非常简单。
②12位A/D转换器ADC;完成模拟设定功能。
③强大的定时器功能;TIMER-A3、TIMER-B7分别为带有3个和7个捕捉/比较寄存器的16位定时器,可以满足系统速度的设定及曲线定时的要求。
④液晶驱动模块;⑤内置2KB RAM、60KB的FLASH;MSP430F149所提供的丰富资源,外围硬件扩展只需做很少的工作,不仅设计变得非常简单,而且该控制器体积小、可靠性高。
2.3步进电机起动及加/减速控制方案步进电动机的最高起动频率(突跳频率)一般为0.1KHz到3-4KHz,而最高运行频率则可以达到N*102 KHz。
以超过最高起动频率的频率直接起动,将出现"失步"现象,甚至无法起动。
较为理想的起动曲线,应是按指数规律起动。
但实际应用对起动段的处理可采用按直线拟合的方法,即"阶梯升速法"。
MPS430F149单片机之_基于单片机的中文实验
for(i = 0;i < 32 - (256 - nTemp);i++)
{
DianZhen[i + 256 - nTemp] = ReadByte(1,i,nRow);
}
}
}
else
{
//不在同一页
for(i = nTemp;i < 512;i++)
{
DianZhen[i] = ReadByte(0,nTemp + i,nRow);
}
}
else
{
//在SM卡的第2区
for(i = nTemp;i < 256;i++)
{
DianZhen[i] = ReadByte(0,i,nRow);
}
}
else if((nTemp >= 256) && (nTmp < 256))
{
for(i = nTemp;i < 512;i++)
{
pBuf[i] = ReadByte(1,i,nRow);
}
for(i = 0;i < nTmp;i++)
{
DianZhen[i] = ReadByte(0,nTemp + i,nRow);
}
}
else if((nTmp > 255) && (nTmp < 512))
{
//在SM卡的第1区
if(nTemp < 256)
{
for(i = 0;i < 32;i++)
单片机蜂鸣器工作原理
单片机蜂鸣器工作原理
单片机蜂鸣器的工作原理可以通过以下几个步骤来详细说明:
1. 开启单片机输出:单片机将特定的I/O口配置为输出模式,准备输出电平信号给蜂鸣器。
2. 控制蜂鸣器:单片机将配置为输出状态的I/O口输出高电平或低电平信号,控制蜂鸣器的工作状态。
3. 发出声音信号:当单片机将输出口电平切换为高电平时,电流会通过蜂鸣器中的线圈,产生磁场。
此时,磁场会吸引蜂鸣器中的振动片向电磁铁靠近。
4. 振动片振动:当振动片受到电磁铁的吸引,它就会向电磁铁靠近,并与之接触。
由于振动片和电磁铁之间的接触是周期性的,因此振动片会产生周期性的振动。
5. 发出声音:振动片的振动会引起蜂鸣器壳体内气体的周期性振动,从而产生声波。
这些声波会通过蜂鸣器的震荡孔传播出去,从而发出声音。
总结起来,单片机通过控制I/O口的输出电平信号,改变蜂鸣器中的磁场分布,进而使蜂鸣器内部的振动片产生振动,最终发出声音。
基于MSP430F149为主芯片下的红外线解码资料源程序
头文件<InfraredRX.h>/***MODU+********************************************************************/ /* Copyright (c) 2009.04 WH, All Rights Reserved. *//* FileName : DS18B20.h *//* Description : The Led define *//* History : *//* [Author] [Date] [Version] [Description] *//* [1] dragonhzw 2009/04/09 Ver 1.0.0 Initial file. *//***MODU-********************************************************************/ #ifndef __MSP430_TEST_INFRAREDRX_H__#define __MSP430_TEST_INFRAREDRX_H__//--------------------------------------------------------------------------------//6种接收状态#define IR_Idle 0//空闲#define IR_WaitStart 1//接收引导代码#define IR_GetAddress 2//接收地址#define IR_GetAddressInv 3//接收地址反码#define IR_GetData 4//接收数据#define IR_GetDataInv 5//接收数据反码#define ms_168 0x0690#define ms_9 0x2328#define ms_125 0x30D4#define ms_15 0x3A98//--------------------------------------------------------------------------------void delay_ms(unsigned long ms);#endif/* __MSP430_TEST_INFRAREDRX_H__ */InfraredRX.c//***************************************************************************** *// MSP430P149 Demo - InfraredRX, Ultra-Low Pwr UART 9600 Echo ISR, 32kHz ACLK//// Description: Echo a received character, RX ISR used. Normal mode is LPM3,// USART1 RX interrupt triggers TX Echo.// ACLK = UCLK1 = LFXT1 = 32768, MCLK = SMCLK = DCO~ 800k// Baud rate divider with 32768hz XTAL @9600 = 32768Hz/9600 = 3.41 (0003h 4Ah )// //* An external watch crystal is required on XIN XOUT for ACLK *//////// MSP430F149// -----------------// /|\| XIN|-// | | | 32kHz// --|RST XOUT|-// | |// | |// | P2.7 |<----INR_RXD// | |//// Copyright (c) 2009.04 WH, All Rights Reserved.// WebSite:// Description : The InfraredRX module// History :// [Author] [Date] [Version] [Description]// [1] dragonhzw 2009/04/09 Ver 1.0.0 Initial file.//// Built with IAR Assembler for MSP430V3.20A/W32 (3.20.1.9)//***************************************************************************** *#include <msp430x14x.h>#include "InfraredRX.h"//-------------------------------------------------------------------------------unsigned char dis_code[18] = {0x3f,0x06,0x5b,0x4f,0x66, //段码表// 0 1 2 3 4 对应内容0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,0x5e,0x79,0x71,0xff};// 5 6 7 8 9 A B C D E Funsigned char dis_0 = 0; // 个位值unsigned char dis_1 = 0; // 十位值unsigned char dis_2 = 0; // 百位值unsigned char dis_3 = 0; // 千位值unsigned char IR_State=IR_Idle;//接收状态变量,初值为空闲unsigned char IR_Ready=0;//数据接收完标志unsigned char IR_Repeat=0;//连发标志unsigned char IR_Data[4]={0,0,0,0};//接收到的4字节数据unsigned char Tmp;unsigned char IRtimer=0;//--------------------------------------------------------------------------------/***FUNC+*********************************************************************/ /* Name : Port2INT */ /* Descrp : 端口1中断处理程序*/ /* Input : num. */ /* Output : None. *//* Return : None. *//***FUNC-*********************************************************************/ #pragma vector=PORT2_VECTOR__interrupt void Port2INT(void){unsigned int Count;//红外线接收头中断if(P2IFG&BIT7){Count= TAR;//读取计数值TACTL|=MC0+TACLR;//定时器B重新开始计数switch(IR_State){case IR_Idle:{IR_State = IR_WaitStart;IRtimer = 11;break;}case IR_WaitStart:{if((Count>ms_125)&&(Count<ms_15)){//接收到引导码IR_Data[0]=0;IR_Data[1]=0;IR_Data[2]=0;IR_Data[3]=0;Tmp=1;IR_Repeat=0;IR_State=IR_GetAddress;}else if((Count>ms_9)&&(Count<ms_125)){//接收连发代码IR_Repeat=1;IR_State=IR_Idle;}else{IR_State=IR_Idle;}break;}case IR_GetAddress:{if(Count>ms_168){//接收到1IR_Data[0]|=Tmp;}Tmp<<=1;if(!Tmp){IR_State=IR_GetAddressInv;Tmp=1;}break;}case IR_GetAddressInv:{if(Count>ms_168){//接收到1IR_Data[1]|=Tmp;}Tmp<<=1;if(!Tmp){IR_State=IR_GetData;Tmp=1;}break;}case IR_GetData:{if(Count>ms_168){//接收到1IR_Data[2]|=Tmp;}Tmp<<=1;if(!Tmp){IR_State=IR_GetDataInv;Tmp=1;}break;}case IR_GetDataInv:{if(Count>ms_168){//接收到1IR_Data[3]|=Tmp;}Tmp<<=1;if(!Tmp){if(((IR_Data[0]^IR_Data[1])==0xFF)&&((IR_Data[2]^IR_Data[3])==0xFF))IR_Ready=1;//校验数据IR_State=IR_Idle;}break;}default:{IR_State=IR_Idle;break;}}}P2IFG=0x00;//清除中断标志位}/***FUNC+*********************************************************************/ /* Name : InitTimerA */ /* Descrp : 定时器A初始化*/ /* Input : num. */ /* Output : None. *//* Return : None. *//***FUNC-*********************************************************************/ void InitTimerA(void){TACTL=TASSEL1+ID1+ID0+MC0+TACLR;//选择1/8SMCLK 增计数清除TARTACCR0=65535;//时间间隔10ms}/***FUNC+*********************************************************************/ /* Name : InitTimerB *//* Descrp : 定时器B初始化*/ /* Input : num. */ /* Output : None. *//* Return : None. *//***FUNC-*********************************************************************/ void InitTimerB(void){TBCTL=TBSSEL1+ID1+ID0+MC0+TBCLR;//选择1/8SMCLK 增计数清除TBRTBCCTL0=CCIE;//CCR0中断允许比较模式TBCCR0=10000;//时间间隔10ms}/***FUNC+*********************************************************************/ /* Name : TimerBINT */ /* Descrp : 定时器B中断*/ /* Input : num. */ /* Output : None. *//* Return : None. *//***FUNC-*********************************************************************/ #pragma vector=TIMERB0_VECTOR__interrupt void TimerBINT(void){if(IRtimer){IRtimer--;}else{IR_State = IR_Idle;//解码超时}}/***FUNC+*********************************************************************/ /* Name : Init_CLK */ /* Descrp : Set PLL Clock. *//* Input : None. *//* Output : None. *//* Return : None. *//***FUNC-*********************************************************************/ void Init_CLK(void){int index;BCSCTL1&=~0X00; //打开XT2振荡器do{IFG1 &= ~OFIFG; // 清除振荡器失效标志for (index = 0xFF; index > 0; index--)// 延时,等待XT2起振{;}} while ((IFG1 & OFIFG) != 0);// 判断XT2是否起振BCSCTL2 =SELM_2+SELS; //选择MCLK、SMCLK为XT2}/******* 红外遥控器键值表******45 46 4744 40 4307 15 0916 19 0d0c 18 5e08 1c 5a42 52 4a**********************************//***FUNC+*********************************************************************/ /* Name : main */ /* Descrp : 主程序*//* Input : num. *//* Output : None. *//* Return : None. *//***FUNC-*********************************************************************/ void main( void ){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗Init_CLK();//时钟初始化//Init_UART1();InitTimerA();//定时器A初始化InitTimerB();//定时器B初始化/****************************************************************************/ /* 1、初始化数码管引脚*//****************************************************************************/ // 将P4设置为I/O口P4SEL = 0x00;// 将P4设置为输出方向P4DIR = 0xFF;// 将P4口输出全高P4OUT = 0xFF;// 将P3设置为I/O口P3SEL = 0x00;// 将P3设置为输出方向P3DIR |= 0x0F;P3OUT = 0x0F;/****************************************************************************/ /* 2、初始化红外线接收引脚*//****************************************************************************/P2DIR&=~BIT7;//P2.7设置为输入方向P2IES|=BIT7;//P2.7下降沿触发中断P2IE|=BIT7;//P2.7中断允许_EINT();//打开中断while(1){if(IR_Ready==1){ //计算要显示的每位数字while(1){ //计算要显示的每位数字IR_Ready=0;dis_0 = (IR_Data[2]&0xF0)>>4;//数码管后2位显示数据P4OUT = dis_code[dis_0];P3OUT &= ~BIT1; // 开第一个显示(P2.2口控制个位数码管)delay_ms(5);P3OUT |= BIT1; // 关第一个显示(P2.2口控制个位数码管)dis_1 = (IR_Data[2]&0x0F);P4OUT = dis_code[dis_1];P3OUT &= ~BIT2; // 开第一个显示(P2.2口控制个位数码管)delay_ms(5);P3OUT |= BIT2; // 关第一个显示(P2.2口控制个位数码管)P4OUT =0x76;//'H'P3OUT &= ~BIT3; // 开第一个显示(P2.2口控制个位数码管)delay_ms(5);P3OUT |= BIT3; // 关第一个显示(P2.2口控制个位数码管) }}}}/***FUNC+*********************************************************************/ /* Name : delay_ms */ /* Descrp : delay time *//* Input : num. */ /* Output : None. *//* Return : None. *//***FUNC-*********************************************************************/ void delay_ms(unsigned long ms) // 延时毫秒@12M,ms最大值255{unsigned char i;while(ms--)for(i = 0; i < 124; i++);}。
MSP430F149的智能火灾报警系统的
MSP430F149 的智能火灾报警系统的
摘要:以单片机MSP430F149 为主控芯片,设计出一款高精度、高集成度、超低功耗的智能火灾报警系统。
以环境温度、烟雾浓度作为判断火
灾的依据,完成了对火灾的预警。
主要由单片机控制模块、时钟模块、烟雾
浓度测量模块、DS18B20 温度测量模块、声光报警模块、1602 液晶显示模块和电源构成。
并且该系统以MSP430F149 为下位机,完成数据采集、预处理以及对现场装置的控制,以PC 机为上位机,完成各种复杂的数据处理和对单片机的控制。
设计的智能火灾报警系统具有较高的可靠性、稳定性、准
确度高,对不同类型的火灾都具有较高的灵敏度,达到了降低误报率的目
的。
引言
火灾严重威胁着人类的生命财产安全,每年我国由火灾引起的灾难数不胜数,然而,准确、及时的对火灾进行预测已成为迫在眉睫的事情。
目
前,火灾探测技术是预防火灾发生的最有效的手段,根据火灾发生初期的迹
象来判断并进行预测,从而使人们在第一时间对这些迹象进行处理,有效的
减少了火灾的发生。
基于MSP430f149单片机的智能家居监控系统设计_田芳明
第4期随着生活标准的提高,更多的人需求更好的家居环境,智能家居设计已成为世界的潮流。
智能家居是以住宅为平台,利用综合布线技术、网络通信技术、智能家居—系统设计方案安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统,提升家居安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。
在中国,智能家居系统的研究起步较晚,但发展较快。
2003年,IGRS (Intelligent Grouping and Resource Sharing )标准工作组成立,现在,更多的人在研究智能家居控制的理论,但实际使用比较少。
主要原因有以下几个方面:通信协议没有统一,产品不兼容和不成熟,复杂的操作和实用性差别,个性化不够,传统家电没有得到充分开发和利用。
根据家庭用户的一般需求,设计了基于低功耗单片机MSP430f149的智能家居监控系统,设计的系统不仅可以控制各种家用电子设备的开关,而且还可以查看它们的状态,同时可以动态检测各种家居环境参数,进行远程调控等。
1系统总体结构设计及工作原理系统设计分为上位机和下位机两个部分。
包括MSP430f149单片机核心控制模块,供电模块,串口接口模块,无线遥控模块,报警器模块,烟雾传感器模块,温湿度传感器模块,电风扇模块,电灯模块等。
下位机部分以MSP430f149单片机为系统核心部件,用电风扇、电灯来模拟家用电器,通过继电器来控制风扇的开关、电灯的亮灭。
电风扇、电灯的开关可以在上位机控制界面上操作,也可以通过无线遥控进行。
用DHT11温湿度传感器采集环境温度、基于MSP430f149单片机的智能家居监控系统设计田芳明,李腾(黑龙江八一农垦大学信息技术学院,大庆163319)摘要:系统以MSP430f149单片机为系统核心部件,采用温湿度传感器实时采集家居环境温度、湿度数据并传送到上位机显示,烟雾传感器实时采集家居烟雾浓度,当发生火灾或燃气泄漏时可报警,在下位机中以电风扇、电灯模拟家用电器,采用有线、无线两种方式进行家用电器开关控制。
基于MSP430F149单片机的电子音乐播放器设计及实现
基于MSP430F149单片机的电子音乐播放器设计及实现宋苏影;王宏华【摘要】设计了一种以MSP430F149单片机为控制核心的电子音乐播放器,利用ULN2003A功放电路驱动蜂鸣器发出音乐,使用按键实现曲目播放与选择,采用LCD显示歌曲序号并具有彩灯随节奏闪烁等功能.运行实验表明,所设计的播放器具有运行稳定,硬件电路简单,软件功能完善,控制系统可靠等优点.【期刊名称】《机械制造与自动化》【年(卷),期】2016(045)002【总页数】4页(P210-212,216)【关键词】MSP430F149单片机;电子音乐播放器;蜂鸣器【作者】宋苏影;王宏华【作者单位】河海大学能源与电气学院,江苏南京211100;河海大学能源与电气学院,江苏南京211100【正文语种】中文【中图分类】TP391.4目前,市场上的电子音乐播放器各式各样,功能越来越完备,大都采用集成电路设计。
以MSP430单片机作为主控制单元设计的电子音乐播放器具有结构简单,控制方便,价格低廉等优点,既可实现基本播放功能,还可选择曲目、显示当前播放曲目的序号和名称,以及实现曲目不同彩灯样式不同的功能。
本文设计的电子音乐播放器以MSP430F149单片机为控制核心,由按键中断电路、时钟复位电路、功率放大及发声电路、LCD模块、彩灯显示模块等组成,其结构框图如图1所示。
按照结构框图设计所得样机如图2所示。
图1中,时钟电路产生单片机所需的时钟信号,主要由8 MHz晶振产生;复位电路保证单片机的正常工作;暂停/播放和曲目切换键分别通过定时器捕获中断和MSP430单片机Px(x=1,2)口的外部中断实现[1];点阵式字符型液晶显示模块LCD1602显示提示信息、曲目序号及名称;功放发声电路实现歌曲信号的放大;彩灯闪烁电路实现随歌曲节奏闪烁的动态效果。
单片机是主控中心,控制协调系统各个模块的工作。
电子音乐播放器设计的基本要求如下:1) 内置4首不同的乐曲可供用户选择播放;2) 液晶显示当前播放曲目的序号及名称;3) 可以实现播放/停止和乐曲选择功能;4) 彩灯随歌曲节奏闪烁。
基于msp430控制蜂鸣器演奏乐曲的设计论文_本科论文
基于MSP430控制蜂鸣器演奏乐曲的设计指导老师:队员:学校:延安大学院系:物理与电子信息学院摘要 : 本作品为了实现蜂鸣器演奏音乐,设计基于单片机MSP430,以高低电平控制音调,电流通过蜂鸣器的电磁线圈,从而带动振动膜发声为方案,达到演奏美妙音乐的目的。
技术报告以蜂鸣器演奏音乐的设计为主线,包括蜂鸣器演奏音乐的的框架设计,软硬件设计,以及对灯光随高低电平闪烁的研究等。
基于可靠的硬件设计和稳定的软件算法,实现题目要求。
关键词:单片机MSP430 高低电平蜂鸣器Abstract:This work in order to achieve a buzzer play music, design based on the single chip microcomputer MSP430, with high and low level control tones, the current through the buzzer electromagnetic coils, thus promote vibration membrane voice for plan to meet wonderful music playing the purpose. Technical report to play music of the design of the buzzer main line, including playing music of the framework of the buzzer design, software and hardware design, and with high and low level of lights flashing. Based on reliable hardware design and stable software algorithm, and realize the topic request.Keywords: MSP430 microcontroller High and low level buzzer一、设计要求(1)基于单片机MSP430为主控芯片,利用蜂鸣器发声,以高低电平控制音调,来实现演奏乐曲的功能。
MSP430F149 学习板使用说明
MSP430F149 开发板使用说明2009年09月第一章新手入门1.1 MSP430F149 学习板特点:选用16 位超低功耗单片机MSP430F149,采用子母双板分离设计,MCU 子板与集成外设母板通过插针座连接,使用灵活方便。
ØMCU 的全部IO都用插针引出,便于二次开发提供电源指示灯和上电自动复位、手动复位电路。
2、蜂鸣器实验(1)蜂鸣器1:单频音(步进变音调)(2)蜂鸣器2:奏乐(祝你平安)3、数码管实验(1)数码管1(显示0123)(2)数码管2(动态显示0~F)4、4×1 独立按键实验(1)键盘1:扫描数码管显示5、1602 液晶实验(1)1602 液晶1:动态字符显示(2)1602 液晶2:静态字符显示(3)1602 液晶3:内部时钟显示6、RS232 接口实验(1)RS232 接口1:MCU 发送数据PC 机显示(2)RS232 接口2:按键控制MCU 发送数据PC 机显示(3)RS232 接口3:PC 机发送数据MCU 液晶显示(4)RS232 接口4:MCU 回发接收到的PC 机数据7、RS485 接口实验(1)RS485 接口1:发送程序8、PS2 接口实验(1)PS2 接口1:PS2 控制1602 显示9、12-Bit 高精度温度传感器实验(1)温度传感器1:DS18B20 在液晶显示10、RTC 实时时钟实验(1)实时时钟1:DS1302 测试(2)实时时钟2:DS1302 电子钟11、2k Bit EEPROM 实验(1)EEPROM1:AT24C02 测试(2)EEPROM2:读出数据通过串口在PC 机显示12、12-Bit 模数转换器(ADC)接口实验(1)模数转换器2:ADC 在1602 液晶在显示(2)模数转换器3:ADC 通过串口在PC 机显示13、12864 液晶实验(与12864 液晶配套)(1)12864 液晶并口1:字符显示(2)12864 液晶并口2:汉字显示(3)12864 液晶并口3:图形显示(4)12864 液晶并口4:综合演示(5)12864 液晶串口5:字符显示(6)12864 液晶串口6:汉字显示(7)12864 液晶串口7:图形显示(8)12864 液晶串口8:综合演示14、HS0038红外接口实验(1)红外遥控解码实验,在数码管上显示三、开发板综合程序1、温度时间综合实验(1)DS18B20 + DS1302 + 16022、SSCOM综合实验(1)PC发送接收字符第三章板上资源详解本章详细介绍了MSP430F149 学习板上各个功能模块的硬件电路原理、使用方法和注意事项,使用前请仔细阅读。
单片机中蜂鸣器驱动模块
单片机中蜂鸣器驱动模块在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器來做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。
1.驱动方式由于自激蜂鸣器(有源蜂鸣器)是直流电压驱动的,不需要利用交流信号进行驱动,只需对驱动口输出驱动电平并通过三极管放大驱动电流就能使蜂鸣器发出声音,很简单,这里就不对自激蜂鸣器进行說明了。
这里只对必须用1/2duty的方波信号进行驱动的他激蜂鸣器进行说明。
单片机驱动他激蜂鸣器(无源蜂鸣器)的方式有兩种:一种是PWM输出口直接驱动,另一种是利用I/O定时翻转电平产生驱动波形对蜂鸣器进行驱动。
PWM输出口直接驱动是利用PWM输出口本身可以输出一定的方波來直接驱动蜂鸣器。
在单片机的软体设置中有几个系统寄存器是用來设置PWM口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM输出,PWM输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。
比如频率为2000Hz的蜂鸣器的驱动,可以知道周期为500μs,这样只需要把PWM的周期设置为500μs,占空比电平设置为250μs,就能产生一个频率为2000Hz的方波,通过这个方波再利用三极管就可以去驅動這個蜂鳴器了。
而利用I/O定时翻转电平來产生驱动波形的方式会比较麻烦一点,必须利用计时器來做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用來驱动蜂鸣器了。
比如为2500Hz的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O口每200μs翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty的方波,再通过三极管放大就可以驱动这个蜂鸣器了。
2.蜂鸣器驱动电路由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O口是无法直接驱动的,所以要利用放大电路來驱动,一般使用三极管來放大电流就可以了。
3.蜂鸣器驱动设计由于这里要介绍兩种驱动方式的方法,所以在设计模组系统中将兩种驱动方式做到一块,即程式里边不仅介绍了PWM输出口驱动蜂鸣器的方法,还要介绍I/O口驱动蜂鸣器的方法。