《ds18b20温度报警器》由会员分享,可在线阅读,更多相关《ds18b20温度报警器(12页珍藏版)》请在金锄头文库上搜索。
1、DS18B20温度报警器,课题小组成员:林淑云 朱翠竹 刘苏慧 指导老师:蔡菁,课题背景,现代社会是信息社会,随着现代农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度,所以对于温度的测量控制具有十分重要的意义。 随着全球温度的普遍升高,高温火灾更是无处不在:电气线路短路、过载、接触电阻过大等引发高温火灾;静电产生高温火灾;雷电等强电入侵导致高温火灾;最主要是机房内电脑、空调等用电设备长时间工作,导致设备老化,空调发生故障,而不能降温。因此,机房内所属的电子产品发热快,在短时间内机房温度升高超出设备正常温度,导致系统瘫痪或产生火灾,这时温度报警系统就会发挥应有的功能。 本课
2、题介绍的就是利用温度传感器DS18B20制作的温度报警器,自动测量当前环境温度。由单片机AT89C52控制,并通过1602LCD显示,若当前环境温度超过此温度,系统发出报警。,设计目的,了解温度传感器DS18B20的基本原理、性能与应用。 熟悉单片机AT89C51工作方式和应用。 通过实验提高对单片机的认识。 掌握DS18B20的接口方法及其输入程序的设计和调试方法。 将所学的单片机原理及检测技术的知识运用于实践,解决实际问题. 通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术了解电路参数的计算方法。,课程设计的主要工作,对系统的各个模块的各个功能进行深入分析和研究,在对课题所采用的
3、的方案进行可行详细的研究后设计具体功能电路。 熟悉所选芯片的功能并完成具体电路设计 对系统的最终指标进行测试,针对系统的不足,进行分析并提出一些改正方法。,DS18B20传感器介绍,温度传感器的种类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。 DS18B20的主要特征: 全数字温度转换及输出。 先进的单总线数据通信。 最高12位分辨率,精度可达土0.5摄氏度。 12位分辨率时的最大工作周期为750毫秒。 可选择寄生工作方式。 检测温度范围为55C
4、 +125C (67F +257F) 内置EEPROM,限温报警功能。 64位光刻ROM,内置产品序列号,方便多机挂接。 多样封装形式,适应不同硬件系统。,LCD1602液晶模块介绍,当代是信息时代,人们所接收到的信息由%70来自于人的视觉,无论用何种方式获取的信息最终需要用某种显示方式开表示。在当代显示技术中,主流的有LED显示和LCD液晶显示,而在这些显示技术中,尤其以液晶显示器LCD为代表的平板显示器发展最快,应用最广。LCD是典型的发光器件,它以材料科学为基础,综合利用了精密机械、光电以及计算机技术,并正在微机械、微光学,纤维光学等前沿领域研究基础上,向高集成化、智能化方向发展。 LC
5、D是一种介于液体和固体之间热力学的中间稳定相,它本身不会发光,是利用外部光的反射原理进行显示。液晶显示功耗小,字形美观,在系统中可用集成电池来供电。,主函数,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=
6、0) Current_Operation =1; if(k2=0) Current_Operation =2; if(k3=0) Current_Operation =3; switch (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
7、(); DelayXue(100); break; case 3: Display_RomCode(); DelayXue(50); break; ,液晶显示控制函数,void Write_LCD_Command(uchar cmd) while (Busy_Check() ,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_LC
8、D_Command(0x06); DelayXue(1); Write_LCD_Command(0x0c); DelayXue(1); ,定时器中断函数,void TO_INT() interrupt 1 TH0=-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_DS18B20(); WriteOneByte(0xcc); /跳过序列号 WriteOneByte(0x4e); /将设定的温度报警值写入DS18B20 WriteOneByte(Alarm_Temp_HL0); /写TH WriteOneByte(Alarm_Temp_HL1); /写TL WriteOneByte(0x7f); /12位精度 Init_DS18B20(); WriteOneByte(0xcc); /跳过序列号 WriteOneByte(0x48); /温度报警值存入DS18B20 ,仿真电路,谢谢观看!,