基于51单片机的智能温控电扇设计

上传人:痛*** 文档编号:42359016 上传时间:2021-11-25 格式:DOC 页数:31 大小:891.01KB
收藏 版权申诉 举报 下载
基于51单片机的智能温控电扇设计_第1页
第1页 / 共31页
基于51单片机的智能温控电扇设计_第2页
第2页 / 共31页
基于51单片机的智能温控电扇设计_第3页
第3页 / 共31页
资源描述:

《基于51单片机的智能温控电扇设计》由会员分享,可在线阅读,更多相关《基于51单片机的智能温控电扇设计(31页珍藏版)》请在装配图网上搜索。

1、专业文档,值得收藏!毕业论文(设计)题 目 基于51单片机的智能温控电扇设计学生姓名 学 号 院 系 专 业 指导教师 年 月 日目 录1 引言12 方案设计22.1 系统整体设计22.2 方案论证22.2.1 温度传感器的选择22.2.2 红外探测的选择32.2.3 控制核心的选择32.2.4 显示器件的选择32.2.5 调速方式的选择42.2.6 驱动方式选择43 硬件设计43.1系统各器件简介53.1.1 单线程数字温度传感器DS18B2053.1.2 AT89S51单片机简介53.1.3 桥式驱动电路L298N简介63.1.4 LCD1602简介73.1.5对射式光电开关简介73.2

2、各部分电路设计83.2.1 开关复位与晶振电路83.2.2 独立控制键盘电路83.2.3 LCD显示电路93.2.4 红外探测电路93.2.5 温度采集电路103.2.6 风扇驱动电路104 软件设计114.1 主程序流程图114.2 液晶显示子程序134.3 DS18B20温度传感器子程序144.3.1 温度读取程序144.3.2 温度处理程序174.4 键盘扫描子程序184.5 温度比较处理子程序194.6 电机控制程序(包含红外探测)214.7 软件设计中的问题与分析234.7.1 LCD显示程序的问题234.7.2 DS18B20的显示程序问题235 硬件调试235.1 按键电路的调试

3、245.2 温度传感器电路的调试245.3 电机电路的调试245.4 红外感应电路的调试245.5 硬件调试遇到的问题246 结论24参考文献:26专业文档,值得下载!基于51单片机的智能温控电扇设计摘要:风扇是人们日常生活中必不可缺的工具,尤其是在夏天,作为一种使用频率很高的电器,备受人们喜爱。本文将以AT89S51为主控芯片,辅以DS18B20温度传感器,结合红外探测装置,来实现一种智能温控电扇的设计。此风扇通过液晶显示器来显示温度和风速,配备2个温度设定按键,由DS18B20读取外界温度,红外探头探测是否有人,通过设定的温度配合程序来调节风速,最后通过L298N来驱动电机。经过调试,风扇

4、可以按照温度智能变速,无人自动关闭,实现了智能温控的目标。关键词:DS18B20;AT89S51;红外探头;液晶显示器1602;L298N1 引言电扇是人们日常生活中常用的降温工具,从开始的吊扇到现在的USB风扇,无处不见电扇的踪迹。虽然如今空调已经走进千家万户,但是电扇的低位还是无可取代,作为一种节能环保,并且廉价简单的降温工具,电扇还在很多人家发挥着自己独特的作用。顺应时代潮流,各种多功能的风扇逐渐在取代传统风扇。单片机作为一种智能化程度高,控制精度高,操作简单,廉价易得,抗干扰能力强等特点,越来越多的应用于智能化产品之中。市场上智能风扇产品相继问世,制作方法也多种多样,功能也逐渐完善,普

5、遍都具有了手动变速和定时关闭等功能,相对而言,具备人性化,智能化的风扇还是很少,使用也并不广泛,而且在电子工艺高度发展的今天,智能化的步伐也越来越快,尤其是中国这个高速发展的国家,电扇的智能化也该向前迈进一个步伐。在中国市场上风扇还是有一定的市场份额的,几乎每个家庭都有风扇,具备价格便宜,摆放轻便,体积灵巧等特点,使得风扇在中小城市以及乡村将来一段时间内仍然会占有市场的大部分份额,为提高风扇的市场竞争力,使之在技术含量上有所提高,满足智能化的要求,智能风扇很具竞争力。大学四年即将结束,为了检验自己的学习情况,我决定使用之前所学习到的硬件只是结合相关的软件基础来制作一个基于单片机的智能温控风扇。

6、基于对人性化与智能化相结合的考虑,同时基于对价格的考虑,本设计决定制作一个基于51单片机的智能温控风扇,该风扇具有随温度自动调节风速的功能,并且在无人时可以自动关闭,而且可以根据每个人的不同情况来设定基准温度,从而实现了人性化与智能化的双重目标。2 方案设计2.1 系统整体设计本设计的整体思路是:利用温度传感器DS18B20来检测环境温度,并直接输出数字温度给51单片机进行处理,并将实时温度、设置温度、风速显示在液晶1602上。设置温度辅以2个可调按键,一个提高设置温度,一个降低设置温度,设置温度只能是整数型式,检测到的环境温度可以精确到小数点后一位。本系统还配备一个红外探头,探测出风范围内是

7、否有人,若无人则自动关闭风扇。同时采用单片机模拟PWM脉宽调制方式来改变直流电扇电机的转速。系统整体结构框图1所示:AT89S51晶振L298NLCD1602DS18B20复位红外探头独立键盘直流电机图1整体系统结构图2.2 方案论证本设计要求实现在温度变化的情况下风扇直流电机转速随之改变,并且能够在无人的情况和温度低于设定温度的时候自行停止,需要比较高的温度分辨率和稳定的探测工具以及可靠的电机控制部件。2.2.1 温度传感器的选择在本设计中,温度传感器的方案有以下两种:方案一:采用热敏电阻。热敏电阻的特性就是阻值可以随温度的变化而变化,采用热敏电阻作为检测温度的核心部件,然后通过放大电路放大

8、信号,经过AD0809数模转换讲放大的微弱电压变化信号转化了数字信号输入单片机处理。方案二:单总线数字温度计DS18B20。作为一款优秀的数字集成温度传感器,DS18B20可以直接检测并输出数字信号给单片机进行处理。对于方案一,如若采用热敏电阻作为温度检测元件,则价格方面比较便宜,元件易得,但是热敏电阻的缺点显而易见,对于温度细微变化反应不敏感,而且在后续的放大和转换电路中还会造成失真和误差,并且热敏电阻的变化曲线非线性,每个热敏电阻都不同,还需要单独测试描绘出曲线,虽然可以通过软件来实现误差的修正,但是这会使得电路的复杂性增加,并且在人体所在实际环境中难以检测到小的温度变化。所以这个方案在本

9、设计中难以胜任。对于方案二,DS18B20测量范围从-55到+125,增量值为0.5,人体所处的环境温度包括其中,分辨率较高,所获取的温度误差小,并且对温度变化反应灵敏。DS18B20最具优势的是其温度值在器件内部直接转化成数字信号输出,简化了系统设计,又由于该温度传感器采用了单总线技术,使得其接口与单片机接口变得非常简洁,抗干扰能力也得到了提高,所以本系统采用这个方案。2.2.2 红外探测的选择方案一:热释电红外探测模块。作为一款应用很广的红外探测模块,具有灵敏度高,可靠性高,低电压工作模式等特点,被广泛的应用与各种场合中。但是与本设计却有一个冲突,该模块使用环境应尽量避免流动的风,流动的风

10、也会对感应器造成干扰。所以方案一不适用。方案二:对射式光电开关。对射式光电开关是一款有红外线发射管跟红外线接收管配对使用的光电开关。对射式光电开关在电路中起到了通过光来传播电路,当有物体阻挡着红外线发射管跟接受管时,电路会停止工作。使用这个特性,我们就能判断是否有人,外界干扰就没有了,非常适合这个系统,所以就采用这种方案。2.2.3 控制核心的选择本设计采用AT89S51单片机作为控制核心,通过软件编程的方法进行温度的实时检测与判断,并在I/O口上输出控制信号,控制电机工作。AT89S51具有较大的存储空间,工作电压低,性能高,片内含4K字节的只读程序存储器ROM和128字节的随即数据存储器R

11、AM,兼容标准MCS-51指令系统,价格便宜,与本系统的设计相符合。2.2.4 显示器件的选择方案一:LED共阴极数码显示管。方案二:LCD液晶显示屏1602。对于方案一,成本相对低廉,功耗也低,在黑暗空间也可以看的清楚,可视距离较远,同时显示温度的程序也相对而言简单,所以这种显示方式也得到了广泛应用。但是它采用的显示方式是动态扫描,各个LED逐个点亮,会产生闪烁,在这个温度实时变化的环境中闪烁可能太快,数据可能不能很好的展示出来,故此方案不采用。对于方案二,液晶显示屏显示字符清晰,自带背光,还能显示符号,并且不会不断闪烁,显示性能一流,并且考虑到此设计不只是要显示温度,还要显示电机和红外的状

12、态,所以从设计完善的角度来考虑,选择此方案更有优势。2.2.5 调速方式的选择方案一:采用数模转化芯片DAC0832来控制,有单片机根据当前环境温度输出数值到DAC0832中,再由DAC0832产生相应的模拟信号控制晶闸管的导通脚,从而采用无级调速电路实现电扇电机转速的调节。方案二:采用单片机软件模拟PWM调速的方法。PWM是一种按照一定的规律改变脉冲序列的脉冲宽度,以调节输出量和波形的一种调节方式,在PWM驱动控制的调节系统中,最常用的是矩形波PWM信号,在控制时调节PWM波的占空比。占空比是指高电平在一个周期时间内的百分比。在控制电机的转速时,占空比越大,转速就越快,若全为高电平时占空比为

13、100%,此时转速达到最大。用单片机的I/O口输出PWM信号时,有如下三种方法:(1)利用软件延时。当高电平延时时间到时,对I/O口电平取反,使其变成低电平,再延时一定时间,反之在低电平延时到时,对I/O口电平取反,如此循环即可得到PWM信号。本设计就是采用了这种方法。(2)利用定时器。控制方法与(1)相同,只是在该方法中利用单片机的定时器来进行高低电平的转变,而不是利用软件的延时。应用此方法时编程相对复杂,故不予以采用。(3)利用单片机自带的PWM控制器。STC系列单片机自带PWM控制器,但本系统使用的AT89系列单片机没有此功能,所以不能使用。对于方案一,该方案能实现对直流电机的无级调速,

14、速度变化灵敏,但是D/A转换芯片价格较高,性价比不高,不采用。对于方案二,相对于其他方案来说,采用软件模拟PWM实现调速的过程,具有个高的性价比与灵活性,充分的发挥了单片机自身的性能,对本系统的实现又提供了一条有效的途径。所以综合考虑还是选择方案二的第一种。2.2.6 驱动方式选择方案一:达林顿反向驱动器ULN2803。方案二:电桥驱动电路L298N。对于方案一,作为一款反向驱动器,ULN2803应用广泛,驱动效果也很好,与TTL信号兼容性很好,但是在后续的硬件电路中表现不佳,风扇转速改变不明显,而且在最高档出现断档的情况,风扇不转,在修改硬件电路,修改程序后依旧效果不佳,驱动力明显不足,故方

15、案一中途停用。对于方案二,由于之前已经有使用过,对L298N这个桥式驱动模块的应用上手快速,驱动能力也比ULN2803好很多,驱动风扇5档变速的实际效果明显,故采用方案二。3 硬件设计系统主要器件包括温度传感器DS18B20、AT89S51单片机、液晶显示屏LCD1602、桥式驱动模块L298N、对射式光电开关开关和风扇。辅助元件包括电容电阻、晶振、电源、按键、变压器等。3.1系统各器件简介3.1.1 单线程数字温度传感器DS18B20此温度传感器是美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20。作为新一带数字检测元件,DS1820是世界上第一片支持

16、一线总线接口的温度传感器,在其内部使用了在板(ON-BOARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS18B20体积更小、更经济、更灵活。使你可以充分发挥“一线总线”的优点。DS18B20可以程序设定912位的分辨率,精度为0.5C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。测温范围为-55125,最大分辨率可达0.0625。DS18B20减少了外部的硬件电路,直接输出数字信号,具有低成本和易使

17、用的特点。图2温度传感器DS18B203.1.2 AT89S51单片机简介AT89S51是一个低功耗,高性能COMS 8位单片机,片内含4Kbytes ISP的反复可读写1000次的Flash只读程序储存器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了8位中央处理器和IPS Flash存储单元,AT89S51在众多嵌入式系统中得到了广泛的应用。AT89S51具有完整的输入输出和控制端口、以及内部程序存储空间。与我们通常意义上的微机原理类似,可以通过外接A/D,D/A转换电路及运放芯片实现对传感器传送信息的采集,且能够提供以

18、点阵或LCD液晶及外接按键实现人机交互,能对内部众多I/O端口连接步进电机对外围设备进行精确操控,具有强大的工控能力。AT89S51系列单片机编写程序简单。其语法结构与我们常用的计算机C语言基本相同,不同之处在于增加了控制具体引脚工作的语句和命令,相对于计算机C语言,单片机C语言更简练和明确,可以控制每个引脚的输入输出状态。其主要语句集中在例如:“ifelse”、“while”、“for”等循环与判断语句上,相比计算机C语言更简单。使用AT89S51系列单片机编程,可以在没有实物单片机的情况下在普通电脑上进行程序编写甚至是调试工作。一般工作中使用Keil公司开发的51单片机编程软件进行编程,它

19、采用目前流行的开发环境,集编辑,编译和仿真于一体。在该软件上用户可以编写汇编语言或C语言源程序,并利用该软件生成单片机能运行的程序。AT89S51价格便宜,适合对大批量的计量仪器进行规模化改造,其单片售价不超过5元。图3AT89S51引脚图 DIP封装3.1.3 桥式驱动电路L298N简介本系统要用单片机控制风扇直流电机,需要加驱动电路,为直流电机提供足够大的驱动电流,并能在模拟PWM波的情况下实现风扇转速的改变。在本系统驱动电路中,选用桥式驱动电路L298N来驱动风扇直流电机。L298N在使用时接口简单,操作方便,可为电机提供稳定的驱动电流,可以同时驱动两台直流电机,可以在模拟PWM波的情况

20、下很好的输出信号,实现风扇转速的平滑改变。L298N是专用驱动集成电路,属于H桥集成电路,与L293D的差别是其输出电流增大,功率增强。其输出电流为2A,最高电流4A,最高工作电压50V,可以驱动感性负载,如大功率直流电机,(二相、三相、四相)步进电机,伺服电机,电磁阀等,特别是其输入端可以与单片机直接相联,从而很方便地受单片机控制。当驱动直流电机时,可以直接控制两路电机,并可以实现电机正转与反转,实现此功能只需改变输入端的逻辑电平。模块接口说明:+5V:芯片电压5V。VCC:电机电压,最大可接50V。GND:共地接法。EN1、EN2:高电平有效,EN1、EN2分别为 IN1和IN2、IN3和

21、IN4的使能端。IN1IN4:输入端,输入端电平和输出端电平是对应的。图4L298N模块3.1.4 LCD1602简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。一般1602字符型液晶显示器实物如图:图5LCD1602LCD1602主要技术参数:显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最

22、高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3.1.5对射式光电开关简介图6对射式光电开关光电开关E18的技术参数:1、输出电流 D

23、C/SCR/继电器 Control output:100mA/5V供电2、消耗电流DC25mA3、响应时间 2ms4、指向角:15,有效距离3-50CM可调5、检测物体:透明或不透明体6、工作环境温度:-25+557、标准检测物体:太阳光10000LX以下 白炽灯3000LX以下8、外壳材料:塑料电气特性: U:5VDC I:100mA Sn:3-50CM3.2 各部分电路设计3.2.1 开关复位与晶振电路单片机系统中,有两个非常重要的电路,一个是开关复位电路,用来对单片机本身和其外部扩展I/O接口电路进行复位,还有一个是晶振电路,用于产生谐振,使单片机得以工作。电路图如图7所示:图7晶振电路

24、与复位电路单片机的XTAL1和XTAL2用来外界石英晶体和微调电容,连接单片机内OSC的定时反馈电路。如图所示,当按下按键开关是,系统复位一次。其中电容C1、C2为20pF,C3为10uF,电阻R1为10k,晶振为12MHz。3.2.2 独立控制键盘电路本设计还有两个独立按键,分别连接单片机的P3.2口和P3.3口,如图8所示:图8按键电路独立按键S1和S2一端与单片机相连,另一端接地,当按下时,P3口读取低电平有效。系统上电进入工作后,扫描按键子程序,此时可以设定温度。其中S1为加按键,S2为减按键,每按下一次后,都会使对应的预设值加一或者减一。3.2.3 LCD显示电路本设计采用的是LCD

25、1602A作为显示模块,它与单片机的连接如图9所示。其中第一行显示温度与红外探测结果,温度显示到小数点后2位。第二行显示设定温度与风扇的风力等级。图9LCD连接电路3.2.4 红外探测电路红外光电开关一共有三个接口,一个接+5V,一个接地,还有一端与单片机相连,输出高电平或者低电平信号,在电路中直接用按键开关代替了,就是按键电路中的开关S3。3.2.5 温度采集电路DS18B20数字温度传感器通过其内部计数时钟周期来的作用,实现了特有的温度测量功能。低温系数振荡器输出的时钟信号通过由高温度系数振荡器产生的门周期而被计数,计数器预先置有与-55相对应的一个基权值。如果计数器计数到0时,高温度系数

26、振荡周期还未结束,则表示测量的温度值高于-55,被预置在-55的温度寄存器中的值就增加1,然后这个过程不断重复,直到高温度系数振荡周期结束为止。此时温度寄存器中的值即为被测温度值,这个值以16位二进制形式存放在存储器中,通过主机发送存储器读命令可读出此温度值,读取时低位在前,高位在后,依次进行。由于温度振荡器的抛物线特性的影响,其内用斜率累加器进行补偿。DS18B20由于直接可以输出数字信号,所以可以直接输出给单片机,但是需要在输出口上接一个上拉电阻来确保工作,连接图如图10所示:图10DS18B20连接电路3.2.6 风扇驱动电路本设计采用单片机模拟PWM波的方式通过I/O口输出TTL信号,

27、再通过一个电机驱动模块L298N来驱动12V直流无刷电机工作,从而实现电扇转速的调节。红外探测控制电机开关,键盘改变设置的温度,然后和预设的温度进行比较,通过软件判断后由单片机的P3.4口输出脉冲信号,经由L298N驱动风扇直流电机电路,实现电机的启动和转速的改变。当环境温度改变时,电机的转速会按照设定的程序相对进行改变,温度升高转速变快,温度降低,转速变慢,温度过低时自动停止,无人状态下也会自动停止。当有人出现后,并且温度高于预设温度,电机重新开始工作。如图12所示:图11L298N驱动电路图12直流电机连接电路4 软件设计软件编写有C语言和汇编语言两种,这两种语言我都有所了解,两种语言各有

28、特点。C语言具有编写简单,容易上手的特点,而且看起来条理清晰,便于修改,能够快速准确的找到错误并进行改正。相对于汇编语言,作为一种低级的机器语言,读程序相对繁琐,但程序写好后意思明了,效率也要高于C语言编写的程序,具有很好的开发功能。结合自身实际,我还是选择了C语言,容易上手,可以更好的调试与编译程序。显示设定温度程序初始化调用键盘扫描函数显示温度读取预设温度值与预设温度进行比较读取DS18B20温度值主程序开始调用电机控制函数判断是否有人显示有人/无人显示风速等级有人无人4.1 主程序流程图图13主程序流程图主程序如下:void main(void) /初始化uint ltemp; /初始化

29、温度dianji=0; /初始化电机int1=0;int2=0;init(); /初始化液晶显示屏read_temp(); /读取测温子程序,读取温度数值delay(1000); /延时 while(1) /循环开始 delay(2);ltemp=read_temp(); /温度赋值write_com(0x80+2); /将温度显示到液晶屏 write_data(0x30+ltemp%10000/1000); write_data(0x30+ltemp%1000/100); write_data(0x2e);write_data(0x30+ltemp%100/10);write_data(0x

30、30+ltemp%10);write_data(0xdf);keyscan(); /读取键盘子程序delay(2);write_com(0x80+0x40+4); /将设定温度显示到液晶屏write_data(0x30+set%100/10);write_data(0x30+set%10);write_data(0xdf);deal(ltemp/100); /运行温度判断子程序dianjik(); /运行电机控制子程序write_com(0x80+0x40+15); /将风扇转速显示到液晶屏write_data(0x30+h);write_com(0x80+15); /将红外探测结果显示到液晶

31、屏 write_data(0x30+r); 4.2 液晶显示子程序液晶LCD1602的子程序要按照说明上的时序图来完成。要想让LCD显示的话,首先要对LCD进行初始化。在完成LCD的初始化后,还需要定义字符的位置,并且定义写数据的函数。其第一行的地址是40H4FH,第二行的地址是从80H8FH,然后才能根据要显示字符的ASC码对该字符进行显示。其流程图14所示:初始化函数写指令函数(位置)写数据函数(数字和字符)图14液晶显示程序流程图子程序如下:/*初始化函数*void init(void) uint i; E=0;RW=0; RS=0;delay(10);/延时10mswrite_com(

32、0x01);/清屏delay(5);write_com(0x38);/设显示模式delay(5);write_com(0x0c);/开显示不显光标 光标不闪delay(5);write_com(0x06);/地址自动加一 光标自动加一delay(5);write_com(0x80);for(i=0;i16;i+)write_data(table2i); write_com(0x80+0x40);for(i=0;i16;i+)write_data(table1i); /*写指令函数*void write_com(uchar command)RS=0;/指令RW=0;/写入P0=command;d

33、elay(5);E=1;/允许delay(10);E=0;/*写数据函数*void write_data(uchar dat)RS=1;/数据P0=dat;delay(5);E=1;/允许delay(10);E=0;4.3 DS18B20温度传感器子程序4.3.1 温度读取程序DS18B20温度读取程序负责把DS18B20测得的外界数据经过AD转化为数字,然后将数据存入寄存器中,供温度处理程序进行下一步操作。其流程图15所示:传感器初始化读取应答信号从DS18B20读取一个字节向DS18B20写入一个字节延迟至少750ms输出数据图15DS18B20程序流程图子程序如下:/*延时函数*void

34、 delayus(uint z)uchar i;for(i=0;iz;i+);/*将DS18B20传感器初始化,读取应答信号*uchar clean_ds18b20()uchar k;/储存DS18B20是否存在的标志,k=0,表示存在;k=1,表示不存在dq=1;/先将数据线拉高delayus(5);/延时dq=0;/再将数据线从高拉低,要求保持480960usdelayus(30);/略微延时,以向DS18B20发出一持续480960us的低电平复位脉冲 dq=1;/释放数据线(将数据线拉高)delayus(3);/延时(释放总线后需等待1560us让DS18B20输出存在脉冲)k=dq;

35、/让单片机检测是否输出了存在脉冲(dq=0表示存在)delayus(25);/延时足够长时间,等待存在脉冲输出完毕return k;/返回检测成功标志/*从DS18B20读取一个字节数据*uchar read_ds18b20_date()uchar value,i;/储存读出的一个字节数据for(i=0;i=1;dq=1;/将数据线人为拉高,为单片机检测DS18B20的输出电平作准备if(dq)/如果读到的数据是1,则将1存入valuevalue|=0x80;delayus(6);if(!dq) /如果读到的数据是0,则将0存入valuevalue|=0x00;delayus(6);retur

36、n value;/返回读出的十进制数据/*向DS18B20写入一个字节数据*void write_ds18b20_date(uchar date)uchar num;for(num=0;num=1;delayus(4); /4usdq=1;/释放数据线delayus(4);/稍作延时,给硬件一点反应时间4.3.2 温度处理程序温度处理程序将上一把操作中读取的温度值进行转换,将二进制数转化为十进制数,然后输出数字,直接交给显示程序显示。等待转化完成初始化读取高八位和低八位启动温度测量等待初始化完成处理数据输出十进制整数其流程图16所示:图16温度处理子程序流程图其子程序如下:/*做好读温度的准备

37、*uint read_temp()uint g,d,m;uint c;m=1;m=clean_ds18b20();/初始化完成m=0while(m); /等待初始化完成write_ds18b20_date(0xcc);/跳过romwrite_ds18b20_date(0x44);/启动温度测量delayus(100);m=clean_ds18b20();while(m); /等待转化完成write_ds18b20_date(0xcc);/跳过romwrite_ds18b20_date(0xbe);/读数据命令d=read_ds18b20_date();/读低8位数据g=read_ds18b20

38、_date(); /读高3位数据g4); /整数部分g=g*100;d=(d&0x0f)*0.0625*100; c=g+d;return c; 4.4 键盘扫描子程序本设计配备两个输入按键,分别可以对设定温度进行加减,此子程序用来检测按键输入。流程图17所示:扫描按键判断是否按下设定温度加一(减一)延时判断是否按下图17键盘扫描流程图子程序如下:/*键盘输入*void keyscan(void)if(key1=0)/判断key1是否按下 delay(10);/延时判断key1是否按下if(key1=0)set+;/设定温度加1if(key1=100)set=18;while(!key1);i

39、f(key2=0)/判断key2是否按下 delay(10);/延时判断key2是否按下if(key2=0)set-;/设定温度减1if(set=0)set=18;while(!key2);4.5 温度比较处理子程序温控风扇设定5个档位,根据温度的变化来变化风扇的转速。输出的型式采用高地电平的交替变换,档位越高,输出高电平的次数越多,相应的输出低点平的次数变少,反之,档位越低,输出的高电平次数越少,相应的输出的高电平的次数变多。低于设定温度时,风扇不转,大于最大挡位时满负荷运转。流程如图18所示:读取温度温度比较低于设定温度设置为2档设置为1档风扇不转高于设定温度+7低于设定温度+7低于设定温

40、度+5低于设定温度+3低于设定温度+1设置为3档设置为4档设置为5档否否否否否是是是是是是图18温度比较处理流程图子程序如下:/*温度处理函数*void deal(uint temp) /温度处理if(tempset)&(temp(set+1)&(temp(set+3)&(temp(set+5)&(temp(set+7)/温度高于设定值+7 h=5; l=0;4.6 电机控制程序(包含红外探测)本设计最终驱动电机的子程序,包含了红外检测。首先进行红外检测判断,若没有人,电机不转,若有人,承接上函数设定的档位,模拟PWM波输出,一次输出5个电平,1档就输出一个高电平,四个低电平,2档输出两个高电

41、平,三个低电平,依次类推。开始电机不转电机输输出模拟PWM波红外探测是否有人模拟PWM高低电平次数流程图如图19所示:图19红外探测电机输出流程图子程序如下:/*电机模拟PWM控制程序*void dianjik() uchar q;for(q=0;ql&red=0;q+)/红外感应有人,输出设定的低电平次数dianji=0;int1=0;int2=0;r=1; delay(100); for(q=0;qh&red=0;q+)/红外感应有人,输出设定的高电平次数dianji=1;int1=1;int2=0;r=1;delay(100);for(q=0;ql&red=1;q+)/红外感应没人,不输

42、出dianji=0;int1=0;int2=0;r=0; delay(10); for(q=0;qh&red=1;q+)/红外感应没人,不输出dianji=1;int1=0;int2=0;r=0;delay(10);4.7 软件设计中的问题与分析4.7.1 LCD显示程序的问题由于LCD要显示的数据有四个,温度、档位、红外探测、设定温度,所以如何合理的安排输出顺序很重要,合理的输出顺序才能对应外部正确的表现。每个数据在输出后都要有一定的延时,这样才能清楚的显示在LCD屏幕上。由于本程序是基于温度的,所以第一个输出的就是温度值;然后本程序要执行的是温度的比较,所以第二个输出的必然是设定温度,设定

43、温度还要同时读取键盘程序,实时跟随键盘输入的改变而改变;第三个输出的就是比较温度后的设定风速了,显示的风速就是档位数;最后输出的就是红外探测的结果,以0和1来表示,1为有人,处于工作状态,0为无人,处于待机状态。刚开始调试程序的时候,数值没在LCD上显示,后来发现是主函数忘记了调用子函数,使得数据没有输入,后来经过修改和调整,终于在LCD上正常显示出来了。合理的程序使得程序显示状态井然有序。4.7.2 DS18B20的显示程序问题在本设计中,DS18B20的显示是最核心的数据,所有其他数据都与之相对应改变,电机的转速也与之相关,但是在程序调试过程中,发现了一个问题,每次给单片机上电之后,总有那

44、么不到一秒钟的时间,温度显示的值是85,不断电的情况下复位没有出现这种情况,只有每次启动的时候出现。当显示85后,其他的数据也随之变为对应值,风扇也有一个短暂的转动,这对于这个设计来说无疑是一个很致命的缺陷。开始查找原因,从DS18B20的数据手册中发现,每次上电后,DS18B20的暂存器中存储的数据就是85,在读取数据后,内部的AD要使用750ms的时间来进行数据的转换然后重新写入新的数据,所以在这段时间中,显示的数值就是85了,看来这是硬件上不可避免的过程,但是硬件上不能改变的话,我可以使用软件的方法来进行变动,我最后采取的方法是在循环程序开始之前,先读取一次DS18B20的数值,然后给与

45、一个1s的延时,使得AD转换完成,然后在开始循环,这样,这个问题终于得以解决了。5 硬件调试硬件电路的调试相对来说比较简单。调试的功能包括按键电路,DS18B20,电机电路和红外传感电路。5.1 按键电路的调试按键电路实现的功能是在按键按下后能执行设定温度的改变,这项采用实物调试,按键按下之后,温度随之改变。5.2 温度传感器电路的调试温度传感器DS18B20的调试在实物上进行,当用手指去加热温度传感器DS18B20的时候,LCD示数开始随温度的上升而改变,变化明显而且刷新频率适中,可以清晰的看到所显示的温度。5.3 电机电路的调试电机电路进行调试,不断的将设定温度降低,观察电机转速的变化。电

46、机随设定温度与实际温度差值的改变而改变,转速变化较为平滑,达到了预期的效果。5.4 红外感应电路的调试红外感应电路直接测试,在前方无人时,系统处于待机状态,电机不转动。当前方有人时,电机开始转动(在温度高于预设温度的时候)。5.5 硬件调试遇到的问题本次设计中遇到的最困难的问题就是出在了电机的驱动上,刚开始的设计使用的达林顿ULN2803反向驱动器来驱动电机,可是在软件无误,硬件连接无误的情况下,电机转动表现出来的是变速效果不明显,最高档时停转现象的发生。再不断的修改软件和硬件电路无果的情况下,放弃了这个驱动,改用桥式驱动电路L298N,所有的问题迎刃而解,反向驱动的驱动力不连续,而且驱动力在

47、小电流的输入输出时不足,使得电机驱动产生了非常不理想的效果。6 结论此次的设计遇到的每个问题对我来说都是一个很大的挑战,在老师的帮助和自己的探索中,我完成了“基于51单片机的智能温控电扇设计”,设计了硬件电路,独立完成了软件编写。在设计中,实现了预期的功能,成功设计出了LCD显示模块、DS18B20测温模块、温控变速模块,红外探测模块,以及进行了系统的仿真,从实践中巩固了所学的知识,并且在探索中学习到了新的知识。通过这次设计,我又对单片机的知识有了一定的拓展,对处理问题的能力有了一定的提高,这次设计中的电机驱动就是一个很好的挑战,虽然一开始走了弯路,没有能够很好的处理好这个变速的问题,但是经过

48、一番的反复实践,终于获得了一种最好的电路,很好的完成了这个设计。这次的设计对我而言不仅仅是一个毕业设计,更是对我大学四年学习的一个检验,给了我一次实践的机会,运用自己的所学来完成这个设计。从设计中,我学习到了很多东西,提高了自己独立学习和思考能力,不管对于硬件电路还是软件设计,都有了很多自己的体会和认识,懂得了如何在实际中灵活运用所学的知识,是一次难得的锻炼机会,为我以后无论是学习还是工作打下了坚实的基础。参考文献:1 李学龙使用单片机控制的智能遥控电风扇控制器J电子电路制作20039:13152 郭天祥新概念51单片机C语言教程M北京:电子工业出版社20093423443 蓝厚荣单片机的PW

49、M控制技术J工业控制计算机201023(3):97984 胡汉才单片机原理及其接口技术M(第2版)北京:清华大学出版社2004.49775 胡全51单片机的数码管动态显示技术J 信息技术200913:25266 李钢,赵彦峰1-Wire总线数字温度传感器DSI8B20原理及应用J现代电子技术200528(21):77797 马云峰单片机与数字温度传感器DS18B20的接口设计J计算机测量与控制200710(4):2782808 王会明,侯加林智能电风扇控制器的研制J电子与自动化19985(4):25269 谭浩强C程序设计M(第三版).北京:清华大学出版社2005376510 孙号Proteu

50、s软件在设计电子电路中的应用J仪表技术20098:747511 楼俊军基于Proteus和Keil的单片机演奏乐曲的实现J科技信息201023:5012 王文海,周欢喜用Proteus实现51单片机的动态仿真调试JIT技术2006,20:101113 丁建军,陈定方,周国柱基于AT89C51的智能电风扇控制系统J湖北工学院学报2003,18(2):606314 王会明,侯加林智能电风扇控制器的研制J电子与自动化1998,5(4):252615 刘进山基于MCS-51电风扇智能调速器的设计J广州:电子质量2004,10(10):7116 YU Qihao,CHENG Guodong,NIU Fu

51、junThe application of auto-temperature-controlled ventilation embankment in Qinghai-Tibet Railway JScience in China SerD Earth Sciences2004,1(47):16817617 Lai Yuanming,Wang Qiusheng,Niu Fujun and Zhang KehuaThreedimensional nonlinear analysis for temperature characteristic of ventilated embankment i

52、n permafrost regions J. Cold Regions Science and Technology,2004,38(2):16518418 Cheng GuodongLinearity engineering in permafrost areas JJournal of Glaciology and Geocryology(in Chinese),2001,23(3):21321719 B SchneierApplied Crytography:Algorithms,and Source Code in CJNew York:Jone Wiley& Sons. 199430130720 Intel: Benjamin Jun,Paul KocherThe lntel Random Number GeneratorJWhite Paper Prepared for lntel Corporation,April 22,l999:45

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!