王凤珠,张成蛟,谢少伟
(浙江水利水电学院 电气工程学院,浙江 杭州 310018)
基于STC15L104单片机的音乐门铃设计
王凤珠,张成蛟,谢少伟
(浙江水利水电学院 电气工程学院,浙江 杭州 310018)
提出了一种基于单片机技术的音乐门铃设计方案.门铃以STC15L104单片机为核心,辅以低压差电池反接保护、喇叭驱动、门铃按键三个外围线路.门铃的乐曲通过单片机编程录入,乐曲录入程序采用了单字节压缩编码技术,并具有音调、半音、休止符等处理功能.门铃适合3 V电池供电,并通过单片机低功耗掉电技术,降低了门铃的待机电流,延长了电池的使用时间,实测待机电流低于1 uA.
音乐门铃;单片机(MCU);低功耗;反接保护
传统的音乐门铃是用专用集成电路设计而成,其乐曲选择范围较少.本文介绍一种基于单片机设计而成的音乐门铃,其乐曲可通过单片机编程进行录入,并采用了单字节乐曲压缩编码技术,有节省了贮存空间,具有低、中、高三个音阶的36个音符频率、音调、半音、休止符等处理能力,乐曲的更换修改十分方便.门铃采用3V电池供电,8Ω喇叭时的正常工作电流约50 mA,待机电流小于1 uA,具有电池反接保护功能.加以遥控发射接收模块,可方便地改成遥控音乐门铃.
图1为音乐门铃硬件线路图,主要由STC15L104单片机、SI2302 MOS管、8550三极管、门铃按键K1、喇叭S1等构成,线路采用3伏电池供电,设计非常简单.喇叭驱动采用了8550三极管,适合驱动8Ω、0.5W及以下功率的喇叭.
1.1 STC15L104单片机及外围线路
STC15L104单片机为单时钟/机器周期单片机,指令代码完全兼容传统8 051,但速度快6~12倍.内置4K片内Flash程序存储器及独立的硬件看门狗电路.其工作电压范围为2.4~3.6 V,适合3 V电池供电.掉电模式下电流<0.1 uA,并可由外部中断唤醒.具有高速、低功耗、抗干扰及加密能力强等特点[1].
图1 音乐门铃硬件线路图
如图1所示,STC15L104单片机的外围线路特点如下:
(1)采用内置复位电路.STC15L104单片机设有高可靠内部复位电路,8级可选复位门槛电压,省掉了外部复位电路.
(2)采用内部时钟电路.STC15L104单片机内设高精度R/C时钟,常温下温飘5‰,内部时钟从5~35MHz可选,省掉了外部时钟电路.
(3)单片机引脚配置:STC15L104单片机有8个外围引脚,2、4为电源引脚,其余均为双功能或多功能口线.图1中P3.3为普通IO口线,用于音乐信号产生,P3.2为门铃按键输入口线,配置为外部中断1功能,用于单片机掉电唤醒,触发音乐循环播放.
(4)单片机程序下载:通过P3.0及P3.1(RXD、TXD)口线进行ISP在系统程序下载,程序下载时需采用3V系列的RS232接口线路.
1.2 电池反向保护线路
由于电池在实际使用时容易反向安装,需进行反向保护.为了降低保护线路的导通压降,提高电池的使用时间(如SR360肖特基二极管在50 mA电流下有0.28 V导通压降),采用了低压差MOS管反向保护线路.
图1中MOS管反向保护线路由R1和Q1组成.由于采用3 V电池供电,因此选用了低开启电压SI2302 N沟道MOS管[2],其开启电压VGS(th)在0.65~1.2 V之间,通态电阻RDS为0.110 Ω(VGS=2.5 V,ID=3.1 A),栅极漏电流IGSS为±100 nA.
图1中,由于SI2302有内置保护二极管,因此采用了漏极D接电池负端的接法(如果采用源极S接电池负端,电池反接时内置二极管将导通,失去反向保护作用),其VGS为电池电压减去VDS导通压降的绝对值.其当电池正向安装时,只要VGS大于开启电压,MOS管导通,一旦电池反向安装,MOS管VGS低于开启电压,处于截止状态.
表1列出了不同ISD时MOS管的DS导通压降,ISD为1A时的压降为最大,约61.6 mV.而门铃的实测工作电流低于50 mA,导通压降将低于2.2 mV,远低于SR360肖特基二极管导通压降值.
表1 SI2302 VDS导通压降测试结果
2.1 单片机音乐发声原理
音乐是由一系列特定频率的声音组成,音乐中每一个音符都对应着一种频率,即音频.表2列出C-B调低、中、高三个音阶各音符对应的音频,“#”表示升半音.
要使单片机实现音乐发声,只需让单片机产生与音符所对应的同频方波即可(方波中的直流分量无法使喇叭发声,但与方波同频率的基波可以使喇叭发声).
(1)音频与定时初值.单片机方波由定时器T0中断产生,在每次定时器溢出后,在中断服务程序中将单片机口线取反,可产生方波,T0中断服务流程图(见图2).其定时时间长度为方波周期的一半,设音频为f(Hz),时钟(晶振)频率为fosc(MHz),选用16位定时器,则定时器初值可计算如下:
定时值=216-fosc×106÷(24×f)
以fosc=12 MHz为例,表2中C调低音1的频率为131 Hz,可以计算出定时器是初值为0×F8,0×8D,表2最后一位的频率1 869 Hz频率的初值为0×FF,0×7A.
将表2中所有频率对应初值构成一维数组,即构成音频初值表,通过数组查表的方式,便可得到不同音符对应的定时初值.
音频初值表:uchar code a[]={0×F8,0×8D,……0×FF,0×7A};
图2 T0、T1中断服务程序流程
表2 音频表
注:音频单位为Hz
(2)音调.表2中也包含了其他音调的音符与音频的对应关系.各音调低音1对应的频率列入了表3,相邻二个音调低音1对应的频率在表2中的位置依次后移了一位.其他音符对应的音频也各后退了一位.表3中也列出了其他音调与C调同音符在表2中的位置偏移量,将这一位偏移量称为音调偏移量,如表2最后一位的频率“1 869 Hz”是对应B调高音“7”的频率,与C调高音“7”相差11格,音调偏移量为0 BH.将C调各音符在音频初值表中查表偏移量加上音调偏移量,查音频初值表,可得到各音调音符对应的音频初值.表2中最后一行的音频与第一行的简谱音符并不对应,如1 048 Hz是C#调高音7对应的频率.
表3 各音调低音1对应音频及音调偏移量
注:音频单位为Hz
(3)音速及节拍.音速为乐曲的播放速度,可由一拍的时间确定,音速及节拍时间由单片机定时器T1产生.将定时器一次中断产生的定时时间设为T1=15. 625 mS,将此作为1/8拍时间,则1/8、1/4、1/2、3/4、1拍,所对应的定时中断次数N1分别为01H、02H、04H、06H、08H,在此将N1称作为节拍编码,1拍时定时器将中断8次,其定时时间为125 ms.若将4次中断产生的定时时间62.5 mS作为1/8拍时间,则改变了乐曲的播放速度.将此中断次数称作音速编码N2.如节拍编码N1=8(1拍),音速编码N2=4,则1拍的总定时时间=N1×N2×T1=500 mS.T1中断服务流程图见图2,N1的判断及赋初值可在主程序中处理.
2.2 单字节压缩编码技术
乐谱中每个音符包括音频(音高)和节拍(音长)两个信息,要让单片机能识别包括音频和节拍的乐谱,必须对音符进行编码.为节省空间,采用一个音符对应一个字节的压缩编码技术.音符编码的字节高4位对应节拍及音区编码,低4位为音高编码.
(1)音频编码.音频编码实际上是每个音符在音频初值表中对应的查表偏移量,由于表2中所列的每个音调对应的低、中、高三个音区的频率有36个,无法用半个字节(0-F)进行编码,所以将音频编码分成二个部分即音区编码及音高编码.
音区编码有3个,分别为低音区编码00H,中音区编码0CH,高音区编码18H,音区编码编在高4位中.
音高编码为表2中12个简谱音符对应的编码,为0-B.
音调编码+音区编码+音高编码为某个音调的音符在音频初值表中的查表偏移量,如B调高音7的偏移量=0BH+18H+0BH=2EH,将偏移量×2=2EH×2=5CH(因为1个音符对应2个字节的定时器初值,故需乘2),5CH为1869Hz在音频初值表中对应的定时器初值高字节(0×FF)的下标变量,5CH+01H=5DH即为定时器初值低字节(0×7A)的下标变量.
(2)节拍音区编码.为0—E,共计15个,分三段,第一段的00H—04H,对应的音区编码均为00H,而节拍编码分别为01H、02H、04H、06H、08H,分别对应的1/8、1/4、1/2、3/4、1拍.第二、三段的音区编码为0CH及18H,而节拍编码与第1段相同.表4为节拍音区编码表.
表4 节拍音区编码表(编码为HEX十六进制)
由于高4位包含节拍及音区二个编码,所以需要构成节拍及音区二个一维数组,通过节拍音区编码查取二个一维数组表,得到对应的节拍及音区编码.
节拍编码表:uchar code b[]={0x01,0x02,0x04,0x06,0x08,0x01,0x02,0x04,0x06,0x08; 0x01,0x02,0x04,0x06,0x08};
音区编码表:uchar code c[]={0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x0C,0x0C,0x0C,0x18,0x18,0x18,0x18,0x18};
如节拍音区编码为0BH,以此为偏移量,查“节拍编码表”可得到节拍编码为0x02,对应1/4拍.查“音区编码表”可得到音区编码为0x18,对应高音区.
(3)休止符处理.对休止符编码时可将音高编码设为0x0F,音区设为低音区,节拍编码保持不变.程序中读到音高编码为0x0F时,可关定时器T0,P3.3置“1”,定时器T1仍正常运行.
为播放多首乐曲,采用了music_code所示的二维数组构成乐曲编码表.X表示有X首乐曲,Y表示最长一首乐曲的编码表长度.每首乐曲的第1字节为音调偏移量,第2字节为音速编码,第3字节开始为音符编码,0xFF为结束符(音符编码不可能出现0xFF).
uchar code music_code[X][Y]=
{{0x05,0x04,0x77,0x78,0x94,0xE0,…,0xFF},
…………………………………………………
{……………………第X首…………………}}
2.3 程序主流程图
程序主流程图(见图3),主要实现口线、定时器、中断等初始化,音调偏移量、音速编码初值读取,音符编码解析,节拍编码回零判断,掉电状态进入及唤醒等功能.
图3 程序主流程图
一首乐曲播放完后,由电源控制寄存器PCON(PCON赋0X02,即PD/PCON.1置为1)控制进入掉电模式[3],特别注意在单片机掉电前,应将P3.2、P3.3口置高电平,使Q2截止,电阻R2、R3及喇叭上无电流,以降低静态功耗.进入掉电模式后,通过外部中断可将掉电模式唤醒,唤醒后单片机首先执行设置单片机进入掉电模式语句的下一句(流程中NOP语句),然后进入相应的外部中断服务程序.在外部中断服务程序中只需判断门铃按键是否释放,释放后才退出服务程序,其中断服务程序流程不再给出.
基于STC15L104单片机设计而成的音乐门铃,具有线路简单、低功耗、低成本的特点,图1所示器件的另售成本总价在¥2.8元左右,线路和程序已经过长时间使用,正常可靠,并已提出相关的专利申请.门铃可以面向对乐曲有特定要求的客户进行设计,也十分适合作为DIY设计制作项目或创新性、兴趣性、实用性的单片机综合实训项目,并已作为电子信息工程技术专业的单片机综合实训项目.
[1] 南通国芯微电子有限公司.STC15F100系列单片机器件手册[J/OL].[2015-07-05].http://www.docin.com/p-374079467.html.
[2] Vishay Siliconix. Si2302DS N-Channel 1.25-W, 2.5-V MOSFET [J/OL].[2015-07-05]. http://www.docin.com/p-360200700.html.
[3] 郭天祥.外中断唤醒掉电模式程序讲解[J/OL].[2015-07-5].http://v.pps.tv/play_38FQGR.html.
[4] 陈巧莉,冯于户.基于AT89C51单片机的定时器控制音乐门铃的仿真与实现[J].价值工程,2011(20):146-138.
[5] 何 谐,唐大权,张淑廷,等.一种基于51单片机的音乐播放器的设计[J].现代电子技术,2014(8):12-13.
[6] 张开碧,罗 蓉,许倩忆,等.基于STC89C52单片机音乐喷泉控制的设计[J].科技信息,2012(33):51-52.
[7] 谢少伟.一种自下向顶的单片机编程教学方法[J].绍兴文理学院学报,2008(6):42-45.
[8] 俞海华,尹浙民,沈小玲,等.3位LED音乐随机数据发生器[J].电子世界,2004(2):59-60.
Design of Music Doorbell Based on STC15L104 MCU
WANG Feng-zhu, ZHANG Chen-jiao, XIE Shao-wei
(School of Electrical Engineering, Zhejiang University of Water Resources and Electric Power, Hangzhou 310018, China)
A design and implementation scheme of music doorbell based on single-chip microcomputer technology is presented in this paper, which is simple and reliable, by using STC15L104 single-chip and three peripheral circuits, such as the circuit of opposite connection protection for low drop-out, the circuit of loudspeaker drive and the circuit of doorbell button. The music is entered into the doorbell through the program of single-chip, which processes pitch, half-tone and rest based on the single byte compression and encoding technology. The doorbell adapts to battery of 3V and can reduce standby current by using the “power down” technology of single-chip which can also bring longer life cycle of the battery. The measured value of standby current is lower than 1 uA.
music doorbell; micro controller unit(MCU); low power consumption; reverse polarity protection
2015-08-12
2014年浙江省“新苗人才”计划项目(2014R432005);2014年国家大学生创新创业训练计划项目(201411481003);2015年浙江省度高等教育课堂教学改革项目(KG2015498)
王凤珠(1991-),女,河北辛集人,从事与嵌入式系统、EDA技术相关研究.
TP368
A
1008-536X(2015)09-0068-05