嵌入式设计—供暖水压水温的检测(老冯)_第1页
嵌入式设计—供暖水压水温的检测(老冯)_第2页
嵌入式设计—供暖水压水温的检测(老冯)_第3页
嵌入式设计—供暖水压水温的检测(老冯)_第4页
嵌入式设计—供暖水压水温的检测(老冯)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、供暖水压水温的检测系统1设计的缘由:供暖站的热水供暖系统需要时刻对热水进行水温和水压的实时监控,才能保证供暖的有效性和稳定性。这就需要有一个可靠地水温、水压数据采集的监控系 统来实现这样的需求。2系统功能的流程图:如图所示:3.检测系统的硬件设计3.1 单片机 AT89C51单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处 理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O 口和 中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、 模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的 计算机系统。设计用到的 AT89

2、C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,其主要特性有:128X8位内部RAM、32可编程I/OU1 -1-4xTAL110k wTEXT-XTAL2RSTPSEN ALE EAP2.Q/ASP2.1 /A9 P2 210 P2.3W11 P2 4/A12 P2.5/A13 P2J6/A14P2 7yA15RESPACKS .39P0038P0133?P0243&P035沁P04I-34P05/33P063,32PQ7.P0 O/AOO P0.1/AW PO.2/ADC2 P0.3/AD3 P0.4/AM P0.5/AM P0.6/AD P0.7/AD722

3、22i24 START25 E272E 叫P3.0/RXD P.DTKD P.2/iNTCT P3.3/INT1P3.4/T0P3.5TT1P3启遊P3.7 議10!工. 工.-JLL .ATS9C51L-TPrfTi线、两个16位定时器/计数器、5个中断源、可编程串行通道、低功耗的闲置和 掉电模式、片内振荡器和时钟电路图1 51单片机引脚接线图本设计用到定时器/计数器的功能,在时间计数设置时,用定时器/计数器0 的计数功能,外部以脉冲形式输入作为计数器的计数脉冲, 这里外部脉冲间隔约 为1s,计数实现时间计数功能。3.2数字温度传感器ds18b20数字温度传感器就是能把温度物理量,通过温度敏

4、感元件和相应电路转换成 方便计算机、pic、智能仪表等数据采集设备直接读取得数字量的传感器。设计 用到的ds18b20数字温度传感器耐磨耐碰,体积小,使用方便,封装形式多样, 适用于各种狭小空间设备数字测温和控制领域。其主要性能描述:1独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;2测温范围 55C+125C,固有测温分辨率05C;3支持多点组网功能,多个DS18B20可以并联在 唯一的三线上,最多只能并联8个,实现多点测温;4. 工作电源:35V/DC ;5. 在使用中不需要任何外围元件;6. 测量结果以912位数字量方式串行传

5、送。本设计中,用ds18b20来采集供暖水的水温数据,以单线串口形式将数据输送给单片机处理。DALLAS 18B201 2 3(BOTTOM VIEW)IO-C)2(DM8B2JI图2 ds18b20引脚图3.3压力传感器mpx4250压力传感器是工业实践中最为常用的 一种传感器,而我们通常使用的压力传感器 主要是利用压电效应制造而成的,这样的传 感器也称为压电传感器。压电传感器结构简 单、体积小、质量累世、功耗小、寿命长, 特别是它具有良好的动态特性,因此适合有 很宽频带的周期作用力和高速变化的冲击 力。mpx4250的主要性能指标:1. 工作压力0 36.3 PSI;2. 输出 0.2 4

6、.9V;3. 精确度1.4%;4. 电源电压 4.85 V 5.35 V;5. 工作温度-40 125 CoPORT OPTIONCASE 867B-04. STYLE 114N/C2Gnd5Ni/C3VS n6N/CPIN NUMBER图3 mpx4250引脚功能图本设计中,用mpx4250来采集供暖水压数据,1端口输出采集的水压数据到adc0808模数转换芯片。3.4模数转换芯片adc0808ADC0808是美国国家半导体公司生产的 CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个 8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行 A/D

7、转换adc0808主要特性:1.8路输入通道,8位A/D 转换器,即分辨率为8位;2. 具有转换起停控制端;3. 转换时间为100卩s(时 钟为640kHz时),130卩s (时 钟为500kHz时);4. 单个+5V电源供电;5. 模拟输入电压范围0 +5V,无需零点和满刻度校 准;6. 工作温度范围为-40U3-CLOCKIN0-STARTIN1IN2J EOC1N3IN4-0UT1IN5-OUT2IN6彳 OUT3IN7J OUT4-OUT5ADDA-0UT6ADDB 0UT7ADDC-OUT8ALEVREF()-OEVREF(-)10TAR 76ADC0808.-TRyT-.21201

8、9P03 8P02 15F01 14POO 17L25_b爹 J23 T221216+85摄氏度;7.低功耗,约15mW图4 adc0808引脚接线图图5数码管引脚定义本设计中,adc0808模数芯片用于压力传感器 mpx4250的水压模拟量串口输入的数据转化为数字量并口输出给单片机 P0 口的数据3.5 8个8段数码管与数码管显示驱动芯片 max7219led数码管是由多个发光二极管封装在一起组成“ 8” 字型的器件,弓I线已在内部连接完成,只需引出它们的各 个笔划,公共电极。led数码管根据LED的接法不同分 为共阴和共阳两类。8段led数码管分为8个显示段,分别是:a、b、c、d、e、f

9、、g、dp,dp是小数点位段。根据数码管的驱动方式的不同,可以分为静态式和动态式两类。静态驱动显示也称直流驱动。静态驱动是指每个数码管的每一个段码 都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器 译码进行驱动。动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发 光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显 示OMAX7221是一种集成化的串行输入 /输出共阴极显示驱动器,它连接微 处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的 B型BCD编码器、多路扫描回路,段 字驱动器,而且还有一个

10、 8*8的静态RAM用来存储每一个数据。MAX7221显示驱动芯片的主要功能特点:1.10MHz连续串行口;2. 独立的LED段控制;3. 高电压中断显示;4. 共阴极LED显示驱动;5. 限制回转电流的段驱动来减少EMI 。QpQO000qi丨i 丨丨i【9.53k11-ISET DIG CDIG 1niN MAX7219D,N MAX7221LOAD 站CLX$EG A-G,SEG DPA DI6(TS& SEGMENTS图6 max7221的典型应用电路本设计中,8个8段共阴极数码管与 max7221显示芯片配合驱动显示数据。显示方式为动态显示。前4个数码管显示水温数据,精确到 0.1C

11、。后4个数码管显示水压数据,精确到0.1kpa。同时可以切换显示计数的时间,即系统开启后运行时间的计时。3.6继电器的工作原理继电器是一种电控制器件。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。当输入量达到规定值时,继电器使被控制的输出电路导通或断开。继电器具有动作快、工作稳定、使用寿命长、体积小等优点。广泛应用于电力保护、自动化、运动、遥控、测量和通信等装置中。本设计中,用了两个电磁继电器对报警灯回路进行接通或断开操作。+12V *i2V图7本设计中的继电器和报警灯的电路图3.7

12、供暖水压水温系统的原理图前四位显示当前温度后四位显示当前水压095.0 IS9.0FDKJEjrnn? ruAtu raAh- nUADS rti&Ate reLTfALfJCTMZftBTQHtl口hF3DRXD P3VT)fl F3STT rsamrraam JajaPH fS/iTC3B口 1-JTiru2rh*36FLUi1BTUh-OS?-33n-卫urD-dHDl-TJT.62 - - - dll悌2 VEF TB Ctt lEZt* gTXW 国0iTT亠帕TR * 1FM 2J :; rrS*TTF:zt *1W- 4.供暖水压水温系统的软件设计4.1系统硬件控制描述1. 控制

13、器用 at89c51,12M 晶振;2. 采集的水压数据输入 P0 口;3. 采集的水温数据输入 P2.7;4. 数码管、 max7221 显示驱动 P2.0P2.2;5. adc0808 模数芯片的控制 P2.3P2.5;6. 切换数码管显示的按钮端 P2.6;7. 继电器控制端 P3.0、 P3.1。4.2 c 程序语言设计自定义的 h 文件:#ifndef _MAIN_H_ #define _MAIN_H_ #include #include #include#define uchar unsigned char#define uint unsigned int#define addo

14、(260.0/255.0)sbit DIN = P2P;sbit CS = P2A1;sbit CLK = P2A2;sbit START = P2A3;sbit EOC = P2A4;sbit OE = P2A5;sbit KEY = P2A6;sbit DQ = P2A7;sbit NPN1 = P3A0;sbit NPN2 = P3A1;#endif #ifndef _DISPLAY_H_ #define _DISPLAY_H #includemain.h extern uchar table8; extern uchar table18; extern uchar table28; v

15、oid WriteByte(uchar dat);void MAX7221_WRITE(uchar addr,uchar dat); void MAX7221_Initial(void);void Display(uchar *str); void HEXTOBCD_One(void); void HEXTOBCD_Two(void);#endif#ifndef _DELAY_H_ #define _DELAY_H_ #includemain.h void delay_us(uchar n); void delay_ms(uint n);#endif#ifndef _ADC0808_H_ #d

16、efine _ADC0808_H_ #includemain.h uchar ADC0808_READ(void);#endif#ifndef _DS18B20_H_ #define _DS18B20_H_ #includemain.h extern uchar flag; void DS18B20_RST(void);uchar DS18B20_READ(void); void DS18B20_WRITE(uchar dat);uint DS18B20_ReadTemp(void); #endif#ifndef _TIME0_H_ #define _TIME0_H_ #includemain

17、.h extern uchar secs; extern uchar minutes; extern uchar hours; void Time0_Initial(void); #endif程序正文:#includemain.h #includedelay.h #includedisplay.h #includeadc0808.h #includeds18b20.h #includetime0.h uchar ADC0808_READ(void) uchar temp;START = 0;START = 1;START = 0; while(EOC=0);OE = 1;temp = P0;r

18、eturn temp;void delay_us(uchar n)while(n-);void delay_ms(uint n)uchar i;while(n-)for(i=0;i100;i+);uchar table9 = 15,15,15,15,15,15,15,15;uchar table18 = 1,2,3,4,5,6,7,8;uchar table28 = 1,2,3,4,5,6,7,8;void WriteByte(uchar dat)uchar i;for(i=0;i8;i+)DIN = (dati)&0x80)?1:0;CLK = 0;_nop_();CLK = 1;_nop_

19、();void MAX7221_WRITE(uchar addr,uchar dat)CS = 0;WriteByte(addr);WriteByte(dat);CS = 1;void MAX7221_Initial(void)MAX7221_WRITE(0x0A,0x07);MAX7221_WRITE(0x0B,0x07);MAX7221_WRITE(0x0C,0x01);MAX7221_WRITE(0x0F,0x00);MAX7221_WRITE(0x09,0xFF);void Display(uchar *str) uchar i; for(i=0;i1000)NPN1 = 1;else

20、NPN1 = 0; if(temp21600) NPN2 = 1; elseNPN2 = 0;if(flag=0)table20 = temp1/1000;else table20 = 10;table21 = temp1%1000/100;table22 = (temp1%100/10)|0x80;table23 = temp1%10;table24 = temp2/1000;table25 = temp2%1000/100;table26 = (temp2%100/10)|0x80;table27 = temp2%10;uchar flag = 0;void DS18B20_RST(voi

21、d)DQ = 1;delay_us(4);DQ = 0;delay_us(100);DQ = 1; delay_us(40);uchar DS18B20_READ(void)uchar i,temp = 0;for(i=0;i= 1;DQ = 1;if(DQ) temp |= 0x80;delay_us(10);return temp;void DS18B20_WRITE(uchar dat) uchar i;for(i=0;i= 1;uint DS18B20_ReadTemp(void)uchar temp_h,temp_l; uint temp = 0; DS18B20_RST(); DS

22、18B20_WRITE(0xcc); DS18B20_WRITE(0x44); DS18B20_RST(); DS18B20_WRITE(0xcc); DS18B20_WRITE(0xbe); temp_h = DS18B20_READ(); temp_l = DS18B20_READ(); temp = temp_l; temp = 8; temp |= temp_h; if(temp0x0fff) flag = 0;elseflag = 1;temp = temp+1;temp = temp*(0.625);return temp;uchar secs = 0; uchar minutes

23、 = 0;uchar hours = 0;void Time0_Initial(void)TMOD = 0x01;TH0 = 0x15;TL0 = 0x9f;ET0 = 1;TR0 = 1;EA = 1;volatile unsigned char cnt = 0;void Time0_Interrupt(void) interrupt 1 TH0 = 0x15;TL0 = 0x9f;cnt +;if(cnt=10)cnt = 0;secs +;if(secs=60)secs = 0; minutes +;if(minutes=60)minutes = 0; hours+;if(hours=24)hours = 0;void main()uchar ready = 0;NPN1 = 0,NPN2

温馨提示

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

评论

0/150

提交评论