




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录一、小组的分工- 1 -二、项目需求与分析- 1 -2.1引言- 1 -2.2 课题来源- 1 -2.3 课题研究的目的意义- 2 -2.4 国内外现状及水平- 2 -2.5 课题研究内容- 2 -三、电路设计- 3 -3.1工作原理- 3 -3.2 DS18B20与单片机接口技术- 3 -3.21 DS18B20的引脚功能- 3 -3.3显示电路设计- 4 -3.3.1 LCD引脚分布及功能- 4 -3.4 报警电路设计- 4 -四、程序设计- 4 -4.1 系统资源分配- 4 -4.2 系统流程设计- 5 -4.2.1主程序流程设计- 5 -4.3 程序设计- 5 -五、系统仿真- 5
2、 -5.1 PROTEUS仿真环境介绍- 5 -5.2 原理图绘制- 5 -5.3 程序加载- 6 -5.3.1 程序编译- 6 -5.3.2 程序加载- 6 -5.4 系统仿真- 7 -六、总 结- 7 -七、参考文献- 7 -一、小组的分工:温度采集电路的设计、实验报告书:温度采集电路的设计 、报警: LCD、锁定: LCD、循环、电路连接二、项目需求与分析2.1引言在工业生产及日常生活中,多点温度检测系统的应用十分广泛,例如消防电气的非破坏性温度检测,电力设备的过热故障预知检测,空调系统的温度检测,各类运输工具组件的过热检测,医疗与诊断设备的温度测试等。它适用于电力工业、煤矿、森林、火灾
3、、高层建筑等场所,还可以用于环境恶劣的工业控制现场。针对这一情况,本文设计了一种基于AT89C51、数字温度传感器DSl8820的多点温度检测系统,DS18B20多点温度测量系统是以AT89C51单片机作为控制核心,智能温度传感DS18B20为控制对象,运用C语言编程实现系统的各种功能。该系统利用DSl8820单总线的特点,可以方便地组建传感器网络,从而实现多点温度的测量。该系统设计灵活、抗干扰性好,可以在恶劣的工作环境中进行温度测量。2.2 课题来源 温度是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一,同时它也是一
4、种最基本的环境参数。人民的生活与环境温度息息相关,物理、化学、生物等学科都离不开温度。在工业生产和实验研究中,在电力、化工、石油、冶金、机械制造、大型仓储室、实验室、农场塑料大棚甚至人们的居室里经常需要对环境温度进行检测,并根据实际的要求对环境温度进行控制。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行。炼油过程中,原油必须在不同的温度和压力条件下进行分流才能得到汽油、柴油、煤油等产品;没有合适的温度环境,许多电子设备不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。可见,研究温度的测量具有重要的理论意义和推广价值。 随着现代计算
5、机和自动化技术的发展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日益突出,成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具,其应用已遍及工农业生产和日常生活的各个领域。本设计就是为了满足人们在生活生产中对温度测量系统方面的需求。 本设计要求系统测量的温度的点数为4个,测温范围为-10+110。采用液晶显示温度值和路数,显示格式为:温度的符号位,整数部分,小数部分,最后一位显示。显示数据每一秒刷新一次。 2.3 课题研究的目的意义 21世纪科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控制设备的性能和结构发生了巨大的变化,我们已经进入了高速发
6、展的信息时代,测量技术也成为当今科技的主流之一,被广泛地应用于生产的各个领域。对于本次设计,其目的在于: (1)掌握数字温度传感器DS18B20的原理、性能、使用特点和方法,利用C51对系统进行编程。 (2)本课题综合了现代测控、电子信息、计算机技术专业领域方方面面的知识,具有综合性、科学性、代表性,可全面检验和促进学生的理论素养和工作能力。 (3) 本课题的研究可以使学生更好地掌握基于单片机应用系统的分析与设计方法,培养创新意识、协作精神和理论联系实际的学风,提高电子产品研发素质、增强针对实际应用进行控制系统设计制作的能力。 2.4 国内外现状及水平 传感器属于信息技术的前沿尖端产品,尤其是
7、温度传感器被广泛用于工农业生产、科学研究和生活等领域,数量高居各种传感器之首。温度传感器的发展大致经历了以下三个阶段:传统的分立式温度传感器(含敏感元件);模拟集成温度传感器控制器;数字温度传感器。目前,国际上新型温度传感器正从模拟式向数字式、由集成化向智能化、网络化的方向发展,同时具有抑制串模干扰能力强、分辨力高、线性度好、成本低等优点。随着我国四个现代化和经济发展,我国在科技和生产各领域都取得了飞速的发展和进步,发展以温度传感器为载体的温度测量技术具有重大意义。 2.5 课题研究内容 本设计研究的主要内容如下: (1)在广泛查阅温度检测控制理论和方法、测温技术和温度控制技术等资料的基础上,
8、根据不同的控制要求及应用领域完成对系统方案的总体设计。本设计采用以AT89C51为核心的单片机系统,来实现对温度的检测、报警等功能。 (2)研究比较各相关元器件的功能与特点,选择合适的元器件。 (3)系统硬件设计。系统硬件设计主要包括:温度检测、单片机数据采集处理、显示、键盘设定、报警电路等部分。 (4)系统软件设计。本课题采用C语言,利用Keil编译器进行编程及调试。主要研究DS18B20与单片机的通信协议、时序及一些C51通用程序等。 本设计的难点分为硬件和软件两个方面。其中硬件开发的难点在于各种元器件的选择和使用,如各种电阻、电容等的选择。软件开发的难点在于DS18B20的时序,如果时序
9、不正确,将无法读出正确的温度值,对系统产生很大的影响。三、电路设计 3.1工作原理 基于DS18B20多点温度测量系统以AT89C51为核心器件,以KEIL为系统开发平台,用C语言进行程序设计,以PROTEUS作为仿真软件设计而成的。系统主要由传感器电路、液晶显示电路、报警电路组成。DS18B20是数字温度传感器,它的输入/输出采用数字量,以单总线技术,接收主机发送的命令,根据DS18B20内部的协议进行相应的处理,将转换的温度以串口发送给主机。主机按照通信协议用一个IO口模拟DS18B20的时序,发送命令(初始化命令、ROM命令、RAM命令)给DS18B20,转换完成之后读取温度值,在内部进
10、行相应的数值处理,用图形液晶模块显示各点的温度。在系统启动之时,当某点温度超过设置值时,报警器开始报警,液晶显示该传感器的路数、实际温度值,从而实现了对各点温度的实时监控。3.2 DS18B20与单片机接口技术 3.21 DS18B20的引脚功能3.3显示电路设计 3.3.1 LCD引脚分布及功能1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VDD接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器
11、、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端。 第714脚:D0D7为8位双向数据端。 第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。3.4 报警电路设计本系统设计中存在报警电路,采用蜂鸣器报警和LED灯闪烁的方式报警。 当温度超出限制,蜂鸣器发出声音,同时LED灯亮起。四、程序设计 4.1 系统资源分配 采用AT89C51单片机作为核心器件,DS18B20作为温度测量装置,通过AT89C51的P1.0、P1.1、P1.2、P3.7口将温度值送入单片机处理4.2 系统
12、流程设计 4.2.1主程序流程设计主程序先对系统资源进行初始化,调用LCD显示子程序,显示启动画面。首先调用DS18B20初始化子程序,再发送ROM命令,读取DS18B20转换的温度值。当读取的温度大于设置的温度值时,报警器开始报警,LCD显示温度的实际值、设置值、路数、状态。接下来对第二、三、四路温度进行采集,处理,显示。4.3 程序设计(代码) #include#include#define ulong unsigned long#define uint unsigned int#define uchar unsigned char/-定义LCD1602接口-/P0-7= D0-7 液晶端
13、口#define LCDDATA P2sbit rs=P30; /数据指令sbit wela=P31; /读写sbit lcden=P32; /使能/-定义按键接口-sbit B1=P17; /设置按键,用于设定上限值或者下限值sbit B2=P16; /选定上/下限后,按键加sbit B3=P15; /选定上下限后,按键减/-定义DS18B20接口-sbit DQ1=P10; /P1.2口接DS18B20传感器sbit DQ2=P11; /P1.2口接DS18B20传感器sbit DQ3=P12; /P1.2口接DS18B20传感器sbit DQ4=P37; /P1.2口接DS18B20传感
14、器/-定义LED报警灯接口-sbit LED1=P14; /P1.4口接LED报警显示灯/-定义蜂鸣器报警接口-sbit LS=P16; /P1.3口接蜂鸣器uchar DQ1_SET2; /DQ1上下限设置 DQ1_SET0 下限 DQ1_SET1 上限;uchar DQ2_SET2; /DQ2上下限设置 DQ1_SET0 下限 DQ1_SET1 上限;uchar DQ3_SET2; /DQ3上下限设置 DQ1_SET0 下限 DQ1_SET1 上限;uchar DQ4_SET2; /DQ4上下限设置 DQ1_SET0 下限 DQ1_SET1 上限;uchar Temp; /温度报警ucha
15、r count; /蜂鸣器定时用bit mode=0; /mode=1正常显示 mode=2 设置下限模式 mode=3设置上限 bit alarm=0;uchar code table=Temper ;/DS18B20/uchar ng; /负号标志uint dat1=0,dat2=0,dat3=0,dat4=0;uchar dat4=0;uchar code df_Table= 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9; /温度小数位对照表uchar CurrentT = 0; /当前读取的温度整数部分uchar Temp_Value12=0x00,0x00; /从D
16、S18B20读取的温度值uchar Temp_Value22=0x00,0x00; /从DS18B20读取的温度值uchar Temp_Value32=0x00,0x00; /从DS18B20读取的温度值uchar Temp_Value42=0x00,0x00; /从DS18B20读取的温度值uchar Display_Digit=0,0,0,0,0,0,0,0;/待显示的各温度数位bit DS18B20_IS_OK = 1; /传感器正常void Delay_ms(unsigned int t)unsigned int i,j;for(i=0;it;i+)for(j=0;j0;x-)for(
17、y=120;y0;y-);/*/ 描述: 1602液晶写指令/*/void write_com(uchar com) /1602液晶写指令rs=0;lcden=0;LCDDATA=com;/发指令到端口delayms(1);/延时1mslcden=1;delayms(2);/延时2mslcden=0;/*/ 描述:1602液晶写数据 /*/void write_date(uchar date) /1602液晶写数据 rs=1;lcden=0;LCDDATA=date;/发送数据到端口delayms(1);/延时1mslcden=1;delayms(2);/延时2mslcden=0;/*/ 描述
18、:初始化液晶,及画面初始化 /*/void init_lcd(void) /初始化液晶,及画面初始化uchar num;wela=0;lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num13;num+) /显示开机画面 temper: ;write_date(tablenum);Delay(10); /-1602-/*/ 描述:/初始化DS18B20/*/uchar Init_DS18B20() uchar status; DQ1 = 1;DQ2
19、 = 1;DQ3 = 1;DQ4 = 1; /端口置1Delay(8); /延时DQ1 = 0;DQ2 = 0;DQ3 = 0;DQ4 = 0; /端口置0Delay(90); /延时480us以上DQ1 = 1;DQ2 = 1;DQ3 = 1;DQ4 = 1; /端口置1Delay(8); /延时status = DQ1;/读取状态Delay(100); /延时DQ1 = 1;DQ2 = 1;DQ3 = 1;DQ4 = 1; /端口置1return status;/*/ 描述:读一个字节/*/void ReadOneByte()/ulong *pdat uchar i;DQ1 = 1;DQ2
20、 = 1;DQ3 = 1;DQ4 = 1;/端口置1_nop_();/延时for(i=0;i= 1;dat1 = 1;dat2 = 1;dat3 = 1;/*pdat=1;DQ1 = 1;DQ2 = 1;DQ3 = 1;DQ4 = 1;/端口置1_nop_();/延时_nop_();/延时if(DQ1)dat0|=0X80;if(DQ2)dat1|=0X80;if(DQ3)dat2|=0X80;if(DQ4)dat3|=0X80;/*if(DQ1)*pdat|=0X80000000;if(DQ2)*pdat|=0X800000;if(DQ3)*pdat|=0X8000;if(DQ4)*pdat
21、|=0X80;*/Delay(30);/延时DQ1 = 1;DQ2 = 1;DQ3 = 1;DQ4 = 1;/端口置1/*/ 描述:写一个字节/*/void WriteOneByte(uchar dat) uchar i;for(i=0;i= 1; /移位 /*/ 描述:读温度值/*/void Read_Temperature() EA=0; if(Init_DS18B20()=1)DS18B20_IS_OK=0;else WriteOneByte(0xcc); /跳过序列号WriteOneByte(0x44); /启动温度转换Init_DS18B20(); /初始化温度传感器WriteOne
22、Byte(0xcc); /跳过序列号WriteOneByte(0xbe); /读取温度寄存器ReadOneByte(); /温度低8位/*Temp_Value10 = dat24;Temp_Value20 = dat16;Temp_Value30 = dat8;Temp_Value40 = dat;*/Temp_Value10 = dat0;Temp_Value20 = dat1;Temp_Value30 = dat2;Temp_Value40 = dat3;dat0=0;dat1=0;dat2=0;dat3=0;ReadOneByte(); /温度高8位/*Temp_Value11 = da
23、t24;Temp_Value21 = dat16;Temp_Value31 = dat8;Temp_Value41 = dat;*/Temp_Value11 = dat0;Temp_Value21 = dat1;Temp_Value31 = dat2;Temp_Value41 = dat3;DS18B20_IS_OK=1;EA=1;/*/ 描述:/处理温度值/*/void Display_Temperature(uchar *pdat)uchar t = 150;/,延时 ng = 0; /与负值标志if(pdat1&0xf8)=0xf8) pdat1 = pdat1;pdat0 = pdat
24、0+1;if(pdat0=0x00)pdat1+;ng = 1; /负温度elseng = 0;/温度为正Display_Digit0 = df_Tablepdat0&0x0f; /查表得温度小数部分CurrentT = (pdat0&0xf0)4) | (pdat1&0x07)4)mode=1; /在1 2 3中切换 while(!B1);/等待按键释放 /-键盘扫描-/*/ 描述:/定时器初始化 用于蜂鸣器声音/*/void init() TMOD=0x01;TH0=(65536-50000)/256;/定时器初始化TL0=(65536-50000)%256;/定时器初始化EA=1; /开
25、中断ET0=1; /TR0=1; /LS=1; /关蜂鸣器void main(void) uchar i,nn;init_lcd();/-超温初始-DQ1_SET0=1; /DQ1下限1 DQ1_SET1=101; /DQ1上限101 DQ2_SET0=2; /DQ1下限2DQ2_SET1=102; /DQ1上限102 DQ3_SET0=3; /DQ1下限3 DQ3_SET1=103; /DQ1上限103DQ4_SET0=4; /DQ1下限4 DQ4_SET1=104; /DQ1上限104 /-init(); /初始化蜂鸣器 Read_Temperature(); /初始化DQ1 Delay_
26、ms(1000); /延时1sRead_Temperature(); /读温度/- Read_Temperature(); /读温度if(DS18B20_IS_OK) Display_Temperature(Temp_Value1);/显示温度处理/-mode=0;/mode=1;/mode=1 正常模式while(1) DIS_1602();i+;if(i20)Read_Temperature(); /读温度if(DS18B20_IS_OK)write_com(0x86 ),write_date(1),Display_Temperature(Temp_Value1); /温度数据处理if(m
27、ode) i=0;/i=0;else if(i40)/Read_Temperature(); /读温度if(DS18B20_IS_OK)write_com(0x86 ),write_date(2),Display_Temperature(Temp_Value2); /温度数据处理if(mode) i=20;/i=0;else if(i60)/Read_Temperature(); /读温度if(DS18B20_IS_OK)write_com(0x86 ),write_date(3),Display_Temperature(Temp_Value3); /温度数据处理if(mode) i=40;/i=0;else if(i80)/Read_Temperature(); /读温度if(DS18B20_IS_OK)write_com(0x86 ),write_date(4),Display_Temperature(Temp_Value4); /温度数据处理if(mode) i=60;else i=0;if(TempDQ1_SET0|TempDQ2_SET0|TempDQ3_SET0|TempDQ1_SET1|TempDQ2_SET1|TempDQ3_SET1|TempDQ4_SET1)LED1=1;alarm=1;elseLED1=0;LS=1;alarm=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论