




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、南京信息工程大学滨江学院课程论文(单片机原理及应用)题目 DS18B20 温度采集报告 学生姓名 仇丽华 学 号 20082305902 院 系 滨江学院电子工程 专 业 电子信息工程 指导教师 朱艳萍 概述硬件电路的单片机芯片采用AT89S52芯片,进行数据处理。数据采集部分的传感器采用DS18B20芯片数字温度传感器。,用七段LED数码显示器显示测量的温度值,超过预定的温度值则会产生报警。 硬件电路设计1、AT89S52芯片AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51
2、产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。2、 DS18B20芯片(1) DS18B20简介DS18B20是由美国DALLAS公司生产的单线数字温度传感器芯片。与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化为串行数字信号,以供单片机处理,它还具有微型化、低功率、高性能、抗干扰能力强等优点。通过编程,DS18B20可以实现912位的温度读数。信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18
3、B20仅需连接一条信号线和地线。读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。 (2) DS18B20的引脚功能DS18B20的引脚(图7-10),其功能如表7-8所示。 (3) DS18B20的主要特点v 采用单线技术,与单片机通信只需一个引脚;v 通过识别芯片各自唯一的产品序列号从而实现单线多挂接,简化了分布式温度检测的应用;v 实际应用中不需要外部任何器件即可实现测温;v 可通过数据线供电,电压的范围在35.5V;v 不需要备份电源;v 测量范围为-55+125,在-10+85范围内误差为0.5;v 数字温度计的分辨率用户可以在9位到12位之间选择,可配置实现91
4、2位的温度读数;v 将12位的温度值转换为数字量所需时间不超过750ms;v 用户定义的,非易失性的温度告警设置,用用户可以自行设定告警的上下限温度。(4)DS18B20内部结构64位ROM的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上
5、电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如下图所示。低位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率 C64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器VddI/ODS18B20内部结构3、实验原理图AT89S52控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令
6、,必须先启动DS18B20开始转换,再读出温度转换值,本实验系统挂接一个DS18B20芯片,可使用默认的12位转换精度,外接供电电源,单片机与DS18B20的接口用的是单片节的P2.4口。 电路焊接时按照电路图焊接,将电源部分、ISP接口、18B20、蜂鸣器、LED显示和单片机模块连接起来,按照引脚相同标号连接。等焊接完成后将程序下载到芯片里进行调试。查看焊接的板子有没有问题。我们的板子刚刚下进去程序后数码管没显示,后经过检查,发现数码管的引脚焊反了,改正后板子能够正确显示。板子显示29.8,温度没有超过设定的30,所以蜂鸣器不会响。软件设计 实验原理测温系统的原理主要是DS18B20去采集温
7、度,然后单片机负责提供时钟频率,分析处理数据,送给LED显示。DS18B20低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。原理图的18、19脚就是晶振原理图,
8、9脚是复位原理图,可以使单片机清零。实验内容(1) 如下的流程图,在keil编译环境下编制程序,需要采集温度并判断温度所处范围,如果超出温度范围则报警;报警通过实验板上的蜂鸣器实现,报警温度可以通过键盘设置;最后生成*HEX文件。(2) 通过ISP将生成的*HEX文件下载到单片机中,运行程序。(3) 观测LCD上显示的温度数据,通过键盘操作控制报警温度。 主流程图开始读取温度值数码显示是否为正温度读取温度初始化返回温度值转换是否大于报警温度BEEP ONBEEP OFF数码管显示中断流程图初始化键盘扫描取键值+键按下温度值增1键按下温度值减1推出中断数码管显示返回程序代码/DS18B20温度传
9、感器程序# include<reg52.h># define Alarm 10sbit Beep=P34;sbit DQ=P24;unsigned char tempL=0,tempH=0; /数据传输线接单片机的相应引脚unsigned char flag=0; /设全局变量unsigned int temperature,negtemper; /温度值保存在temperature里unsigned char idata addrdat2=0x0,0x0;unsigned char tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
10、0x90;/*0123456789*/unsigned char tab1=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;unsigned char dispbuf3=0,0,0;unsigned char warning=20;bit on=0,off=1;/*/延时子程序 /*void delay(unsigned int i)while(i-);void beep(bit i)Beep=i;/*/初始化程序Init_DS18B20(void)unsigned char x=0;DQ=1; /DQ先置高dalay(8); /稍延时DQ=
11、0; /发送复位脉冲delay(85); /延时(>480us)DQ=1; /拉高数据线delay(14); /等待(1560us)x=DQ; /用x的值来判断初始化程序有没有成功,DS18B20存在的话x=0, /否则为1 delay(20);/* /读一个字节 ReadOneChar(void) /主机数据线先从高电平拉至低电平,保持1ms以上, /再使数据线升为高电平,从而产生读信号unsigned char i=0; /每个读周期最短的持续时间为60us,各个读周期之间 /必须有一个1ms以上的高电平恢复期unsigned char dat=0;for(i=8;i>0;i-
12、) /一个字节有8位DQ=1;delay(1);DQ=0;dat>>=1;DQ=1;if(DQ)dat|=0x80;delay(4);return(dat);/*/写一个字节WriteOneChar (unsigned char dat)unsigned char i=0; / 数据线从高电平拉至低电平,产生写起始信号 /15ms之间将所需写的位送到数据线上for(i=8;i>0;i-) /在1560ms之间对数据线进行采样,如果是高电平 /就写1,低电平就写0DQ=0; /在开始另一个写周期前必须有1ms以上的高电平恢复期DQ=dat&0x01;delay(5);D
13、Q=1;dat>>=1;delay(4);/*ReadTemperature(void)Init_DS18B20(); /初始化WriteOneChar(0xcc); /跳过读序列号的操作WriteOneChar(0x44); /启动温度转换delay(125); /转换需要一点时间,延时 Init_DS18B20(); / 初始化WriteOneChar(0xcc); /跳过读序列号的操作WriteOneChar(0xbe); /读温度寄存器(头两个值分别为温度的低位和高位)tempL=ReadOneChar(); /读出温度的低位LSBtempH=ReadOneChar();
14、/读出温度高位temperature=(tempH*256)+tempL; /温度转换,对高、低位做相应的运算,转化为/实际温度return(temperature);/*void Dispbu(unsigned int temper)dispbuf2=(temper>>4)%10; /取十位dispbuf1=(temper>>4)%10; /取个位if(temper&0x8) /小数位dispbuf0=0x55;else dispbuf0=0;unsigned char getkey() /键盘扫描程序P2=0xff;P2=oxfe;if(P2&0xf
15、f)!=0xfe)delay(5000);if(P2&0xff)!=0xfe)return P2;else P2=0xfd;else P2=oxfd;if(P2&0xff)!=0xfd;delay(5000);if(P2&0xff)!=0xfd)return P2;elseP2=oxfd;else P2=0xfd;if(P2&0xff)!=0xfd)delay(5000);if(P2&0xff)!=0xfd)return P2;else P2=0xfd;else P2=0xf7;if(P2&0xff)!=0xf7)delay(5000);if(P
16、2&0xff)!=0xf7)return P2;else return P2=0xfe;Inter0_process() interrupt 2 /外部中断1 unsigned char key;int i;unsigned char dis=0x01;unsigned int j;for(j=5000;j>0;j-)key=getkey(); /取键值if(key=0xee) /如1键按下,则温度值递增 warning+;delay(8000);if(key=0xed) /如5键按下,则温度值递增warning-;delay(8000);if(key=0x77) /按下16键则
17、退出中断j=1;for(i=0;i<2;i+) /设置两位报警值,并在LED上显示P1=dis;dis<<=1;if(i=0)P0=tabwarning%10;elseP0=tebwarning/10;delay(200);dis=0x01; /* /主程序main()unsigned char i,npos=0x01;P0=0xff;P2=0xff;P1=0xff;EX1=1; /开中断1IT1=1; /下降沿触发ET1=1;EA=1; /开总中断while(1)if(temperature&0xf000)=0xf000) /判断是否是负温度ReadTemperat
18、ure();for(i=0;i<4;i+) /4位显示negtemper=(temperature)+1; /取原码Dispbuf(negtemper); /取位值P1=npos;npos<<1; /循环使能if(i=1) /第二位显示有点P0=tab1dispbufi; /查表显示delay(700);else if(i=3) /显示负号P0=0xbf;elseP0=tabdispbufi;delay(700);npos=0x01;else /如不是负温度for(i=0;i<3;i+) /为负则显示3位ReadTemperature(); /读温度值Dispbuf(t
19、emperature);if(temperature>>4)&0xff)>=warning) /温度值大于报警温度值则报警beep(0n); /蜂鸣器响else beep(off); /不响P1=npos;npos<<=1; /循环显示if(i=1)P0=tab1dispbufi;elseP0=tabdispbufi;delay(100);npos=0x01;总结 通过这次单片机实验让我知道了C语言的重要性。以前学的时候以为只可以写写简单的程序,现在知道和单片机联合起来可以实现很多很多功能。所以我们一定要加强这方面的知识。板子焊的再漂亮,没有程序还等于零。 在焊接板子时先将排阻和AT89S52连接起来,排阻一边有个小点的地方时1脚,然后顺序往下焊接。将芯片的9脚复位键焊上一个开关,开关按钮有六个端,用万用表电阻档检测,检测一端,用表笔碰触任两个,当按下去的时候万用表有偏斜,就用那两个脚连接。在芯片的18、19脚按图焊上晶振,产生时钟频率。在芯片的40脚焊上两个并联的电容,然后接地。在21、22、23脚分别焊上三个开关,可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年高中物理 第二章 机械波 2 波速与波长、频率的关系教学设计3 教科版选修3-4
- 7.2 运动的快慢 速度(教学设计)-2024-2025沪粤版物理八年级下册
- 远东宏信租赁铸剑培训
- 九年级英语下册 Unit 1 Asia Integrated skill and Study skills教学设计 (新版)牛津版
- 2024-2025学年高中历史 第五单元 第2课 拿破仑帝国的建立与封建制度的复辟教学设计1 新人教版选修2
- 七年级地理下册 第八章 第四节 澳大利亚教学设计 (新版)新人教版
- 2019商务星球版七年级下册地理6.1《世界第一大洲》教学设计
- Unit 2 Know your body 第3课时(教学设计)-2024-2025学年外研版(三起)(2024)英语三年级下册
- 月嫂上岗技巧培训课件
- 2023八年级英语下册 Module 2 Experiences Unit 2 They have seen the Pyramids第三课时教学设计 (新版)外研版
- DB11_T1630-2019 城市综合管廊工程施工及质量验收规范
- 幼儿园大班绘本:《没有牙齿的大老虎》 PPT课件
- X-Y数控工作台机电系统设计说明书
- 轮胎式装载机检测报告
- 部编版四年级语文下册《亲爱的汉修先生》整本书导读课件(共38张PPT)
- 世界地理之欧洲西部
- 民办教师人员花名册
- 关于婚宴违规邀请同事的检讨
- 国家开放大学《管理英语4》章节测试参考答案
- 肺炎的中医辨证论治(下)
- 材料成型设备试题
评论
0/150
提交评论