ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:88.24KB ,
资源ID:19185766      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19185766.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(温度传感器 ds18b20Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

温度传感器 ds18b20Word文件下载.docx

1、1 设计目的:(1)了解温度检测和控制技术的基本知识以及单片机、传感器等相关技术。(2)熟练使用相关的EDA软件进行硬件电路的设计与仿真 (3)具体掌握DS18B20温度传感器的使用方法。2.基本要求(1)孵化室对温度有一定要求,温度是否合适直接影响孵化效果,为此需要对温度进行严格控制,主要指标如下:孵化室温控制在36.50.5,温度低时启动电热器加热,用红灯报警;温度高时,启动空调冷却,用绿灯报警。(2)要求设计相关的硬件电路,选择合适的传感器、控制系统和显示系统。3 详细设计:3.1 系统设计原理框图:图1 DS18B20温度测温系统框图通过单片机控制温度传感器,读出DS18B20的温度,

2、并用数码管显示,当温度超过37时,启动空调冷却,用绿灯报警,当温度低于36时,启动电热器加热,用红灯报警。所以根据设计要求确定了系统的总体方案,整个系统由控制模块、湿度检测模块、显示模块、报警器等构成。3.2 硬件电路设计图图2 硬件电路设计图3.3程序设计系统程序主要包括主程序、读取温度子程序、数据转换子程序、显示数据子程序等。3.3.1主程序设计流程图图3 主程序流程图3.3.2初始化程序流程图图4 初始化流程图3.3.3 读取温度子程序读取温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。主要包括以下三个命令:(1)写暂存器命令 【4E

3、H】这个命令为由TH寄存器开始向DS18B20暂存器写入数据,4EH命令后的3字节数据将被保存到暂存器的地址2、3、4(TH、TL、CONFIG)三个字节。所有数据必须在复位脉冲前写完。即如果只想写一个字节的数据到地址2,可按如下流程:初始化;写0CCH,跳过ROM检测;写4EH;写1字节数据; 复位,即向DQ输出480960us低电平(2)读暂存命令【BEH】这个命令由字节0读取9个暂存器内容,如果不需要读取所有暂存内容,可随时输出复位脉冲终止读取过程(3)转换温度命令【44H】这个命令启动温度转换过程。转换温度时DS18B20保持空闲状态,此时如果单片机发出读命令, DS18B20将输出0

4、直到转换完成,转换完成后将输出1。图5 读取温度子程序3.3.4写流程图写时隙:写时隙由DQ引脚的下降沿引起。18B20有写1和写0两种写时隙。所有写时隙必须持续至少60s,两个时隙之间至少有1s的恢复时间。DS18B20在DQ下降沿后15s60s间采样DQ引脚,若此时DQ为高电平,则写入一位1,若此时DQ为低电平,则写入一位0,如图9所示。所以,若想写入1,则单片机应先将DQ置低电平,15us后再将DQ置高电平,持续45s;若要写入0,则将DQ置低电平,持续60s。图6 写流程图3.3.5读流程图读时隙:读时隙由DQ下降沿引起,持续至少1s的低电平后释放总线(DQ置1)DS18B20的输出数

5、据将在下降沿15s后输出,此时单片机可读取1位数据。读时隙结束时要将DQ置1。所有读时隙必须持续至少60s,两个时隙之间至少有1s的恢复时间。 图7读流程图3.3.6程序#include intrins.h#define uchar unsigned char#define uint unsigned intsbit DQ = P13; /数据口define interfaceuint temp; /温度值 variable of temperature/不带小数点unsigned char code table = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x

6、07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/带小数点unsigned char code table1 = 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;/*精确延时函数*/void delay(unsigned char i) while(-i); /*此延时函数针对的是12Mhz的晶振delay(0):延时518us 误差:518-2*256=6delay(1):延时7us (原帖写5us是错的)delay(10):延时25us 误差:25-20=5delay(20):延时45us 误差:45

7、-40=5delay(100):延时205us 误差:205-200=5delay(200):延时405us 误差:405-400=5*/*DS18B20*/void Init_Ds18b20(void) /DS18B20初始化send reset and initialization commandDQ = 1; /DQ复位,不要也可行。delay(1); /稍做延时DQ = 0; /单片机拉低总线delay(250); /精确延时,维持至少480us /释放总线,即拉高了总线delay(100); /此处延时有足够,确保能让DS18B20发出存在脉冲。uchar Read_One_Byte

8、() /读取一个字节的数据read a byte date /读数据时,数据以字节的最低有效位先从总线移出uchar i = 0;uchar dat = 0;for(i=8;i0;i-) DQ = 0; /将总线拉低,要在1us之后释放总线 /单片机要在此下降沿后的15us内读数据才会有效。 _nop_(); /至少维持了1us,表示读时序开始 dat = 1; /让从总线上读到的位数据,依次从高位移动到低位。 DQ = 1; /释放总线,此后DS18B20会控制总线,把数据传输到总线上 delay(1); /延时7us,此处参照推荐的读时序图,尽量把控制器采样时间放到读时序后的15us内的最

9、后部分 if(DQ) /控制器进行采样 dat |= 0x80; /若总线为1,即DQ为1,那就把dat的最高位置1;若为0,则不进行处理,保持为0 delay(10); /此延时不能少,确保读时序的长度60us。return (dat);void Write_One_Byte(uchar dat) /拉低总线 /至少维持了1us,表示写时序(包括写0时序或写1时序)开始 DQ = dat&0x01; /从字节的最低位开始传输 /指令dat的最低位赋予给总线,必须在拉低总线后的15us内, /因为15us后DS18B20会对总线采样。 /必须让写时序持续至少60us /写完后,必须释放总线,u

10、int Get_Tmp() /获取温度get the temperaturefloat tt;uchar a,b;Init_Ds18b20(); /初始化Write_One_Byte(0xcc); /忽略ROM指令Write_One_Byte(0x44); /温度转换指令Write_One_Byte(0xbe); /读暂存器指令a = Read_One_Byte(); /读取到的第一个字节为温度LSBb = Read_One_Byte(); /读取到的第一个字节为温度MSBtemp = b; /先把高八位有效数据赋于temptemp = 8; /把以上8位数据从temp低八位移到高八位temp

11、 = temp|a; /两字节合成一个整型变量tt = temp*0.0625; /得到真实十进制温度值 /因为DS18B20可以精确到0.0625度 /所以读回数据的最低位代表的是0.0625度temp = tt*10+0.5; /放大十倍 /这样做的目的将小数点后第一位也转换为可显示数字 /同时进行一个四舍五入操作。return temp;/*数码码动态显示函数*/void Display(uint temp) /显示程序uchar A1,A2,A3;A1 = temp/100; /十位A2 = temp%100/10; /个位A3 = temp%10; /小数位P0 = tableA1;

12、 /显示十位P2=0;delay(0);P0 = table1A2; /显示个位,使用的是有小数点的数组(因为temp值扩大了10倍,虽然是十位,实际为个位)P2=1;P0 = tableA3; /显示小数P2=2;void main()while(1) Display(Get_Tmp();3.4结果验证与仿真仿真如图:图8仿真图4 总结从这次的设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,这就是我在这次课程设计中的最大收获。随着电子技术的不断发展,按着此思路设计的温度传感器的性能也一定会越来越好。5参考文献1传感器原理及接口技术梅丽凤,王艳秋,清华大学出版社,2006年。2传感器与检测技术徐科军,电子工业出版社,2011年。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1