收藏 分销(赏)

基于51单片机与DS18B20的数字温度计设计.doc

上传人:w****g 文档编号:1722655 上传时间:2024-05-08 格式:DOC 页数:20 大小:667KB
下载 相关 举报
基于51单片机与DS18B20的数字温度计设计.doc_第1页
第1页 / 共20页
基于51单片机与DS18B20的数字温度计设计.doc_第2页
第2页 / 共20页
基于51单片机与DS18B20的数字温度计设计.doc_第3页
第3页 / 共20页
基于51单片机与DS18B20的数字温度计设计.doc_第4页
第4页 / 共20页
基于51单片机与DS18B20的数字温度计设计.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、信息与通信工程学院课程设计项 目:基于单片机的DS18B20数字温度计设计指导老师: 湛腾西 设 计 人: 尹世强 彭娇礼 班 级: 电实11-1BF 2013 年 06 月 18 日1 设计要求1.1 基本要求1、 测量精度0.52、 范围:-50-1103、 可测多点温度,演示两点以上4、 LED直读显示5、 可任意设计温度报警的上限与下限6、 可上传通信(RS232口),也可以相互对通(485口)1.2 扩展功能温度报警,能任意设定温度范围实现声光报警;每隔10分钟记录一次温度数据,至少能查询过去10个时刻的温度情况。2 元器件清单序号耗材名称数量1AT89S5112FJ5461BH,共

2、阳极四合一数码管13欧姆龙按键44DS18B20,串口温度传感器,25485串行通信驱动电路(封装DIP)16120/0.5W电阻127PNP三极管48发光二极管直径5mm,红一绿一29蜂鸣器110辅铜板10cm*20cm1111k/(1/8w),412插座DIP40113与RS232电路配套的DIP插座114电源板插(SIP2套件)415双排IDC10排插,RS232通信接插在板接插座116DB9串口通信接头(阴)1170.75导线3米(红、黑、白各1米218芯排线一米13 总体方案设计2.1 方案论证2.1.1 方案一由于本设计是测温电路,可以使用热敏电阻之类的器件,将随被测温度变化的电压

3、或电流采样,进行A/D转换后就可以用单片机进行数据处理,实现温度显示。这种设计需要用到A/D转换电路,增大了电路的复杂性,而且要做到高精度也比较困难。2.1.2 方案二考虑到在单片机属于数字系统,容易想到数字温度传感器,可选用DS18B20数字温度传感器,此传感器为单总线数字温度传感器,起体积小、构成的系统结构简单,它可直接将温度转化成串行数字信号给单片机处理,即可实现温度显示。另外DS18B20具有3引脚的小体积封装,测温范围为-55+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗

4、、测量精度、范围等方面都能很好地达到要求,故本设计采用方案二。单片机报警电路显示电路测温电路按键输入电路时钟、复位电路图1 系统总体方框图2.2 总体设计框图本方案设计的系统由单片机系统、数字温度传感器、LED显示模块、按键控制模块、温度报警模块组成,其总体架构如图1。3 硬件设计3.1 单片机系统1. 本设计采用STC89C52单片机作为控制器,完成所有功能的控制,包括:l DS18B20数字温度传感器的初始化和读取温度值l LED数码管显示驱动与控制l 按键识别和响应控制l 温度设置和报警l 温度值的存储和读取2. 单片机系统电路原理图:图2 单片机系统原理图4.1 数字温度传感器模块4.

5、1.1 DS18B20性能l 独特的单线接口仅需一个端口引脚进行通信l 简单的多点分布应用l 无需外部器件l 可通过数据线供电l 零待机功耗l 测温范围-55+125,以0.5递增l 可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625l 温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字l 应用包括温度控制、工业系统、消费品、温度计和任何热感测系统l 负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作4.1.2 DS18B20外形及引脚说明图3 DS18B20外形及引脚l GND:地l DQ:单线运用的数据输入/

6、输出引脚l VD:可选的电源引脚4.1.3 DS18B20接线原理图单总线通常要求接一个约4.7K左右的上拉电阻,这样,当总线空闲时,其状态为高电平。图4 DS18B20接线原理图4.1.4 DS18B20时序图主机使用时间隙来读写DS18B20的数据位和写命令字的位。1. 初始化时序如下图:图5 DS18B20初始化时序2. DS18B20读写时序:图6 DS18B20读写时序4.1.5 数据处理高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在 高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位

7、在后。图7 字节分配下表为12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。 例如+125的数字输出为07D0H,实际温度=07D0H*0.0625=2000*0.0625=125。例如-55的数字输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作运算),实际温度=370H*0.0625=880*0.0625=55。可见其中低四位为小数位。图8 DS

8、18B20温度数据表4.2 显示电路LED数码管显示采用动态扫描方式,能简化电路布线,节约单片机I/O端口。段码和位码由单片机P0送出,分别用74HC673N锁存。图9 数码管驱动显示电路4.3 声报警电路当温度超过设定温度值时,实现声光报警,蜂鸣器鸣叫、8个发光二极管点亮。蜂鸣器由单片机P23口控制,用三极管驱动,发光二极管接单片机P1口,由74HC673N锁存。图10报警电路4.4 键盘输入电路四个键分别连接单片机P34、P35、P36、P37构成独立式键盘,分别实现加、减、报警温度设定功能键和温度查询功能键。图11 键盘输入电路55软件设计5.1 主程序模块主程序需要调用3个子程序,分别

9、为:l 实时温度显示子程序:驱动数码管把实时温度值送出在LED数码管显示l 查询记录温度值子程序:查询过去存储的温度值,最多可查询10个值l 温度设定、报警子程序:设定报警温度值,当温度超过该值时产生报警,即驱动蜂鸣器鸣叫、8个发光二极管发光主程序流程图:开始定时器初始化、启动显示实时温度温度设定、报警查询记录温度值图12 主程序流程图5.2 读温度值模块读温度值模块需要调用4个子程序,分别为:l DS18B20初始化子程序:让单片机知道DS18B20在总线上且已准备好操作l DS18B20写字节子程序:对DS18B20发出命令l DS18B20读字节子程序:读取DS18B20存储器的数据l

10、延时子程序:对DS18B20操作时的时序控制1. 读温度值模块流程图:2.DS18B20初始化子程序流程图:图13 读温度值子程序流程图图14DS18B20初始化子程序流程图3 DS18B20写字节和读字节子程序流程图: 图15 DS18B20写字节子程序流程图图16 DS18B20读字节子程序流程图5.3 中断模块中断采用T0方式1,初始值定时为50ms。中断模块需调用两个子程序:l 读温度值子程序:定时读取温度值,实时更新温度值l 记录温度值子程序:定时记录温度值,供查询使用把这两个子程序放在中断的原因是,不会因为调整报警温度或查询历史温度值而停止更新温度值和记录温度值。中断模块流程图:1

11、秒?计数值加1定时器重置初值中断入口读温度值Y中断返回记录温度值 N图17中断模块流程图5.4 温度查询模块温度查询模块需要接受按键输入,进入查询界面后,按加减键分别查询上一个和下一个历史温度值,并驱动数码管显示需要查询的温度值。温度查询模块流程图如下:入口功能键按下? N确认按下?延时消抖 YN显示温度值与位次 Y加键按下?N确认按下?延时消抖 Y查询下一个值Y减键按下? NN查询上一个值确认按下?延时消抖 YY退出功能键按下? NN返回 Y图18 温度查询模块流程图6 PCB原理图7 源代码DS18B20 相关函数:/* *18B20初始化 * */unsigned char Init_D

12、S18B20(void) unsigned char x=0,i; DQ = 1; delay(8); DQ = 0; / delay( 500 ); /480us - 720us DisPlay_Dtube( tempe_n , 3 , 3 , 0x00 ); DQ = 1;/ delay( 40 ); DisPlay_Dtube( tempe_n , 1 , 3 , 0x00 ); for ( i = 16; i 1; i- ) x = DQ; / x=0 初始化成功;x=1初始化失败if(!x) break; return ( x );/ delay( 100 ); DisPlay_Dt

13、ube( tempe_n , 1 , 3 , 0x00 );/* *读取18B20 ID * */void GetID()unsigned char i ;Init_DS18B20() ;WriteOneChar(0x33);delay(1) ;for(i=0 ; i8 ; i+ )B20_IDi = ReadOneChar();/* *读取温度 * */unsigned int ReadTempe(char ID)unsigned char i;unsigned char a=0;unsigned char b=0;unsigned int T=0;Init_DS18B20() ;Write

14、OneChar(0xCC);WriteOneChar(0x44);while(!DQ)DisPlay_Dtube( tempe_n , 0 , 3 , 0x00 );Init_DS18B20();WriteOneChar(0x55);for(i=0 ; i0x8000) T=-T;return (0x8000+T*5/8);elsereturn (T*5/8);/* * CRC校验 * */unsigned char CRC(unsigned char c)unsigned char i , CRC_Data = 0;for( i = 0 ; i 0;i-)DQ = 0; / 给脉冲信号dat

15、=1;DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;delay(4);return(dat);/* * *写一个字节 * */static void WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat=1;/delay(4);/延时函数static void delay(unsigned int i) while(-i);数码管显示函数:unsigned intcode DtubeNum=0xeb,0x28,0xB3,

16、0xBA,0x78,0xDA,0xDB,0xA8,0xFB,0xFA;/* * 数码管显示 * Num:显示的数字 * DIS_NUM : 循环显示次数 * Point : 显示某一点 * ScanKey : 扫描某按钮 */void DisPlay_Dtube(int Num ,unsigned int DIS_NUM ,char point ,char ScanKey)unsigned char i ;int for_i ;char DT_keyF ;DtubeL0 = DtubeNumNum/1000;DtubeL1 = DtubeNumNum%1000/100;DtubeL2 = Dt

17、ubeNumNum%100/10;DtubeL3 = DtubeNumNum%10;if(point)DtubeLpoint-1 += 0x04 ;for(for_i=0 ;for_i=DIS_NUM; for_i+)for(i=0;i0;j-) for( ;n0;n-) ;串口通信函数:void Init_SerialCom()SM0=0;SM1=1;REN=1;ES=1;void ReTr_Serialcom(unsigned int TempValue)TrL = TempValue %256;TrH = TempValue /256 ;/-SBUF = 0xaa ;while(!TI)

18、;TI=0 ;SBUF = TrH ;while(!TI);TI=0 ;SBUF = TrL ;while(!TI);TI=0 ;/-tempe_n = RevL + RevH*256;DisPlay_Dtube( tempe_n ,100,3,6) ;void SerialInterruptSer() interrupt 4if(RevValue !=0xaa)RevValue = SBUF ;Rev_HL_Flag =1;elseif(Rev_HL_Flag =1)RevH = SBUF ;Rev_HL_Flag = 2;elseRevL = SBUF ;Rev_HL_Flag = 0;RevValue = 0x52;RI = 0 ;还认真开展了6次全国统一行动,遏制了因三超一疲劳而引发的交通事故;在三、四、五月份,我队还按照州政府、州安委会、州支队要求,开展了道路交通集中整治专项行动、治理酒后驾驶、摩托车、电动车专项治理行动,均取得了一定的成效。

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服