《2022年单片机与DSB的数字温度计设计方案6.docx》由会员分享,可在线阅读,更多相关《2022年单片机与DSB的数字温度计设计方案6.docx(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品学习资源信息与通信工程学院课程设计项 目: 基于单片机的 DS18B20数字温度计设计指导老师:湛腾西设 计 人:尹世强彭娇礼班级:电实 11-1BF2021 年 06 月 18 日欢迎下载精品学习资源1 设计要求1.1 基本要求1、测量精度 0.52、范畴: -50 -1103、可测多点温度,演示两点以上4、LED直读显示5、可任意设计温度报警的上限与下限6、可上传通信 1.2 扩展功能温度报警,能任意设定温度范畴实现声光报警;每隔 10 分钟记录一次温度数据,至少能查询过去10 个时刻的温度情形;序号123456789发光二极管直径5mm,红一绿一蜂鸣器辅铜板 10cm*20cm1k/
2、1/8w,插座 DIP40与 RS232电路配套的 DIP 插座电源板插 SIP2 套件)211011141213111442 元器件清单耗材名称数量AT89S511FJ5461BH,共阳极四合一数码管1欧姆龙按键4DS18B20,串口温度传感器 ,2485 串行通信驱动电路 封装 DIP )1120/0.5W 电阻12PNP 三极管4欢迎下载精品学习资源15 双排 IDC10 排插, RS232 通信接插在板1接插座16 DB9 串口通信接头 阴)117 0.75 导线 3M 红、黑、白各 1M218 芯排线一 M13 总体方案设计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单片机作为掌握器,完成全部功能的掌握,包括: DS18B20数字温度传感器的初始化和读取温度值LED数码管显示驱动与掌握按键识别和响应掌握温度设置
5、和报警温度值的储备和读取2. 单片机系统电路原理图:图 2 单片机系统原理图欢迎下载精品学习资源4.1 数字温度传感器模块4.1.1 DS18B20 性能特殊的单线接口仅需一个端口引脚进行通信简洁的多点分布应用无需外部器件可通过数据线供电零待机功耗测温范畴 -55+125,以 0.5 递增可编程的辨论率为912 位,对应的可辨论温度分别为0.5 、0.25 、0.125 和 0.0625 温度数字量转换时间 200ms,12 位辨论率时最多在 750ms内把温度转换为数字应用包括温度掌握、工业系统、消费品、温度计和任何热感测系统负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作4
6、.1.2 DS18B20 形状及引脚说明图 3DS18B20形状及引脚GND:地DQ:单线运用的数据输入 / 输出引脚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 个字节组成,其安排
7、如表5 所示;当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存储备器的第 0 和第 1 个字节;单片机可通过单线接口读到该数据,读取时低位在前,高位在后;图 7 字节安排下表为 12 位转化后得到的 12 位数据,储备在 18B20 的两个 8 比特的RAM 中,二进制中的前面 5 位是符号位,假如测得的温度大于 0, 这 5 位为0,只要将测到的数值乘于 0.0625 即可得到实际温度;假如温度小于 0,这 5欢迎下载精品学习资源位为 1,测到的数值需要取反加1 再乘于 0.0625 即可得到实际 温度; 例如+125的数字输出为 07D0H,实际温度 =07D0H*0
8、.0625=2000*0.0625=125;例如 -55的数字输出为 FC90H,就应先将11 位数据位取反加 1 得 370Hunsigned char x=0,i;DQ = 1;delay8;DQ = 0;/delay 500 ; / 480us - 720usDisPlay_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 ;re
9、turn x ;/delay 100 ;DisPlay_Dtube tempe_n , 1 , 3 , 0x00 ;/* 读取 18B20 ID*/ void GetIDunsigned char i ;Init_DS18B20 ;WriteOneChar0x33 ;delay1 ;fori=0 ; iB20_IDi = ReadOneChar;/* 读取温度*/unsigned int ReadTempechar IDunsigned char i;unsigned char a=0;unsigned char b=0 ;unsigned int T=0 ;Init_DS18B20 ;Wri
10、teOneChar0xCC;WriteOneChar0x44 ;while.DQDisPlay_Dtube tempe_n , 0 , 3 , 0x00 ;Init_DS18B20;WriteOneChar0x55 ;fori=0 ; iWriteOneChar B20_RomIDi ;WriteOneChar0xBE;欢迎下载精品学习资源a=ReadOneChar;b=ReadOneChar; T = ChTempe a , b ;return T ;/*-温度换算-*/unsigned int ChTempeunsigned char a ,unsigned char bunsigned
11、int T = 0 ;T=a+b*256;if T=0xffff return 0xffff ;if T0x8000欢迎下载精品学习资源elseT=-T;return 0x8000+T*5 /8;return T*5 /8;欢迎下载精品学习资源/* CRC校验*/ unsigned char CRCunsigned char cunsigned char i , CRC_Data = 0;for i = 0 ; i /CRC_Data = CRC_Table; return CRC_Data ;/* 读一个字节*/static unsigned char ReadOneCharvoidunsi
12、gned char i;unsigned char dat = 0 ;欢迎下载精品学习资源for i=8 ;i0;i-DQ = 0; / 给脉冲信号dat=1;DQ = 1; / 给脉冲信号ifDQ欢迎下载精品学习资源returndat ;delay4;dat|=0x80 ;欢迎下载精品学习资源/* 写一个字节*/static void WriteOneCharunsigned char datunsigned char i=0;for i=8 ; i0; i-欢迎下载精品学习资源/delay4 ;/ 延时函数DQ = 0;DQ = dat&0x01;delay5;DQ = 1;dat=1;欢
13、迎下载精品学习资源static void delayunsigned int iwhile-i ;数码管显示函数:unsigned intcode DtubeNum=0xeb,0x28,0xB3,0xBA,0x78,0xDA,0xDB,0xA8,0xFB,0xFA;/* 数码管显示* Num: 显示的数字* DIS_NUM : 循环显示次数* Point : 显示某一点* ScanKey : 扫描某按钮欢迎下载精品学习资源*/void DisPlay_Dtubeint Num ,unsigned int DIS_NUM ,char point ,char ScanKeyunsigned cha
14、r i ;int for_i ;char DT_keyF;DtubeL0 = DtubeNumNum/1000;DtubeL1 = DtubeNumNum%1000/100 ;DtubeL2 = DtubeNumNum%100/10 ;DtubeL3 = DtubeNumNum%10 ;ifpointDtubeLpoint-1 += 0x04 ;forfor_i=0 ;for_i fori=0 ;iDtube_selec_Pins = DtubeL_ON5 ;Dtube_Pins = DtubeLi ;Dtube_selec_Pins = DtubeL_ONi ;delay2static vo
15、id delayint nunsigned int j ;forj=110;j0;j-for ;n0;n-;串口通信函数:void Init_SerialComSM0=0;SM1=1;REN=1;ES=1;void ReTr_Serialcomunsigned int TempValueTrL = TempValue %256;TrH = TempValue /256 ;欢迎下载精品学习资源/-SBUF = 0xaa;while.TI;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 4ifRevValue .=0xaa欢迎下载精品学习资源elseRevValue = SBUF;Rev_HL_Flag =1;ifRev_HL_Flag =1欢迎下载精品学习资源RI = 0 ;elseRevH = SBUF;Rev_HL_Flag = 2;RevL = SBUF;Rev_HL_Flag = 0;RevValue = 0x52;欢迎下载精品学习资源欢迎下载