基于C-51的DS18B20测温系统
课程设计(论文)-基于C51单片机的DS18B20简易测温系统模板
1设计要求1.1具体要求本次课程设计采用的是基于C51单片机的DS18B20简易测温系统,电路图中主要包含51单片机,DS18B20和数码管显示。
1.2技术指标实验要求测温显示精度为:1℃测量范围为:-55℃-+125℃2设计方案与论证2.1方案选择方案一:采用热敏电阻可满足测温要求,但热敏电阻精度低,重复性和可靠性较差,对于精度要求较高的测温不适用,而且采用热敏电阻要求复杂的电路和算法,增加了设计复杂度。
方案二:采用专用的集成温度传感器(如AD590、LM35/LM45)和数字化温度传感器(DS18B20、DS1620)测温,数字化温度传感器具有接口简单、直接数字量输出、精确度高等优点。
DS18B20是DALLAS公司的最新单线数字温度传感器,它是世界上第一片支持“一线总线”接口的温度传感器。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,它的测量温度范围为-55~+125℃,在-10~+85℃范围内,精度为±0.5℃,现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等,DS18B20支持3~5.5V的电压范围,使系统设计更灵活、更方便、更便宜、体积更小。
DS18B20可以程序设定9~12位的分辨率,精度为±0.0625℃,分辨率设定及用户设定的报警温度存储在E2PROM中,掉电后依然保存。
因此,本方案选用DS18B20作为温度测量传感器。
2.2.1单片机系统目前比较流行51系列单片机和凌阳单片机。
AT89C51单片机需要用仿真器来实现软硬件的调试,较为繁琐; AT89S52八位单片机除具有AT89C51单片机所有的优点外,具有更大的程序存储空间,可在线仿真的功能,方便调试。
凌阳十六位单片机虽然可以更好的完成控制功能,但较AT89S52八位单片机价格昂贵,而且编程以及外围功能电路的设计都不及AT89S52成熟。
基于51单片机的温度监测系统(DS18B20)
DS18B20读时序
所有的读时隙都由拉低总线,持续至少1us后再释放总线(由于上拉电阻的作用,总线恢复为 高
配置寄存器
8 位 CRC 生成器
DS18B20的时序
DS18B20复位时序
DS18B20的所有通信都由由复位脉冲组成的初始化序列开始。该初始化序列由主 机发出,后跟由DS18B20发出的存在脉冲(presence pulse)。在初始化步骤中,总线 上的主机通过拉低单总线至少480μs来产生复位脉冲。然后总线主机释放总线并进入接收 模式。当总线释放后,5kΩ的上拉电阻把单总线上的电平拉回高电平。当DS18B20检测 到上升沿后等待15到60us,发出存在脉冲,拉低总线60-240us至此,初始化和存在时序 完毕。时序图如下:
1.主控制器电路和测温
电路的设计
主控制器电路由AT89S52 及外围时钟和复位电路构成, 测温电路由DS18B20、报警 电路组成。AT89C52是此硬 件电路设计的核心,通过 AT89S52的管脚P2.7与 DS18B20相连,控制温度的 读出和显示。硬件电路的功 能都是与软件编程相结合而 实现的。具体电路原理图如 右图2所示。
送1,以拉低总线的方式表示发送0.当发送0的时候,DS18B20在读时隙的末期将会释放总线,总线
将会被上拉电阻拉回高电平(也是总线空闲的状态)。DS18B20输出的数据在下降沿(下降沿产 生读时隙)产生后15us后有效。因此,主机释放总线和采样总线等动作要在15μs内完成。
基于C51的DS18B20多点测温系统
基于C51的DS18B20多点测温体系2013-07-22目次摘要3第一章绪论41.1 开宣布景及意义4第二章体系硬件设计52.1 单片机52.2 DS18B20温度测量模块52.3 液晶显示模块8第三章体系软件设计103. 1体系初始化103.2 温度测量程序11第四章体系仿真调试124.1 体系仿真调试12附录14摘要本文介绍了基于温度传感器DS18b20与AT89C52单片机构成的多点温度散布式测温体系.设计了其体系构成和软件计划.该体系面向现实需求,设定DS18b20温度规模为-55℃~+125℃,采取LCD1602液晶显示屏,显示两路温度传感器的测量温度值.同时经由过程串口通信与PC机进行通信.传输收集到的温度值.现实运用标明.该体系构造简略,抗干扰才能强,合适于良好情形下现场温度的测量,可运用于仓库测温.楼宇空调掌握和临盆进程监控等范畴.症结词:DS18b20,散布式,1602 串口通第一章绪论1.1 开宣布景及意义温度的测量和掌握在储粮仓库.智能楼宇空调掌握及其他的工农业临盆和科学研讨中运用普遍.传统的温度检测是运用诸如热电偶.热电阻.半导体pn结之类的模仿传感器,经旌旗灯号取样电路.放大电路和模数转换电路处理,获取暗示温度值的数字旌旗灯号,再交由微处理器.因为检测情形庞杂,测量点多,旌旗灯号传输距离远及各类干扰的影响,使得传统测量体系的稳固性和靠得住性降低.近年来跟着单片机的成长和传感器技巧的改革,温度检测范畴也完成了从模仿旌旗灯号到数字旌旗灯号的改变.DS18b20温度传感器的普遍运用更是推进了这一范畴的成长.别的液晶显示模块具有体积小.功耗低.显示内容丰硕.超薄轻盈等长处在各类内心和显示体系中得到越来越多的运用,如今也是单片机运用设计中最经常运用的信息显示模块.分解以上产品的成长特色,愿望温度检测体系在将来的成长中有更辽阔的运用空间并且具有更好的现场测量优胜性.第二章体系硬件设计本体系经由过程DS18B20温度传感器收集温度值,经由单片机处来由液晶显示模块显示当前温度值,并经由串口通信将温度传送到PC上2.1 单片机本体系采取AT89C52单片机作为微处理器.AT89C52单片机是ATMEL公司89系列单片机的一种8位Flash单片机.它最大的特色是片内含有8k可反复编程的Flash存储器,可进行1000次的擦写操纵.别的AT89c52单片机采取ATMEL高密度非易掉存储器制作技巧制作,与工业尺度的MCS-51指令集和输出管脚相兼容,并且其兼具省电耐用.机能稳固的特色,是以成为单片机市场的主流产品.本体系采取晶振依据须要肯定体系工作频率为11.0592Mhz.2.2 DS18B20温度测量模块DS18b20是美国DALLAS公司推出的单总线数字化测温集成电路,它具有奇特的单线接口方法,将非电模仿量温度值转换为数字旌旗灯号串行输出仅需占用1位I/O端口,可以或许直接读取被测现场的温度值.它体积小,电压实用规模宽(3v~5v),且可经由过程编程实现9~12位的温度读数,即具有可调的温度分辩率,是以实用性和靠得住性较高,运用普遍.以下是DS18b20的内部构造图.1DS18b20的内部构造图DS18B20有4个重要的数据部件:① 64位激光ROM.64位激光ROM从高位到低位依次为8位CRC.48位序列号和8位家族代码(28H)构成.②温度敏锐元件.③非易掉性温度报警触发器TH和TL.可经由过程软件写入用户报警高低限值.④设置装备摆设存放器.设置装备摆设存放器为高速暂存存储器中的第五个字节.DS18B20在0工作时按此存放器中的分辩率将温度转换成响应精度的数值.DS18B20的测温规模为-55℃~+125℃,在-10℃~+85℃规模内,精度为±℃.在电压低于3.4v时精度误差较大.依据当时序特色以下是DS18B20与AT89C52单片机构成的温度监测体系如下图2.温度监测体系DS18b20的典范运用在本体系中两个温度传感器与单片机衔接方法如下:图2.2.3 传感器与单片机衔接本体系为多点温度测试.DS18B20采取外部供电方法,理论上可以在一根数据总线上挂256个DS18B20,但现实运用中发明,假如挂接20个以上的DS18B20就会产生功耗问题.别的单总线长度也不宜超出0.5M,不然会影响到数据的传输.在本电路板的设计中斟酌到初步实践的精确性,暂运用2个DS18B20分离衔接单片机的p2.6口.对DS18B20的设计,须要留意以下问题(1)对硬件构造简略的单线数字温度传感器DS18B20 进行操纵,须要用较为庞杂的程序完成.编制程序时必须严厉按芯片数据手册供给的有关操纵次序进行,读.写时光片程序要严厉按请求编写.尤其在运用DS18B20 的高测温分辩力时,对时序及电气特征参数请求更高.(2)现实运用时,要留意单线的驱动才能,不克不及挂接过多的DS18B20,同时还应留意最远接线距离.别的还应依据现实情形选择其接线拓扑构造.2.3 液晶显示模块本体系运用的是1602液晶显示模块.1602液晶显示器以其微功耗.体积小.显示内容丰硕.超薄轻盈.位数多.程序简略的诸多长处,在各类内心和低功耗体系中得到普遍的运用.依据显示内容可以分为字符型液晶,图形液晶.依据显示容量又可以分为单行16字,2行16字,两行20字等等.在本体系中运用的是字符型两行16字液晶显示器.在与单片机衔接时运用接口电路(排针)相连,为并行通信.以下是1602液晶显示器外型图和液晶显示的典范运用.图2 液晶显示器外形图1602液晶显示采取尺度的16脚接口,个中:(模块不和有标注)图2.3.2 串口通信第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器比较度调剂端,接正电源时比较度最弱,接地电源时比较度最高,比较渡过高时会产生“鬼影”,运用时可以经由过程一个10K的电位器调剂比较度第4脚:RS为存放器选择,高电日常平凡选择数据存放器.低电日常平凡选择指令存放器.第5脚:RW为读写旌旗灯号线,高电日常平凡进行读操纵,低电日常平凡进行写操纵.当RS和RW合营为低电日常平凡可以写入指令或者显示地址;当RS为高电平.RW为低电日常平凡可以写入数据.第6脚:E端为使能端,当E端由高电平跳变成低电日常平凡,液晶模块履行敕令.第7~14脚:D0~D7为8位双向数据线.第15~16脚:空脚1602液晶模块内部的字符产生计储器(CGROM)已经存储了不合的点阵字符图形,这些字符有,阿拉伯数字.英文字母的大小写.经常运用的符号.和日文化名等,每一个字符都有一个固定的代码,个中数字与字母同ASCII码兼容.UART是一种通用串行数据总线,用于异步通信.该总线双向通信,可以实现全双工传输和吸收.实现单片机和PC机的通信工作,接一个MAX232 实现电平转化.电路图如下:第三章体系软件设计图3 体系流程图全部体系的功效是由硬件电路合营软件来实现的,当硬件根本定型后,软件的功效也就根本定下来了.本体系主程序重要包含三个子程序,分离为液晶显示子程序,温度测量子程序,串口通信子程序.主体软件架构如左图:3. 1体系初始化体系初始化重要包含UART初始化,液晶显示初始化,温度传感器初始化.UART初始化包含界说准时器/计数器和串行口的工作方法,界说T1为主动重装8位计数器.液晶显示初始化主如果肯定液晶显示器的工作方法.显示开关.光标开关等.温度传感器初始化包含一个由总线掌握器发出的复位脉冲和跟有厥后由传感器发出的消失脉冲.消失脉冲是让总线掌握器知道DS18b20在总线上且已预备好操纵.一个复位脉冲跟着一个消失脉冲标明DS18b20已经预备好发送和吸收数据.以下是初始化序列图.图3.1.1 初始化序列图3.2 温度测量程序温度测量程序主如果DS18b20与单片机之间的ROM操纵敕令和DS18b20的数据读写操纵敕令.当单片机对DS18B20进行初始化,检测到一个消失脉冲后,发出匹配ROM敕令,然后发送ROM码.图3.2.1 DS18b20根本工作流程第四章体系仿真调试4.1 体系仿真调试在keil开辟情形下不克不及进行有用的仿真调试,所以在体系中采取protues单片机仿真对象进行仿真调试.下图为protues仿真读取温度后在LCD1602液晶屏上的显示成果.图4.1..1protues仿真图上位机用串口调试软件来仿真,装配了虚拟串口驱动软件和PROTEUS进行调试仿真.虚拟串口驱动软件用了VSPD 软件.VSPD软件在Window操纵体系上增长了一对在逻辑上交叉互相的虚拟串口,使串口调试助手可以或许和PROTEUS中的单片机串口相连.VSPD软件界面如下:串口仿真成果如下:在串口调试助手上显示两个温度传感器收集到的温度附录温度收集体统道理图PCB图源代码1602函数部分:#define Port P1sbit RS = P2^0; //界说端口sbit RW = P2^1;sbit E = P2^2;/**************************************************************** 微秒延时函数****************************************************************/ void delay_us(unsigned int n) //延时假如须要高精度延时{if (n == 0){return ;}while (--n);}/****************************************************************/ /* 毫秒函数声明 *//****************************************************************/ void delay_ms(unsigned char i){unsigned int b;while(i--)for (b = 1; b < 1000 ; b++) ;}/****************************************************************/ /* 写入敕令函数 *//***************************************************************/ void LCD_write_com(unsigned char com){RS = 0;E = 1;Port = com;delay_us(10);E = 0;}/****************************************************************/ /* 写入数据函数 *//****************************************************************/ void LCD_write_Data(unsigned char Data){RS = 1 ;RW = 0 ;E = 1 ;Port = Data;delay_us(10);E = 0;}/****************************************************************/ /* 写入字符串函数 *//****************************************************************/ void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s){if (y == 0){LCD_write_com(0x80 + x);}else{LCD_write_com(0xc0 + x);while (*s){LCD_write_Data( *s);s++;}}/****************************************************************/ /* 初始化函数 *//****************************************************************/ void LCD_init(void){delay_ms(40);LCD_write_com(0x38); /*显示模式设置*/delay_ms(5);LCD_write_com(0x38);delay_ms(5);LCD_write_com(0x38);delay_ms(5);LCD_write_com(0x38);LCD_write_com(0x08); /*显示封闭*/LCD_write_com(0x01); /*显示清屏*/LCD_write_com(0x06); /*显示光标移动设置*/delay_ms(5);LCD_write_com(0x0C); /*显示开及光标设置*/}/***********************************************************函数名: Display_F函数解释:打印整数型数据,没有地址传入参数:用于Display_float运用传出参数:无返回值:无**********************************************************/void Display_F(unsigned int num){unsigned char sever_num[6],i = 0;if(num == 0)LCD_write_Data(0x30);else{while(num != 0){sever_num[i++] = num % 10 + 0x30 ;num /= 10 ;}while(i--){LCD_write_Data(sever_num[i]);delay_us(500);}}}/***********************************************************函数名: Display_float函数解释:打印浮点型数据,传入参数:打印地址x,y,数据num,小数点后面打印length位传出参数:无返回值:无**********************************************************/void Display_float(unsigned char x,unsigned char y,float numf,unsigned char length){unsigned long Int_num;unsigned int temp = 1;unsigned char i = 0;for (i = 0 ; i < length ; i++){numf *= 10 ;temp *= 10 ;}if (y == 0)LCD_write_com(0x80 + x);elseLCD_write_com(0xc0 + x);Int_num = (long)numf;Display_F(Int_num / temp);LCD_write_Data('.');Display_F(Int_num % temp);}DS18B20函数部分:bit flag = 0;sbit dat=P2^6;uchar xl[2][8] = {{0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e},{0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9}}; //两路DS18B20 ROM码void dsdelay(uchar z) //误差 0us{unsigned char a,b;for(z;z>0;z--)for(b=1;b>0;b--)for(a=2;a>0;a--);}void delay(unsigned int z)//延时函数{uchar x,y;for(x=z;x>0;x--)for(y=101;y>0;y--);}///////////////////////////////////////////////DS18B20函数部分////////////void dsinit()//DS18B20初始化{dat=1;dsdelay(4);dat=0; //给一个脉冲旌旗灯号dsdelay(50);//低脉冲旌旗灯号要保持480us——960usdat=1;//拉高dsdelay(9);//略微延时delay(1);}uchar read()//DS18B20 读一个字节{uchar i,k;for (i=8;i>0;i--){dat = 0; // 给脉冲旌旗灯号k>>=1;//将读到的一位数向后移一位dat = 1; // 给脉冲旌旗灯号if(dat) k|=0x80;//假如读到的是1,则,k和0x80进行或运算,首位变成1dsdelay(4);//每位读取中央距离大于1us}return(k);}void write(uchar date)//DS18B20 写一个字节{uchar i,k;k=date;for(i=0;i<8;i++){dat = 0;dat = k&0x01;dsdelay(7);dat = 1;k>>=1;dsdelay(1);}}float read_tempe(uchar num)//从DS18B20存储器中念书温度{int t;float tt;uchar a,b,i;dsinit();//每次对DS18B20输入指令都要先辈行初始化操纵write(0x55);//写序号列号for (i = 0 ; i < 8 ; i++){write(xl[num][i]) ;}write(0x44); // 启动温度转换dsinit();write(0x55);//写序号列号for (i = 0 ; i < 8 ; i++){write(xl[num][i]) ;}write(0xBE); //读取温度存放器等(共可读9个存放器)前两个就是温度a=read();//读出温度的低八位b=read();//读出温度的高八位t=b;t<<=8;//t是int,16位,讲高八位移到前面t=t|a;//将温度的高位与低位归并if ((b & 0x80 )== 0)//断定正负温度{tt=t*0.0625;//将带有小数点位的十六进制数化为十进制flag = 0;}else{tt=(~t + 1 )* 0.0625;flag = 1;}return(tt);}UART函数部分:void InitUART(void)//UART 初始化{TMOD = 0X20; //11.0592M 9600SCON = 0X50;TH1 = 0xfd;TL1 = 0xfd;PCON = 0X00;EA = 1;ES = 1;TR1 = 1;}void Send(unsigned char C)//UART 发送{SBUF = C;while(TI == 0);TI = 0;}主函数部分:uchar lable[]="TEMPE: 'C";//初始显示void Send_Tempe( float tempe,unsigned char num)//串口发送收集到的温度{unsigned long t ;unsigned char i ;unsigned char tt[]="NUM 0 TEMPE 12.50'C\n";tt[4] = num +0x30;tempe = tempe * 100 ;t = (unsigned int) tempe;tt[17] = t%10+0x30;t = t/10 ;tt[16] = t%10+0x30;t = t/10 ;tt[14] =t%10+0x30;t = t/10 ;tt[13] =t%10 +0x30;if(flag == 1)tt[12] = '-';for(i = 0 ; i < 22 ; i++)Send(tt[i]);}void main(){float tempe;unsigned char i;InitUART() ;LCD_init() ;LCD_write_str(0,0, lable);LCD_write_str(0,1, lable);while(1){for (i = 0; i < 2;i++ ){tempe = read_tempe(i);if(flag == 1)LCD_write_str(6,i, "-");elseLCD_write_str(6,i, " ");Display_float(7,i,tempe,2);Send_Tempe(tempe,i) ;delay(10000);}}。
(完整版)基于51单片机与DS18B20的数字温度计设计定稿毕业论文
安徽农业大学课程设计报告基于单片机的DS18B20数字温度计设计学生姓名杜恒院系名称物理与电子工程学院专业名称电子信息工程班级2008 级 6 班学号指导教师汪文蝶完成时间2011年 5 月 20 日基于单片机的DS18B20数字温度计设计学生姓名:杜恒指导老师:汪文蝶内容摘要:随着现代信息化技术的飞速发展和传统工业改造的逐步实现,能独立工作的温度检测系统已广泛应用于各种不同的领域。
本文介绍了一个基于STC89C52单片机和数字温度传感器DS18B20的测温系统,并用LED数码管显示温度值,易于读数。
系统电路简单、操作简便,能任意设定报警温度并可查询最近的10个温度值,系统具有可靠性高、成本低、功耗小等优点。
关键词:单片机数字温度传感器温度计1 引言 (4)2 设计要求 (4)2.1 基本要求 (4)2.2 扩展功能 (4)3 总体方案设计 (4)3.1 方案论证 (4)3.1.1 方案一 (4)3.1.2 方案二 (5)3.2 总体设计框图 (5)4 硬件设计 (5)4.1 单片机系统 (5)4.2 数字温度传感器模块 (6)4.2.1 DS18B20性能 (6)4.2.2 DS18B20外形及引脚说明 (7)4.2.3 DS18B20接线原理图 (7)4.2.4 DS18B20时序图 (7)4.2.5 数据处理 (9)4.3 显示电路 (10)4.4 声光报警电路 (10)4.5 键盘输入电路 (11)5 软件设计 (11)5.1 主程序模块 (11)5.2 读温度值模块 (12)5.3 中断模块 (14)5.4 温度查询模块 (15)5.5 温度设定、报警模块 (16)5.6 数码管驱动模块 (18)6 源程序 (19)7 总结 (26)参考文献: (28)1 引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,各种数字系统的应用也使人们的生活更加舒适。
基于51单片机和DS18B20的数字温度计设计说明
基于51单片机和DS18B20的数字温度计设计说明
1.硬件设计:
-51单片机:选择合适的型号,如STC89C52或AT89C52等。
-DS18B20温度传感器:该传感器是一种数字温度传感器,具有单总线接口和高精度测量能力。
-接口电路:将51单片机和DS18B20传感器连接起来,要注意电平转换和信号线的阻抗匹配。
2.软件设计:
-初始化:在主函数中,首先对单片机进行初始化设置,包括时钟设置、串口配置等。
-DS18B20通信协议:使用单总线协议与DS18B20传感器进行通信,包括发送复位信号、读写数据等操作。
-温度测量:通过向DS18B20发送读取温度的命令,从传感器中读取温度值并保存。
-数据传输:将温度值转换为可显示的格式,如摄氏度或华氏度,并通过串口输出或LED显示。
3.程序流程:
-初始化单片机,设置时钟和串口参数。
-进入主循环,循环执行以下操作:
-发送复位信号,启动温度转换。
-等待转换完成,发送读取温度命令。
-读取温度值,并进行数据处理转换。
-输出温度值。
4.其他功能:
-可以添加LCD显示模块,将温度值显示在液晶屏上。
-可以添加按键输入模块,通过按键切换温度单位或进行其他操作。
需要注意的是,该设计只是一个简单的示例,实际应用中可能需要根据具体需求进行扩展和修改。
同时,在程序设计过程中,也要注意低功耗和数据稳定性等方面的考虑。
基于C51DS18B20温度计的毕业设计论文改
基于C51DS18B20温度计的毕业设计论文改摘要:本篇论文基于C51单片机和DS18B20温度计设计了一种实时测量温度的系统。
论文首先简要介绍了温度测量的原理和应用场景,然后详细介绍了硬件设计和软件设计,并通过实验验证了系统的可行性和准确性。
最后,总结了毕业设计的收获和不足,并对未来的改进方向提出了建议。
关键词:C51单片机,DS18B20温度计,温度测量,实时系统,硬件设计,软件设计引言:温度是物理世界中非常重要的实时监测参数之一,对于很多工业生产和环境监测方面都具有重要的意义。
然而,传统的温度测量方法往往需要耗费大量的人力和物力,并且无法实时获取温度数据。
为了实现快速准确的温度测量,本文设计了一种基于C51单片机和DS18B20温度计的实时温度测量系统。
一、系统设计1.硬件设计:本系统硬件部分主要由C51单片机、DS18B20温度计和LCD显示屏组成。
C51单片机作为核心控制单元,负责控制DS18B20温度计进行温度测量,并通过LCD显示屏实时显示温度数据。
2.软件设计:软件设计部分主要分为温度测量、数据处理和显示三个模块。
温度测量模块通过C51单片机与DS18B20温度计进行通信,读取到温度值后传送至数据处理模块。
数据处理模块负责对温度数据进行处理,例如计算平均值、最大值和最小值等。
显示模块通过控制LCD显示屏将温度数据实时显示出来。
二、实验结果与分析实验结果表明,本系统在测量温度方面具有较高的准确度和稳定性。
通过与标准温度计对比实验,我们发现本系统测量误差小于0.5摄氏度,可以满足绝大部分实际需求。
此外,本系统通过LCD显示屏实时显示温度数据,方便用户进行实际应用。
三、总结与展望通过本次毕业设计,我们深入学习了C51单片机和DS18B20温度计的原理和应用,并成功设计了一套实时温度测量系统。
系统具有温度测量准确度高、实时性强的特点,可以满足工业生产和环境监测等领域的需求。
然而,在设计过程中我们也存在一些不足之处,例如温度测量范围不够广和不能远程监控等。
基于51单片机DS18B20温度采集器
一核心器件的基本构成及特性1.1 AT89S51功能特性89C51是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51基础型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能。
89C51内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C51还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU 而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
89C51有PDIP(40pin)和PLCC(44pin)两种封装形式。
1.2 AT89S51管脚介绍AT89C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、并行I/O口(4个8位I/O口)、串行口、定时器/计数器、中断系统及特殊功能寄存器。
它们都是通过片内单一总线连接而成,其基本结构依旧是微处理器(CPU)加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式,以实现不同的功能。
AT89C51单片机如图所示。
1.1.1引脚功能介绍Vcc(40引脚):接+5V电源。
Vss(20引脚):接地。
XTAL1(19引脚):片内振荡器反相放大器和时钟发生器电路的输入端。
XTAL2(18引脚):片内震荡器反相放大器的输出端。
RST:复位引脚,高电平有效。
基于C51DS18B20温度计的毕业设计论文改
基于C51DS18B20温度计的毕业设计论文改摘要:本文基于C51DS18B20温度计实现了一个温度监测系统。
通过C51单片机控制DS18B20温度传感器,采集环境温度数据,并通过LCD显示屏进行实时显示。
本系统能够实现高精度的温度监测,并具有较好的稳定性和可靠性。
实验结果表明,本设计方案能够满足实际应用的要求。
关键词:C51单片机、DS18B20温度传感器、温度监测、LCD显示屏第1章引言1.1研究背景随着物联网和智能家居的快速发展,温度监测技术在各个领域得到了广泛应用。
温度监测系统能够有效地实时监测环境的温度,为人们提供一个安全舒适的生活和工作环境。
因此,设计一个具有高精度和可靠性的温度监测系统,对于提高生活质量和工作效率具有重要意义。
1.2论文目的和意义本文旨在基于C51DS18B20温度计实现一个高精度的温度监测系统,并通过LCD显示屏进行实时显示。
通过分析DS18B20温度传感器的工作原理和C51单片机的控制方式,设计出一个稳定可靠的温度监测系统。
该系统能够准确地测量环境的温度并进行实时显示,可以广泛应用于家庭、工厂、办公室等各个领域,提高工作和生活的效率。
第2章相关技术2.1DS18B20温度传感器DS18B20温度传感器是一种数字温度传感器,具有精度高、体积小、成本低等特点。
其工作原理是利用温度变化引起的电压变化来进行温度测量。
传感器输出的是一个12位的二进制补码,可以通过C51单片机进行转换和处理。
2.2C51单片机C51单片机是一种广泛应用于嵌入式系统中的微处理器。
它具有性能稳定、易于编程、成本低廉等特点。
在本设计中,C51单片机主要负责对DS18B20传感器进行控制和数据处理,并通过LCD显示屏进行实时显示。
第3章设计方案3.1硬件设计本设计的硬件主要由C51单片机、DS18B20温度传感器和LCD显示屏组成。
其中,C51单片机负责对DS18B20传感器进行控制,LCD显示屏用于实时显示温度。
基于51单片机DS18B20温度采集器详解
一核心器件的基本构成及特性1.1 AT89S51功能特性89C51是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51基础型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能。
89C51内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C51还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU 而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
89C51有PDIP(40pin)和PLCC(44pin)两种封装形式。
1.2 AT89S51管脚介绍AT89C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、并行I/O口(4个8位I/O口)、串行口、定时器/计数器、中断系统及特殊功能寄存器。
它们都是通过片内单一总线连接而成,其基本结构依旧是微处理器(CPU)加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式,以实现不同的功能。
AT89C51单片机如图所示。
1.1.1引脚功能介绍Vcc(40引脚):接+5V电源。
Vss(20引脚):接地。
XTAL1(19引脚):片内振荡器反相放大器和时钟发生器电路的输入端。
XTAL2(18引脚):片内震荡器反相放大器的输出端。
RST:复位引脚,高电平有效。
基于51单片机和DS18B20的数字温度计设计说明
基于51单片机和DS18B20的数字温度计设计说明题目:基于89C51和DS18B20的数字温度计设计一、设计要求数字式温度计要求测温范围为-55~125°C,精度误差在0.1°C以内,LED数码管直读显示。
二、方案论证根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示、报警等功能。
选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。
该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到AT89C51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器用4位共阳LED数码管以动态扫描法实现。
检测范围-55摄氏度到125摄氏度。
按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。
数字温度计总体电路结构框图如图1所示。
图1 数字温度计总体电路结构框图三、系统硬件电路的设计温度计电路设计原理图如图2所示,控制器使用单片机AT89C51,温度传感器使用DS18B20,用4位共阳LED数码管实现温度显示。
图2 数字温度计设计电路原理图1、主控制器AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2、显示电路显示电路采用4位共阳LED数码管,从P0口输出段码,列扫描用P3.0~P3.3口来实现,列驱动用8550三极管。
3、温度传感器工作原理DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
基于51单片机DS18B20温度传感器的C语言程序和电路
基于51单片机DS18B20温度传感器的C 语言程序和电路DS18B2C 在外形上和三极管很像,有三只脚。
电压范围为 3.0 V 至5.5 V 无需备用电源 测量温度 位 温度转换为 12 位数字格式最大值为 750 毫秒 用户可定义的非易失性温度报警设置 应用范围包 敏感系统。
F 面是DS18B20勺子程序,本人用过完全可行的: #include<reg51.h> #include<intrins.h>#define uchar unsigned char #define uint unsigned int sbit DQ=P2A 0;void reset(); void write_byte(uchar val); uchar read_byte(void); void read_temp(); void work_temp(); uchar data temp_data[2]={0x00,0x00};uchar datadisplay[5]={0x00,0x00,0x00,0x00,0x00}; // 对于温度显示值值 uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x0 数部分查表 main() {while(1) {自己添加 ;void delay1(uint t) {for(;t>0;t--); }/////// 温度控制子函数 void reset(){uchar presence=1; while(presence){ while(presence){DQ=1;_nop_();_nop_(); DQ=0;delay1(50); DQ=1; delay1(6);presence=DQ;}delay1(45); presence=~DQ; }//DS18B20//DS18B20 写命令函数 //DS18B20 读 1 字节函数// 温度读取函数 // 温度数据处理函数DQ=1;}void write_byte(uchar val){uchar i;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();DQ=val&0x01;delay1(6);val=val/2;}DQ=1;_nop_();}uchar read_byte(void){uchar i;uchar value=0;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();value>>=1;DQ=0; _nop_();_nop_();_nop_();_nop_(); DQ=1;_nop_();_nop_();_nop_();_nop_();if(DQ)value|=0x80;delay1(6);}DQ=1;return(value);void read_temp(){reset();write_byte(0xcc);write_byte(0xbe);temp_data[0]=read_byte();temp_data[1]=read_byte();reset();write_byte(0xcc);write_byte(0x44);}void work_temp(){if(temp_data[1]>127){ temp_data[1]=(256-temp_data[1]); temp_data[0]=(256-temp_data[0]); n=1; // 需要前面宏定义}display[4]=temp_data[0]&0x0f; // 低位的低4 位display[0]=ditab[display[4]]; // 小数点后的数值display[4]=((temp_data[0]&0xf0) >> 4)|((temp_data[1]&0x0f)<<4); // 小数display[3]=display[4] / 100; display[1]=display[4] % 100;display[2]=display[1] / 10;display[1]=display[1] % 10;}电路:Bi -ij-F16欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求。
基于51单片机与BS18B20的温度检测报警系统
课程设计基于AT89C51单片机和DS18B20的数字温度计1课题说明随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。
传统的温度检测以热敏电阻为温度敏感元件。
热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。
这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。
本设计选用AT89C51型单片机作为主控制器件,DS18B20作为测温传感器,通过LCD1602实现温度显示。
通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.01℃。
该器件可直接向单片机传输数字信号,便于单片机处理及控制。
另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。
2 实现方法采用数字温度芯片DS18B20 测量温度,输出信号全数字化。
采用了单总线的数据传输,由数字温度计DS18B20和AT89C51单片机构成的温度测量装置,它直接输出温度的数字信号,也可直接与计算机连接。
采用AT89C51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。
该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限温度。
该系统扩展性非常强。
该测温系统电路简单、精确度较高、实现方便、软件设计也比较简单。
系统框图如图1所示。
图1 DS18B20温度测温系统框图3 硬件设计3.1 单片机最小系统设计3.1.1 电源电路VCC VCC 图2 电源电路3.1.2 振荡电路与复位电路图3 振荡电路 图4 复位电路3.2 DS18B20与单片机的接口电路图5 DS18B20与单片机的接口电路3.3 PROTEUS 仿真电路图图6 PROTEUS仿真电路图4 软件设计系统程序主要包括主程序、读取温度子程序、数据转换子程序、显示数据子程序等。
基于51单片机的DS18B20温度传感器的应用毕业设计(论文) 精品
毕业设计(论文)题目:基于51单片机的DS18B20温度传感器的应用题目类型:工程设计软件开发桂林电子科技大学毕业设计(论文)报告用纸 1摘要温度的测量和控制对人类日常生活、工业生产、气象预报、物资仓储等都起着极其重要的作用。
在许多场合,及时准确获得目标的温度是十分重要的,近年来,温度测控领域发展迅速,并且随着数字技术的发展,温度的测控芯片也相应的登上历史的舞台,能够在工业、农业等各领域中广泛使用。
温控系统通过传感器检测温度将温度数据输入到处理器处理,可以在数码管或LCD等显示出来。
然后由控制器可以控制加热或者制冷,从而达到控温的目的。
本毕业设计就是利用STC89C52单片机和DS18B20温度传感器对目标温度进行检测,使用了单位数码管对检测到温度的显示,通过串口和上位机进行通信,利用VB软件显示温度数据,从而对各空间温度进行远程实时监控,使用LED灯闪烁进行模拟加热和制冷。
本文对各部分的硬件原理图进行了分析,还对各功能程序进行概述。
通过51单片机控制DS18B20检测温度,具有硬件电路简单,编程容易,测温准确,稳定等优点。
而且可以多点检测(本毕设只是单点测温),几个传感器连接也很简单。
关键词:单片机;温控;传感器AbstractTemperature measurement and control of human daily life, industrial production, weather forecast, material storage and so on all play a very important role. On many occasions, timely and accurate to obtain the temperature of the target is very important, in recent years, the temperature measurement and control field is developing rapidly, and with the development of digital technology, the corresponding temperature measurement and control chip mounted on the stage of history, can be widely used in industry, agriculture and so on various areas. Temperature control system through the temperature sensor to detect temperature data input to processing, can be in the digital tube or LED display, etc. And then by the controller to control the heating or cooling, so as to achieve the purpose of temperature control.This graduation design is the use of STC89C52 MCU and DS18B20 temperature sensor to test the room temperature, for testing temperature using digital tube display, through a serial port and PC communication, using VB software display temperature data, thus to remote real-time monitoring of the room temperature, use LED lights to simulate the heating and cooling. By 51 single chip microcomputer control temperature DS18B20 detection, it has a simple hardware circuit, programming easily, temperature measurement accuracy, stability, etc. And can be more testing (this project is only a single point temperature measurement), several sensor connection is also very simple.Keywords: MCU;temperature control;sensor目录引言 (1)1 绪论 (2)1.1 单片微机的发展 (2)1.2 温度检测的意义及发展形势 (2)1.3温控系统设计的核心 (2)2 单片机的简述 (3)2.1单片机的特点及引脚介绍 (3)2.2单片机的电平特性 (5)2.3C51复位电路 (6)2.4时钟电路 (6)3 温控系统的硬件设计 (7)3.1 温度检测模块 (7)3.1.1 温度传感器的概述 (7)3.1.2DS18B20的工作原理及工作时序图 (9)3.2 显示模块 (12)3.3 温超报警模块 (14)3.4 串口通信模块 (15)4 软件设计 (17)4.1 系统整体设计 (17)4.2 温度获取并转换 (19)4.3 温度控制 (20)5 单片机与上位机通信 (21)总结 (23)谢辞 (24)参考文献 (25)附录1电路原理图 (26)附录2 完整C程序代码 (28)附录3 模块调试代码 (34)桂林电子科技大学毕业设计(论文)报告用纸第1页共34 页引言上世纪90年代以来,单片机就进入了一个高速发展的阶段,大部分半导体厂商都注重新型单片机的研制、生产和推广。
基于-51单片机的DS18B20数字温度计的设计
单片机课程设计系部名称:信息工程系专业班级:电气083班学号: 200880884***学生姓名: * *指导教师:张 * *2011年06月20日目录1 前言 (1)2 设计任务及要求 (2)2.1 设计任务 (2)2.2 设计要求 (2)3 课程设计方案及器材选用分析 (3)3.1 设计总体方案 (3)3.1.1 方案论证 (3)3.1.2 方案二的总体设计框图 (4)3.2器材选用分析 (4)3.2.1 DS18B20温度传感器 (4)3.2.2 AT89S52单片机介绍 (12)3.3 软件流程图 (15)3.3.1 主程序 (15)3.3.2 读温度子程序 (16)3.3.3 温度转换命令子程序 (16)3.3.4 计算温度子程序 (17)4 硬件电路的设计 (17)4.1 Protel99 SE软件介绍 (17)4.1.1 Protel99 SE软件 (17)4.1.2 主控制电路图 (18)4.2 Proteus 进行仿真 (20)4.2.1 Proteus[6]简介 (20)4.2.2 proteus仿真图 (21)5 调试性能及分析 (22)课程设计心得 (25)参考文献 (26)附录:DS18B20显示程序 (26)1 前言目前,单片机已经在测控领域中获得了广泛的应用,它除了可以测量电信以外,还可以用于温度、湿度等非电信号的测量,能独立工作的单片机温度检测、温度控制系统已经广泛应用很多领域。
单片机是一种特殊的计算机,它是在一块半导体的芯片上集成了CPU,存储器,RAM,ROM,及输入与输出接口电路,这种芯片称为:单片机。
由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便的优点,使它迅速的得到了推广应用,目前已成为测量控制系统中的优选机种和新电子产品中的关键部件。
单片机已不仅仅局限于小系统的概念,现已广泛应用于家用电器,机电产品,办公自动化用品,机器人,儿童玩具,航天器等领域。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1设计要求1.1具体要求本次课程设计采用的是基于C51单片机的DS18B20简易测温系统,电路图中主要包含51单片机,DS18B20和数码管显示。
1.2技术指标实验要求测温显示精度为:1℃测量范围为:-55℃-+125℃2设计方案与论证2.1方案选择方案一:采用热敏电阻可满足测温要求,但热敏电阻精度低,重复性和可靠性较差,对于精度要求较高的测温不适用,而且采用热敏电阻要求复杂的电路和算法,增加了设计复杂度。
方案二:采用专用的集成温度传感器(如AD590、LM35/LM45)和数字化温度传感器(DS18B20、DS1620)测温,数字化温度传感器具有接口简单、直接数字量输出、精确度高等优点。
DS18B20是DALLAS公司的最新单线数字温度传感器,它是世界上第一片支持“一线总线”接口的温度传感器。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,它的测量温度范围为-55~+125℃,在-10~+85℃范围内,精度为±0.5℃,现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等,DS18B20支持3~5.5V的电压范围,使系统设计更灵活、更方便、更便宜、体积更小。
DS18B20可以程序设定9~12位的分辨率,精度为±0.0625℃,分辨率设定及用户设定的报警温度存储在E2PROM中,掉电后依然保存。
因此,本方案选用DS18B20作为温度测量传感器。
2.2.1单片机系统目前比较流行51系列单片机和凌阳单片机。
AT89C51单片机需要用仿真器来实现软硬件的调试,较为繁琐; AT89S52八位单片机除具有AT89C51单片机所有的优点外,具有更大的程序存储空间,可在线仿真的功能,方便调试。
凌阳十六位单片机虽然可以更好的完成控制功能,但较AT89S52八位单片机价格昂贵,而且编程以及外围功能电路的设计都不及AT89S52成熟。
因此,选用AT89S52八位单片机作为温度采集的控部分。
2.2.2电源模块采用普通的直流电源实现电路简单,而且采用集成电源芯片设计的直流电源电压比较稳定,完全满足系统各模块的供电要求。
2.2.3显示模块由于系统设计初衷就是以简单方便抗干扰性为主,而且在恶劣的环境下也能很好的完成任务,本实验只需显示出温度,因此液晶显示器还是不够廉价的,而数码管就具备了以上功能,因此选用数码管座位显示工具。
2.2.4确定方案为了不失通用性和智能性,本方案采用AT89S52单片机作为控制器,单总线温度传感器DS18B20进行温度采集。
电源部分采用普通的直流电源,完全满足AT89S52和DS18B20等各模块的工作电压范围。
温度显示采用数码管,实用性高。
3设计原理及电路图3.1温度传感器模块3.1.1DS18B20工作原理DS18B20 采用3 脚PR-35 封装或8 脚SOIC 封装,管脚排列如图3所示。
图中GND 为地,DQ 为数据输入/输出端(即单线总线),该脚为漏极开路输出,常态下呈高电平,Vcc 是外部+5V 电源端,不用时应接地,NC 为空脚。
图3 DS18B20的外部结构DS18B20内部主要包括寄生电源、温度传感器、64 位激光ROM 单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH 和TL 解发器存储与控制逻辑、8 位循环冗余校验码(CRC)发生器等七部分,内部结构如图4。
图4 DS18B20内部结构寄生电源由二极管VD1、VD2 和寄生电容C 组成,电源检测电路用于判定供电方式,寄生电源供电时,V DD端接地,器件从单线总线上获取电源,在DQ 线呈低电平时,改由C上的电压Vc继续向器件供电。
该寄生电源有两个优点:第一,检测远程温度时无需本地电源;第二,缺少正常电源时也能读ROM。
若采用外部电源V DD,则通过VD2 向器件供电。
光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,如图5所示。
开始8位(28H)是产品类型标号,接着的48位是DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
主机操作ROM 的命令有五种,如表1 所示。
图5 64 位ROM 的结构表1 DS18B20的ROM命令DS18B20 测量温度时使用特有的温度测量技术。
其内部的低温度系数振荡器能产生稳定的频率信号f0,高温度系数振荡器则将被测温度转换成频率信号f。
当计数门打开时,DS18B20 对f0 计数,计数门开通时间由高温度系数振荡器决定。
芯片内部还有斜率累加器,可对频率的非线性予以被偿。
测量结果存入温度寄存器中。
一般情况下的温度值应为9 位(符号点1位),但因符号位扩展成高8 位,故以16 位被码形式读出,表2 给出了温度和数字量的关系。
表2 DS1820 温度数字对应关系表DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低8位,第二个字节是温度的高8位,第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新,第六、七、八个字节用于内部计算,第九个字节是冗余检验字节,如表3所示。
表3 DS18B20暂存器分布该字节各位的意义为TM R1 R0 1 1 1 1 1 ,低五位一直都是1 ,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20出厂时该位被设置为0,用户不用改动,R1和R0用来设置分辨率,DS18B20出厂时被设置为12位,分辨率设置如表4所示。
表4 分辨率设置表根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM 指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
ROM命令令和暂存器的命令如表1和表5。
表5 DS18B20暂存器的命令3.1.2 DS18B20电路连接由于DS18B20 工作在单总线方式,其硬件接口非常简单,仅需利用系统的一条I/ O 线与DS18B20的数据总线相连即可,如图6所示。
图6 DS18B20电路3.2数码管显示模块3.2.1数码管显示原理动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
3.2.2数码管实物及接口电路3.3电路原理图3.44元器件清单5元器件识别与检测5.1电阻的识别与检测熟记第一、二环每种颜色所代表的数。
可这样记忆:棕1,红2,橙3,黄4,绿5,蓝6,紫7,灰8,白9,黑0。
记准记牢第三环颜色所代表的阻值范围,这一点是快识的关键。
具体是:金色:几点几Ω黑色:几十几Ω棕色:几百几十Ω红色:几点几 kΩ橙色:几十几 kΩ黄色:几百几十 kΩ绿色:几点几 MΩ蓝色:几十几 MΩ从数量级来看,在体上可把它们划分为三个大的等级,即:金、黑、棕色是欧姆级的;红橙\'、黄色是千欧级的;绿、蓝色则是兆欧级的。
检测方法为用多功能电表测量。
5.2电容的识别与检测由于电容体积要比电阻大,所以一般都使用直接标称法。
如果数字是0.001,那它代表的是0.001uF=1nF,如果是10n,那么就是10nF,同样100p就是100pF。
不标单位的直接表示法:用1~4位数字表示,容量单位为pF,如350为350pF,3为3pF,0.5为0.5pF色码表示法:沿电容引线方向,用不同的颜色表示不同的数字,第一,二种环表示电容量,第三种颜色表示有效数字后零的个数(单位为pF)颜色意义:黑=0、棕=1、红=2、橙=3、黄=4、绿=5、蓝=6、紫=7、灰=8、白=9。
电容的识别:看它上面的标称,一般有标出容量和正负极,也有用引脚长短来区别正负极长脚为正,短脚为负。
5.3二极管的识别与检测二极管的识别很简单,小功率二极管的N极(负极),在二极管外表大多采用一种色圈标出来,有些二极管也用二极管专用符号来表示P极(正极)或N极(负极),也有采用符号标志为“P”、“N”来确定二极管极性的。
发光二极管的正负极可从引脚长短来识别,长脚为正,短脚为负。
5.4三极管的识别与检测以NPN型管为例,将万用表置于R×1k挡,黑表笔接管子的发射结e,红表笔接管子的基极b。
此时电阻值一般均在几百千欧以上。
接着将万用表拔至R×10k高阻挡,红、黑表笔接法不变,重新测量一次e、b间的电阻值。
若所测量阻值与第一次测得的阻值变化不大,可基本判定被测管为低频管;若阻值变化很大,超过万用表满度1/3,可基本判定被测管为高频管。
5.5单片机的识别与检测VCC(40引脚):电源电压VSS(20引脚):接地5.674ls373的识别与检测引脚上图以标出,LE为锁存端,OE读取端,应接地。
5.7DS18B20的识别与检测从正方体表面看过去,从左向右依次为GND,DQ,VCC. 6硬件制作与调试程序代码#include<reg52.h>#include<intrins.h>#define uchar unsigned charsbit DQ=P2^3;sbit dula=P2^6;sbit wela=P2^7;sbit FM=P2^5;sbit LED1=P2^0;sbit LED2=P2^1;sbit LED3=P2^2;uint temp,tmp,temp1,temp2,temp3;uchar flag1=0;uchar qian,bai,shi,ge;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x86,0xc7,0xc0,};//数码管显示代码uchar code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x86,0xc7,0xc0,}; //数码管显示代码void delay(uchar i){while(--i);}//延时函数void delays(uchar i){while(i--);void delayms(uint timer){uchar x,y;for(x=timer;x>0;x--)for(y=110;y>0;y--);}ms级别的延时函数void Ds18b20_Init(void){/* uint i;DQ=0;i=103;while(i>0)i--;DQ=1;i=4;while(i>0)i--; */uchar flag=0;//设置标志位DQ=1;//拉高数据总线delay(1);//延时一段时间,尽量短一点DQ=0;//拉低总线delays(100);//延时时间在480us到960us之间DQ=1;//拉高总线delay(15);//如果在15-60ms的时间内产生一个低电平,则初始化完成。