《多点温度计设计ppt培训课件》由会员分享,可在线阅读,更多相关《多点温度计设计ppt培训课件(35页珍藏版)》请在金锄头文库上搜索。
1、演讲者:罗艳丽,多点温度的设计,目录,第1章 系统的总体设计 1.1 设计背景 1.2 设计思路 第2章 器件选择 2.1 单片机的选择 2.2 温度传感器的选择 2.3 显示器的选择,第3章 系统的硬件设计 3.1 单片机端口的定义 3.2 温度传感电路设计 3.3 温度报警电路的设计 3.5 显示电路的设计 第4章 系统的软件设计 第5章 系统仿真 系统的主程序设计 附件,1.1设计背景,温度控制广泛应用于人们的生产和生活中,人们使用温度计来采集温度,通过人工操作加热、通风和降温设备来控制温度,这样不但控制精度低、实时性差,而且操作人员的劳动强度大。即使有些用户采用半导体二极管作温度传感器
2、,但由于其互换性差,效果也不理想。在某些行业中对温度的要求较高,由于工作环境温度不合理而引发的事故时有发生。对工业生产可靠进行造成影响,甚至操作人员的安全。为了避免这些缺点,需要在某些特定的环境里安装数字温度测量及控制设备。本设计由于采用了常见单片机对温度进行控制,以其测量精度高,操作简单,可运行性强,价格低廉等优点,特别适用于生活,医疗,工业生产等方面的温度测量及控制。,目录,1.2设计思路,温度传感器DS18B20把所测得的温度发送到AT89S51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器为点阵字符LCD1602液晶模块。检测范围10摄氏度到75摄氏度。本系统除了
3、显示温度以外还可以设置一个温度值,对所测温度进行监控,当温度高于或低于设定温度时,开始报警 。,目录,第2章 器件的选择,2.1 单片机的选择 MCS系列单片机集成了几乎完善的中央处理单元,处理功能强,中央处理单元中集成了方便灵活的专用寄存器,这给我们利用单片机提供了极大的便利。 单片机把微型计算机的主要部件都集成在一块芯片上,使得数据传送距离大大缩短,运行速度更快,可靠性更高,抗干扰能力更强。由于属于芯片化的微型计算机,各功能部件在芯片中的布局和结构达到最优化,工作也相对稳定。 51的优点是价钱便宜,I/O口多,程序空间大。因此,测控系统中,使用51单片机是最理想的选择。单片机属于典型的嵌入
4、式系统,所以它是低端控制系统最佳器件。 单片机的开发环境要求较低,软件资源十分丰富,开发工具和语言也大大简化。 以MCS-51技术核心为主导的单片机已成为许多厂家、电气公司竞相选用的对象,并以此为基核,推出许多与MCS51有极好兼容性的CHMOS单片机,同时增加了一些新的功能,所以我们选择用AT89S51,目录,2.2 温度传感器的选择,根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89S51为测控系统的核心来完成数据采集、处理、显示、报警等功能。选用数字温度传感器DS18B20,省却了采样保持电路、运放、数模转换电路以及进行长距离传输时的串并转换电路,简化了电路
5、,缩短了系统的工作时间,降低了系统的硬件成本。,目录,DS18B20,DS18B20是DALLAS公司(达拉斯公司)生产的一线式数字温度传感器,具有3引脚TO92小体积封装形式;温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。同DS1820一样,DS18B20也 支持“一线总线”接口,测量温度范围为 -55+125
6、,在-10+85范围内,精度为0.5。DS18B20的精度较差为0.2 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量。但是若采用一线总线接口方式,当多个DS18B20同时进行温度转换时需要强驱动力,而且转换速度将会被多的很慢。,2.3显示器的选择,采用LCD液晶屏进行显示。它的优点 1 显示质量高,由于液晶显示器的每一个点收到信号后就一直保持那种色彩和亮度恒定发光,因此液晶显示器的画质高而且不会闪烁。 2 数字式接口,液晶显示器都是数字式的,和单片机的接口简单操作也很方便。,3 功率消耗小,相比而言液晶显示器的主要功耗在内部电极和驱动IC上
7、,因而耗电量比其他器件要小很多。,目录,第3章 系统的硬件设计,3.1 单片机端口的定义: 其中有4个双向的8位并行I/O端口,分别记作P0、P1、P2、P3,都可以用于数据的输出和输入。 P3口具有第二功能为系统提供一些控制信号。时钟电路用于产生MCS-51单片机工作所必须的时钟控制信号,内部电路在时钟信号的控制下,严格地按时序指令工作。 我们用P0作为LCD的输入端,P2.0、P2.1、P2.2分别为LCD的寄存器选择(RS)、读写信号线(RW)、使能端。P3.2、P3.3连接两个DS18B20。P1.0、P1.1作为报警电路的控制线。,目录,3.2 温度传感电路的设计,DS18B20与单
8、片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻.我们采用的是第一种连接方法,如图3.3所示:把DS18B20的数据线与单片机的管脚连接,再加上上拉电阻。,目录,DS18B20的用法,先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前
9、都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。,DS18B20控制命令,3.3 温度报警电路的设计:,单片机的P1.0、P1.1、分别与三极管的基极连接来控制控制温度(图5.1)和报警(图5.2)。 温度过高或者过低,蜂鸣器报警和led灯亮,目录,3.4 显示电路的设计,1602采用标准的14脚接口: 第1脚:VSS为地电源第2脚:VDD接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄
10、存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。,目录,显示电路部分,外部电源供电 寄生电源供电:寄生电源的优点: (1)远程温度检测不需要本地电源; (2)没有电源的情况下也能完成ROM的读操作。,目录,第4章 系统的主程序设计,系统在初始化完成后就进入温度测量程序,实时
11、的测量当前的温度并通过显示电路在LCD上显示。温度高于75或者低于10度报警,led灯亮 程序见附件1,目录,第5章 系统仿真,源程序写好后通过Proteus 开发环境进行硬件仿真,以确保设定功能的实现。仿真见附件2,目录,谢谢大家!,附件1,#include #include #define uchar unsigned char #define uint unsigned int #define DelayNop() _nop_();_nop_();_nop_();_nop_();/Declare functions uchar Busy_Check(); void Initialize_
12、LCD(); void Write_LCD_Data(uchar dat); void Write_LCD_Command(uchar cmd); void Display_String(uchar x,uchar y,uchar *str);/DS18b20 one-wire bus interface sbit DQ1=P33; sbit DQ2=P32;,sbit BEEP1=P16;sbit BEEP2=P17;/Display buffer uchar code temp_title=“Current Temp:“; uchar current_temp_buffer1=“Temp1
13、: “;uchar current_temp_buffer2=“Temp2: “;/Temp float part uchar code temp_float=0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9; uchar current_temp1=0; uchar temp_value1=0x00,0x00; uchar display_digital1=0,0,0,0; bit DS18b20_OK1=1; uchar current_temp2=0;,uchar temp_value2=0x00,0x00; uchar display_digital2=0,0,0,0;
14、bit DS18b20_OK2=1;/Delay Function1 void Delay_Us(int x) uchar i;while(x-)for(i=0;i=38.0|current_temp1=38.0|current_temp2=1;DQ1=1;_nop_();_nop_();if(DQ1)dat|=0x80;Delay(30);DQ1=1;return dat; uchar Read_One_Byte2() uchar i,dat=0;DQ2=1;_nop_();,for(i=0;i=1;DQ2=1;_nop_();_nop_();if(DQ2)dat|=0x80;Delay(3
15、0);DQ2=1;return dat; /Write ont byte void Write_One_Byte1(uchar dat) uchar i;for(i=0;i=1; void Write_One_Byte2(uchar dat) uchar i;for(i=0;i=1; /Read Temperature void Read_Temperature1() if(Initialize_DS18b201()=1)DS18b20_OK1=0;else Write_One_Byte1(0xcc);Write_One_Byte1(0x44);Initialize_DS18b201();Wr
16、ite_One_Byte1(0xcc);Write_One_Byte1(0xbe);temp_value10=Read_One_Byte1();temp_value11=Read_One_Byte1();DS18b20_OK1=1; void Read_Temperature2() if(Initialize_DS18b202()=1)DS18b20_OK2=0;elseWrite_One_Byte2(0xcc);Write_One_Byte2(0x44);Initialize_DS18b202();Write_One_Byte2(0xcc);Write_One_Byte2(0xbe);temp_value20=Read_One_Byte2();temp_value21=Read_One_Byte2();DS18b20_OK2=1; /Temperature LCD display void Temperature_LCD_Display1() uchar t=150;uchar ng=0;if(temp_value11 ,