基于at89c52单片机的温控电风扇设计内容摘要:

共阴极数码管接至单片机的电路,要想显示“ 7”,须 a、 b、 c 这 3 个显示段发光(即这 3 个字段为高电平)只要在 P0 口输入 00000111( 07H)即可。 这里 07H 即为数字 7 的段选码。 字形与段选码的关系见表 31 所示。 电路设计 开关复位与晶振电路 在 单片机应用系统中,出单片机本身需要复位以外,外部扩展 I/O 接口电路也需要复位,因此需要一个包括上电和按钮复位在内的系统同步复位电路。 单片机上的 XTAL1 和 XTAL2 用来外接石英晶体和微调电容,即用来连接单片机内 OSC的定时反馈回路。 笨设计中开关复位与晶振电路如图 33 所示,当按下按键开关S1 时,系统复位一次。 其中电容 C C2 为 33pF, C3 为 10uF,电阻 R R3 阻值为 10k,晶振频率为 12MHz。 图 33 系统复位与晶振电路 独立按键连接电路 按键包括两个独立按键 S2 和 S3,一端与单片,另一端接地 ,当按下任一键时, P1 口读取低电平有效。 系统上电后,进入按键扫描子程序,以查询的方式确定各按键,完成温度初值的设定。 其中按键 S2 为加按键,每按一次,系统对最初设定值加一,按键 S3 为减按键,每按下一次,系统对初定值进行减一计算。 其连线图如图 34 所示。 图 34 独立按键连接电路 数码管显示电路 本设计制作中选用 5 位共阴极数码管作为显示模块,它和单片机硬件的接口如图 35 所示。 其中前 3 位数码管 DS DS DS3 用于显示温度传感器实时检测采集到的温度,可精确到 摄氏度,显示范围为 0~ 摄氏度;后 2 位数码管 DS DS5 用于显示系统设置的初值温度,只能显示整数的温度值,显示范围为 0~ 99 摄氏度。 5 位数码管的段选 a、 b、 c、 d、 e、 f、 g、 dp 线分别与单片机的 ~ 口连接,其中 P0 口需要接一 10K 的上拉电阻,以使单片机的 P0口能够输出高低电平。 5 位数码管的位选 W1~ W5 分别与单片机的 ~ 口相连接,只要在 ~ 口任一位中输出低电平,则选中与该位相连的数码管。 图 35 数码管显示电路 温度采集电路 DS18B20 数字温度传感器通过其内部计数时钟周期的作用,实现了特 有的温度测量功能。 低温系数振荡器输出的时钟信号通过由高温度系数振荡器产生的门周期而被计数,计数器预先设置有与 55℃相应的一个基权值。 如果计数器计数到 0 时,高温度系数振荡周期还未结束,则表示测量的温度值高于 55℃,被预置在 55℃的温度寄存器中的值就加 1℃,然后这个过程不断反复,知道高温系数振荡周期结束为止。 此时温度寄存器中的值即为被测温度值,这个值以 16 位二进制的形式存放在存储器中,通过主机发送存储器读命令可读出此温度值,读取时低位在前,高位在后,依次进行。 由于温度振荡器的抛物线特性的影响,其内用的斜率 累加器进行补偿。 DS18B20 在使用时,一般都采用单片机来实现数据采集。 只须将 DS18B20 信号线与单片机 1 位 I/O 线相连,且单片机的 1 位 I/O 线可挂多个 DS18B20,就可实现单点或多点温度检测。 本设计中将 DS18B20 接在 口实现温度的采集,其与单片机的连接如图 36 所示。 图 36 温度采集电路 风扇电机驱动与调速电路 本设计中由单片机的 I/O 口输出 PWM 脉冲,通过一个达林顿反向驱动器ULN2803 驱动 12V 的直流无刷电机以及实现风扇电机转速的调节。 按键控制设置温度,通过软件向单片机输入相 应控制指令,由单片机通过 口输出与转速相应的 PWM 脉冲,经过 ULN2803 驱动风扇直流电机控制电路,实现电机转速与启停的自动控制。 当环境温度升高时,直流电机的转速会相应按照设定的等级有所提高;当环境温度下降时,电机的转速会相应的下降;当环境温度低于设置温度时,电机停止转动,而环境温度又高于预设温度时,电机重新启动。 电路图如图 37 所示,风扇电机的一端接 12V 电源,另一端 ULN2803 的 OUT7引脚, ULN2803 的 IN7 引脚与单片机的 引脚相连,通过控制单片机的 引脚输出 PWM 信号,由此 控制风扇直流电机的速度与启停。 图 37 风扇电机驱动与调速电路 系统选用的风扇电机为 12 直流无刷电机,达林顿反向驱动器 ULN2803 输入TTL 信号为 5V 或 CMOS 信号为 6~ 15V 时,输出的最大电压为 50V,最大电流为500mA,工作温度范围为 0~ 70℃。 本系统中单片机 I/O 口输出的 TTL 信号为 5V,因此此风扇电机可以用 ULN2803 来驱动。 电路总图 电路总图主要包括系统复位与晶振电路、独立按键连接电路、数码管显示电路、温度采集电路、风扇电机驱动与调速电路等,如图 38 所示。 图 38 电路总图 第四 章 软件设计 程序设置 程序设计部分主要包括主程序、 DS18B20 初始化函数、 DS18B20 温度转换函数、温度读取函数、按键扫描函数、数码管显示函数、温度处理函数以及风扇电机控制函数。 DS18B20 初始化函数完成对 DS18B20 的初始化; DS18B20 温度转换函数完成对环境温度的实时采集;温度读取函数完成主机对温度传感器数据的读取及数据换算,按键扫描函数则根据需要完成初值的加减设定;温度处理函数对采集到的温度进行分析处理,为电机转速的变化提供条件;风扇电机控制函数则根据温度的数值完成对电机转速及启停 的控制。 主程序流程图如图 41 所示。 图 41 主程序图 主要程序代码 按键扫描程序 void keyscan void if key1 0 dmsec 5。 if key1 0 sheding++。 if sheding 100 sheding 20。 while !key1。 else if key2 0 dmsec 5。 if key2 0 sheding。 if sheding 0 sheding 20。 while !key2。 温度处理程序 void deal uint tmp //温度处理 if tmp sheding gaonum 0。 dinum 4。 else if tmp sheding amp。 amp。 tmp sheding+5 gaonum 1。 dinum 3。 else if tmp sheding+5 amp。 amp。 tmp sheding+10 gaonum 2。 dinum 2。 else if tmp sheding+10 amp。 amp。 tmp sheding+15 gaonum 3。 dinum 1。 else gaonum 4。 dinum 0。 用 Keil C51 编写程序 Keil C51 是美国 Keil Software 公司开发的 51 系列兼容单片机 C 语言的软件开发系统,与单片机汇编语言相比, C 语言不仅语句简单灵活,而且编写的函数模块可移植性强,因而易学易用,效率高。 随着单片机开发技术的不 断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展, Keil 软件是目前使用较多的 MCS51 系列单片机开发的软件。 Keil C51 软件不仅提供了丰富的库函数,而且它强大的集成开发调试工具为程序编辑调试带来便利,在开发大型软件时更能体现高级语言的优势。 早使用时要先建立一个工程,然后再添加文件并编写程序,编写好后在编辑调试。 Keil C51 的使用界面如图 32 所示。 图 42 Keil C51 的使用界面 用 Proteus 进行仿真 Proteus 简介 Proteus 软件是来 自英国 Labcenter electionics 公司的 EDA 工具软件。 Proteus 软件有十多年的历史,在全球广泛使用,它不仅和其他 EDA 工具一样有原理布图、 PCB 自动或人工布线及电路仿真的功能,而且更重要的功能是,它的电路仿真是互动的,可以根据仿真实时观察到现象验证设计的正确性及准确性并及时改变程序代码、原理图连接以及元件属性等。 它还能配合系统配置的虚拟仪器来显示和输出,如示波器、逻辑分析仪等,效果很好。 Proteus 有 4 个功能模块:智能原理图设计、完善的电路仿真功能、独特的单片机协同仿真功能以及实用的 PCB 设计平台。 其内部元件库含有丰富的元件,支持总线结构以及智能化的连线功能;支持主流 CPU(如 ARM、 8051/5 AVR)及通用外设模型的实时仿真等,为单片机的开发应用等带来极大的便利。 软件的使用主界面如图 43 所示。 图 43 Proteus 使用主界面 本设计基于 Proteus 的仿真 首先启动 Proteus 软件并建立一工程,然后根据原理图调出相应的元件,再根据要求改变各元件的属性并把各个元件按原理图 连接起来。 在原理图绘制连接好后再把编译好的程序加载到 AT89C52 单片机中。 最后再根据系统要实现的功能分布进行仿真。 把温度传感器 DS18B20 温度设置为 摄氏度,用按键 S2 调节预设的温度为 23 摄氏度。 点击开始按钮,系统开始仿真,待一段时间稳定后,观察到此时风扇直流电机的转速为 + r/s,如图 44 所示。 图 44 仿真效果图一 把温度传感器 DS18B20 温度设置为 摄氏度,用按键 S2 调节预设的温度为 23 摄氏度。 点击开始按钮,系统开始仿真,待一段时间稳定后,观察到此时风扇直流电机的转速为 + r/s,如图 45 所示。 图 45 仿真效果图二 把温度传感器 DS18B20 温度设置为 摄氏度,用按键 S2 调节预设的温度为 23 摄氏度。 点击开始按钮,系统开始仿真,待一段时间稳定后,观察到此时风扇直流电机的转速为 + r/s,如图 46 所示。 图 46 仿真效果图三 在上一步仿真的基础上(温度传感器 DS18B20 温度设置为 摄氏度,系统预设的温度为 23 摄氏度),用按键 S2 调节系统预设温度至 31 摄氏度,此时可知预设温度大于温度传感器检测到的温度,观察到直流风扇电机的转速逐渐变慢,最 后转速变为 0,符合系统要实现的功能,如图 47 所示。 图 47 仿真效果图四 通过以上仿真可以看出,直流风扇电机在系统设定的温度一定情况下,其转速随着环境温度(温度传感器检测到的温度)的增加而增大。 当环境温度低于系统预设的温度时,风扇自动停止运转,实现了系统所设计的功能。 当然,在。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。