基于单片机的温度报警器设计.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机课程设计 温度报警器 院 系: 自动化学院 专业班级: 自动化0804班 日 期: 1.课程设计描述:设计一个温度报警系统,实现采集温度并在数码管上显示,超过温度范围单片机报警。 2.课程设计具体要求:利用一片STC89C52单片机作为主控制器,应用数字温度计DS18B20,能够实现采集温度并在数码管上显示,可以通过按键设置温度报警的上限和下限,超过报警上下限时,系统报警,并启动冷却或加热装置。 3.主要元器件:STC89C52(1片)、电容(22PF*2、10UF*1)、数码管(共阳)、晶振(11.0592MHZ)小按键、发光二极管、Keil uVsion2、Proteus 7 Professional、Win-tc软件。 4.基本原理阐述:DS18B20是数字式温度传感器,能够感应外界温度,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。温范围-55~+125,在-10~+85时精度为±0.5。DS18B20的引脚定义:(1)DQ为数字信号输入/输出端(2)GND为电源地(3)VDD为外接供电电源输入端#includereg51.h #includeintrins.h #define uchar unsigned char #define uint unsigned int sbit DQ=P3^6; sbit beep=P3^7; //共阴极数码管 uchar code[]={ox3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //温度小数位对照表 uchar code table[]={0,1,1,2,3,4,4,5,6,6,7,8,8,9,9}; char Alarm_HL[2]={70,-20};//char类型的取值范围为-128~+127 uchar CurrentT=0;//当前读取温度的整数部分 uchar Temp_value[]={0x00,0x00};//从DS18B20读取的温度值 uchar Display_Digit[]={0,0,0,0};//待显示的各温度数位 bit HI_Alarm=0,LO_Alarm=0;//高低温报警标志 bit DS18B20_IS_OK=1;//传感器正常标志 uint Time0_Count=0;//定时器延时累加 void Delay(uint x) { while(--x); } //初始化DS18B20 uchar Init_DS18B20() { uchar status; DQ=1;Delay(8); DQ=0;Delay(90); DQ=1;Delay(8); status=DQ; Delay(100); DQ=1; return status; } //读一字节 uchar Readonebyte() { uchar i,dat=0; DQ=1; _nop_(); for(i=0;i8;i++) { DQ=0; dat=1; DQ=1; _nop_(); _nop_(); if(DQ) dat|=0x80; Delay(30); DQ=1; } return dat; } //写一字节 void Writeonebyte(uchar dat) { uchar i; for(i=0;i8;i++) { DQ=0; DQ=dat0x01; Delay(5); DQ=1; dat=1; } } //读取温度值 void Read_temperature() { if(Init_DS18B20()==1) DS18B20_IS_OK=0; else { Writeonebyte(0xcc); //跳过序列号 Write0nebyte(0x44); //启动温度转化 Init_DS18B20(); Write0nebyte(0xcc); Write0nebyte(0xbe); //读取温度寄存器 Temp_Value[0]=Readonebyte(); //温度低8位 Temp_Value[1]=Readonebyte(); //温度高8位 Alarm_Temp_HL[0]=Readonebyte();//报警温度TH Alarm_Temp_HL[1]=Readonebyte();//报警温度TL DS18B20_IS_OK=1; } } //设置DS18B20温度报警值 void Set_Alarm_Temp_Value() { Init_D

文档评论(0)

mx597651661 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档