基于AT89C51单片机的声光控制开关的设计(毕业论文).docx

上传人:聆听****声音 文档编号:608090 上传时间:2023-04-29 格式:DOCX 页数:42 大小:234.32KB
下载 相关 举报
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第1页
第1页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第2页
第2页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第3页
第3页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第4页
第4页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第5页
第5页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第6页
第6页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第7页
第7页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第8页
第8页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第9页
第9页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第10页
第10页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第11页
第11页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第12页
第12页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第13页
第13页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第14页
第14页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第15页
第15页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第16页
第16页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第17页
第17页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第18页
第18页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第19页
第19页 / 共42页
基于AT89C51单片机的声光控制开关的设计(毕业论文).docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于AT89C51单片机的声光控制开关的设计(毕业论文).docx

《基于AT89C51单片机的声光控制开关的设计(毕业论文).docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的声光控制开关的设计(毕业论文).docx(42页珍藏版)》请在冰点文库上搜索。

基于AT89C51单片机的声光控制开关的设计(毕业论文).docx

西北民族大学学士学位论文

——————————————————————————————————————————————

基于AT89C51单片机的声光控制开关的设计

摘要

在我们的生活中无时无刻在使用着灯,而在许多公共场所长明灯现象十分普遍,这造成了能源的极大浪费。

因此要设计一种既节约又很方便实用的照明灯。

本文阐述了简单的声光控制的照明灯的电路设计。

通过AT89C51单片机结合LED显示技术、声音检测技术、光信号检测技术、延时技术、按键扫描等技术来实现对照明灯的控制。

首先通过光敏电阻对光照强度进行检测,当白天光线强时,不管有多大的声音,照明灯都不会点亮。

而在夜晚光线暗时,声音检测电路只要检测到有足够的声响时,就会自动点亮照明灯,过数十秒后又自动熄灭。

这样就使人们的生活更加方便,同时,也达到了节电和节能的目的,延长了灯的使用寿命。

关键词 单片机,声控,光控,照明控制

5

ABSTRACT

Inourlives,noatalltimeswheninusewiththelight,andtheeternalfireisverycommoninmanypublicplaces,whichresultedintremendouswasteofenergy.SoIwanttodesignapracticallightingissavingandveryconvenient.Thisarticleexplainsasimplesoundandlightcontrolcircuitdesignoflighting.ByAT89C51monolithicintegrationofLEDdisplaytechnologyandsounddetectiontechnology,opticalsignaldetection,delay,keypadscanningtechnologytocontrollightcontrol.

Firstphotosensitiveresistoronmeasurementoflightintensity,whenthedaywhenastronglight,nomatterhowmuchnoise,lightsarenotlit.Andwhenthenightlight,sounddetectioncircuitforaslongasenoughwhensoundisdetected,itwillautomaticallypointbrightlights,automaticallyafterfewsecondsoff.Thismakespeople'slivesmoreconvenient,meanwhile,reachedapower-savingandenergy-savingpurposes,extendthelifeofthelamp.

Keywords:

Single-chipMicrocomputer,Acousticcontrol,Light-operated,Lighting

control

目录

1.绪论 1

1.1课题研究的背景和意义 1

1.2国内外概况 1

2.系统硬件设计 2

2.1单片机控制部分 2

2.1.1芯片AT89C51的介绍 3

2.1.2外形及引脚排列 4

2.2单片机最小系统 5

2.2.1时钟电路 6

2.2.2复位电路 6

2.3光信号检测电路 7

2.3.1光敏电阻介绍 7

2.3.2光控部分原理 8

2.4声音信号检测电路 9

2.4.1驻极体话筒的介绍 9

2.4.2AD0832的介绍 9

2.4.3声控部分原理 10

2.5延时时间显示电路 11

2.5.1数码管结构和分类 11

2.5.2数码管驱动方式 12

2.5.3定时/计数部分 13

2.5.4显示电路分析 13

2.6总原理图 15

3.系统软件设计 15

3.1延时程序 16

3.2按键扫描子程序 17

3.3LED显示程序 18

3.4AD转换程序 19

3.5总程序 22

4.调试与仿真 31

4.1光信号检测 32

4.2声音信号检测 33

4.3硬件仿真图 34

5.设计总结 35

致 谢 36

参考文献 37

1.绪论

1.1课题研究的背景和意义【10】

现如今电子技术迅速发展,各先进国家无不将它放在优先发展的地位。

在我们的生活中许多公共场所的白炽灯,在夜间不论使用与否都会点亮,这就造成了资源的严重浪费,同时又容易造成事故隐患。

因此用数字电路技术实现灯的自动发亮、节能节电、延长灯的寿命变得越来越重要。

本文研究的声光控电路具有接线简单、安装方便、使用寿命长、体积小等优点。

系统在光线不足并有一定的声响时,照明灯就会自动点亮,经过一段延时后会自动熄灭。

将其广泛应用于走廊、楼道招待所等公共场所,会使人们的生活更加方便安全。

随着现代科学技术的迅速发展,各种采用传感器的电子电路控制的新型灯具也不断推出。

声光控开关能较好的减缓世界能源危机到来的步伐。

有利于我国实现可持续发展,构建节约社会型。

1.2国内外概况【11】

由于近年来我国的照明器材行业的迅速崛起,中国已经成为电光源产品的主要输出国之一。

在地球资源日渐衰竭的今日,环保、节能是当今各产业发展的重心,尤其是需要消耗大量电力的照明产业,努力增加节能光源和不同花样、用途的照明器具的开发,加快绿色、节能光源产品的开发推广。

根据国内外市场需求预测,随着人们生活水平的不断提高,对照明电器产品也提出了更高的要求。

进一步提高照明产品的质量和档次进一步提高照明产品的质量和档

1

西北民族大学学士学位论文

——————————————————————————————————————————————

次,这既是当前摆在我们面前的课题,同时也是全行业共同努力的长期目标。

从国际市场分析,针对现在的情况我们与发达国家在照明电器产品的质量、生产工艺、设备、材料以及新产品开发能力等方面均存在着一定的差距。

我国目前已成为世界照明电器产品生产的大国,未来的目标是要成为生产强国。

2.系统硬件设计

2.1单片机控制部分

本设计通过AT89C51单片机结合LED显示技术、声音传感技术、光感技术、延时技术等来实现对照明设备的声光控制。

当光线较亮时,采用光敏电阻把外界光亮程度转换成相应的电压值,然后通过电压比较后给单片机输入数字信号。

在光线较暗时,负载电路进行声音检测。

用声音传感器将声音信号转换成电信号,从而推动触发工作。

当声强达到一定程度时使得灯泡自动点亮,经过内部设定的时间后,灯泡自动熄灭。

在延时部分采用单片机内部定时器从而实现不同时间的定时,并根据场所及使用人群的不同通过设置单片机引脚的状态来设置不同的延时时间值,并用LED动态显示方式显示倒计时等数据。

单片机通过继电器控制照明设备的打开或者关闭。

其原理框如图1所示:

37

图1、原理框图

2.1.1芯片AT89C51的介绍

AT89C51【6】是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器。

AT89C51单片机的可靠性高,体积小,功耗低,便于扩展,价格便宜,易于产品化。

◆该单片机中有一个8位的微处理器,包括了运算器和控制器两大部分,还增加了面向控制的处理功能。

◆具有5个中断源、2级中断优先权。

◆两个16位的定时器/计数器。

◆128字节数据存储器RAM/SFR,用以存放可以读/写的数据。

◆4个8位并行I/O端口P0~P3。

◆片内振荡器和时钟产生电路。

◆一个全双工的串行口,具有四种工作方式。

◆有21个特殊功能寄存器。

2.1.2外形及引脚排列

如图2所示,其引脚说明如下:

图2 AT89C51的引脚排列

1.VCC:

运行和程序校验时接电源正端。

2.GND:

接地。

3.XTAL1:

输入到单片微机内部振荡器的反相放大器。

4.XTAL2:

反相放大器的输出,输入到内部时钟发生器。

5.P0口:

P0口为一个8位漏级开路双向I/O口,(作为总线时)能驱动8个LSTTL负载。

6.P1口:

P1口是一个8位准双向I/O口,P1口能驱动4个LSTTL负载。

7.P2口:

P2口为一个8位准双向I/O口,P2口可以驱动4个LSTTL负载。

8.P3口:

P3口管脚是8位准双向I/O口,具有内部上拉电路。

可以驱动8个LSTTL

负载。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)

9.RST:

复位输入信号,高电平有效。

在振荡器工作时,在RST上作用两个机器周期以上的高电平,将单片微机复位。

10.ALE/PROG:

在访问外部存储器或I/O时,用于锁存低8位地址,以实现低8位地址与数据的隔离。

11./PSEN:

片外程序存储器的读选通信号。

在由外部程序存储器取指期间,在每个机器周期中,当PSEN低电平有效时,程序存储器的内容被送上P0口。

12./EA/VPP:

片外程序存储器访问允许信号,低电平有效。

2.2单片机最小系统

单片机最小应用系统【6】,是指用最少的原件组成的单片机可以工作的系统。

对于

51系列单片机来说,最小系统应包括单片机、复位电路、晶振电路。

最小系统电路图如3所示:

图3、单片机最小系统

2.2.1时钟电路

AT89C51单片机的时钟产生方法有两种。

内部时钟方式和外部时钟方式。

本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。

内部方式时,时钟发生器对振荡脉冲二分频。

系统对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性、起振的快速性和温度的稳定性。

因此本系统的晶体振荡器的值为12MHZ,电容取30pF。

2.2.2复位电路

当操作或程序运行出错使系统处于死锁状态时,为了摆脱困境可以通过复位键重新启动。

当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。

单片机系统的复位方式有:

手动按钮复位和上电复位。

本设计使用的是按键手动复位。

手动按钮复位需要人为在复位输入端RST上加入高电平。

一般采用的办法是在RST端和正电源Vcc之间接一个按钮。

在按键复位的使用过程中,按键抖动现象是不容忽视的,所以为了确保按键的一次闭合单片机只处理一次,就必须在设计时考虑到抖动的消除。

2.3光信号检测电路

2.3.1光敏电阻介绍

光敏电阻是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。

本实验选用MG45型光敏电阻。

在黑暗条件下,光敏电阻的可达1~10M欧,在强光条件(100LX)下,阻值仅有几百至数千欧姆。

参数表1如下所示:

2.3.2光控部分原理

声光控制电路在光照强时电路不工作,所以单片机首先对关照进行检测,此处使用到光敏电阻、电压比较器、反相器等元件进行检测。

设计图如图4所示:

图4、光信号检测电路

在图2-3中LDR1为光敏电阻,光敏电阻器实现的功能是:

当有光照时,光敏电阻的阻值下降,这时的阻值仅有几百至数千欧姆,所以LM393反相输入端为高电平。

当光线不足或没有光线时,其阻值可以达到兆欧级以上,此时相当于电路处于断路状态,所以LM393反相输入端为低电平。

其中LM393为电压比较器【1】,当反相输入端的电位高于同相输入端时,LM393则输出一低电平。

而当同相输入端的电位高于反相输入端的电位时,LM393将会输出一高电平。

此时信号会经过具有施密特功能的74LS14反向器,变为低电平后送到单片机中,经过单片机检测是否有足够的光照,当光照不足时则进行声音检测。

在此电路中可以通过改变滑动变阻器的阻值来改变同相输入端的电压,从而改变对光照强度检测的灵敏度,以满足不同场所或人群的需要。

2.4声音信号检测电路

2.4.1驻极体话筒的介绍

驻极体话筒【11】具有体积小,电声性能好,结构简单,价格低廉等特点,在生活中应用非常广泛。

驻极体结构有振膜、背极、空隙三部分,这样在振膜与背极间形成一个具有定量电荷的电容结构。

驻极体是由进行特殊处理的高分子材料组成,这些高分子材料表面具有永久电荷(Q),总的电荷量是不变,当极板在声波压力下后退时,电容量减小,电容两极间的电压就会成反比的升高,反之电压就会成反比的降低。

最后再通过阻抗非常高的场效应将电容两端的电压取出来,同时进行放大,便可以得到和声音对应的电压了。

2.4.2AD0832的介绍

由于单片机无法对模拟信号进行识别,因此在对声音信号进行检测时首先要将声音信号对应的电压值转变成数字信号,所以此系统需要使用到A/D转换器。

本系统中使用到的是AD0832【2】,该芯片能将0~5V的模拟电压量转换为0~255级的数字量。

它具有易于和微处理器接口或独立使用的特点,其转换速度较高,

250KHz时转换时间为32s。

可以显示0.00-5.0V的电压范围。

ADC0832的引脚介绍如下:

•CS_片选使能,低电平芯片使能。

•CH0模拟输入通道0,或作为IN+/-使用。

•CH1模拟输入通道1,或作为IN+/-使用。

•CLK芯片时钟输入。

•DI数据信号输入,选择通道控制。

•DO数据信号输出,转换数据输出。

•GND芯片参考0电位(地)。

•Vcc/REF电源输入及参考电压输入(复用)。

2.4.3声控部分原理

当单片机检测到光线不足时,便启动声音信号采集电路如图5所示:

图5声音信号采集电路

用驻极体话筒将得到与声音信号对应的电压值。

若有声音时则会输出一电压值,

由于传声器转换的电压值非常小,所以必须将该电压经过LM324运算放大器进行放大,放大倍数为RV1/R9,RV1为可变电阻,通过调节其阻值使其放大倍数产生变化,起到了调节声音灵敏度的作用。

放大后的电压必须经过ADC0832进行模数转换,由单片机内部程序对转换值进行对比。

当值高于预设值时单片机启动T0计时中断和照明灯控制电路,使照明灯点亮,并通过数码管显示倒计时时间。

当没有声音或声音微弱时,系统不进行下一步的工作。

2.5延时时间显示电路

2.5.1数码管结构和分类

数码管【5】是一种半导体发光器件,其基本单元是发光二极管。

按发光二极管单元连接方式分为共阴极数码管和共阳极数码管。

共阴极数码管是指将所有发光二极管的阴极接到一起形成公共阴极。

如图6(c)所示,共阴数码管在应用时应将公共极接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。

共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极。

如图6(b)所示,在使用时应将公共阳极接+5V电压,当某一字段发光二极管的阴极端输入低电平时,相应字段就点亮。

(a)数码管引脚图(b)共阳极内部结构图(c)共阴极内部结构图

图2-5

2.5.2数码管驱动方式

数码管要正常显示【5】,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

①静态显示驱动:

静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。

当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。

这种方法的优点是占用CPU时间少,LED的亮度高,容易控制。

缺点是硬件电路比较复杂,功耗大,所需口线多,成本较高。

若显示位数增多,则静态显示方式很难适应。

②动态显示驱动:

数码管动态显示一般是将所有位的段选线的同名端联在一起,由一个8位I/O口控制,形成段选线的多路复用。

当单片机输出字形码时,所有数码管都接收到相同的字形码这就是动态驱动。

点亮时间为1~2ms,由于人眼有视觉暂留现象,就造成了多位同时点亮的假象。

2.5.3定时/计数部分

AT89C51芯片内有两个16位的定时/计数器,都可以由软件来设定。

在此设计中用到的是T0作为定时器。

由于在系统中需要设置延时时间电路,目的是在照明灯点亮后经过一定延时能自动熄灭。

电路中采用了单片机内部定时器。

2.5.4显示电路分析

系统功能中有一点是可以根据场所及使用人群的不同设置不同的延时时间值。

虽然动态显示的效果和静态显示是一样的,但动态显示能够节省大量的I/O端口,而且功耗更低。

所以设计中采用LED动态显示方式显示倒计时数据。

电路如图7所示:

图7、延时时间显示电路

由图可知采用了共阴极的2位数码显示管做显示电路,所以只要数码管的

a、b、c、d、e、f、g、h引脚为高电平,那么其对应的二极管就会发光,使数码显示管

显示0~9的编码见表2。

表2共阴极数码显示管字型代码

字型

共阴极代码 字型

共阴极代码

0

3FH 5

6DH

1

06H 6

7DH

2

5BH 7

07H

3

4FH 8

7FH

4

66H 9

6FH

为了实现不同场所及使用人群的不同而灯亮的时间不一,在单片机的P1口接入了三个按键。

电路如图7所示。

当单片机进行按键扫描时,如果P1.0口按下则灯亮时间为10s,并且显示器进行10s倒计时;如果P1.1口按下则为20s倒计时;如果P1.2口

按下则为30s。

数码显示管的八位段选端接入单片机的P0口,而位选端由P2口控制,分别为P2.0口为十位,P2.1口为个位。

设计中采用了目前最常用的软件消抖的方法,选择5ms的延时来消除抖动,延时后在进行一次按键是否闭合。

图8、按键接口电路

图8中的按键部分可以进行扩展,如果接入一个键盘则可以对延时时间自行进行设置。

由于本设计中按键功能已经可以满足需要,所以没有进行扩展。

2.6总原理图

3.系统软件设计

本系统的软件设计是通过C语言进行编程,主要有主程序、键盘扫描程序、初始化程序、A/D转换程序、延时程序等部分组成。

主程序流程图如图9所示:

图9、系统流程图

3.1延时程序

在整个编写程序中要用到许多的延时,所以程序中包含一个大约为1ms的延时子程序,方便在程序中的调用,程序代码如下:

//延时子程序;voiddelay(uintz)

{

uintx,y;for(x=z;x>0;x--)

for(y=125;y>0;y--);

}

3.2按键扫描子程序

由于在P1口接入了三个按键,通过按键扫描来确定定时的时间长度,所以先写入一个按键扫描子程序,可在主程序中直接调用。

程序代码如下:

//键盘扫描函数;voidkeyscan()

{

if(key1==0)

{

delay(5); //消抖;

if(key1==0) //按下key1灯亮时间为10s;

{

temp=10; //10s延时;

}

}

if(key2==0)

{

delay(5); //消抖;

if(key2==0) //按下key2灯亮时间为20s;

{

temp=20;

}

}

if(key3==0)

{

delay(5); //消抖;

if(key3==0) //按下key3灯亮时间为30s;

{

temp=30;

}

}

}

3.3LED显示程序

系统中通过数码管对不同延时时间进行显示,以便直观的看出系统可以自行选择灯亮的时间长度。

//显示数码管内容;

voiddisplay(ucharshi,ucharge)

{

P2=0xfe;

P0=table[shi];delay

(1);P2=0xfd;P0=table[ge];delay

(1);P2=0xfc;

}

3.4AD转换程序

ucharadc0832(unsignedcharch)//AD转换,返回结果;

{

uchari=0;ucharj;

uintdat1=0;uchardat2=0;if(ch==0)ch=2;if(ch==1)ch=3;adDI=1;

_nop_();

_nop_();

adCS=0;//拉低CS端;

_nop_();

_nop_();

adCLK=1;//拉高CLK端;

_nop_();

_nop_();

adCLK=0;//拉低CLK端,形成下降沿1;

_nop_();

_nop_();

adCLK=1;//拉高CLK端;adDI=ch&0x1;

_nop_();

_nop_();

adCLK=0;//拉低CLK端,形成下降沿2;

_nop_();

_nop_();

adCLK=1;//拉高CLK端;adDI=(ch>>1)&0x1;

_nop_();

_nop_();

adCLK=0;//拉低CLK端,形成下降沿3;adDI=1;//控制命令结束;

_nop_();

_nop_();

dat1=0;for(i=0;i<8;i++)

{

dat1|=adDO;//收数据;adCLK=1;

_nop_();

_nop_();

adCLK=0;//形成一次时钟脉冲;

_nop_();

_nop_();dat1<<=1;

if(i==7)dat1|=adDO;

}

for(i=0;i<8;i++)

{

j=0;

j=j|adDO;//收数据;adCLK=1;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2