基于单片机的电子音乐门铃设计说明书.docx
《基于单片机的电子音乐门铃设计说明书.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子音乐门铃设计说明书.docx(23页珍藏版)》请在冰豆网上搜索。
基于单片机的电子音乐门铃设计说明书
基于单片机的电子音乐门铃设计
题目:
电子音乐门铃设计
学院:
专业:
班级:
学号:
:
时间:
摘要
近几年来,随着市场上智能化楼宇的不断升温,门铃系统已作为智能化办公室和智能化住宅小区的一个重要组成局部,被各商家和用户所承受。
人们已开场习惯用门铃系统代替传统的铁钥匙去管理各通道门,这使门铃系统得到了飞跃性的开展。
随着单片机技术的飞速开展,通过单片机实现人们对物质生活的满足,这将会日益成为今后的一个重要开展的方向。
本设计是介绍了由AT89C51单片机来构成电子音乐门铃系统的工作过程,本系统主要完成该电子门铃不仅具有普通电子门铃的功能,而且还具有一些扩展功能。
它的工作状态能够由用户自行设定等常规功能,并给来访者提供必要的语音和文字回应信息,此外。
这给人们生活提供了很大的便利
关键词:
电子门铃
一、设计目的
二、设计任务
三、设计要求
四、设计步骤〔流程〕
五、设计原理
六、设计容
6.1硬件设计
6.2单片机引脚说明
6.3主要电路设计
6.3.1时钟电路
6.3.2复位电路
6.3.3功率放大电路
6.4软件设计
6.4.1音乐符设计
6.4.2程序设计
6.4.3程序流程图
6.4.4仿真界面图
6.5.5编程
七、设计小结
参考文献
一、设计目的:
1、动手焊接单片机硬件电路板,增进对单片机的感性认识,加深对单片机理论方面的理解。
2、了解单片机的部功能模块的应用。
3、了解和掌握单片机应用系统的硬件设计和制作过程、方法及实现。
二、设计任务:
1、了解单片机的组成构造,设计相关电路原理图;
2、根据原理图焊接硬件电路。
3、实现所要求的功能。
三、设计要求:
1、要求理解单片机的组成构造;
2、根据给出的主要芯片,设计相关电路原理图;
3、焊接电路板,检测并调试。
四、设计步骤〔流程〕:
1、根据电子音乐门铃原理设计相关电路图;
2、焊接电路板;
3、编写程序、检测并调试。
五、设计原理:
音乐是由音符组成,不同的音符是由相应频率的振动产生。
产生不同的音频需要有不同固定周期的脉冲信号。
要产生音频脉冲,只要算出某一音频的周期T(1/f),然后将此周期T除以2,即为半周期的时间。
我们利用单片机的部定时器TO,使其工作在计数器模式MODEl下.初始化适当的计数值THO及TLO以计时这个半周期时间。
每当计时时间到后就将输出脉冲的P1.0口反相。
然后重复计时此半周期时间,再对P1.0口反相,就可在单片机Pl.0引脚上得到此频率的脉冲。
P1.0引脚脉冲接LM386作音频功放,然后辅出到扬声器,从而发出美妙的乐音。
例如设单片机晶振为12MHz,每计数一次用时1µs。
我们要产生f低音DO,其频率为392Hz,周期T=1/392=2551µs,半周期时间为1276µs。
因此计数器应每计数1276次时将P1.0口反相,即计数初值应设定为(THxTLx)=
一1276=64260,就可得到低音D0。
P3.5口作为控制门铃的按钮,每按一次,产生的电子乐音就改变一次,按完6次,再重复循环。
6首歌曲分别为?
生日快乐?
、?
两只老虎?
、?
三只小猫?
、?
哈巴狗?
、?
不倒翁?
、?
妹妹背着洋娃娃?
。
六、设计容:
传统的电子音乐门铃通常采用分立元件或专用的音乐IC制作。
本文介绍一个用AT89C51单片机设计的电子音乐门铃,仅需AT89C51单片机最小系统再加一片LM386做音频小功放驱动扬声器发声。
客人来访时,按一下按钮,门铃就会奏出优美的电子音乐声;再按一下,门铃又会奏出下一首电子音乐声音.共可以奏出六首不同旋律的歌曲。
6、1硬件设计
电子音乐门铃设计系统以AT89C51单片机为核心加上外围电源时钟电路、LM386功放电路及扬声器电路组成。
ATMEL公司生产的AT89C51单片机是一种低功耗且电压性能高的8位单片机,部除CPU外,还包括128字节RAM,4个8位并行I/O口,5个中断优先级,2层中断嵌套,2个16位可编程计数器,片集成4k字节可改变程序FLASH,具有低功耗、速度快、程序擦写方便等优点,完全满足本系统设计需要,系统通过P1.0连接功放电路从而驱动扬声器产生电子乐声,P3.5口接门铃按键。
电子音乐门铃的电路连接图如以下列图1所
示:
6.2单片机引脚说明
AT89C51单片机是标准的40引脚双列直插式集成电路芯片,引脚分布可如以下列图2所示:
图2AT89C51单片机引脚分布图
P0.0~P0.7P0口8位双向线〔在引脚的32~39号端子〕;
P1.0~P1.7P1口8位双向线〔在引脚的1~8号端子〕;
P2.0~P2.7P2口8位双向线〔在引脚的21~28号端子〕;
P3.0~P3.7P3口8位双向线〔在引脚的10~17号端子〕。
1〕P0口有三个功能:
外部扩展存储器时,当作数据总线〔如图中的D0~D7为数据总线接口〕
外部扩展存储器时,当作地址总线〔如图中的A0~A7为地址总线接口〕
不扩展时,可作一般的I/O口使用,但部无上拉电阻,作为输入输出时应在外部接上拉电阻。
2〕P1口功能
P1口只作I/O口使用,其部有上拉电阻。
3〕P2口功能
扩展外部存储器时,当作地址总线使用;
作一般I/O口使用,其部有上拉电阻。
4〕P3口功能
除了作为I/O口使用外〔其部有上拉电阻〕,还有一些特殊功能,由特殊存放器来设置。
当作为输入时,上拉电阻将其电位拉高,假设输入为低电平那么可提供电流源,所以如果P0口作为输入时,或处在高阻抗状态,只有外接一个上拉电阻才能有效。
5〕ALE/PROG地址锁存控制信号
在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。
PROG为编程脉冲的输入端,在AT89C51单片机部有一个4kB的程序存储器〔ROM〕,ROM的作用就是用来存放用户需要执行的程序。
我们如何把编写好的程序存入这个ROM中的呢?
实际上是通过编程脉冲输入采能写进去,而这个脉冲的输入端口就是PROG。
6〕PSEN外部程序存储器读选通信号
在读外部ROM时PSEN低电平有效,以实现外部ROM单元的读操作:
部ROM读取时,PSEN不动作;
外部ROM读取时,在每个机器周期会动作两次;
外部RAM读取时,两个PSEN脉冲被跳过不会输出;
外接ROM时,与ROM的OE脚相接。
7〕EA/VPP访问程序存储器控制信号
接高电平时:
CPU读取部程序存储器〔ROM〕
接低电平时:
CPU读取外部程序存储器〔ROM〕。
8031单片机部是没有ROM的,因此在应用8031单片机时,这个脚时一直接低电平的。
8〕RST复位信号
当输入的信号连续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作,当复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码。
9〕XTAL1和XTAL2
外接晶振引脚。
当使用芯片部时钟时,此二引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
10〕VCC
电源+5V输入
11〕GND
接地
6.3主要电路设计
AT89C51是片有ROM/EPROM的单片机,因此,这种芯片构成的系统简单、可靠。
本设计利用单片机芯片构成应用系统时,主要是将单片机街上时钟电路和复位电路。
其应用特点:
◆有可供用户使用的大量I/O线
◆部存储器容量有限
◆应用系统开发具有特殊性
6.3.1时钟电路
AT89C51虽然有部振荡电路,但要形成时钟,必须外部附加电路。
AT89C51单片机的时钟产生方法有两种:
部时钟方式和外部时钟方式。
本设计采用最常用的部时钟方式,即用外接晶体和电容组成的并联谐振回路。
震荡晶体可在1.2MHZ到12MHZ之间选择。
电容值无严格要求,单电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1、CX2可在20pF到100pF之间取值,但在60pF到70pF时振荡器有较高的频率稳定性。
所以本设计中,震荡晶体频率选择12MHZ,电容选择20pF。
在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠工作。
6.3.2复位电路
AT89C51的复位是由外部的复位电路来实现的。
复位引脚RST通过一个施密特触发器来抑制噪声。
在每个机器周期的S5P2,施密特触发器的输出电平由复位电路采样一次,然后才能得到部复位操作所需要的信号。
复位电路通常采用上电自动复位和按钮复位两种方式。
最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。
只要VCC的上升时间不超过1ms,就可以实现自动上电复位。
时钟频率采用12MHZ时C取10μF,R取1kΩ。
本设计就是用上电复位。
复位时,ALE和PSEN成输入状态,片RAM不受复位影响;复位后,PC指向0000H,单片机从起始地址0000H开场执行程序。
所以单片机运行出错或进入死循环,可按复位键重新启动。
在次单片机中,没有完全使用这些默认值,而是通过在程序中对单片机进展初始化。
复位电路采用的是简单的上电复位电路,此电路要求要保证在RESET引脚上提供10毫秒以上稳定的高电压。
这种上电复位利用电容器充电来实现。
当加电时,电容C充电,电路有电路流过,构成回路,在电阻R上产生压降,RESET引脚为高电平;当电容C充满电后,电路相当于断开,RESET的电位与地一样,复位完毕。
复位时间与充电的时间有关,充电时间越长复位时间越长,增大电容或增大电阻都可以增加复位时间。
6.3.3功率放大电路
LM386是音频功率放大器。
输入端以地位参考,同时输出端以地位参考,被自动偏置到电源电压的一半,在5V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。
本实验采用LM386的封装形式8引线双列直插式。
6.4软件设计
6.4.1音乐符设计
首先建立音乐,把音乐的音符找出。
建立各个音符的定时常数T值表,编写程序时我们把T值表按顺序建立在“TABLE〞栏。
每个发音符使用一个字节,字节的位〔简谱码〕代表音符的节拍。
如果1拍为0.4秒,4分之一秒就是0.4秒。
只要设定延时时间就求得节拍的时间。
假设4分之一为1DELAY,那么一拍应为4DELAY,依次类推。
所以只要求出4分之一的DELAY时间。
其余的节拍就是它的倍数。
4分之一拍的延时在此我们设为125ms,节拍码如表:
表1音符对应的简谱码、频率、定时常数
音符
简谱码
频率〔Hz〕
定时常数〔T〕
低SO
1
392
64260
低LA
2
440
64400
低TI
3
494
64524
中DO
4
523
64580
中RE
5
587
64684
中MI
6
659
64777
中FA
7
698
64820
中SO
8
784
64898
中LA
9
880
64968
中TI
A
988
65030
高DO
B
1046
65058
高RE
C
1175
65110
高MI
D
1318
65157
高FA
E
1397
65178
高SO
F
1568
65217
不发音
0
表2 节拍码及节拍数
节拍码
节拍数
1
1/4拍
2
2/4拍
3
3/4拍
4
1拍
5
1又1/4拍
6
1又1/2拍
8
2拍
A
2又1/2拍
C
3拍
F
3又3/4拍
6.4.2程序设计:
本系统采用MCS-51汇编语言编程。
软件程序由主程序、定时器TO中断效劳程序和延时子程序组成。
系统初始化后,系统扫描按键(P3.5口的电平)判断是否有键按下,有键按下时,根据按下键的次数,向音频字符码指针赋以不同歌曲的地址,通过定时器TO中断子程序使P1.0口输出相应频率的音频脉冲,以到达发声目的。
主程序流程图如图3所示。
6.4.3程序流程图如以下列图3所示:
〔1〕
N
Y
图3程序流程图
6.4.4仿真界面图
仿真界面图如以下列图4:
图4仿真界面
6.4.5编程如下:
MAIN:
ORG00H;主程序的起始地址
JMPSTART;跳至主程序
ORG0BH;TIMER0中断起始地址
LJMPTIM0;跳至TIMER0中断子程序
START:
MOVTMOD,#00000001B;设TIMER0在MODE1
MOVIE,#10000010B;中断使能
P3.4,$;第一次按T0?
CALLDELAY1;消除抖动
JNBP3.4,$;T0放开?
MOV31H,#00;按T0计数指针初始值为00H
START0:
MOV30H,#LOWSONG;取简谱码指针〔第1首〕
NEXT:
MOVA,30H
MOVDPTR,#TABLE
MOVCA,A+DPTR;至相关页取码
MOVR2,A;低4位为音符的节拍
JZEND0;检查简谱码是否已完毕〔有无00?
〕
ANLA,#0FH;取节拍〔低4位〕
MOVR5,A;存入R5节拍的时间
MOVA,R2
SWAPA
ANLA,#0FH;取音频值(高4位)
JNZSING;是否为0,是0那么不发音
CLRTR0
JMPD1
SING:
DECA;因0不列入
MOV22H,A;存入〔22H〕
RLA;乘2
MOVDPTR,#TABLE
MOVCA,A+DPTR;至TABLE取码,取T的值
MOVTH0,A;取到的高位字节才存入TH0
MOV21H,A;取到的高位字节存入〔21H〕
MOVA,22H;在载入取到的音符码
RLA;乘2
INCA;加1
MOVCA,A+DPTR;至TABLE取相对的低位字节计数值
MOVTL0,A;取到的低位字节存入TL0
MOV20H,A;取到的低位字节存入〔21H〕
SETBTR0;启动TIMER0
D1:
CALLDELAY
INC30H;取简谱码指针加1
JMPNEXT
END0:
CLRTR0;停顿计数器
MOVA,31H;载入计数器指针
XRLA,#00H;是否按第1次
JNZEND1;不是那么跳至END1
P3.4,$;按第2次?
CALLDELAY1;消除抖动
JNBP3.4,$;放开否?
INC31H;计次地址〔31H〕加1
MOV30H,#LOWSONG1;第2首歌指针
JMPNEXT
END1:
MOVA,31H;载入计数器指针
XRLA,#01H;是否按第2次
JNZEND2;不是那么跳至END2
P3.4,$;按第3次?
CALLDELAY1;消除抖动
JNBP3.4,$;放开否?
INC31H;计次地址〔31H〕加1
MOV30H,#LOWSONG2;第3首歌指针
JMPNEXT
END2:
MOVA,31H;载入计数器指针
XRLA,#02H;是否按第3次
JNZEND3;不是那么跳至END3
P3.4,$;按第4次?
CALLDELAY1;消除抖动
JNBP3.4,$;放开否?
INC31H;计次地址〔31H〕加1
MOV30H,#LOWSONG3;第4首歌指针
JMPNEXT
END3:
MOVA,31H;载入计数器指针
XRLA,#03H;是否按第4次
JNZEND4;不是那么跳至END4
P3.4,$;按第5次?
CALLDELAY1;消除抖动
JNBP3.4,$;放开否?
INC31H;计次地址〔31H〕加1
MOV30H,#LOWSONG4;第5首歌指针
JMPNEXT
END4:
MOVA,31H;载入计数器指针
XRLA,#04H;是否按第5次
JNZEND5;不是那么跳至END5
P3.4,$;按第6次?
CALLDELAY1;消除抖动
JNBP3.4,$;放开否?
INC31H;计次地址〔31H〕加1
MOV30H,#LOWSONG5;第6首歌指针
JMPNEXT
END5:
JMPSTART;回到第1次位置
TIM0:
PUSHACC;将A的值暂存于堆栈
PUSHPSW;将PSW的值暂存于堆栈
SETBRS0;设工作存放器库1,RS0=1,RS1=0
CLRRS1
MOVTL0,20H;重设计数值
MOVTH0,21H
CPLP1.0;将P1.0位反相
POPPSW;至堆栈取回PSW的值
POPACC;至堆栈取回A的值
RETI;返回主程序
DELAY:
MOVR7,#02;延时125毫秒
D2:
MOVR4,#125
D3:
MOVR3,#248
DJNZR3,$
DJNZR4,D3
DJNZR7,D2
DJNZR5,DELAY;决定节拍
RET
DELAY1:
MOVR4,#20
D4:
MOVR3,#248
DJNZR3,$
DJNZR4,D4
RET
ORG300H
;定时常数T值表
TABLE:
DW64260,64400,64524,64580
DW64684,64777,64820,64898
DW64968,65030,65058,65110
DW65157,65178,65217
;音符节拍码数据表
SONG:
;生日快乐
;1
DB82H,01H,81H,94H,84H
DB0B4H,0A4H,04H
DB82H,01H,81H,94H,84H
DB0C4H,0B4H,04H
;2
DB82H,01H,81H,0F4H,0D4H
DB0B4H,0A4H,94H
DB0E2H,01H,0E1H,0D4H,0B4H
DB0C4H,0B4H,04H
DB00H
SONG1:
;两只老虎
;1
DB44H,54H,64H,44H
DB44H,54H,64H,44H
DB64H,74H,88H
DB64H,74H,88H
;2
DB82H,92H,82H,72H,64H,44H
DB82H,92H,82H,72H,64H,44H
DB44H,84H,48H
DB44H,14H,48H
DB00H
SONG2:
;三只小猫
;1
DB62H,82H,82H,62H,98H
DB92H,0B2H,0B2H,82H,98H
DB62H,82H,82H,52H,68H
DB92H,0B2H,0B2H,82H,98H
;2
DB62H,82H,82H,62H,92H,92H,94H
DB92H,0B2H,0B2H,92H,84H,94H
DB0B8H,0B4H,04H
DB00H
SONG3:
;哈巴狗
;1
DB42H,42H,42H,52H,64H,04H
DB62H,62H,62H,72H,84H,04H
DB92H,92H,82H,72H,64H,04H
DB82H,82H,52H,62H,44H,04H
;2
DB42H,42H,42H,52H,64H,04H
DB62H,62H,62H,72H,84H,04H
DB92H,92H,82H,72H,64H,04H
DB82H,82H,52H,62H,44H,04H
DB00H
SONG4:
;不倒翁
;1
DB84H,94H,88H
DB64H,54H,68H
DB84H,64H,54H,44H
DB62H,82H,42H,62H,58H
;2
DB84H,94H,88H
DB64H,54H,68H
DB84H,64H,54H,44H
DB52H,42H,52H,62H,48H
DB00H
SONG5:
;妹妹背着洋娃娃
;1
DB84H,02H,82H,64H,54H
DB64H,54H,48H
DB64H,02H,52H,44H,24H
DB14H,24H,18H
;2
DB24H,02H,22H,42H,24H
DB44H,54H,68H
DB54H,02H,52H,84H,84H
DB54H,64H,48H
DB00H
END
七、设计小结:
通过3个星期的实习,我懂得了很多。
学会了常用的单片机控制音乐门铃的用法。
将所学到的理论知识应用于实际,使所学的知识得到进一步稳固,使这些知识得到提高,初步培养了单片机设计的独立设计,为今后的工作打下良好根底,树立正确的设计思路。
在这次设计过程中遇到很多问题,通过教师的指导和帮助,我们抑制了这些困难解决了问题,提高了解决问题的能力。
在这次设计中,我们要学会亲自去尝试,不要害怕失败。
这次实习,使我们有了团队合作,培养了我们的团队合作精神。
通过团队相互讨论,很多问题都迎刃而解了。
通过团队合作,使我们认识到:
一个人的能力是有限的,只有相互合作,相互学习才能把事情做得更好。
最后,这次实习是我认识到:
我们现在的知识还是薄弱,根底还不够扎实。
今后我们要更加努力学习专业知识,只有扎扎实实打好根底,才能在社会的竞争中处于不败之地。
今后我们要努力改正自己的缺乏,发扬自己的优点。
参考文献:
【1】珍.单片机原理与应用技术[M].:
清华大学,2003年.
【2】函芳.MCS-51/96单片机原理及应用[M].:
航空航天大学,1994年.
【3