单片机温度传感器设计报告

上传人:豆*** 文档编号:126808999 上传时间:2022-07-29 格式:DOC 页数:39 大小:314KB
收藏 版权申诉 举报 下载
单片机温度传感器设计报告_第1页
第1页 / 共39页
单片机温度传感器设计报告_第2页
第2页 / 共39页
单片机温度传感器设计报告_第3页
第3页 / 共39页
资源描述:

《单片机温度传感器设计报告》由会员分享,可在线阅读,更多相关《单片机温度传感器设计报告(39页珍藏版)》请在装配图网上搜索。

1、泰州职业技术学院电子与信息工程系课程名称: 51单片机开发 课题名称:用1602LCD与DS18B20设计的温度报警器班 级: 10信息 课题小构成员: 林淑云 朱翠竹 刘苏慧 指引教师: 蔡菁 摘要现代社会是信息社会,随着现代农业技术的发展及人们对生活环境规定的提高,人们也迫切需要检测与控制温度,因此对于温度的测量控制具有十分重要的意义。随着全球温度的普遍升高,高温火灾更是无处不在:电气线路短路、过载、接触电阻过大等引起高温火灾;静电产生高温火灾;雷电等强电入侵导致高温火灾;最重要是机房内电脑、空调等用电设备长时间工作,导致设备老化,空调发生故障,而不能降温。因此,机房内所属的电子产品发热快

2、,在短时间内机房温度升高超过设备正常温度,导致系统瘫痪或产生火灾,这时温度报警系统就会发挥应有的功能。本课题简介的就是运用温度传感DS18B20制作的温度报警器,自动测量目前环境温度。由单片机AT89C52控制,并通过1602LCD显示,若目前环境温度超过此温度,系统发出报警。目 录一、系统总体设计规定二、系统硬件设计三、系统程序设计四、调试与性能分析五、源程序清单六、心得体会一、系统总体设计规定1.本设计采用集成温度传感器的的s18b20,设计一种数字显示的温度报警器。定安全温度值范畴为20C30C(可根据具体需要在程序中进行调节),对在这一范畴内的温度变化采集后送入A/D转换器,A/D转换

3、器的模拟电压范畴为05V。例如传感器采集的温度为25C,则相应液晶显示屏的显示值为25C。而温度高出30C或者低于20C时,不在安全温度范畴之内,喇叭会进行报警、二极管发光显示 2 总体设计框图本设计采用AT89C52作为主控芯片,蜂鸣器作为输出设备产生报警声,LCD1602可以实时的显示目前的的温度。其中P3.3和P3.2外接按键,P0口用作LCD输出数据端口,P2.3接蜂鸣器端口。具体原理图见附件设计框图如图一所示。二、系统硬件设计1 主控芯片设计中所采用主控芯片为AT89C52。因其价格便宜,在市场上已经很成熟,各个方面都可以满足设计规定故选择它。其采用原则双列直插式引脚DIP-40大规

4、模集成电路封装。它的引脚排列如下图二所示图二AT89C52的引脚排列引脚简介:VCC:供电电压。 GND:接地。 P0口:P0口为一种8位漏级开路双向I/O口,每脚可吸取8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0可以用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一种内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接受输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部

5、上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接受。 P2口:P2口为一种内部上拉电阻的8位双向I/O口,P2口缓冲器可接受,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它运用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接受高八位地址信号和控制信号。 P3口: P3口管脚是8个带内部上拉电阻

6、的双向I/O口,可接受输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的某些特殊功能口,如下表所示: P3口管脚 备选功能: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外部中断0) P3.3 INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通) P3口同步为闪烁编程和编程校验接受某些控制信号。R

7、ST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存容许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定期目的。然而要注意的是:每当用作外部数据存储器时,将跳过一种ALE脉冲。如想严禁ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。此外,该引脚被略微拉高。如果微解决器在外部执行状态ALE严禁,置位无效。PSEN: 外部程序存储器

8、的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不浮现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管与否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配备为片内振荡器。石晶

9、振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一种二分频触发器,因此对外部时钟信号的脉宽无任何规定,但必须保证脉冲的高下电平规定的宽度。2、液晶模块显示原理:在智能控制系统中越来越多的使用了液晶显示屏LCD。LCD是一种介于液体和固体之间热力学的中间稳定相,它自身不会发光,是运用外部光的反射原理进行显示。液晶显示功耗小,字形美观,在系统中可用集成电池来供电。字符型液晶显示模块是一种专门用于字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2,40*行等的模块,下面以1602字符型液晶显示屏为例简介其用法:1.1602LCD采用原

10、则的14脚(无背光)或16脚(带背光)接口,各引脚接口阐明如表所示:2.1602液晶模块内部的控制器共11条指令:(1).清屏指令指令RSR/WD7D6D5D4D3D2D1D0清显示0000000001功能: 清除液晶显示屏,即将DDRAM的内容所有填入空白的ASCII码20H; 光标归位,即将光标撤回液晶显示屏的左上方; 将地址计数器(AC)的值设为0。(2).光标归位指令指令RSR/WD7D6D5D4D3D2D1D0光标返回000000001*功能: 把光标撤回到显示屏的左上方; 把地址计数器(AC)的值设立为0; 保持DDRAM的内容不变。(3).进入模式设立指令指令RSR/WD7D6D

11、5D4D3D2D1D0置输入模式00000001I/DS功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一种字符与否移动。参数设定的状况如下所示: 位名设立 I/D0=写入新数据后光标左移1=写入新数据后光标右移 S0=写入新数据后显示屏不移动1=写入新数据后显示屏整体右移1个字符 (4).显示开关控制指令指令RSR/WD7D6D5D4D3D2D1D0显示开/关控制指令0000001DCB功能:控制显示屏开/关、光标显示/关闭以及光标与否闪烁。参数设定的状况如下: 位名设立 D0=显示功能关1=显示功能开 C0=无光标1=有光标 B0=光标闪烁1=光标不闪烁 (5).设定显示屏或

12、光标移动方向指令指令RSR/WD7D6D5D4D3D2D1D0光标或字符移位000001S/CR/L*功能:使光标移位或使整个显示屏幕移位。参数设定的状况如下: S/CR/L设定状况 00光标左移1格,且AC值减1 01光标右移1格,且AC值加1 10显示屏上字符所有左移一格,但光标不动11显示屏上字符所有右移一格,但光标不动 (6).功能设定指令指令RSR/WD7D6D5D4D3D2D1D0置功键00001DLNF*功能:设定数据总线位数、显示的行数及字型。参数设定的状况如下: 位名设立 DL0=数据总线为4位1=数据总线为8位 N0=显示1行1=显示2行 F0=57点阵/每字符1=510点

13、阵/每字符 (7).设定CGRAM地址指令指令RSR/WD7D6D5D4D3D2D1D0置字符发生存贮器地址0001字符发生存贮器地址功能:设定下一种要存入数据的CGRAM的地址。(8).设定DDRAM地址指令指令RSR/WD7D6D5D4D3D2D1D0置数据存贮器地址001显示数据存贮器地址功能:设定下一种要存入数据的CGRAM的地址。(9).读取忙信号或AC地址指令指令RSR/WD7D6D5D4D3D2D1D0读忙标志或地址01BF计数器地址功能: 读取忙碌信号BF的内容,BF=1表达液晶显示屏忙,临时无法接受单片机送来的数据或指令;当BF=0时,液晶显示屏可以接受单片机送来的数据或指令

14、; 读取地址计数器(AC)的内容。(10).数据写入DDRAM或CGRAM指令一览指令RSR/WD7D6D5D4D3D2D1D0写数到DDRAM或CGRAM10要写的数据内容功能: 将字符码写入DDRAM,以使液晶显示屏显示出相相应的字符; 将使用者自己设计的图形存入CGRAM。(11).从CGRAM或DDRAM读出数据的指令一览指令RSR/WD7D6D5D4D3D2D1D0从CGRAM或DDRAM读数11读出数据内容功能:读取DDRAM或CGRAM中的内容。3.1602LCD基本操作时序:读状态输入RS=L,RW=H,E=H输出D0D7=状态字写指令输入RS=L,RW=L,E=高脉冲,D0D

15、7=指令码输出无读数据输入RS=H,RW=H,E=H输出D0D7=数据写数据输入RS=H,RW=L,E=高脉冲,D0D7=数据输出无3、DS18B20温度传感器简介传感器DS18B20具有体积更小、精度更高、合用电压更宽、采用一线总线、可组网等长处,在实际应用中获得了良好的测温效果。 美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。所有传感元件及转换电路集成在形如一只三极管的集成电路内。“一线总线”独特并且经济的特点,使顾客可轻松地组建传感器网络,为测量系统的构建引入全新概念。目前,新一代

16、的DS18B20体积更小、更经济、更灵活。使你可以充足发挥“一线总线”的长处。 同DS1820同样,DS18B20也支持“一线总线”接口,测量温度范畴为-55C+125C,在-10+85C范畴内,精度为0.5C。现场温度直接以“一线总线”的数字方式传播,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V5.5V的电压范畴,使系统设计更灵活、以便。并且新一代产品更便宜,体积更小8。1. DS18B20的特性 9 (1)适应电压范畴更宽,电压范畴:3.05.5V,寄生电源方式下可由数据线供。(2)独特的单线

17、接口方式,DS18B20在与微解决器连接时仅需要一条口线即可实现微解决器与DS18B20的双向通讯。(3)DS18B20支持多点组网功能,多种DS18B20可以并联在唯一的三线上,实现组网多点测温。(4)DS18B20在使用中不需要任何外围元件,所有传感元件及转换电路集成在形如一只三极管的集成电路内。(5)温范畴55125,在-10+85时精度为0.5。(6)可编程的辨别率为912位,相应的可辨别温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。(7)在9位辨别率时最多在93.75ms内把温度转换为数字,12位辨别率时最多在750ms内把温度值转换为数字,速度更快。(8)

18、测量成果直接输出数字温度信号,以“一线总线”串行传送给CPU,同步可传送CRC校验码,具有极强的抗干扰纠错能力。(9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。2.DS18B20内部构造及DS18B20的管脚排列64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。不同的器件地址序列号不同。DS18B20内部构造重要由四部分构成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。 DS18B20的引脚定义:(1)DQ为数字信号输入/输出端(2)GND为电源地(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)(4)

19、NC 空三、系统程序设计/名称:用1602LCD与DS18B20设计的温度报警器(含ROM CODE,温度上下限显示)/阐明:本例将报警器温度设为高:70摄氏度,低-20摄氏度,当DS18B20感知温度达到此临界值时,相应的LCD闪烁,且发出报警声音。/本例还可以单独显示DS18B20的ROM CODE及报警温度上下限。#include#include#define uchar unsigned char#define uint unsigned int#define delayNOP() _nop_();_nop_();_nop_();_nop_();sbit HI_LED=P23;sbit

20、 LO_LED=P26;sbit DQ=P32;sbit BEEP=P15;sbit RS=P10;sbit RW=P11;sbit EN=P12;sbit k1=P35;sbit k2=P34;sbit k3=P36;uchar code RomCodeStr= - ROM CODE - ;uchar RomCode8=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;uchar code Temp_Disp_Title = Current Temp : ;uchar Current_Temp_Display_Buffer = TEMP: ;uchar code

21、 Temperature_Char8 = 0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00;uchar code Alarm_Temp = ALARM TEMP Hi Lo;uchar Alarm_HI_LO_STR = Hi: Lo: ;uchar temp_data2 = 0x00,0x00;uchar temp_alarm2 = 0x00,0x00;uchar display5 = 0x00,0x00,0x00,0x00,0x00;uchar display13 = 0x00,0x00,0x00;uchar code df_Table = 0,1,1,2,3

22、,3,4,4,5,6,6,7,8,8,9,9;char Alarm_Temp_HL2 = 20,-20;uchar CurrentT=0;uchar Temp_Value=0x00,0x00;uchar Display_Digit=0,0,0,0;bit HI_Alarm=0,LO_Alarm=0;bit DS18B20_IS_OK =1;uint Time0_Count = 0;void DelayXue(int x)uchar i;while(x-) for(i=0;i200;i+);/uchar Busy_Check()uchar LCD_Status;RS=0;RW=1;EN=1;De

23、layXue(1);LCD_Status=P0;EN=0;return LCD_Status;void Write_LCD_Command(uchar cmd)while (Busy_Check()&0x80)=0x80);RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayXue(1);EN=0;void Write_LCD_Data(uchar dat)while (Busy_Check()&0x80)=0x80);RS=1;RW=0;EN=0;P0=dat;EN=1;DelayXue(1);EN=0;void Set_LCD_POS(uchar p)Write_LCD_Com

24、mand(p |0x80);void Initialize_LCD ()Write_LCD_Command(0x38);DelayXue(1);Write_LCD_Command(0x01);DelayXue(1);Write_LCD_Command(0x06);DelayXue(1);Write_LCD_Command(0x0c);DelayXue(1);void Write_NEW_LCD_Char()uchar i;Write_LCD_Command(0x40);for (i=0;i8;i+)Write_LCD_Data(Temperature_Chari);void Delay(uin

25、t num)while(-num );/初始化DS18B20uchar Init_DS18B20()uchar status;DQ=1;Delay(8);DQ=0;Delay(90);DQ=1;Delay(8);status=DQ;Delay(100);DQ=1;return status;/初始化成功时返回0/读一字节uchar ReadOneByte()uchar i,dat=0;DQ=1;_nop_();for (i=0;i=1;DQ=1;_nop_();_nop_();if(DQ) dat |=0x80;Delay(30);DQ=1;return dat;/写一字节void Write

26、OneByte(uchar dat)uchar i;for (i=0;i=1;/读取温度值void Read_Temperature()if(Init_DS18B20() =1)/DS18B20故障DS18B20_IS_OK=0;elseWriteOneByte(0xcc);/跳过序列号WriteOneByte(0x44);/启动温度转换Init_DS18B20();WriteOneByte(0xcc);/跳过序列号WriteOneByte(0xbe);/读取温度寄存器Temp_Value0=ReadOneByte();/温度低8位Temp_Value1=ReadOneByte();/温度高8

27、位Alarm_Temp_HL0=ReadOneByte();/报警温度THAlarm_Temp_HL1=ReadOneByte();/报警温度TLDS18B20_IS_OK=1;/设立DS18B20的温度报警值void Set_Alarm_Temp_Value()Init_DS18B20();WriteOneByte(0xcc);/跳过序列号WriteOneByte(0x4e);/将设定的温度报警值写入DS18B20WriteOneByte(Alarm_Temp_HL0);/写THWriteOneByte(Alarm_Temp_HL1);/写TLWriteOneByte(0x7f);/12位精

28、度Init_DS18B20();WriteOneByte(0xcc);/跳过序列号WriteOneByte(0x48);/温度报警值存入DS18B20void Display_Temperature()uchar i;uchar t =150;uchar ng =0;char Signed_Current_Temp;/if(Temp_Value1&0xF8)=0xF8)Temp_Value1=Temp_Value1;Temp_Value0=Temp_Value0+1;if (Temp_Value0=0x00) Temp_Value1+;ng = 1;Display_Digit0=df_Tabl

29、e Temp_Value0 & 0x0F ;CurrentT=(Temp_Value0 & 0xF0)4)|(Temp_Value1 & 0x07)=Alarm_Temp_HL0?1:0;LO_Alarm = Signed_Current_Temp =Alarm_Temp_HL1?1:0;Display_Digit2=CurrentT/10;Display_Digit1=CurrentT%10;Current_Temp_Display_Buffer10=Display_Digit0+0;Current_Temp_Display_Buffer9=.;Current_Temp_Display_Bu

30、ffer8=Display_Digit1+0;Current_Temp_Display_Buffer7=Display_Digit2+0;if (Display_Digit2=0) Current_Temp_Display_Buffer8= ;if (ng)if(Current_Temp_Display_Buffer8 = ) Current_Temp_Display_Buffer8 = -; else if(Current_Temp_Display_Buffer7 = ) Current_Temp_Display_Buffer7 = -; else Current_Temp_Display_

31、Buffer6 = -;Set_LCD_POS(0x00);for(i=0;i16;i+) Write_LCD_Data( Temp_Disp_Titlei);Set_LCD_POS(0x40);for(i=0;i14;i+) Write_LCD_Data( Current_Temp_Display_Bufferi );Set_LCD_POS(0x4D);Write_LCD_Data(0xdf);Set_LCD_POS(0x4E);Write_LCD_Data(C);void TO_INT() interrupt 1TH0=-1000/256;TL0=-1000%256;BEEP=!BEEP;

32、if(+Time0_Count=400)Time0_Count=0;if(HI_Alarm) HI_LED=HI_LED;else HI_LED=0;if(LO_Alarm) LO_LED=LO_LED;else LO_LED=0;TR0=0;void Display_Rom_Code()uchar i,t;Set_LCD_POS(0x40);for(i=0;i4);if(t9) t += 0x37;else t +=0;Write_LCD_Data(t);t = RomCodei &0x0F;if(t9) t += 0x37;else t +=0;Write_LCD_Data(t);void

33、 Read_Rom_Code()uchar i;Init_DS18B20();WriteOneByte(0x33);for (i=0;i8;i+) RomCodei = ReadOneByte();void Display_RomCode()uchar i;Set_LCD_POS(0x00);for (i=0;i16;i+)Write_LCD_Data(RomCodeStri);Read_Rom_Code();Display_Rom_Code();void Disp_Alarm_Temperature()uchar i,ng;ng=0;if(Alarm_Temp_HL00)Alarm_Temp

34、_HL0=Alarm_Temp_HL0 +1;ng=1;Alarm_HI_LO_STR4=Alarm_Temp_HL0/100+0;Alarm_HI_LO_STR5=Alarm_Temp_HL0/10%10+0;Alarm_HI_LO_STR6=Alarm_Temp_HL0%10+0;if(Alarm_HI_LO_STR4=0) Alarm_HI_LO_STR4= ;if(Alarm_HI_LO_STR4= & Alarm_HI_LO_STR5=0)Alarm_HI_LO_STR5= ;if (ng)if(Alarm_HI_LO_STR5= ) Alarm_HI_LO_STR5=-;elsei

35、f(Alarm_HI_LO_STR4= ) Alarm_HI_LO_STR4=-;elseAlarm_HI_LO_STR3=-;ng=0;if(Alarm_Temp_HL10)Alarm_Temp_HL1=Alarm_Temp_HL1+1;ng=1;Alarm_HI_LO_STR12=Alarm_Temp_HL1/100+0;Alarm_HI_LO_STR13=Alarm_Temp_HL1/10%10+0;Alarm_HI_LO_STR14=Alarm_Temp_HL1%10+0;if(Alarm_HI_LO_STR12=0) Alarm_HI_LO_STR12= ;if(Alarm_HI_L

36、O_STR12= & Alarm_HI_LO_STR13=0)Alarm_HI_LO_STR13= ;if (ng)if(Alarm_HI_LO_STR13= ) Alarm_HI_LO_STR13=-;elseif(Alarm_HI_LO_STR12= ) Alarm_HI_LO_STR12=-;elseAlarm_HI_LO_STR11=-;Set_LCD_POS(0x00);for (i=0;i16;i+) Write_LCD_Data(Alarm_Tempi);Set_LCD_POS(0x40);for (i=0;i16;i+) Write_LCD_Data(Alarm_HI_LO_S

37、TRi);void main()uchar Current_Operation=1;Initialize_LCD();IE=0x82;TMOD=0x01;TH0=-1000/256;TL0=-1000%256;TR0=0;HI_LED=0;LO_LED=0;Set_Alarm_Temp_Value();Read_Temperature();Delay(50000);Delay(50000);while(1)if(k1=0) Current_Operation =1;if(k2=0) Current_Operation =2;if(k3=0) Current_Operation =3;switc

38、h (Current_Operation)case 1:Read_Temperature();if(DS18B20_IS_OK)if(HI_Alarm=1|LO_Alarm=1)TR0=1;else TR0=0;Display_Temperature();DelayXue(100);break;case 2:Read_Temperature();Disp_Alarm_Temperature();DelayXue(100);break;case 3:Display_RomCode();DelayXue(50);break;四、调试与性能分析1 功能阐明该温度报警器电路是由但是18B20温度传感器

39、作为温度传感器材,由AT89C2052单片机进行数据解决.,由电脑USB接口供电,也可外接6V16V的直流电源.温度显示(和控制)的范畴为:-55到125之间,精度为1,也就是显示整数。如果设定报警的温度为20,则当环境温度达到21时,报警发光二级管发光,同步继电器工作,如果不需要对温度控制(报警),可以将报警温度值设立高些.如果控制的是某局部的温度,可将但是18B20用引线引出,但距离不适宜过大,注意其引脚绝缘.2 电路操作阐明如电路正常,接通电源后,只显示“”符号,无温度值:按下AN3,先显示上次存贮下来的设定温度(报警控制)值,然后再显示环境温度值,并随环境温度的变化而变化:再按下AN3

40、,温度数字闪烁,得调节:接着按AN1或AN2:按AN1为报警温度值变大,最大为125:按AN2为报警温度值变小,最小为-55:调好后再按一下AN3,调好的报警温度值被存贮,数码管又显示环境温度,当温度达到存贮的报警值时,电路发出报警信号和动作.3 本设计是基于89C52的温度报警器,它可以时实显示目前温度,报警温度,只读编码;设计中有三个按键,其中第一种按键为显示目前温度,第二个按键为报警温度的显示, 第三个按键为只读编码的显示。五、源程序清单主函数 void main() uchar Current_Operation=1; Initialize_LCD(); IE=0x82; TMOD=0

41、x01; TH0=-1000/256; TL0=-1000%256; TR0=0; HI_LED=0; LO_LED=0; Set_Alarm_Temp_Value(); Read_Temperature(); Delay(50000); Delay(50000); while(1) if(k1=0) Current_Operation =1; if(k2=0) Current_Operation =2; if(k3=0) Current_Operation =3; switch (Current_Operation) case 1: Read_Temperature(); if(DS18B2

42、0_IS_OK) if(HI_Alarm=1|LO_Alarm=1)TR0=1; else TR0=0; Display_Temperature(); DelayXue(100); break; case 2: Read_Temperature(); Disp_Alarm_Temperature(); DelayXue(100); break; case 3: Display_RomCode(); DelayXue(50); break; 液晶显示控制函数void Write_LCD_Command(uchar cmd)while (Busy_Check()&0x80)=0x80);RS=0;

43、RW=0;EN=0;P0=cmd;EN=1;DelayXue(1);EN=0;void Write_LCD_Data(uchar dat)while (Busy_Check()&0x80)=0x80);RS=1;RW=0;EN=0;P0=dat;EN=1;DelayXue(1);EN=0;void Set_LCD_POS(uchar p)Write_LCD_Command(p |0x80);void Initialize_LCD ()Write_LCD_Command(0x38);DelayXue(1);Write_LCD_Command(0x01);DelayXue(1);Write_LCD

44、_Command(0x06);DelayXue(1);Write_LCD_Command(0x0c);DelayXue(1);定期器中断函数void TO_INT() interrupt 1TH0=-1000/256;TL0=-1000%256;BEEP=!BEEP;if(+Time0_Count=400)Time0_Count=0;if(HI_Alarm) HI_LED=HI_LED;else HI_LED=0;if(LO_Alarm) LO_LED=LO_LED;else LO_LED=0;TR0=0;DS18B20报警函数void Set_Alarm_Temp_Value()Init_D

45、S18B20();WriteOneByte(0xcc);/跳过序列号WriteOneByte(0x4e);/将设定的温度报警值写入DS18B20WriteOneByte(Alarm_Temp_HL0);/写THWriteOneByte(Alarm_Temp_HL1);/写TLWriteOneByte(0x7f);/12位精度Init_DS18B20();WriteOneByte(0xcc);/跳过序列号WriteOneByte(0x48);/温度报警值存入DS18B20六、心得体会 在本次毕业设计的过程中,发现诸多的问题,虽然此前还做过类似这样的课程设计,但这次毕业设计,从一无所有到最后产品的

46、完毕真的是一种很难的过程.我们不仅要选好材料,还要学着把这些材料合理的组织起来,因此我们要学会如何寻找和搜索自己需要的电路图,并且还要懂得各个部分的作用.每个环节都不是同样简朴的事.通过这次设计,也学到了许多,理解了传感器可以把自然界的多种非电量转换为电信号的物理思想,并且可将报警装置应用到与自己专业有关的行业中去.有好多的东西,只有我们去试着做了,才干真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握,因此要理论与实践并重. 从这次的毕业论文设计中,我们真正的意识到,在后来的学习中,要理论联系实践,把我们所学的理论知识用到实际当中,实践是检查真理的唯一原则.我们电子专业的学习更是如此,不仅要有丰富的理论知识,还要有很强的动手能力,只有理论与实践并重,我们的专业水平才干提高,这就是我们在这次毕业设计中的最大收获. 最后要感谢教师们在毕业设计过程中对我们毕业生的关怀和支持! 另一方面要向同班同窗们表达感谢,在我们遇到困难的时候,她们可以协助我,俗话说,三个臭皮匠顶个诸葛亮,在人们你一点我一点的协助下,我们才干顺利完毕这次设计,感谢同窗好友们!

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!