音乐门铃.docx
《音乐门铃.docx》由会员分享,可在线阅读,更多相关《音乐门铃.docx(20页珍藏版)》请在冰豆网上搜索。
音乐门铃
课程设计
题目音乐门铃
学生姓名孟莹学号1010064054
所在院(系)陕西理工学院物电学院
专业班级电子信息科学与技术102
指导教师周平和
完成地点陕西理工学院
2012年11月15日
数字时钟的设计
孟莹
(陕西理工学院物电学院电子信息科学与技术102班陕西汉中723001)
指导老师:
周平和
【摘要】:
AT89C2051是由ATMEL公司推出的一种小型单片机。
95年出现在中国市场。
其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被广大用户接受,其程序的电可擦写特性,使得开发与试验比较容易。
我们采用51单片机开发板来完成制作,软硬件相互结合,实现播放音乐功能的电子门铃,并且外加显示屏显示欢迎信息,目的是让在等待在门口的人感受音乐和享有愉悦的心情,减少等待的焦躁。
选择AT89C2051单片机,通过T0定时中断,并配合P1.5引脚输出音频频率;P1.5接扬声器;通过P3.7引脚接入“播放音乐”按键,以中断方式接入。
P0口
接LCD显示文字。
【关键字】:
单片机,电子门铃,定时器,蜂鸣器,LCD液晶显示器(1602)
DesignOfStreetLampController
QuXing
(Grade06,Class1,MajorElectronicInformationScienceandTechnology
DepartmentofPhysics,ShannxiUniversityofTechnology,Hanzhong,723001)
Tutor:
ZhouPinghe
【Abstract】:
Throughowngraspofthetheoryofknowledge,tocarryoutthepreliminarydesignofelectroniccircuits,learningbasicmethodshowtouseelectroniccomponents,aswellasthegeneralapplicationofintegrateddigitalchip.Usingthesimulationsoftwareontheschematicdesignforthesimulationtodebug,andmeetthedesignrequirementsofautomaticstreetlampsintheprocessofdebuggingreasonablecontinuouscircuitshortcomings.
【Keywords】:
Multisim;Thyristor;LED;IC555。
摘要
AT89C2051是由ATMEL公司推出的一种小型单片机。
95年出现在中国市场。
其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被广大用户接受,其程序的电可擦写特性,使得开发与试验比较容易。
我们采用51单片机开发板来完成制作,软硬件相互结合,实现播放音乐功能的电子门铃,并且外加显示屏显示欢迎信息,目的是让在等待在门口的人感受音乐和享有愉悦的心情,减少等待的焦躁。
选择AT89C2051单片机,通过T0定时中断,并配合P1.5引脚输出音频频率;P1.5接扬声器;通过P3.7引脚接入“播放音乐”按键,以中断方式接入。
P0口
接LCD显示文字。
关键词:
单片机,电子门铃,定时器,蜂鸣器,LCD液晶显示器(1602)
目录
1引言5
2系统总体设计5
3硬件电路设计7
3.1LCD显示模块电路7
3.2蜂鸣器电路模块8
4程序流程图9
5制作与调试11
6结论及建议11
7参考文献12
8附录13
附录1:
实物照片13
附录2:
软件编译和proteus仿真图13
附录3:
原理图16
附录4:
源程序16
1引言
随着时代的前进和发展,控制智能化、仪器小型化、功耗微小化得到广泛关注。
在这些领域中,单片机起到了举足轻重的作用,这就把单片机的应用提升到重要的地位,单片机应用系统设计就成为新的技术热点。
近几年来,随着市场上智能化楼宇的不断升温,门铃系统已作为智能化办公室和智能化住宅小区的一个重要组成部分,被各商家和用户所接受。
人们已开始习惯用门铃系统代替传统的铁钥匙去管理各通道门,这使门铃系统得到了飞跃性的发展。
随着单片机技术的飞速发展,通过单片机实现人们对物质生活的满足,这将会日益成为今后的一个重要发展的方向。
2系统总体设计
音乐门铃的硬件电路由6个部分组成:
单片机、时钟与复位电路、选择按键输入电路、音频发生器,扬声器。
音乐门铃的硬件电路设计框图如下。
图1系统框图
3硬件电路设计
3.1LCD显示模块电路
这里VCC=3.3V,因为我们用的是自己的52单片机,在其内部通过P2.6与LCD(1602)的RS连接,P2.5与RW,P2.7与E相连接。
不需要我们通过杜邦线再连接了。
P0[0:
7]需要加上拉电阻Ri=10K拉高。
我们只需要通过调节VO来控制LCD的亮度即调节与VO相连接的滑动变阻器来实现。
3.2蜂鸣器电路模块
我们的AT89S52单片机内部由P1.5与蜂鸣器相连接,只需要将P1.5拉高,即可使蜂鸣器发出声音。
为了保护蜂鸣器,再与VCC相连使加上一个上拉电阻去报蜂鸣器不会被烧坏。
4程序流程图
图3主程序流程图
通过液晶显示屏上电显示“HELLO!
WELCOMETOMYHOME”,如果有门铃按键的信号输入,启动定时器,产生一定频率的脉冲,驱动蜂鸣器发音,放出乐曲。
对按键的次数计数,根据按键的次数选择播放的音乐,程序里预设了6首音乐可供循环播放。
图4音乐播放程序流程图
5制作与调试
一、硬件电路的布线
由于我们是二人一组,硬件上的设计相对简单。
本来打算使用LM386组成音频放大电路,提高音乐的播放质量,后简化为直接由蜂鸣器输出。
硬件电路由单片机,键盘,lcd1602液晶显示屏,蜂鸣器组成,用杜邦线连接相应的接口。
二、程序调试中遇到的问题及解决方法
1.有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规范导致的
2.程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。
如果指令的跳转范围比较少,这时要用一个标号中转。
不然编译通不过。
3.编程时要注意,在程序开始时,要写入各定时器中断的入口地址。
编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。
4.程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。
5.在实现LCD显示功能时遇到很多问题,比如完全没显示或者显示不完全,这是因为程序中有时使用相同的寄存器,而寄存器中的数据没有得到好的清零处理。
另外就是显示太模糊,要很费劲才看得清楚。
6结论及建议
作为电子信息工程专业的大三学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。
在已度过的大学时间里,我们大多数接触的是专业课。
我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力呢,如何把我们所学的专业基础课理论知识运用到实践中去呢,创新性实验的开设就提供了这样一个平台,希望学校能为我们这些大学生提供更多的能让我们自己动手与理论结合的实践平台。
在做本次课程设计的过程中,我们感触最深的当属查阅大量的设计资料了。
一开始我们只想设计一个简单的音乐门铃的方案。
但是后来发现简单的功能实现起来也不是那么容易的。
同时为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。
我们不是艺术家,不可以抛开实际尽情在幻想的世界里翱翔,一切都要有据可依,有理可寻。
软硬件的结合相当重要。
另一方面,团队合作相当的重要,假如组员相互不沟通不讨论,制作就没有办法完成。
每个人都有自己的长处和短处,学会扬长避短,相互宽容,理解才能合作愉快。
最后,通过我们不懈的努力与老师的指导,终于完成了我们的设计及制作。
当然,我们的功能还不是很完善,有待改进。
希望通过以后的学习能够制作出更好的作品。
7参考文献
[1]曹建树,夏云生,曾林春.51单片机实用教程.中国石化出版社
[2]白延敏.51单片机典型系统开发实例精讲电子工业出版社
[3]高惠芳单片机原理与应用技术科学出版社
[4]韩志军单片机系统设计与应用实例第二版机械工业出版社
[5]楼顺天周佳社微机原理与接口技术科学出版社
8附录
附录1:
实物照片
附录2:
软件编译和proteus仿真图
keil编译图
proteus仿真图
附录3:
原理图
附录4:
源程序
;*************接口定义***************
BUZZEREQUP1.5
KEYEQUP3.7
RSEQUP2.6;液晶接口的定义
RWEQUP2.5
EEQUP2.7
;**************************************
ORG0000H;主程序起始地址
JMPMAIN;跳动主程序
ORG000BH;TIMER0中断起始地址
JMPTIM0;跳至TIMER0在MODE1
;************显示主程序****************
ORG1000H
MAIN:
;液晶初始化
MOVSP,#70H;设置堆栈
MOVP0,#01H;清屏
LCALLENABLE
MOVP0,#38H;8位,2行显示
LCALLENABLE
MOVP0,#0FH;显示开关控制(屏显on,光标on,闪烁on)
LCALLENABLE
MOVP0,#06H;计数地址加1,显示幕on
LCALLENABLE
MOVP0,#80H;第一行的开始位置
LCALLENABLE
MOVDPTR,#TABLE1;显示
LCALLWRITE1;到TABLE1取码?
MOVP0,#0C0H;第二行的位置
LCALLENABLE
MOVDPTR,#TABLE2;显示
LCALLWRITE1;到TABLE2取码
MOVP0,#0C2H;光标定位0C0H
CALLENABLE
;*******************音乐主程序******************
START0:
MOVTMOD,#01H;定时器0,工作方式1
MOVIE,#82H;中断使能
JBKEY,$;第一次按KEY?
CALLDELAY1;消除抖动
JNBKEY,$;KEY放开?
MOV31H,#00H;按KEY次数计数指针初值为00H
MOVDPTR,#0000H
START1:
MOV30H,#LOWSONG;取简谱码指针(第1首)
NEXT:
MOVA,30H
MOVDPTR,#TABLE
MOVCA,@A+DPTR;至相关页码,高4位为音符的高低
MOVR2,A;低4位为音符的节拍
JZEND0;检查简谱码是否已结束(有无00?
)
ANLA,#0FH;取节拍(低4位)
MOVR5,A;存入R5,节拍的时间
MOVA,R2
SWAPA
ANLA,#0FH;取音频值(高4位)
JNZSING;是否为0,是0则不发音
CLRTR0
JMPD1
SING:
DECA
MOV22H,A;存入(22H)
RLA;乘2
MOVDPTR,#TABLE
MOVCA,@A+DPTR;至TABLE取码,取T的值
MOVTH0,A;取到的高位字节存入TH0
MOV21H,A;取到的高位字节存入(21H)
MOVA,22H;再载入取到的音符码
RLA
INCA
MOVCA,@A+DPTR;至TABLE取相对的低位字节计数值
MOVTL0,A;取到的低位字节存入TL0
MOV20H,A;取到的低位字节存入(20H)
SETBTR0;启动TIMER0
D1:
CALLDELAY
INC30H;取简谱码指针加1
JMPNEXT
END0:
CLRTR0;停止计数器
MOVA,31H;载入计次指针
XRLA,#00H;是否按第1次?
JNZEND1;不是则跳至END1
JBKEY,$;按第2次?
CALLDELAY1;消除抖动
JNBKEY,$;放开否?
INC31H;计次地址(31H)加1
MOV30H,#LOWSONG1;第2首歌指针
JMPNEXT
END1:
MOVA,31H;载入计次指针
XRLA,#01H;是否按第2次?
JNZEND2;不是则跳至END2
JBKEY,$;按第3次?
CALLDELAY1;消除抖动
JNBKEY,$;放开否?
INC31H;计次地址(31H)加1
MOV30H,#LOWSONG2;第3首歌指针
JMPNEXT
END2:
MOVA,31H;载入计次指针
XRLA,#02H;是否按第3次?
JNZEND3;不是则跳至END3
JBKEY,$;按第4次?
CALLDELAY1;消除抖动
JNBKEY,$;放开否?
INC31H;计次地址(31H)加1
MOV30H,#LOWSONG3;第4首歌指针
JMPNEXT
END3:
MOVA,31H;载入计次指针
XRLA,#03H;是否按第4次?
JNZEND4;不是则跳至END4
JBKEY,$;按第5次?
CALLDELAY1;消除抖动
JNBKEY,$;放开否?
INC31H;计次地址(31H)加1
MOV30H,#LOWSONG4;第5首歌指针
JMPNEXT
END4:
MOVA,31H;载入计次指针
XRLA,#01H;是否按第5次?
JNZEND5;不是则跳至END2
JBKEY,$;按第6次?
CALLDELAY1;消除抖动
JNBKEY,$;放开否?
INC31H;计次地址(31H)加1
MOV30H,#LOWSONG5;第6首歌指针
JMPNEXT
END5:
JMPSTART0;回到第1次位置
TIM0:
PUSHACC;暂存A的值
PUSHPSW;暂存PSW的值
SETBRS0;设工作寄存器库1,RS0=1,RS1=0
CLRRS1
MOVTL0,20H;重设计数值
MOVTH0,21H
CPLBUZZER;将P10位反相
CLRRS0
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
TABLE:
DW64260,64400,64524,64580
DW64684,64777,64820,64898
DW64968,65030,65058,65110
DW65157,65178,65217
SONG:
;第一首歌哈巴狗
;1
DB42H,42H,42H,52H,62H,04H
DB62H,62H,62H,72H,84H,04H
DB92H,92H,82H,72H,64H,04H
DB82H,82H,52H,62H,44H,04H
;2
DB42H,42H,42H,52H,62H,04H
DB62H,62H,62H,72H,84H,04H
DB92H,92H,82H,72H,64H,04H
DB82H,82H,52H,62H,44H,04H
DB00H
SONG1:
;第2首歌生日快乐
;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
SONG2:
;第3首歌不倒翁
;1
DB84H,94H,88H
DB64H,54H,68H
DB84H,64H,54H,44H
DB52H,42H,52H,62H,48H
;2
DB84H,94H,88H
DB64H,54H,68H
DB84H,64H,54H,44H
DB52H,42H,52H,62H,48H
DB00H
SONG3:
;第4首歌妹妹背着洋娃娃
;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
SONG4:
;第5首歌两只老虎
;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,00H
SONG5:
;第6首歌三只小猫
;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
;*****************显示子程序*************
ENABLE:
CLRRS;送命令
CLRRW
CLRE
CALLDELAY0
SETBE
RET
WRITE1:
MOVR1,#00H;显示TABLE1,2中的值
A1:
MOVA,R1;到TABLE1,2取码
MOVCA,@A+DPTR
CALLWRITE2;显示到LCD
INCR1
CJNEA,#00H,A1;是否到00H
RET
WRITE2:
MOVP0,A;显示
SETBRS
CLRRW
CLRE
CALLDELAY0
SETBE
RET
DELAY0:
MOVR6,#05
D0:
MOVR7,#0FFH
DJNZR7,$
DJNZR6,D0
RET
TABLE1:
DB"WELCOMETO",00H
TABLE2:
DB"MYHOME",00H
END