基于AT89S52的温控风扇的设计
2014-08-08安盼盼资灵薇李喜乐
安盼盼+资灵薇+李喜乐
摘要:本项目是在LCD1602液晶屏上显示测得的温度,并利用拨码开关设置温度上下限,测得的温度小于设定温度下限,则在液晶屏上显示cold和相应温度,温度在上下限之间显示normal和相应温度,温度高于上限则显示high和相应温度,并且用蜂鸣器报警。利用LM 2940给电路板供电,控制部分采用继电器完成,如果温度高于设定上限温度则用蜂鸣器报警,则继电器常开开关连通。电机工作,风扇转动。从而实现根据温度控制风扇的效果。
关键词:AT89S52继电器;LCD1602;蜂鸣器;电机
1方案设计
本系统采用了单片机AT89S52,利用数字温度传感器DS18B20对环境进行测温,同时采用LCD1602液晶显示,此外还有8421拨码开关来实现温度上下限值的设置,继电器和电机实现温度控制风扇的智能化。总体硬件结构框图如图1.1所示。
图1.1系统硬件结构
2硬件电路设计
2.1最小化电路设计
主控芯片要能正常工作,首先要提供电源,除其次要有晶振电路提供时钟脉冲信号,除此之外还要有ISP下载电路使单片机方便下载。
最小化电路。单片机工作需要3个基本条件:接电源、接石英晶体振荡器、单片机内装入程序,如图2.1所示。
图2.1单片机的基本电路
接电源。将单片机第40脚Vcc接电源+5V,第20脚Vss接地(电源负极),为单片机工作提供电源。由于AT89S52片内带有程序存储器,当使用片内程序存储器时要将EA(31脚)接高电平,即接到电源+5V。
接石英晶体振荡器。将单片机第19脚(XTAL1)与18脚(XTAL2)分别接外部晶体的两个引脚,由石英晶体组成振荡器,保证单片机内部各部分有序工作。晶振电路如图2.2所示。
图2.2晶振电路
单片机运行程序的速度与振荡器的频率有关。单片机在读、写操作时都需要消耗一定的时间。当外接石英晶体为12MHz时,1个机器周期为1ms;
ISP下载电路。在实际应用中,为了方便下载,设计ISP下载电路。电路图如下:
图2.3
2.2电源电路
LM2940比7805的转换效率高。7805直接输入不接输出的情况下,其内部还会有3mA的电流消耗(静态电流)。而LDO元件的静态电流就比它远远小得多了。所以综合比较以后选择2940芯片作为稳压电源。
2.3 温度采集电路设计
跟以往的采用A/D转换器进行温度测量不同的是,本系统采用的是一线协议器件DS18B20进行温度测量,测量的方法不同,温度采集不同。DS18B20是美国Dallas半导体公司推出的数字式单总线温度传感器。由于DS18B20具有微型化、低功耗、高性能、抗干扰能力强、接口简单等很多优点,使其得到了广泛的应用。
2.4拨码开关电路设计
本系统显示电路用来显示温度上下限的值和通过DS18B20采集进来的实时温度值。采用8421拨码开关设计温度上限,软件设计温度下限。8421拨码开关电路图(如图2.6)。
2.5显示器简介
1602LCD液晶是一种高分子材料,因为其微功耗、体积小、显示内容丰富、超薄轻巧等很多优点。1602LCD液晶显示模块可以显示2行每行16个ASCII码字符。1602LCD提供了8位并行数据接口,方便了与单片机的连接。
图2.6
2.6继电器部分
采用继电器作为温度控制部分。继电器线圈两端并接一个二极管IN4148,用于吸收释放继电器线圈断电时产生的反向电动势,防止方向电动势击穿三极管及干扰其他电路;
2.7控制报警部分
控制报警部分采用蜂鸣器设计,原理图如下:
图2.8
3系统软件设计
3.1主程序流程
程序开始,对程序参数、端口、1602显示初始化,读取数据,开中断,拨码开关读取。
3.2子程序流程
子程序流程包括中断程序、拨码开关程序、温度检测与报警程序、温度采集程序。(1)中断流程。判断500MS是否到,如果500MS到了则DS18B20连续采集送到相应寄存器中,然后刷新显示缓冲,中断返回。(2)拨码开关流程。使用的是8421拨码开关,通过检测输入引脚的高低电平,读取通过拨码开关设定的数值。(3)温度检测与报警流程。判断当前温度数值是否超过拨码开关设定的温度上限数据,若超过则通过单片机产生信号驱动直流电机工作同时报警。若在正常范围内,不报警,继电器断开,直流电机不工作。若低于温度下限,报警但电机不工作。(4)DS18B20温度采集流程。DS18B20先复位,然后跳过ROM匹配,启动温度转换,准备读温度前再次复位DS18B20,然后再跳过ROM匹配,读取温度值,返回。
4系统制作与调试
调试中出现的问题及解决方法:(1)由于P0口输出电流低造成1602液晶不显示,要接上拉电阻。(2)第一块板子,有控制的程序,但1602液晶怎么也不显示,后来才发现3号引脚电压太大了,通过电位器调节后变为正常。(3)程序控制继电器开关,在温度过高时应该输出低电平,通过三极管控制继电器开关打开,控制电机转;但程序控制有误,最开始是输出高电平。(3)开始接拨码开关时,把公共端接高电平,怎么都检测不到,相对应拨码开关数字的正确的引脚电压。后来才发现,公共端应该接地。
摘要:本项目是在LCD1602液晶屏上显示测得的温度,并利用拨码开关设置温度上下限,测得的温度小于设定温度下限,则在液晶屏上显示cold和相应温度,温度在上下限之间显示normal和相应温度,温度高于上限则显示high和相应温度,并且用蜂鸣器报警。利用LM 2940给电路板供电,控制部分采用继电器完成,如果温度高于设定上限温度则用蜂鸣器报警,则继电器常开开关连通。电机工作,风扇转动。从而实现根据温度控制风扇的效果。
关键词:AT89S52继电器;LCD1602;蜂鸣器;电机
1方案设计
本系统采用了单片机AT89S52,利用数字温度传感器DS18B20对环境进行测温,同时采用LCD1602液晶显示,此外还有8421拨码开关来实现温度上下限值的设置,继电器和电机实现温度控制风扇的智能化。总体硬件结构框图如图1.1所示。
图1.1系统硬件结构
2硬件电路设计
2.1最小化电路设计
主控芯片要能正常工作,首先要提供电源,除其次要有晶振电路提供时钟脉冲信号,除此之外还要有ISP下载电路使单片机方便下载。
最小化电路。单片机工作需要3个基本条件:接电源、接石英晶体振荡器、单片机内装入程序,如图2.1所示。
图2.1单片机的基本电路
接电源。将单片机第40脚Vcc接电源+5V,第20脚Vss接地(电源负极),为单片机工作提供电源。由于AT89S52片内带有程序存储器,当使用片内程序存储器时要将EA(31脚)接高电平,即接到电源+5V。
接石英晶体振荡器。将单片机第19脚(XTAL1)与18脚(XTAL2)分别接外部晶体的两个引脚,由石英晶体组成振荡器,保证单片机内部各部分有序工作。晶振电路如图2.2所示。
图2.2晶振电路
单片机运行程序的速度与振荡器的频率有关。单片机在读、写操作时都需要消耗一定的时间。当外接石英晶体为12MHz时,1个机器周期为1ms;
ISP下载电路。在实际应用中,为了方便下载,设计ISP下载电路。电路图如下:
图2.3
2.2电源电路
LM2940比7805的转换效率高。7805直接输入不接输出的情况下,其内部还会有3mA的电流消耗(静态电流)。而LDO元件的静态电流就比它远远小得多了。所以综合比较以后选择2940芯片作为稳压电源。
2.3 温度采集电路设计
跟以往的采用A/D转换器进行温度测量不同的是,本系统采用的是一线协议器件DS18B20进行温度测量,测量的方法不同,温度采集不同。DS18B20是美国Dallas半导体公司推出的数字式单总线温度传感器。由于DS18B20具有微型化、低功耗、高性能、抗干扰能力强、接口简单等很多优点,使其得到了广泛的应用。
2.4拨码开关电路设计
本系统显示电路用来显示温度上下限的值和通过DS18B20采集进来的实时温度值。采用8421拨码开关设计温度上限,软件设计温度下限。8421拨码开关电路图(如图2.6)。
2.5显示器简介
1602LCD液晶是一种高分子材料,因为其微功耗、体积小、显示内容丰富、超薄轻巧等很多优点。1602LCD液晶显示模块可以显示2行每行16个ASCII码字符。1602LCD提供了8位并行数据接口,方便了与单片机的连接。
图2.6
2.6继电器部分
采用继电器作为温度控制部分。继电器线圈两端并接一个二极管IN4148,用于吸收释放继电器线圈断电时产生的反向电动势,防止方向电动势击穿三极管及干扰其他电路;
2.7控制报警部分
控制报警部分采用蜂鸣器设计,原理图如下:
图2.8
3系统软件设计
3.1主程序流程
程序开始,对程序参数、端口、1602显示初始化,读取数据,开中断,拨码开关读取。
3.2子程序流程
子程序流程包括中断程序、拨码开关程序、温度检测与报警程序、温度采集程序。(1)中断流程。判断500MS是否到,如果500MS到了则DS18B20连续采集送到相应寄存器中,然后刷新显示缓冲,中断返回。(2)拨码开关流程。使用的是8421拨码开关,通过检测输入引脚的高低电平,读取通过拨码开关设定的数值。(3)温度检测与报警流程。判断当前温度数值是否超过拨码开关设定的温度上限数据,若超过则通过单片机产生信号驱动直流电机工作同时报警。若在正常范围内,不报警,继电器断开,直流电机不工作。若低于温度下限,报警但电机不工作。(4)DS18B20温度采集流程。DS18B20先复位,然后跳过ROM匹配,启动温度转换,准备读温度前再次复位DS18B20,然后再跳过ROM匹配,读取温度值,返回。
4系统制作与调试
调试中出现的问题及解决方法:(1)由于P0口输出电流低造成1602液晶不显示,要接上拉电阻。(2)第一块板子,有控制的程序,但1602液晶怎么也不显示,后来才发现3号引脚电压太大了,通过电位器调节后变为正常。(3)程序控制继电器开关,在温度过高时应该输出低电平,通过三极管控制继电器开关打开,控制电机转;但程序控制有误,最开始是输出高电平。(3)开始接拨码开关时,把公共端接高电平,怎么都检测不到,相对应拨码开关数字的正确的引脚电压。后来才发现,公共端应该接地。
摘要:本项目是在LCD1602液晶屏上显示测得的温度,并利用拨码开关设置温度上下限,测得的温度小于设定温度下限,则在液晶屏上显示cold和相应温度,温度在上下限之间显示normal和相应温度,温度高于上限则显示high和相应温度,并且用蜂鸣器报警。利用LM 2940给电路板供电,控制部分采用继电器完成,如果温度高于设定上限温度则用蜂鸣器报警,则继电器常开开关连通。电机工作,风扇转动。从而实现根据温度控制风扇的效果。
关键词:AT89S52继电器;LCD1602;蜂鸣器;电机
1方案设计
本系统采用了单片机AT89S52,利用数字温度传感器DS18B20对环境进行测温,同时采用LCD1602液晶显示,此外还有8421拨码开关来实现温度上下限值的设置,继电器和电机实现温度控制风扇的智能化。总体硬件结构框图如图1.1所示。
图1.1系统硬件结构
2硬件电路设计
2.1最小化电路设计
主控芯片要能正常工作,首先要提供电源,除其次要有晶振电路提供时钟脉冲信号,除此之外还要有ISP下载电路使单片机方便下载。
最小化电路。单片机工作需要3个基本条件:接电源、接石英晶体振荡器、单片机内装入程序,如图2.1所示。
图2.1单片机的基本电路
接电源。将单片机第40脚Vcc接电源+5V,第20脚Vss接地(电源负极),为单片机工作提供电源。由于AT89S52片内带有程序存储器,当使用片内程序存储器时要将EA(31脚)接高电平,即接到电源+5V。
接石英晶体振荡器。将单片机第19脚(XTAL1)与18脚(XTAL2)分别接外部晶体的两个引脚,由石英晶体组成振荡器,保证单片机内部各部分有序工作。晶振电路如图2.2所示。
图2.2晶振电路
单片机运行程序的速度与振荡器的频率有关。单片机在读、写操作时都需要消耗一定的时间。当外接石英晶体为12MHz时,1个机器周期为1ms;
ISP下载电路。在实际应用中,为了方便下载,设计ISP下载电路。电路图如下:
图2.3
2.2电源电路
LM2940比7805的转换效率高。7805直接输入不接输出的情况下,其内部还会有3mA的电流消耗(静态电流)。而LDO元件的静态电流就比它远远小得多了。所以综合比较以后选择2940芯片作为稳压电源。
2.3 温度采集电路设计
跟以往的采用A/D转换器进行温度测量不同的是,本系统采用的是一线协议器件DS18B20进行温度测量,测量的方法不同,温度采集不同。DS18B20是美国Dallas半导体公司推出的数字式单总线温度传感器。由于DS18B20具有微型化、低功耗、高性能、抗干扰能力强、接口简单等很多优点,使其得到了广泛的应用。
2.4拨码开关电路设计
本系统显示电路用来显示温度上下限的值和通过DS18B20采集进来的实时温度值。采用8421拨码开关设计温度上限,软件设计温度下限。8421拨码开关电路图(如图2.6)。
2.5显示器简介
1602LCD液晶是一种高分子材料,因为其微功耗、体积小、显示内容丰富、超薄轻巧等很多优点。1602LCD液晶显示模块可以显示2行每行16个ASCII码字符。1602LCD提供了8位并行数据接口,方便了与单片机的连接。
图2.6
2.6继电器部分
采用继电器作为温度控制部分。继电器线圈两端并接一个二极管IN4148,用于吸收释放继电器线圈断电时产生的反向电动势,防止方向电动势击穿三极管及干扰其他电路;
2.7控制报警部分
控制报警部分采用蜂鸣器设计,原理图如下:
图2.8
3系统软件设计
3.1主程序流程
程序开始,对程序参数、端口、1602显示初始化,读取数据,开中断,拨码开关读取。
3.2子程序流程
子程序流程包括中断程序、拨码开关程序、温度检测与报警程序、温度采集程序。(1)中断流程。判断500MS是否到,如果500MS到了则DS18B20连续采集送到相应寄存器中,然后刷新显示缓冲,中断返回。(2)拨码开关流程。使用的是8421拨码开关,通过检测输入引脚的高低电平,读取通过拨码开关设定的数值。(3)温度检测与报警流程。判断当前温度数值是否超过拨码开关设定的温度上限数据,若超过则通过单片机产生信号驱动直流电机工作同时报警。若在正常范围内,不报警,继电器断开,直流电机不工作。若低于温度下限,报警但电机不工作。(4)DS18B20温度采集流程。DS18B20先复位,然后跳过ROM匹配,启动温度转换,准备读温度前再次复位DS18B20,然后再跳过ROM匹配,读取温度值,返回。
4系统制作与调试
调试中出现的问题及解决方法:(1)由于P0口输出电流低造成1602液晶不显示,要接上拉电阻。(2)第一块板子,有控制的程序,但1602液晶怎么也不显示,后来才发现3号引脚电压太大了,通过电位器调节后变为正常。(3)程序控制继电器开关,在温度过高时应该输出低电平,通过三极管控制继电器开关打开,控制电机转;但程序控制有误,最开始是输出高电平。(3)开始接拨码开关时,把公共端接高电平,怎么都检测不到,相对应拨码开关数字的正确的引脚电压。后来才发现,公共端应该接地。