金陵科技学院单片机课程设计“叮咚”门铃

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计
设计题目:基于单片机的“叮咚”门铃设计
学生姓名:孙梦薇指导教师:高峰
二级学院:机电工程学院专业:电气工程及其自动化班级:11电气(一)班学号:1104102016
目录
摘要 (1)
绪论 (2)
1 总体方案设计 (3)
2.AT89c51单片机简介 (4)
3 硬件部分设计 (7)
3.1单片机系统 (7)
3.2电路仿真图 (7)
3.3 音频放大模块 (8)
3.4扬声器模块 (8)
3.5时钟电路 (8)
3.6复位及复位电路 (8)
4 软件部分设计 (10)
4.1 程序设计方法 (10)
4.2程序框图 (11)
4.3 T0中断程序框图 (11)
4.4汇编源程序 (12)
5 调试分析 (15)
5.1硬件调试 (15)
5.2软件调试 (15)
5.3软、硬件联调 (15)
6 结论 (15)
7 参考文献 (17)
基于单片机的“叮咚”门铃设计
摘要
本文设计了一种基于单片机的“叮咚”门铃,主要有键盘,音频功率放大器LM386,AT89S51单片机,扬声器等构成,通过单片机定时/计数器t0来产生700Hz 和500Hz的频率来使扬声器发出“叮咚”声音。

关键词:AT89C51单片机;扬声器;频率;
1.绪论
在现代电子产品中,“叮咚”门铃以它成本低,方便快捷等优点占据了很大的市场空间。

本课程设计是基于单片机的“叮咚”门铃,通过单片机控制输出频率,由音频功率放大器LM386放大给扬声器,使之发出叮咚声。

虽然功能简单,但是由于其操作简单得到了广泛的应用。

主要技术指标是当按下开关SP1,AT89c51单片机产生“叮咚”声从P1.0端口输出到LM386,经过放大之后送入喇叭。

1 总体方案设计
针对本课题的设计任务,进行分析得到:本次设计是利用单片机实现对扬声器发声的,控制采用按钮操作,AT89c51单片机进行控制,由音频功率放大器进行放大,最后使扬声器发出“叮咚”声音。

图1 “叮咚”门铃总体设计框图
2 AT89Sc1单片机简介
AT89c51 为 ATMEL 所生产的可电气烧录清洗的 8051 相容单芯片,其内部程序代码容量为4KB
89c51引脚图
V CC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P0口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为低八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作
为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。


是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出
其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址
信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为
输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉
的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:
P3口管脚备选功能
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(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,
ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的
1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意
的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁
止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行
MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器
周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的
/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为
RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编
程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

3 硬件部分设计
3.1单片机系统
1 该系统采用AT89c51单片机,AT89c51具有以下标准功能:4k字节flash 闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两集中断结构,一个全双工串行通信接口,片内振荡器及时钟电路。

2 AT89c51单片机内部结构具有片内振荡器,运算器,控制器,存储器扩展控制器,串
行口,并行口,EPROM/ROM,RAM等
图3.1 A T89C51内部结构原理图
3.2电路仿真图
图3.2 电路仿真图
3.3 音频放大模块
本模块主要采用LM386来实现其功能,LM386是一种音频集成功放,具有自身功耗低、更新内链增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点的功率放大器,广泛应用于录音机和收音机之中。

为使外围元件最少,电压增益内置为20。

但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至 200。

输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。

图3.3 音频放大模块
3.4扬声器模块
通过如图3.4的设计可以实现对扬声器发声的控制,该电路通过电容器,电容,电阻等实现了对扬声发声的控制。

图3.4 扬声器
3.5时钟电路
ATC89C51内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。

时钟可以由内部方式产生或外部方式产生。

内部方式的时钟电路如图2-4(a) 所示,在XTAL1和XTAL2引脚上外接定时元件,内部振荡器就产生自激振荡。

定时元件通常采用石英晶体和电容组成的并联谐振回路。

晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。

外部方式的时钟电路如图2-4(b)所示,XTAL2接地,XTAL1接外部振荡器。

对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。

+5V
(a)内部方式时钟电路(b)外部方式时钟电路
图3.5时钟电路
3.6复位及复位电路
a.复位操作
复位是单片机的初始化操作。

其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。

除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。

b.复位信号及其产生
RST引脚是复位信号的输入端。

复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。

若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。

整个复位电路包括芯片内、外两部分。

外部电路产生的复位信号(RST)送至
施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。

复位操作有上电自动复位相按键手动复位两种方式。

上电自动复位是通过外部复位电路的电容充电来实现的。

这样,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。

按键手动复位有电平方式和脉冲方式两种。

其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的。

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程序框图
1.
图4.2 主程序流程图
该流程图是“叮咚”门铃系统设计,通过单片机的初始化判断按钮是否按下,通过单片机系统进行控制,使扬声器发出“叮咚”声音。

2.T0中断服务程序框图
No
图4.2 T0中断服务程序框图
4.3汇编源程序
汇编源程序
T5HZ EQU 30H
T7HZ EQU 31H
T05SA EQU 32H
T05SB EQU 33H
FLAG BIT 00H
STOP BIT 01H
SP1 BIT P3.7
ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START: MOV TMOD,#02H ;工作方式2就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。

在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。

MOV TH0,#06H ;用于自动恢复定时初值
MOV TL0,#06H ;置T0定时初值250us (2 的8次方减
250再转16进制
SETB ET0
SETB EA
NSP: JB SP1,NSP
LCALL DELY10MS
JB SP1,NSP
SETB TR0 ;TR0置1,启动定时器T0 , 允许定时
计数器计数
MOV T5HZ,#00H
MOV T7HZ,#00H
MOV T05SA,#00H
MOV T05SB,#00H
CLR FLAG
CLR STOP
JNB STOP,$ ;等待
LJMP NSP
DELY10MS: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
INT_T0: INC T05SA
MOV A,T05SA
CJNE A,#100,NEXT
MOV T05SA,#00H
INC T05SB
MOV A,T05SB
CJNE A,#20,NEXT
MOV T05SB,#00H
JB FLAG,STP ;当FLAG为1转到STP,进而结束
CPL FLAG ;当T05S到了2000次时,FLAG求反。

LJMP NEXT
STP: SETB STOP
CLR TR0
LJMP DONE
NEXT: JB FLAG,S5HZ
INC T7HZ
MOV A,T7HZ
CJNE A,#03H,DONE
MOV T7HZ,#00H
CPL P1.0
LJMP DONE
S5HZ: INC T5HZ
MOV A,T5HZ
CJNE A,#04H,DONE
MOV T5HZ,#00H
CPL P1.0
LJMP DONE
DONE: RETI
END
C语言源程序
#include <AT89X51.H>
unsigned char t5hz;
unsigned char t7hz;
unsigned int tcnt;
bit stop;
bit flag;
void main(void)
{
unsigned char i,j;
TMOD=0x02; //设置为工作模式2
TH0=0x06; //自动装载的8位定时器/计数器(高8位)
TL0=0x06; //低8位
ET0=1; //允许计数中断
EA=1; //外部程序存储器地址允许输入端,EA=1,CPU访问片内FLASH ROM
while(1)
{
if(P3_7==0) //端口P3.7为低电平,有按键按下
{
for(i=10;i>0;i--) //延时去抖动
for(j=248;j>0;j--);
if(P3_7==0) //确认有按键按下
{
t5hz=0;
t7hz=0;
tcnt=0;
flag=0; //标志位为低
stop=0;
TR0=1;
while(stop==0);
}
}
}
}
void t0(void) interrupt 1 using 0 //外部中断0中断服务函数{
tcnt++;
if(tcnt==2000) //250us*2000=500ms
{
tcnt=0;
if(flag==0)
{
flag=~flag;
}
else
{
stop=1;
TR0=0;
}
}
if(flag==0)
{
t7hz++;
if(t7hz==3) //250us*3=7.5ms
{
t7hz=0;
P1_0=~P1_0; //每隔一段时间,P1.0端口取反,
}
}
else
{
t5hz++;
if(t5hz==4)
{
t5hz=0;
P1_0=~P1_0;
}
}
}
5 调试分析
5.1硬件调试
本课设的硬件调试主要是对Proteus进行调试。

在Proteus界面中连好电路图后,运行时可能会出现没有反映,这就需要检查单片机的引脚与音频功率放大器的引脚接的是否正确,即使有一个接的不对也不会出现结果。

还有就是元器件的选择也很重要,由于软件中所带的型号比较多,所以要选择适合本次课设所用到的型号,这样才会出现理想的效果。

5.2系统仿真
5.2.1PROTEUS简介
Proteus软件是英国Labcenter公司开发的电路分析与仿真软件。

它集原理图设计电路分析、仿真和PCB设计于一体,配有各种信号源和电路分析所需的虚拟仪表;具有模拟电路、数字电路、单片机应用系统、嵌入式系统设计与仿真功能。

基于Proteus的电子电路设计从根本上克服了传统电子产品设计中没有物理原型就无法对系统进行测试,没有系统硬件就很难对软件进行调试的缺点。

Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。

在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。

图5.2 系统仿真图
5.2.2仿真结果
当按下开关SP1,AT89S51单片机产生“叮咚”声从P1.0端口输出到LM386,经过放大之后送入喇叭。

发出“叮咚”声。

6结论
根据设计结果,本设计基本完成了设计要求。

经过系统的硬件、软件及联机调试,测得各部分均已达到性能要求。

课程设计中遇到了很多不懂的地方,但是通过与老师和同学的交流最终都迎刃而解了。

此次课程设计无论从知识的巩固角度还是从对以后的工作学习的影响都有着非常重要的意义。

首先,我对protuse有了更深入的了解,而且对于汇编编程又熟悉了一遍。

其次,了解熟悉了论文的学做格式及基本要求,为我们将来写毕业论文作了铺垫;最后,通过硬件的连接,程序的编写,学会了如何通过网络、书籍等各种方式、渠道来获取需要的对设计有帮助的资料信息。

更加锻炼了动手能力和解决实际问题的能力。

经过两周多的努力,我终于完成了这次的设计,在此我想特别感谢每个帮助我们的老师和同学们,感谢你们的指点以及对我的鼓励。

此次课程设计我是在指导老师的悉心指导下,完全按照设计要求完成的,从这次单片机课程设计中我锻炼了许多,也学到了许多东西。

另外,我还要感谢学院给我们这次实践的机会,从这次实践的机会中我发现了自己对所学的知识掌握得不足。

在此次课程设计后,我计划多参加一些实践活动,并利用课后时间去购买一些芯片和电子器件,然后亲自设计并组装成一个能实现特定功能的电子产品,来培养自己对专业知识的兴趣和提高自己设计分析的能力。

7参考文献
[1] 刘复华. 单片机及其应用系统. 北京:清华大学出版社,1992
[2] 张义和,陈敌北. 例说8051. 北京:人民邮电出版社,2006,1月
[4] 赵茂泰. 智能仪器原理及应用. 北京:电子工业出版社,2006,6月
[6] 薛钧义,张彦斌.MCS-51系列单片微型计算机及其应用.西安:西安交通大薛出
版社,1997。

相关文档
最新文档