基于单片机的叮咚门铃设计.docx
《基于单片机的叮咚门铃设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的叮咚门铃设计.docx(14页珍藏版)》请在冰豆网上搜索。
基于单片机的叮咚门铃设计
摘要
本文设计了一种基于单片机的“叮咚”门铃,主要有键盘,音频功率放大器LM386,AT89S51单片机,扬声器等构成,通过单片机定时/计数器t0来产生700Hz和500Hz的频率来使扬声器发出“叮咚”声音。
关键词:
AT89C51单片机;扬声器;频率;
前言:
1在现代电子产品中,“叮咚”门铃以它成本低,方便快捷等优点占据了很大的市场空间。
本课程设计是基于单片机的“叮咚”门铃,通过单片机控制输出频率,由音频功率放大器LM386放大给扬声器,使之发出叮咚声。
虽然功能简单,但是由于其操作简单得到了广泛的应用。
2主要技术指标是当按下开关SP1,AT89S51单片机产生“叮咚”声从P1.0端口输出到LM386,经过放大之后送入喇叭。
1总体方案设计
针对本课题的设计任务,进行分析得到:
本次设计是利用单片机实现对扬声器发声的,控制采用按钮操作,AT89S51单片机进行控制,由音频功率放大器进行放大,最后使扬声器发出“叮咚”声音。
图1“叮咚”门铃总体设计框图
2AT89S51单片机简介
AT89S51为ATMEL所生产的可电气烧录清洗的8051相容单芯片,其内部程序代码容量为4KB
图2AT89S51单片机引脚图
(一)AT89S51主要功能列举如下:
1、为一般控制应用的8位单芯片
2、晶片内部具时钟振荡器(传统最高工作频率可至12MHz)
3、内部程式存储器(ROM)为4KB
4、内部数据存储器(RAM)为128B
5、外部程序存储器可扩充至64KB
6、外部数据存储器可扩充至64KB
7、32条双向输入输出线,且每条均可以单独做I/O的控制
8、5个中断向量源
9、2组独立的16位定时器
10、1个全多工串行通信端口
11、8751及8752单芯片具有数据保密的功能
12、单芯片提供位逻辑运算指令
(二)AT89S51各引脚功能介绍:
VCC:
AT89S51电源正端输入,接+5V。
VSS:
电源地端。
XTAL1:
单芯片系统时钟的反相放大器输入端。
XTAL2:
系统时钟的反相放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF的小电容,可以使系统更稳定,避免噪声干扰而死机。
RESET:
AT89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。
EA/Vpp:
"EA"为英文"ExternalAccess"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。
因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。
如果是使用8751内部程序空间时,此引脚要接成高电平。
此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。
ALE/PROG:
ALE是英文"AddressLatchEnable"的缩写,表示地址锁存器启用信号。
AT89S51可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为AT89S51是以多工的方式送出地址及数据。
平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。
此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。
PSEN:
此为"ProgramStoreEnable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。
AT89S51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。
PORT0(P0.0~P0.7):
端口0是一个8位宽的开路汲极(OpenDrain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。
其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。
如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。
设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。
PORT2(P2.0~P2.7):
端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。
P2除了当做一般I/O端口使用外,若是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。
PORT1(P1.0~P1.7):
端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LSTTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。
如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。
PORT3(P3.0~P3.7):
端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。
其引脚分配如下:
P3.0:
RXD,串行通信输入。
P3.1:
TXD,串行通信输出。
P3.2:
INT0,外部中断0输入。
P3.3:
INT1,外部中断1输入。
P3.4:
T0,计时计数器0输入。
P3.5:
T1,计时计数器1输入。
P3.6:
WR:
外部数据存储器的写入信号。
P3.7:
RD,外部数据存储器的读取信号。
(三).振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
(四).芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
3硬件部分设计
3.1单片机系统
1该系统采用AT89S51单片机,AT89S51具有以下标准功能:
4k字节flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两集中断结构,一个全双工串行通信接口,片内振荡器及时钟电路。
(见图2)
2AT89S51单片机内部结构具有片内振荡器,运算器,控制器,存储器扩展控制器,串行口,并行口,EPROM/ROM,RAM等
图3AT89S51内部结构原理图
3.2电路原理图
图4电路原理图
3.3仿真电路图
图5仿真电路图
(1)音频功率放大器
图6音频功率放大器
(2)扬声器
图7扬声器
4软件部分设计
4.1程序设计方法
1.我们用单片机实定时/计数器T0来产生700HZ和500HZ的频率,根据定时/计数器T0,我们取定时250us,因此,700HZ的频率要经过3次250us的定时,而500HZ的频率要经过4次250us的定时。
信号产生的方法:
500Hz信号周期为2ms,信号电平为每1ms(4X250us)变反1次,
2. 在设计过程,只有当按下SP1之后,才启动T0开始工作,当T0工作完毕,回到最初状态。
3.“叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。
4.2主程序框图
图8主程序流程图
该流程图是“叮咚”门铃系统设计,通过单片机的初始化判断按钮是否按下,通过单片机系统进行控制,使扬声器发出“叮咚”声音。
4.3T0中断程序框图
图9T0中断服务程序框图
4.4汇编源程序
T5HZEQU30H
T7HZEQU31H
T05SAEQU32H
T05SBEQU33H
FLAGBIT00H
STOPBIT01H
SP1BITP3.7
ORG00H
LJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVTMOD,#02H;工作方式2就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。
在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。
MOVTH0,#06H;用于自动恢复定时初值
MOVTL0,#06H;置T0定时初值250us(2 的8次方减250,再转为16进制)
SETBET0
SETBEA
NSP:
JBSP1,NSP
LCALLDELY10MS
JBSP1,NSP
SETBTR0;TR0置1,启动定时器T0,允许定时/计数器计数
MOVT5HZ,#00H
MOVT7HZ,#00H
MOVT05SA,#00H
MOVT05SB,#00H
CLRFLAG
CLRSTOP
JNBSTOP,$;等待
LJMPNSP
DELY10MS:
MOVR6,#20
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
INT_T0:
INCT05SA
MOVA,T05SA
CJNEA,#100,NEXT
MOVT05SA,#00H
INCT05SB
MOVA,T05SB
CJNEA,#20,NEXT
MOVT05SB,#00H
JBFLAG,STP;当FLAG为1转到STP,进而结束
CPLFLAG;当T05S到了2000次时,FLAG求反。
LJMPNEXT
STP:
SETBSTOP
CLRTR0
LJMPDONE
NEXT:
JBFLAG,S5HZ
INCT7HZ
MOVA,T7HZ
CJNEA,#03H,DONE
MOVT7HZ,#00H
CPLP1.0
LJMPDONE
S5HZ:
INCT5HZ
MOVA,T5HZ
CJNEA,#04H,DONE
MOVT5HZ,#00H
CPLP1.0
LJMPDONE
DONE:
RETI
END
5调试分析
5.1硬件调试
本课设的硬件调试主要是对Proteus进行调试。
在Proteus界面中连好电路图后,运行时可能会出现没有反映,这就需要检查单片机的引脚与音频功率放大器的引脚接的是否正确,即使有一个接的不对也不会出现结果。
还有就是元器件的选择也很重要,由于软件中所带的型号比较多,所以要选择适合本次课设所用到的型号,这样才会出现理想的效果。
5.2软件调试
在软件调试中,本课题选用wave6000进行调试。
程序的编写很重要,本次课设的系统编程是采用汇编语言完成的。
5.3软、硬件联调
在完成程序的编写和硬件的搭接后,需要对程序和硬、软件进行联合调试。
调试的过程就是检查程序的运行方式和结果是否与设计要求相一致,如在调试的过程中发现错误,需要检查程序编写的引脚与硬件连接的引脚是否一致,以及检查加载的程序是否相对应。
以达到最佳的效果。
6结论
根据设计结果,本设计基本完成了设计要求。
经过系统的硬件、软件及联机调试,测得各部分均已达到性能要求。
课程设计中遇到了很多不懂的地方,但是通过与老师和同学的交流最终都迎刃而解了。
此次课程设计无论从知识的巩固角度还是从对以后的工作学习的影响都有着非常重要的意义。
首先,我对wave6000和protuse有了更深入的了解,而且对于汇编编程又熟悉了一遍。
其次,了解熟悉了论文的学做格式及基本要求,为我们将来写毕业论文作了铺垫;最后,通过硬件的连接,程序的编写,学会了如何通过网络、书籍等各种方式、渠道来获取需要的对设计有帮助的资料信息。
更加锻炼了动手能力和解决实际问题的能力。
7参考文献
[1]刘复华.单片机及其应用系统.北京:
清华大学出版社,1992
[2]张义和,陈敌北.例说8051.北京:
人民邮电出版社,2006,1月
[3]彭为,黄科,雷道仲.单片机典型系统设计实例精讲.北京:
电子工业出版社,2006,5月
[4]张毅刚,刘杰.单片机原理及应用.哈尔滨:
哈尔滨工业大学出版社,2004,6月
[5]赵茂泰.智能仪器原理及应用.北京:
电子工业出版社,2006,6月
[6]何立民.MCS-51系列单片机应用系统设计.北京:
北京航空航天大学出版社,1995
[7]薛钧义,张彦斌.MCS-51系列单片微型计算机及其应用.西安:
西安交通大薛出版社,1997
[8]丁元杰.单片微机原理及应用.北京:
机械工业出版社,1994
[9]元杰.单片机接口技术及应用.北京:
清华大学出版社,2005
[10]潘新民.微型计算机控制技术.北京:
人民邮电出版社,1999.9
附录1元件清单
元件名称
型号
数量
单片机
AT89S51
1
音频功率放大器
LM386
1
按钮
BUTTON
1
晶振器
CRYSTAL
1
电容
CAP
4
电阻
RES
4
电容器
CAPACITOR
3