- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1 项目13 数字温度计的设计 随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。为此,我们设计一个具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等的数字温度计。 项目13 数字温度计的设计 要求: (1)测量并显示温度值, 温度测量误差≤±1℃。 (2)测量范围:0℃~100℃。 (3)交替显示当前测量时间、温度。 (4)可调整显示时间。 (5)测量温度超过设定的温度上、下限,启动蜂鸣器和指示灯报警。 (6)连接多个温度传感器,微控制器能够识别不同的传感器,显示相应的温度值,用于监测多个区域的环境温度 项目13 数字温度计的设计 1.系统硬件电路设计 根据设计任务的方框图,设计出如图13.1所示的电路原理图,根据电路原理图制作出如图13.2所示的电路板图。在电路原理图中微控制器采用AT89S52单片机,温度传感器采用DS18B20,用LCM1602液晶显示器显示当前时间和温度,用独立式按键来调整时间、设置最高报警温度和最低报警温度,当前温度超出预设的温度范围时用蜂鸣器和发光二极管来作为声光报警提示。单片机的I/O端口分配如表13.1所示。 项目13 数字温度计的设计 项目13 数字温度计的设计 项目13 数字温度计的设计 项目13 数字温度计的设计 (1)主程序 图13.2 主程序流程图 主程序主要是对系统进行初始化,包括设置定时器、液晶显示初始化、调用时间显示子程序,根据按键K1还是K2按下来选择是显示1号温度传感器的温度还是2号温度传感器的温度。图13.2是主程序的流程图。 项目13 数字温度计的设计 (2)读取温度子程序 读出温度子程序的主要功能是读出RAM中的9个字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图13.3所示。 (3)时间调整子函数 调整时间时,先按下K3进入时间调整状态,此时按下K1则时间的分加一,K2按下则分减一,K4按下则时加一,K5按下则时减一,K6按下则确认退出。时间调整程序流程图如图13.4所示。 (4)设置报警温度子程序 由于有2个温度传感器DS18B20,每一路都要设置最高和最低报警温度。使得设置报警温度子程序比较复杂,其程序流程如图13.5所示。 项目13 数字温度计的设计 项目13 数字温度计的设计 项目13 数字温度计的设计 #includereg52.h typedef bit bool; unsigned char bol; typedef unsigned char bl; unsigned char t_1,t_2,t_3,t_4,t_5,t_6; unsigned char th1=20; // 预置1号DS18B20最高报警温度20℃ unsigned char tl1=10; // 预置1号DS18B20最低报警温度10℃ unsigned char th2=21; // 预置2号DS18B20最高报警温度21℃ unsigned char tl2=11; // 预置2号DS18B20最低报警温度11℃ unsigned char tab_1,tab_2,tab_3,tab_4,n=0; unsigned int t,h,m,s; sbit DQ=P3^7; // 接DS18B20 sbit fm=P1^3; //接蜂鸣器 sbit RS=P1^0; //接液晶1602RS端 sbit RW=P1^1; // 接液晶1602RWW端 sbit E=P1^2; // 接液晶1602E端 项目13 数字温度计的设计 sbit k1=P3^0; //接按键K1 sbit k2=P3^1; //接按键K2 sbit k3=P3^2; //接按键K3 sbit k4=P3^3; //接按键K4 sbit k5=P3^4; //接按键K2 sbit k6=P3^5; // 接按键K6 bl code tab_lcd[10]={0,1,2,3,4,5,6,7,8,9};//显示字符 bl code from[1]={.}; bl code from1[1]={ }; unsigned char data temp_alarm[2]={0x00,0x00};//温度报警值存放处 unsigned char data tab_18b20[2]={0x00,0x00};//高低8位温度存放 unsigned char data dip[3]={0x00,0x00,0x00};//显示位存放 unsigne
文档评论(0)