ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:349.72KB ,
资源ID:18683452      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18683452.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的声光控制开关的设计Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的声光控制开关的设计Word格式文档下载.docx

1、在光线较暗时,负载电路进行声音检测。用声音传感器将声音信号转换成电信号,从而推动触发工作。当声强达到一定程度时使得灯泡自动点亮,经过内部设定的时间后,灯泡自动熄灭。在延时部分采用单片机内部定时器从而实现不同时间的定时,并根据场所及使用人群的不同通过设置单片机引脚的状态来设置不同的延时时间值,并用LED动态显示方式显示倒计时等数据。单片机通过继电器控制照明设备的打开或者关闭。其原理框如图1所示:图1、原理框图2.1.1芯片AT89C51的介绍AT89C51【6】是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器。AT89C51单片机的可靠性高,体积小,功耗低,便于扩

2、展,价格便宜,易于产品化。该单片机中有一个8位的微处理器,包括了运算器和控制器两大部分,还增加了面向控制的处理功能。具有5个中断源、2级中断优先权。两个16位的定时器/计数器。128字节数据存储器RAM/SFR,用以存放可以读/写的数据。4个8位并行I/O端口P0P3。片内振荡器和时钟产生电路。一个全双工的串行口,具有四种工作方式。有21个特殊功能寄存器。2.1.2外形及引脚排列如图2所示 ,其引脚说明如下:图2 AT89C51的引脚排列1. VCC:运行和程序校验时接电源正端。 2. GND:接地。 3. XTAL1:输入到单片微机内部振荡器的反相放大器。4. XTAL2:反相放大器的输出,

3、输入到内部时钟发生器。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.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(

4、记时器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】,是指用最少的原件组成的单片机可以工作

5、的系统。对于51系列单片机来说,最小系统应包括单片机、复位电路、晶振电路。最小系统电路图如3所示:图3、单片机最小系统2.2.1时钟电路AT89C51单片机的时钟产生方法有两种。内部时钟方式和外部时钟方式。本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。内部方式时,时钟发生器对振荡脉冲二分频。系统对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性、起振的快速性和温度的稳定性。因此本系统的晶体振荡器的值为12MHZ,电容取30pF。2.2.2复位电路当操作或程序运行出错使系统处于死锁状态时

6、,为了摆脱困境可以通过复位键重新启动。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。本设计使用的是按键手动复位。手动按钮复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。在按键复位的使用过程中,按键抖动现象是不容忽视的,所以为了确保按键的一次闭合单片机只处理一次,就必须在设计时考虑到抖动的消除。2.3光信号检测电路2.3.1 光敏电阻介绍 光敏电阻是利用半导体的光电效应制成的一种电阻值随入射光的强弱而

7、改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。本实验选用MG45型光敏电阻。在黑暗条件下,光敏电阻的可达110M欧,在强光条件(100LX)下,阻值仅有几百至数千欧姆。参数表1如下所示:2.3.2 光控部分原理声光控制电路在光照强时电路不工作,所以单片机首先对关照进行检测,此处使用到光敏电阻、电压比较器、反相器等元件进行检测。设计图如图4所示:图4、光信号检测电路在图2-3中LDR1为光敏电阻,光敏电阻器实现的功能是:当有光照时,光敏电阻的阻值下降,这时的阻值仅有几百至数千欧姆,所以LM393反相输入端为高电平。当光线不足或没有光线时,其阻值可以达到兆欧级以上,此时相当于电路处于断路状

8、态,所以LM393反相输入端为低电平。其中LM393为电压比较器【1】,当反相输入端的电位高于同相输入端时,LM393则输出一低电平。而当同相输入端的电位高于反相输入端的电位时,LM393将会输出一高电平。此时信号会经过具有施密特功能的74LS14反向器,变为低电平后送到单片机中,经过单片机检测是否有足够的光照,当光照不足时则进行声音检测。在此电路中可以通过改变滑动变阻器的阻值来改变同相输入端的电压,从而改变对光照强度检测的灵敏度,以满足不同场所或人群的需要。2.4声音信号检测电路2.4.1驻极体话筒的介绍驻极体话筒【11】具有体积小,电声性能好,结构简单,价格低廉等特点,在生活中应用非常广泛

9、。驻极体结构有振膜、背极、空隙三部分,这样在振膜与背极间形成一个具有定量电荷的电容结构。驻极体是由进行特殊处理的高分子材料组成,这些高分子材料表面具有永久电荷(Q),总的电荷量是不变,当极板在声波压力下后退时,电容量减小,电容两极间的电压就会成反比的升高,反之电压就会成反比的降低。最后再通过阻抗非常高的场效应将电容两端的电压取出来,同时进行放大,便可以得到和声音对应的电压了。2.4.2 AD0832的介绍由于单片机无法对模拟信号进行识别,因此在对声音信号进行检测时首先要将声音信号对应的电压值转变成数字信号,所以此系统需要使用到A/D转换器。本系统中使用到的是AD0832【2】,该芯片能将05V

10、的模拟电压量转换为0255级的数字量。它具有易于和微处理器接口或独立使用的特点,其转换速度较高, 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声

11、音信号采集电路用驻极体话筒将得到与声音信号对应的电压值。若有声音时则会输出一电压值,由于传声器转换的电压值非常小,所以必须将该电压经过LM324运算放大器进行放大,放大倍数为RV1/R9,RV1为可变电阻,通过调节其阻值使其放大倍数产生变化,起到了调节声音灵敏度的作用。放大后的电压必须经过ADC0832进行模数转换,由单片机内部程序对转换值进行对比。当值高于预设值时单片机启动T0计时中断和照明灯控制电路,使照明灯点亮,并通过数码管显示倒计时时间。当没有声音或声音微弱时,系统不进行下一步的工作。2.5延时时间显示电路2.5.1数码管结构和分类 数码管【5】是一种半导体发光器件,其基本单元是发光二

12、极管。按发光二极管单元连接方式分为共阴极数码管和共阳极数码管。共阴极数码管是指将所有发光二极管的阴极接到一起形成公共阴极。如图6(c)所示,共阴数码管在应用时应将公共极接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极。如图6(b)所示,在使用时应将公共阳极接+5V电压,当某一字段发光二极管的阴极端输入低电平时,相应字段就点亮。(a)数码管引脚图 (b)共阳极内部结构图 (c)共阴极内部结构图图2-52.5.2数码管驱动方式数码管要正常显示【5】,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根

13、据数码管的驱动方式的不同,可以分为静态式和动态式两类。 静态显示驱动:静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,LED的亮度高,容易控制。缺点是硬件电路比较复杂,功耗大,所需口线多,成本较高。若显示位数增多,则静态显示方式很难适应。 动态显示驱动:数码管动态显示一般是将所有位的段选线的同名端联在一起,由一个8位I/O口控制,形成段选线的多路复用。当单片机输出字形码时,所有数码管都接收到相同的字形码这就是动态驱动。点亮时间为12ms,由于人眼有视觉暂留现象,就造成了多位同

14、时点亮的假象。2.5.3定时/计数部分AT89C51芯片内有两个16位的定时/计数器,都可以由软件来设定。在此设计中用到的是T0作为定时器。由于在系统中需要设置延时时间电路,目的是在照明灯点亮后经过一定延时能自动熄灭。电路中采用了单片机内部定时器。2.5.4 显示电路分析系统功能中有一点是可以根据场所及使用人群的不同设置不同的延时时间值。虽然动态显示的效果和静态显示是一样的,但动态显示能够节省大量的I/O端口,而且功耗更低。所以设计中采用LED动态显示方式显示倒计时数据。电路如图7所示:图7、延时时间显示电路由图可知采用了共阴极的2位数码显示管做显示电路,所以只要数码管的a、b、c、d、e、f

15、、g、h引脚为高电平,那么其对应的二极管就会发光,使数码显示管显示09的编码见表2。表2 共阴极数码显示管字型代码字型共阴极代码3FH56DH106H67DH25BH707H34FH87FH466H96FH为了实现不同场所及使用人群的不同而灯亮的时间不一,在单片机的P1口接入了三个按键。电路如图7所示。当单片机进行按键扫描时,如果P1.0口按下则灯亮时间为10s,并且显示器进行10s倒计时;如果P1.1口按下则为20s倒计时;如果P1.2口按下则为30s。数码显示管的八位段选端接入单片机的P0口,而位选端由P2口控制,分别为P2.0口为十位,P2.1口为个位。设计中采用了目前最常用的软件消抖的

16、方法,选择5ms的延时来消除抖动,延时后在进行一次按键是否闭合。图8、按键接口电路 图8中的按键部分可以进行扩展,如果接入一个键盘则可以对延时时间自行进行设置。由于本设计中按键功能已经可以满足需要,所以没有进行扩展。2.6总原理图3.系统软件设计 本系统的软件设计是通过C语言进行编程,主要有主程序、键盘扫描程序、初始化程序、A/D转换程序、延时程序等部分组成。主程序流程图如图9所示:图9、系统流程图3.1 延时程序 在整个编写程序中要用到许多的延时,所以程序中包含一个大约为1ms的延时子程序,方便在程序中的调用,程序代码如下:/延时子程序;void delay(uint z) uint x,y

17、; for(x=z;x0;x-) for(y=125;yy-);3.2 按键扫描子程序 由于在P1口接入了三个按键,通过按键扫描来确定定时的时间长度,所以先写入一个按键扫描子程序,可在主程序中直接调用。程序代码如下:/键盘扫描函数 ;void keyscan() if(key1=0) delay(5); /消抖; if(key1=0) /按下key1灯亮时间为10s; temp=10; /10s延时; if(key2=0) if(key2=0) /按下key2灯亮时间为20s; temp=20; if(key3=0) delay(5); if(key3=0) /按下key3灯亮时间为30s;

18、temp=30;3.3 LED显示程序 系统中通过数码管对不同延时时间进行显示,以便直观的看出系统可以自行选择灯亮的时间长度。/显示数码管内容;void display(uchar shi,uchar ge) P2=0xfe; P0=tableshi; delay(1); P2=0xfd; P0=tablege; P2=0xfc;3.4 AD转换程序uchar adc0832(unsigned char ch) /AD转换,返回结果; uchar i=0; uchar j; uint dat1=0; uchar dat2=0; if(ch=0)ch=2; if(ch=1)ch=3; adDI=

19、1; _nop_(); adCS=0;/拉低CS端; adCLK=1;/拉高CLK端; adCLK=0;/拉低CLK端,形成下降沿1 ; adDI=ch&0x1;/拉低CLK端,形成下降沿2 ; adDI=(ch1)&/拉低CLK端,形成下降沿3 ;/控制命令结束 ; dat1=0; for(i=0;i8;i+) dat1|=adDO;/收数据;/形成一次时钟脉冲 ; dat1=1; if(i=7)dat1|=adDO; j=0; j=j|adDO; j=j7; dat2=dat2|j; if(i adCS=1;/拉低CLK端; adDO=1;/拉高数据端,回到初始状态 ;=8; dat1|=

20、dat2; return(dat1);3.5 总程序#includeintrins.h#define uint unsigned int#define uchar unsigned charuchar temp,aa,bai,shi,ge,tt;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/ /数码管段定义;uchar code table1=0xfb,0xfd,0xfe; /数码管位定义;sbit open=P37;sbit key1=P10;sbit key2=P11;sbit key3=P12;sb

21、it light=P32;/ADC0832的引脚;sbit adCS =P31; /ADC0832 片选 ;sbit adDI =P33; /ADC0832 通道选择和初始化输入 ;sbit adDO =P33; /ADC0832 的数据输出;sbit adCLK =P30; /ADC0832 时钟信号;uchar getdat; /获取ADC转换回来的值;void display(uchar shi,uchar ge);void delay(uint z);void keyscan();void init();uchar adc0832(unsigned char channel);/主程序 ;void main() init();/初始化子程序 ; keyscan();while(1) light=1; /光线初始化为0; if(light=0) getdat=adc0832(1); display(temp/10,temp%10); /显示数字; if (getdat120) /声音超过2.4V后灯亮; shi=temp/10; /取出十位数字; ge=temp%10; /取出个位数字;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1