欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载
     

    592.基于AT89S52的智能电风扇设计【单片机毕业设计课程设计】.doc

    • 资源ID:3930824       资源大小:282.50KB        全文页数:24页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    592.基于AT89S52的智能电风扇设计【单片机毕业设计课程设计】.doc

    基于AT89S52的智能电风扇设计【摘要】本设计以AT89S52单片机为控制中心,主要通过提取热释电红外传感器感应到的人体红外线信息和温度传感器DS18B20得到的温度以及内部定时器设定时间长短来控制电风扇的开关及转速的变化。 【关键字】 单片机(AT89S52)、温度传感器(DS18B20)、热释电红外传感器、继电器、蜂鸣器 移位寄存器、数码管目录引言 31、总体方案设计及功能描述42、功能模块硬件简介与实现4 2.1、键盘输入电路 4 2.2、热释电红外传感器模块 4 2.2.1、热释电红外线传感器原理简介4 2.2.2、热释电红外线传感器应用5 2.3、温度传感器5 2.3.1、温度传感器DS18B20简介5 2.3.2、DS18B20读写及初始化时序5 2.3.3、DS18B20的一般操作过程6 2.3.4、DS18B20的温度存储方式即温度计算6 2.4、数码管显示电路6 2.4.1、74ls164简介6 2.4.2、共阴极八段数码管简介 6 2.4.3、显示电路设计 7 2.5、发光二极管电路7 2.6、蜂鸣器电路7 2.7、继电器控制电路8 2.7.1、继电器简介 8 2.7.2、继电器驱动电路设计及工作原理简介 8 2.8、整体电路硬件设计93、AT89S52软件设计与实现 10 3.1、整体设计思路介绍 10 3.2、主要部分流程图 10 3.2.1、主程序流程图 10 3.2.2、外部中断流程图 10 3.2.3、定时器0中断流程图 11 3.2.4、定时器1中断流程图 114、总结11致谢词12参考文献12附页:13引言随着人们生活水平及科技水平的不断提高,现在家用电器在款式、功能等方面日益求精,并朝着健康、安全、多功能、节能等方向发展。过去的电器不断的显露出其不足之处。电风扇作为家用电器的一种,同样存在类似的问题。 现在电风扇的现状:大部分只有手动调速,再加上一个定时器,功能单一。 存在的隐患或不足:比如说人们常常离开后忘记关闭电风扇,浪费电且不说还容易引发火灾,长时间工作还容易损坏电器。再比如说前半夜温度高电风扇调的风速较高,但到了后半夜气温下降,风速不会随着气温变化,容易着凉。 之所以会产生这些隐患的根本原因是:缺乏对环境的检测。 如果能使电风扇具有对环境进行检测的功能,当房间里面没有人时能自动的关闭电风扇;当温度下降时能自动的减小风速甚至关闭风扇,这样一来就避免了上述的不足。本次设计就是围绕这两点对现有电风扇进行改进。1、 总体方案设计及功能描述本设计是以AT89S52单片机控制中心,主要通过提取热释电红外传感器感应到的人体红外线信息和温度传感器DS18B20得到的温度以及内部定时器设定时间长短来控制电风扇的开关及转速的变化。功能描述:电风扇工作在四种状态:手动调速状态、自动调速状态、定时状态、停止状态。手动状态时可以手动调节速度;自动状态时通过温度高低自动调节速度,如果出现手动现象则变为手动状态;定时状态时可以调节定时时间,并设定是否启动定时,之后可以手动退出,也可以在不操作6秒后自动退出进入手动状态;停止状态时可以被唤醒并进入自动状态。当没有检测到人体存在超过3分钟或定时完毕时进入停止状态。在数码管显示方面,当没有定时时,只显示气温,当定时启动时气温和定时剩余时间以3秒的速度交替显示。系统方框图如下图所示,主要包括:输入、控制、输出三大部分8个功能模块。图 1-12、 功能模块硬件简介与实现2.1、键盘输入电路由于设计中用到的按键数目不多,所以可以直接用AT89S52的通用IO端口且选用AT89S52的P1口(内部有上拉电阻)作为键盘接口。对于按键只需一端接地另一端接P1口即可。见下图(2-1):2.2、热释电红外传感器模块2.2.1、热释电红外线传感器原理简介 人体辐射的红外线中心波长为 910-um,而探测元件的波长灵敏度在 0.220-um 范围内几乎稳定不变。在传感器顶端开设了一个装有滤光镜片的窗口,这个滤光片可通过光的波长范围为 710-um,正好适合于人体红外辐射的探测,而对其它波长的红外线由滤光片予以吸收,这样便形成了一种专门用作探测人体辐射的红外线传感器。 实质上热释电传感器是对温度敏感的传感器。它由陶瓷氧化物或压电晶体元件组成,在元件两个表面做成电极,如图2所示。在环境温度有T的变化时,由于有热释电效应,在两个电极上会产生电荷Q,即在两电极之间产生一微弱的电压V。2.2.2、热释电红外线传感器应用热释电红外线传感器有三个端口,一个接电源、一个接地、一个信号端口,当有人进入其检测区域时,信号端口便产生一个电平跳变,并维持数秒钟,我们就是利用这个跳变来判断是否有人在这个检测区域。2.3、温度传感器2.3.1、温度传感器DS18B20简介新型数字温度传感器DS18B20具有体积更小、精度更高、适用电压更宽、采用一线总线,在实际应用中取得了良好的测温效果。DS18B20的主要特性:(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(5)测温温范围55125(6)最高分辨率为0.0625。2.3.2、DS18B20读写及初始化时序2.3.3、DS18B20的一般操作过程(1)、初始化;(2)、跳过ROM(命令:CCH);(3)、温度变换(命令:44H);(4)、读暂存存储器(命令:BEH);注意:每次读取温度都要经过上面四个过程。2.3.4、DS18B20的温度存储方式即温度计算 DS18B20是用12位存储温度,最高位为符号位,下图为它的温度存储方式:这是12位转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。2.4、数码管显示电路2.4.1、74ls164简介 移位寄存器是一类应用很广的时序逻辑电路,在时钟脉冲的作用下,低位寄存器的数码送给高位寄存器,作为高位寄存器的次态输出。 在时钟脉冲的作用下,高位寄存器的数码送给低位寄存器,作为低位寄存器的次态输出;移位寄存器:除具寄存器的功能外,所存储的数码在时钟脉冲的作用下还可以移位。74ls164是八位串入并出移位寄存器,其工作电压范围4.755.25V,大于2V的高电平输入、小于0.8V的低电平输入,clock最高响应频率为25MHZ,八位并行输出可以直接驱动八段数码管。74ls164的引脚图及功能图如下所示:2.4.2、共阴极八段数码管简介共阴极八段数码管是将八段发光二极管封装在一起且二极管的阴极连在一起,原理图如下图所示,公共端接低电平,其它八个端口高电平点亮相应的二极管,低电平相反。2.4.3、显示电路设计此显示电路采用两位静态数码管显示,用八位串入并出移位寄存器74LS164作为驱动电路,采用共阴极八段数码管原理图示意图如下:从图中可以看出控制线只有两条:1、数据线;2、移位脉冲线。它只占用很少的IO口。2.5、发光二极管电路发光二极管简称为LED,它是半导体二极管的一种。发光二极管的反向击穿电压约5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。限流电阻R可用下式计算:R(EUF)IF式中E为电源电压,UF为LED的正向压降,IF为LED的一般工作电流。发光二极管的两根引线中较长的一根为正极,应按电源正极。与小白炽灯泡和氖灯相比,发光二极管的特点是:工作电压很低(有的仅一点几伏);工作电流很小(有的仅零点几毫安即可发光);抗冲击和抗震性能好,可靠性高,寿命长;通过调制通过的电流强弱可以方便地调制发光的强弱。由于有这些特点,发光二极管在一些光电控制设备中用作光源,在许多电子设备中用作信号显示器。由于AT89S52的P0口是开漏输出,所以此电路可以设计位如下简单形式:2.6、蜂鸣器电路蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。由于蜂鸣器具有比传统的喇叭体积小,价格低等优点,所以此次提示音电路选用蜂鸣器。具体电路见下图:工作原理简介:当控制端口通以不同频率及不同占空比的信号时蜂鸣器将发出不同强度及不同频率的声音。2.7、继电器控制电路2.7.1、继电器简介继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。它有几个重要指标:1、额定工作电压:正常工作时线圈所需要的电压。2、直流电阻:继电器中线圈的直流电阻。3、吸合电流:继电器能够产生吸合动作的最小电流。4、释放电流:继电器产生释放动作的最大电流。5、触点切换电压和电流:继电器允许加载的电压和电流。2.7.2、继电器驱动电路设计及工作原理简介采用晶闸管也可以用于小电流控制大电流电路,但是其控制电路比较复杂,而采用继电器其控制电路就比较简单,且具有电气隔离作用。虽然其响应速度没有晶闸管快但在低频情况下采用继电器控制电路较为方便。其电路图如下所示:电路工作原理简介:当控制端口为低电平时,三极管导通继电器吸合,常闭触电断开,常开触点闭合。当控制端口为高电平时三极管关断,继电器线圈通过二极管放电并断开,常闭、常开触电复位。2.8、整体电路硬件设计3、 AT89S52软件设计与实现3.1、整体设计思路介绍软件设计整体思路:主程序部分进行一些初始化以及温度的读取;外部中断0进行红外线感应延时时间的从新加载;定时器0进行键盘的扫描及相关操作;定时器1进行显示、温控速度、以及相关需要延时(如倒计时等等)的操作。在显示方面,进行了一些改善-要显示的值有变化才进行从新刷新,否则不刷新。这样就大大提高了效率及最终的显示效果(不会出现不该亮的部分还有亮的现象)。3.2、主要部分流程图如下:3.2.1、主程序流程图 图 3-13.2.2、外部中断流程图 图 3-23.2.3、定时器0中断流程图 图 3-33.2.4、定时器1中断流程图 图 3-44、 总结本设计最终实现了电风扇的手动调速、温控自动调速、定时、温度显示、人体检测等预期功能,其中定时在1到99分钟连续可调,人体检测范围角度120度、距离6米,人体检测延时时间3分钟,定时器自动退出时间6秒。存在不足之处就是人体检测抗干扰方面不够好,需要提高。致谢词在这段时间里,因为有了指导老师的指导、同学们的帮忙,此次毕业设计才得以顺利完成,在此对他们表示由衷的感谢。大学四年即将结束,借此机会也对这四年来帮助、关心、鼓励过我的老师、同学说声谢谢。参考文献1 苏家键、曹柏荣、汪志锋.单片机原理及应用技术M .2006年4月2 龚运新.单片机C语言开发技术M.清华大学出版社.2006年10月3 余成波.传感器与自动检测技术M.高等教育出版社 .2006年11月4 康华光.电子技术基础(模拟部分)第四版 M.高等教育出版社 .2004年4月5 康华光.电子技术基础(数字部分)第四版 M.高等教育出版社 .2004年4月Intelligent Design fans【Abstract】 The design AT89S52 microcontroller for the control centre, mainly through the extraction pyroelectric infrared sensor to the human infra-red sensors and temperature sensors DS18B20 information obtained temperature and the duration of the internal timer set to control fan speed switching and the changes 。【Keyword】 MCU(AT89S52)、Temperature Sensor (DS18B20)、Pyroelectric Infrared Sensors、Relay、Buzzer、Shift Register、LED附页:程序清单/* touwenjian.h*/typedef unsigned char byte; typedef unsigned int word;/以下管脚配置/ds18b20部分sbit DQ =P25; /显示部分sbit DB=P10;sbit CP=P11;/发光显示部分sbit LED_dingshi =P00;sbit LED_shoudong =P01;sbit LED_zidong =P02;sbit LED_kuai =P05;sbit LED_zhong =P06;sbit LED_man =P07;/键盘定义部分#define wujian 0x3fsbit KEY1=P12 ; /状态转换 /启动sbit KEY2=P13 ; /+10 / 1sbit KEY3=P14 ; /-10/ 2sbit KEY4=P15 ; / 3sbit KEY5=P16 ; / 0确定/继电器控制部分sbit JDQ1=P21; /0表示开通,1表示关断sbit JDQ2=P22;sbit JDQ3=P23;/蜂鸣器部分sbit call=P24; /低电平鸣叫/* ds18b20.c*/#include <REGX51.H>#include"touwenjian.h"/* 延时子程序*/extern void delay(word useconds) for(;useconds>0;useconds-); /* 复位子程序 */static byte ow_reset(void) byte presence;EA=0; DQ = 0; / pull DQ line low delay(45); / leave it low for 480us /551usDQ = 1; / allow line to return high delay(4); / wait for presence /61uspresence = DQ; / get presence signal delay(40); / wait for end of timeslot /491usEA=1;return(presence); / presence signal returned / 0=presence, 1 = no part /* 从 1-wire 总线上读取一个字节子程序*/ static byte read_byte(void) byte i; byte value = 0;EA=0; for (i=8;i>0;i-) value>>=1; DQ = 0; / pull DQ low to start timeslot DQ = 1; / then return high unsigned char i; for(i=0;i<2;i+); /11usif(DQ)value|=0x80; delay(6); / wait for rest of timeslot EA=1;return(value); /* 向 1-WIRE 总线上写一个字节 */static void write_byte(char val) byte i; EA=0;for (i=8; i>0; i-) / writes byte, one bit at a time DQ = 0; / pull DQ low to start timeslotDQ=0; DQ = val&0x01; /6USdelay(5); / hold value for remainder of timeslot /74usDQ = 1; val=val>>1; EA=1; delay(5); /* 读取温度 */ word Read_Temperature(void) union byte c2; word x; temp; ow_reset(); write_byte(0xCC); / Skip ROM write_byte(0xBE); / Read Scratch Pad temp.c1=read_byte(); temp.c0=read_byte(); ow_reset(); write_byte(0xCC); /Skip ROM write_byte(0x44); / Start Conversion return temp.x; /* 求解温度*/extern byte Real_Tem(void) word wen; wen=Read_Temperature(); return(wen>>4)&0x00ff);/* Main.c*/#include <REGX51.H>#include"touwenjian.h"/数据区#define time_default 41byte dingshi_time=time_default;/存放定时时间''''''bit flag_dingshi=0; /0表示没有定时word dingshi_jishu3=1000;/1000*60=1分钟/bit flag_dingshi_delay=0;/1表示有byte dingshi_delay=100;/#define hwx_delay_const 3 /人体感应延时时间byte hwx_delay=hwx_delay_const;/用于保存红外线触发延长时间word hwx_jishu1=0;/byte wendu=0;/用于存放温度值''''''/#define low_wen 18#define mid_wen 20#define hig_wen 24#define vhi_wen 28/byte time_stor=100; /存储主观时间/触发显示byte wendu_stor=low_wen;/存储主观温度/触发显示/enum station0zidong,dingshi,shoudong,weakstate;/函数说明区extern byte Real_Tem(void );extern void delay(word useconds);void mingjiao(void);void display(byte input,bit kkl);void auto_speed(void);void weak_default(void);/* 主程序*/void main() /定时器0用于键盘扫描 TMOD=0x01|TMOD; /定时器0的1方式 TH0=0xd8;TL0=0xf0; /定时器0初始化10ms扫描一次 /定时器1用于显示 TMOD=0x10|TMOD; /定时器1的1方式 TH1=0x15;TL1=0xA0; /定时器1初始化60ms中断一次 /外部中断 TCON=TCON|0x01; /外部中断0都下降沿触发 /以下为开启部分 IP=0X01; /两个定时器同等优先级?想想为什么? IE=0x8b; /开启定时器0,1,外部中断0中断 / while(Real_Tem()=85); auto_speed(); LED_zidong=0; /刚开始为自动方式 P1=P1|0X7C; /拉高五个键盘 wendu_stor=100; /两个不可能值/用于启动显示 time_stor=100; /两个不可能值/用于启动显示 / TR0=1; /开启定时器0 TR1=1; while(1) wendu=Real_Tem(); /* 定时器0中断服务子程序 功能:进行键盘处理 说明:键盘输入为P1.0到P1.5*/ void time0(void) interrupt 1 byte jianpan; TH0=0xd8;TL0=0xf0; jianpan = P1 & wujian; if(jianpan != wujian) /如果还有键盘值提取键盘值 delay(500); /延时消抖 jianpan = P1 & wujian; if(jianpan=wujian)goto time_out; switch(state) case dingshi: if(KEY1=0)/状态转换时做些相应的处理 state=shoudong;LED_shoudong=0;flag_dingshi_delay=0;dingshi_delay=100;time_stor=100;wendu_stor=100;/触发mingjiao();while(KEY1=0); else if(KEY2=0)/加分 if(dingshi_time<90)dingshi_time+=10;dingshi_delay=100;/mingjiao();while(KEY2=0); else if(KEY3=0)/减分 if(dingshi_time>10)dingshi_time-=10;dingshi_delay=100;/mingjiao();while(KEY3=0); else if(KEY4=0)/定时与否 flag_dingshi=flag_dingshi;if(flag_dingshi=1)LED_dingshi=0;else LED_dingshi=1;dingshi_jishu3=1000;dingshi_delay=100;/mingjiao();while(KEY4=0); else if(KEY5=0) weak_default();mingjiao();while(KEY5=0); break;case shoudong:if(KEY1=0) /状态转换时做些相应的处理 state=zidong;auto_speed();LED_shoudong=1;LED_zidong=0; mingjiao();while(KEY1=0); else if(KEY2=0)/快1 JDQ2=1;JDQ3=1;JDQ1=0;/关断其它LED_zhong=LED_man=1;LED_kuai=0;mingjiao();while(KEY2=0); else if(KEY3=0)/中2 JDQ1=1;JDQ3=1;JDQ2=0;/关断其它LED_kuai=LED_man=1;LED_zhong=0;mingjiao();while(KEY3=0); else if(KEY4=0)/慢3 JDQ1=1;JDQ2=1;JDQ3=0;/关断其它LED_zhong=LED_kuai=1;LED_man=0;mingjiao();while(KEY4=0); else if(KEY5=0)/停4 weak_default();mingjiao();while(KEY5=0); break;case zidong: if(KEY1=0) /状态转换时做些相应的处理 state=dingshi;LED_zidong=1;flag_dingshi_delay=1;dingshi_delay=100;/开始延时time_stor=100;/mingjiao();while(KEY1=0); el

    注意事项

    本文(592.基于AT89S52的智能电风扇设计【单片机毕业设计课程设计】.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开