基于参考资料单片机的叮咚门铃.docx
- 文档编号:8304922
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:24
- 大小:353.61KB
基于参考资料单片机的叮咚门铃.docx
《基于参考资料单片机的叮咚门铃.docx》由会员分享,可在线阅读,更多相关《基于参考资料单片机的叮咚门铃.docx(24页珍藏版)》请在冰豆网上搜索。
基于参考资料单片机的叮咚门铃
毕业设计(论文)
题目:
基于单片机的叮咚设计
学生姓名:
学号:
所在学院:
专业班级:
指导教师:
基于单片机的叮咚门铃设计
学生:
****(老师:
****)
(*****学院)
摘要:
随着现在人们生活的不断改善,智能化的家居设计走进人们生活中。
在现代电子产品中,“叮咚”门铃低成本,很方便快捷的门口提示工具。
它的虽然功能简单,但是由于其操作简单得到了广泛的应用,在市场上占有很大的空间。
本课题是根据目前的现代化的家居及以往的门铃设计,提出了一种新的门铃设计。
它是基于STC89C51单片机的叮咚门铃设计。
在该系统中STC89C51单片机是一款性能稳定,价格比较低廉的单片机,结合以往的门铃设计方式,将其与之结合,设计一种电路更加简单,性能更加优良的门铃,使之更能适合于现代化的家居。
在该设计中,STC89C51单片机是整个系统主控芯片,它主要负责输出不同频率的PWM脉宽,从而控制三极管通断次数来使扬声器发出不同频率的声音。
目前我已经完成了该系统的仿真功能,基本达到预期的效果。
经过初步的市场调研,基于单片机的叮咚门铃设计是个很有应用价值及商业价值的设计。
关键词:
叮咚门铃STC89C51PWM扬声器
*****
Student:
***(FacultyAdviser:
****)
(CollegeofBiologicalandPharmaceuticalEngineering,WestAnhuiUniversity)
Abstract:
************
Keyword:
BellSTC89C51PWMSPEEKER
前言
随着控制技术的发展成熟,控制类的芯片种类越来越多,价格越来越低廉。
在现在好多的电子产品中都用到了单片机作为控制芯片。
在我们的生活中,各式各样的门铃随处可见,他们的内部电路里边无非是采用555定时器及电容。
但是由于门铃一般是被安置在门口的,难免受到空气中水分的影响,造成电容的容值发生了变化,使得定时电路发生发生了误差,以至于门铃的声音发生了变化。
而这我设计的这种门铃是以单片作为控制电路,相对而言,门铃的性能将更加稳定,电路变得更加简单。
第1章绪论
1.1.课题背景
在21世纪这个科技与生活结合较为紧密的时代,门铃系统在智能家居中占据一个非常重要的地位,所以我觉得我很有必要去学习这方面的知识。
在这次的毕业设计中,我的课题是基于单片机的门铃设计,我希望能够通过这次设计,以对单片机的控制系统以及门铃的设计有更深入的了解。
1.2.国内外现状
门铃系统是当今世界一直仍需研究与设计的一个方向,在智能家居中应用领域中具有非常大的意义,在应用方面也非常广泛,仍具有很好应用前景
第2章系统概述
本章将基于单片机的叮咚设计做一个系统介绍,其中有对系统的体系结构的介绍、各模块的组成和及软软件硬件设计方案选择等。
2.1需求分析
基于单片机的叮咚门铃符合市场发展的需求,无论是在企业中还是家庭中,都有很大的需求,所有需要对门铃有再深入的研究与设计。
2.2系统设计
在这一节中,我将针对我的设计,基于单片机的叮咚门铃设计的硬件设计与软件设计进行一个探讨,以及对相关的技术和实现的方式进行分析。
在这一系统中,我用STC89C51单片机作为该系统的主控芯片,独立按键作为人机交互键盘输入,扬声器作为门铃声音播放器。
整个系统以一种智能、人性化的思想进行设计。
2.3系统总体结构
按照系统功能要求,系统包括以下ST89C51中央控制模块、电源模块、声音播放模块、按键输入模块。
2.2.1总体框图
图1系统总体框图
2.2.2系统硬件方案
本节主要对基于单片机的叮咚门铃的设计系统的实际设计把整体设计分为以下几个部分进行方案比较和论证。
使该设计具有更高的性价比、更加可靠性能,从比较中找到更合适的本设计方案。
(1)主控芯片的选择
方案一:
STC89C51单片机
STC89C51单片机是我们比较熟悉的一款基于51内核的单片机,内部结构具有片内振荡器,运算器,控制器,存储器扩展控制器,串行口,并行,EPROM/ROM,RAM等功能,对于这一系统的开发足已,而且它的价钱低廉。
方案二:
STC12C5A60S2单片机
这也是一款市面上比较常见的芯片,也是基于51内核的单片机,但是它比STC89C51单片机多了好多功能,如PWM方波的输出等,这也就意味着,它的价格要比前者贵。
考虑到我的设计是种低成本、实用型的设计,我觉得方案二比较符合我的设计,所以我选择了方案二。
(2)声音播报模块的选择
方案一:
有源蜂鸣器
蜂鸣器是电子设备中常用的一种声音提示器件,有源蜂鸣器的驱动很简单,只要采用一个三极管,给于一个电平信号即可控制它发声,且价格很廉价,来源广泛,足够实现该系统中的报警提示功能。
方案二:
扬声器
扬声器,也就是我们所说的喇叭,它是一种电磁发声器件。
通过给于它一定频率变化的电流,它就能够发声,其控制方式简单,发音效果好,很适合作为本设计中的门铃发声器。
综合以上方案,进行多方面的比较分析,我选择了方案二。
(4)输入设备的选择
采用机械式按键:
这是一种种机械式的开关,它的原理是靠金属片的接触与否来实现通断的。
使用时只要将开关稍微按下即可导通,松开手时开关便可断开。
轻触开关由于体型轻巧,按下有清脆的声音,手感明显等方面的原因,在电子产品设计中得到广泛的应用。
另外,此开关相当廉价,作为本设计中门铃按钮再适合不过。
(5)系统电源的选择
方案一:
直接使用AA电池电力结构很简单,但供电能力很差,不易长时间供电,更换电池更频繁。
方案二:
采用USB5v电源接口。
供电方式可以多样化,可以采用电源适配器、开关电源等供电。
这样,系统的供电方式就比较灵活。
综合以上方案,进行多方面的比较分析,方案二符合任务要求,故选择方案二。
2.2.3系统软件方案
任何一个系统的软件设计都是很重要的,硬件好比设计的骨架,而软件则是设计的灵魂,二者缺一不可。
本节主要对基于单片机的叮咚门铃的实际设计中涉及到编程语言和开发环境进行分析,从而比较并确定合适的设计方案。
编程语言的选择
方案一:
采用汇编语言编程:
汇编语言是面向硬件的编程语言,它用了一种助记符号对01指令或者数据进行标识。
汇编语言的机器指令组件符号操作码到处理器可以识别的组件,称为组合或装配。
但是由于汇编语言的可读性差及不适合编写工程量大程序,所以我没有选用这个方案。
方案二:
采用C语言编程:
C语言是一种面向过程的编程语言。
它是由美国贝尔研究所的于1972年推出,之后,C语言成为一种较为流行的一种程序设计语言。
可作为底层硬件的开发语言,也可以作为应用程序开发语言。
综合以上方案,进行多方面的比较分析,方案二符合任务要求,故选择方案二。
(2)开发环境的选择
采用KeilC51集成开发环境:
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
如果你使用C语言编程,那么KeilC51是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
第3章系统硬件设计
这一章主要是对基于单片机叮咚门铃设计硬件系统方面做一个详细的介绍。
该系统的所有操作与控制是由主控芯片STC89C51来完成的,对于这个系统来说,硬件是重中之重,软件是在硬件层上对硬件的各个功能进行调度及使用,以下我就对我这个系统中的硬件层设计做个详解吧。
系统硬件总体设计结构详见第二章的系统总体结构一节,接下来将详细介绍电路模块。
3.1供电系统
我们都知道,电源电路是电子设计中不可缺少的一部分,任何电子设备都需要电源供电,这节中。
数字系统中很多芯片供电是5v或3.3v供电,我这里用的是5v电源供电,是利用用LM7805这种芯片实现的。
lm7805是三端稳压电源模块,顾名思义,三端IC是指这种稳压用的集成电路,外围电路简单,正面看,只有三条引脚输出,分别是输入端、接地端和输出端。
它的样子象是普通的三极管,额定输出电流1.5A,最大输入电压35V,输入输出压差的最大值是30V,最小值2V,输出电压5V,误差0.2V,实际应用时应根据压差和电流确定7805上的耗散功率,增加适当的散热装置。
是12v电源转5v电源的最佳选择。
12V到5V的转换如图
***
***
**(有待电路图)**
***
3.2.控制系统设计
在该系统中,需要对按键的实时扫描,实时判断用户对按键的操作,同时控制门铃的声音播报系统进行控制。
所以,就得有功能与性能较好的MCU,因此STC89C52这款芯片便担起了重任。
3.2.1STC89C51描述
STC89C52单片机是宏晶科技公司生产的12T增强系列单片机,是高速/低功耗/超强抗干扰的8051单片机,指令代码完全兼容传统8051,强干扰场合在众多的51系列单片机中更具有竞争力。
它采用的是8051指令、而且其片内的具有大容量程序存储器且是FLASH工艺的,如它内部就自带8K的FLASHROM,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。
而且STC系列单片机支持串口程序烧写。
显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。
写入单片机内的程序还可以进行加密,这又很好地保护了你的劳动成果。
重要的一点STC89C52目前的售价与传统51差不多,市场供应也很充足。
是一款高性价比的单片机。
1.8051CPU,12T,单时钟/机器周期,指令代码完全兼容传统8051;
2.工作电压:
5.5v-3.3v(5v单片机)或3.3v-2.5v(3v单片机)
3.工作频率范围:
0-80MHz
4.用户应用程序空间8K字节
5.片上集成512字节RAM;
6.通用I/O口36个,复位后为:
准双向口/弱上拉(普通8051传统I/O口),可设置成四种模式:
准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力均可达到20mA;
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程序;
8.有EEPROM功能;
9.看门狗;
10.内部集成MAX810专用复位电路
11.时钟源:
外部高精度晶体/时钟,内部R/C振荡器用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟,但由于内部时钟存在误差,精度要求不高时,可选择使用内部时钟;
13.定时器:
共3个16位定时器
14.2个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟;
15.外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块,PowerDown模式可由外部中断唤醒,INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3(也可通过寄存器设置到P4.2),CCP1/P1.4(也可通过寄存器设置到P4.3);
16.A/D转换:
10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次)
17.通用全双工异步串行口(UART);
18.工作温度范围:
-40-+85℃(工业级)/0-75℃(商业级)
图3-1STC12C5A60S2管脚图
3.2.2电路设计
VCC:
供电电压;
GND:
接地;
P0口:
P0口为一个8位漏级开路双向I/O口。
当P1口的管脚写“1”时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,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.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INT0(外部中断0)
P3.3INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
同时P3口同时为闪烁编程和编程校验接收一些控制信号;
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高平时间;
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效;
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取址期间,每个机器周期PSEN两次有效。
但在访问内部部数据存储器时,这两次有效的PSEN信号将不出现;
EA/VPP:
当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP);
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入;
XTAL2:
来自反向振荡器的输出;
图5.2.2STC89C52最小系统电路图
3.5键盘输入设计
键盘是人机交互中不可缺少的部分,在该系统中,由于温度报警上下限需要手动输入,因此,我给系统配备了6个独立按键。
在整个系统中需要有完善的人机交互接口,在前面的系统的方案选择中确定了机械式按键作为输入设备,下面是独立按键的电路图。
图5独立按键电路图
3.6声音播放设计
声音播放部分,我选用的是8Ω扬声器。
扬声器是一种把变化的电信号转变为声信号的换能器件,扬声器的性能优劣对音质的影响很大。
扬声器在音响设备中是一个最薄弱的器件,而对于音响效果而言,它又是一个最重要的部件。
扬声器的种类繁多,而且价格相差很大。
音频电能通过电磁,压电或静电效应,使其纸盆或膜片振动并与周围的空气产生共振(共鸣)而发出声音。
他是一种常用电磁发声器件,在该设计中,我给它配备一个三极管进行驱动,使它的声音更加响亮。
图3.6.2声光报警电路图
第4章系统软件设计
系统软件主要负责驱动各个硬件模块工作,使它稳定的运行。
对于可编程的硬件系统来说,底层硬件是系统的基础,驱动软件的作用是让系统在这基础上使各个硬件模块正常工作。
在整个软件编程中要时刻扫描键盘的输入以便获得用户的操作,另外,还要控制声音播报模块的发声。
在这一系统中,编写代码任务量确实不小,这一过程让我花了不少的精力。
以下是我对这一系统中由我完成的软件设计。
4.1系统软件总体设计
本系统的软件由集成开发工具KeilC51进行开发,它具有强大的编译、链接和调试功能。
本系统的工作过程大致为:
单片机实时扫描按键的输入,获取用户的操作,从而判断门铃是否被按下。
如果门铃被按下,则使声音播报模块发声。
软件整体流程图如图4.1所示:
图6接收端软件流程图
4.2KeilC51环境的介绍
本课题的软件开发环境为KeilC51,它可以对C或者C++进行编译,是嵌入式应用开发中一款很常用的工具。
KeilC51可以为我们提供一个非常直观的界面,它具有以下特点:
(1)支持多种可编程芯片;
(2)集成了各种的工具,方便我们使用;
(3)能够调试汇编语言或者C语言;
(4)可以查看CPU、寄存器、内存的状态,方便进行中断处理和模拟;
(5)KeilC51方便进行开发和调试;
4.5“叮咚”声音设计
在该设计中我用单片机实定时/计数器T0来产生700HZ和500HZ的频率,根据定时/计数器T0,我取定时250us,因此,700HZ的频率要经过3次250us的定时,而500HZ的频率要经过4次250us的定时。
信号产生的方法:
500Hz信号周期为2ms,即高电平持续1ms,低电平持续1ms,也即电平信号为每1ms翻转一次,
在设计过程,只有当按下门铃按键之后,才启动T0开始工作,当T0工作完毕,回到最初状态。
“叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。
4.5.1脉冲输出软件流程图
第5章系统测试
在对系统设计以及实现后,我们需要进入调试阶段,以检查系统所存在的缺陷,以便排除各种可能出现的不利于系统正常运行的因素。
调试本系统主要包括两个步骤:
调试控制系统和各个模块是否能正常工作,其中分为底层硬件调试和上层软件的调试。
底层硬件调试和上层软件的调试是不可缺少的调试,这两者可分开调试,其间可以没有联系的调试,之后再整体的调试,看看是否能够达到我们的预期的效果。
这样,我们才能及时的发现问题,从而着手的解决每一个问题。
5.1硬件测试
5.1.1按键的测试
用电表对按键进行测试,当按键的按下,跟按键连接的管脚变为低电平,松开变为高电平。
按键没有问题。
5.1.3声音播放测试
由于声音播放模块电路很简单,只需一个高低电平即可进行测试。
在测试中,我将声音播放模块的控制引脚给了单独断开,将其对电源进行试触、发现扬声器有声音传出,这说明了声音播放系统是能正常工作的!
5.2软件测试
通过单片机的编程,给声光报警电路控制引脚以高电平,没有反应,给低电平是蜂鸣器有声音,LED能点亮。
因此,声光报警模块能被程序控制。
5.2.2按键模块的测试
通过编程测试,每个按键按下,均能声光报警。
即表明每个按键都能正常工作。
5.2.2仿真测试
结束语
时光冉冉,转眼间已经过去了2个月,经过这一段时间的学习,我学到了不少的知识。
在这为期不长的两个月里,我发现了要想认真做好一件并非是那么简单的。
从一开始的什么也不知道,直到逐渐的对整个系统有个整体的思路,我经历了很对的艰辛。
在这段时间内,幸好有了***老师耐心指导,我不断的努力,不断的进步,我感觉我在短时间成长了很多很多。
真的很谢谢翁志远老师。
在硬件设计中,我尽量做到硬件系统能够简单而稳定,给软件提供一个良好的编程环境。
软件系统的编写的时候,我尽量做到思路的清晰,代码编写得简洁和规范,以使系统能够更好的运作,性能更加稳定,以便达到预期的要求。
因时间有限,设计中还有许多需要改进的地方。
在这一段时间的学习中,我也真正认识到实践是检验真理的唯一标准这一句话的真谛。
同时通过这次设计,我明白了“书到用时方恨少”。
所以,在今后,我会不断的学习,不断的充实我自己!
致谢
在本次设计中,遇到了很多的问题和困难,刚开始由于输出700Hz与500Hz的方波,我花了一个多礼拜的时间都无法攻克这个问题,后来在***指导老师的指导下,我慢慢的攻克了这一个难题,接下来就是软件的实现,有些程序自己还能慢慢的编写出来,不过很多自己还是不怎么擅长,同样也是在****老师的指导下,软件部分也攻克下了,最后在写论文时指导老师也给予了我很大的帮助,这次毕业设计能顺利完成,衷心感谢翁志远老师对我的帮助和指导!
参考文献
[1]郭天祥,新概念51单片机C语言教程:
入门、提高、开发、扩展全攻略.电子工业出版社.2009
[14]谢维成,《单片机原理与应用》,清华大学出版社,2006
附录一:
电路原理图
附录二:
源程序
1.Main.c
#include"AT89C51.h"
u16timecount;
bitStatu=0;
bitHz=0;
sbitSound=P1^0;
//*********定时器0初始化*********
voidTimerInit()
{
TMOD=0x01;//定时器016位计数模式
TH0=(65535-1428)/256;//700Hz
TL0=(65535-1428)%256;//700Hz
EA=1;
ET0=1;//打开定时器0中断
TR0=1;
}
//*********主函数********************
voidmain(void)
{
u8key;
TimerInit();
Sound=0;
while
(1)
{
key=Keyscan();
if(key!
=KEYPUTDOWN)
{
KEYPUTDOWN=key;
Statu=1;//打开门铃
Hz=0;//700Hz
delay_ms(350);//350ms
Hz=1;//500Hz
delay_ms(500);//500ms
Statu=0;//关闭门铃
}
}
}
//***************************
//************定时器0中断服务函数*****
voidTimer0Function(void)interrupt1
{
if(Statu==1)
{
Sound=~Sound;
}
if(!
Hz)
{
TH0=(65535-1428)/256;//700Hz
TL0=(65535-1428)%256;
}
else
{
TH0=(65535-2000)/256;//500Hz
TL0=(65535-2000)%256;
}
}
2.按键扫描程序
#include"AT89C51.h"
sbitKey=P1^7;
ucharKEYPUTDOWN=0;
ucha
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 参考资料 单片机 叮咚 门铃