《混凝深度处理城市污水厂初步设计》由会员分享,可在线阅读,更多相关《混凝深度处理城市污水厂初步设计(15页珍藏版)》请在金锄头文库上搜索。
1、混凝深度处理城市污水厂初步设计单片机AT89E52LED显示扫描驱动DS18B20传感器报 警一、设计目的随着人们生活水平的不断提高,智能化控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子。 数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计使用控制器测温传感器DS18B20,单片机AT89E52,用LED数码管实现温度显示,能准确达到以上要求。低温的测量常采用具有玻璃外壳的酒精温度计和水银温度计,这类温度计具有价格低廉、性能稳定、直观性强的优点,但也具
2、有易破碎且只能在现场观察的缺点,水银温度计还易造成污染而有害健康。目前,应用最为广泛的是温度敏感元件和二次仪表的组合,既可用于远程显示,也可进行温度报警,还可做到自动记录。二、设计要求1、 测量精度0.52、 范围:-50-1103、 可测多点温度,演示两点以上4、 LED直读显示5、 可任意设计温度报警的上限与下限6、 可上传通信(RS232口),也可以相互对通(485口)三、数字温度计的总体设计方案硬件部分1、设计思路:温度只要在所设定的上下温度界限内,就会在显示设备中精确的显示出来,如果温度超过了所设定的温度界限,就发出报警声。能够及时向温度监控人员发出温度超限信息。便于温控人员及时的调
3、整与控制。另外此温度控制器操作简单,体积小,灵敏度高,精度高。2、总体设计方框图: 上图所示为数字温度控制器的单体设计方框图。其工作原理为:当该电路上电工作以后,首先扫描驱动刷新LED显示,然后,温度传感器采集温度送单片机检查温度的高低是否触发报警,由单片机送出信号经过驱动电路送往显示电路或报警电路。电路图见附录3、设计所用主要零件(1)DS18B20传感器概述:DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,
4、农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。性能特点:1、适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电。 2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 3、 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。 4、DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内。 5、温范围55+125,在-10+85时精度
5、为0.5。 6、可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。 7、在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。8、测量结果直接输出数字温度信号,以”一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。9、负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。DS18B20与单片机的接口电路(引脚图见右图)DS18B20可以采用电源供电方式,此时DS18B20的第1 脚接地,第2脚作为信号线,第3脚接电源。(2)单片机
6、AT89E52具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要,很适合便携手持式产品的设计使用。1、VCC:电源电压。 2、GND:地3、P0口:P0口是一个8位双向I/O口。口引脚P1.2P1.7提供内部上拉电阻,P1.0和P1.1要求外部上拉电阻。P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(ANI0)和反相输入(AIN1)。P1口输出缓冲器可吸收 20mA电流并能直接驱动LED显示。当P1口引脚写入“1”时,其可用作输入端,当引脚P1.2P1.7用作输入并被外部拉低时,它们将因内部的写入“1”时,其可用作输入端。当引脚P1.2P1.7用作输入并被外部拉低时,它
7、们将因内部的上拉电阻而流出电流。 4、P3口:P3口的P3.0P3.5、P3.7是带有内部上拉电阻 的七个双向I/O口引脚。P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚而不可访问。P3口缓冲器可吸收20mA电流。当P3口写入“1”时,它们被内部上拉电阻拉高并可用作输入端。用作输入时,被外部拉低的P3口脚将用上拉电阻而流出电流。 5、RST:复位输入。RST一旦变成高电平所有的I/O引脚就复位到“1”。当振荡器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。每一个机器周期需12个振荡器或时钟周期。 6、XTAL1:作为振荡器反相器的输入和内部时钟发生器的输入
8、。 7、XTAL2:作为振荡器反相放大器的输出。 (3)显示电路 显示电路采用4位共阴极LED数码管,从P0口输出段码,列扫描用P2.4P2.7口来实现,列驱动用s9013三极管。四、数字温度计的总体设计方案软件部分1、设计思路系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序、按键输入子程序和报警子程序等。2、程序设计(1)主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,达到报警温度时进行报警,并扫描按键输入。主程序流程图如图4.1所示。扫描按键开始DS18B20的初始化温度显示初始化报警温度上、下限读取按键值进行
9、功能转换RET (2)温度转换命令子程序发跳过ROM命令发DS18B20复位命令发温度转换开始命令结束温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750ms。在本程序设计中,采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如下图所示(3)读出温度子程序 读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。得出温度子程序流程图如下图所示。发温度转换开始命令读取操作,CRC校验9字节完?CRC校验正确?移入温度暂存器发跳过ROM命令发DS18B20复位命令结 束五、系统调试1、硬件调试硬件调试比较
10、简单,首先检查电感的焊接是否正确,然后可用万用表测试或通电检测,观察是否短路。焊接时需特别注意电容焊接的正负方位是否正确。2、软件调试软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序等的编程及调试由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。本程序采用单片机汇编或C语言编写用Wave3.2或Keil C51编译器编程调试。软件调试到能显示温度值,并且可以实时监测,设计就基本完成。精度性能衡量可以采用与标准温度计进行测量对比。由于DS18B20的精度很高,
11、所以误差指标可以限制在0.5以内。另外,-55至+125的测温范围使得该温度计能够胜任一般的温度测量工作,其低电压供电特性可做成用电池供电的手持温度计。DS18B20温度计还可以在高低温报警、远距离多点测温控制等方面进行应用开发,但在实际设计中应注意以下问题;1、DS18B20工作时电流高大1.5mA,总线上挂接点数较多且同时进行转换时要考虑增加总线驱动,可用单片机端口在温度转换时导通一个MOSFET供电。2、连接DS18B20的总线电缆是有长度限制的,因此在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配等问题。3、在DS18B20测温程序设计中,向DS18B20发出
12、温度转换命令后,程序总要等待DS18B20的返回信号。一旦某个DS18B20接触不好或断线,当程序读DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时要给予一定的重视。六、设计心得通过本次设计学习,我们基本掌握了两种重要元器件的使用方法-测温传感器DS18B20与单片机AT89E52,并且通过温度计的制作,我们课堂上学到的知识进行运用,并在实际操作中发现问题,解决问题,更加增加对知识的认识和理解。在设计过程中,我们又重新温习了电路图的设计,PCB的布局,电子元器件的焊接等一系列基础知识,从而让我们深深地体会到基本动手能力对学习和工作的重要性,有时候
13、理论知识遇到理解瓶颈的时候,我们就需要从实际操纵上去理解与升华吧。这可能是工科学习的一种重要的途径。一个产品的诞生,绝不是某一个人的功劳。设计过程中所遇到的问题是不少的,比如液晶led的乱码现象,报警设备无法正常报警等一些问题,在老师和同学们的指导和帮助下,我们成功的解决了这些问题。在此表示衷心感谢!同时也希望以后有更多这样的机会向你们学习请教。七、附录实验程序代码:#include#includeplatform.h#includeDS18B20.h#includeTemp.hextern unsigned short TempLowerBound,TempUpperBound;extern
14、 beep;void main(void) unsigned char num4 = 0,1,2,3;unsigned char key;unsigned short temp; Init_DS18B20();TempLowerBound = 100;TempUpperBound = 300;beep = 1;while(1) key = key_scan();if(key = KEY_SET_MIN) SetTempBoundary(SET_LOWER_BOUND);else if(key = KEY_SET_MAX)SetTempBoundary(SET_UPPER_BOUND); temp = ReadTemperature();ShowTemp(temp);check_alarm(temp); *按键控制*#include#includeplatform.h#define DATA_PORT P0#define WEIXUAN_PORT P2unsigned char code key_table=0xf7,0xfb,0xfd,0xfe;unsigned char code weixuan_table