配色: 字号:
项目十 8路温度采集监控系统
2013-01-08 | 阅:  转:  |  分享 
  
陳慶逸、林柏辰編著---文魁資訊ARM嵌入式系统项目十8路温度采集监控系统计算机控制项目实战DS18B20引脚功能DS18B
20通过一个单线接口发送或接收信息,因此在单片机和DS18B20之间仅需一条连接线(加上地线)。DS18B20供电方式寄生
电源方式是在信号线处于高电平期间把能量储存在内部寄生电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电
源(电容)充电。外部供电方式外部供电方式是从VDD引脚接入一个外部电源。DS18B20内部结构及功能主要包括:寄
生电源、温度传感器、64位ROM和单总线接口、存放中间数据的高速暂存器RAM、用于存储用户设定温度上下限值的TH和TL触发器、存储
与控制逻辑、8位循环冗余校验码(CRC)产生器、配置寄存器等部分。64位光刻ROM光刻ROM中的64位序列号是出厂前被光刻
好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号;接着的48位是
该DS18B20自身的序列号;最后8位是前面56位的循环冗余校验码。光刻ROM的作用是使每一个DS18B20都各不相同,这样
就可以实现一根总线上挂接多个DS18B20的目的。温度传感器完成对温度的测量,以12位转化为例:用16位符号扩展的二进制
补码读数形式提供;这是12位转化后得到的12位数据,存储在两个8比特的RAM中,二进制中的前面5位是符号位。如果测得的温度大于
0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.
0625即可得到实际温度。温度/数据转换关系存储器暂存存储器包含了8个连续字节第一个字节的内容是温度的低八位,第二个
字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是配置寄存器的易失性拷贝,这三个字节的内容在每一次上
电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。一个非易失性的可电擦除的EEPROM,后者存放高
温度和低温度触发器TH、TL和配置寄存器。配置寄存器配置寄存器字节各位的意义如下:低五位一直都是1。TM用于设置DS
18B20在工作模式还是在测试模式。出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,出厂时被设置为12位。
DS18B20通讯协议通过单线总线端口访问DS18B20的协议主要包括初始化;ROM操作命令;存储器操作命令及执行/数据
。初始化和DS18B20之间的任何通讯都需要以初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和跟有其后由从
机发出的存在脉冲。DS18B20初始化代码如下:voidInit_DS18B20(void){ DQ=1;
//DQ复位 Delay(8); //稍做延时 DQ=0; //单片机将DQ拉低 Delay(8
0); //精确延时大于480us DQ=1; //拉高总线,释放总线 Delay(14); Dela
y(20);}ROM操作命令一旦总线控制器探测到一个存在脉冲,它就可以发出5个ROM命令中的任一个,所有ROM操作命令
都8位长度。ReadROM[33h]MatchROM[55h]SkipROM[CCh]这条命令允许总线控
制器不用提供64位ROM编码就使用存储器操作命令,在单点总线情况下用以节省时间。例如:向DS18B20写一个dat=0xCC字节
,跳过读序列号的操作,代码如下:voidWriteOneChar(unsignedchardat){unsig
nedchari=0;for(i=8;i>0;i--){ DQ=0; DQ=dat&
0x01;//先写低位 Delay(5); DQ=1; dat>>=1;}}SearchROM[
F0h]AlarmSearch[ECh]这条命令和SearchROM相同,只有在最近一次测温后遇到符合报警条件的情况,
DS18B20才会响应这条命令。报警条件定义为温度高于TH或低于TL。只要DS18B20不掉电,报警状态将一直保持,直到再一次
测得的温度值达不到报警条件。存储器操作命令WriteScratchpad[4E]这个命令向DS18B20的暂存器中写入数
据,开始位置在地址2。接下来写入的两个字节将被存到暂存器中的地址位置2和3。可以在任何时刻发出复位命令来中止写入。存储器操
作命令ReadScratchpad[BEh]这个命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到第9(字节8,
CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。例如:读取温度转换结果步骤如下:发读取暂
存器命令,代码与实现跳过读序列号操作代码一样;WriteOneChar(0xBE);读取温度转换结果的低8位 a=R
eadOneChar();读取温度转换结果的高8位 b=ReadOneChar();ReadOneChar()函数un
signedcharReadOneChar(void)//读一个字节{ unsignedchari=0; uns
ignedchardat=0; for(i=8;i>0;i--) { DQ=0; //给脉冲信号 d
at>>=1; DQ=1; //给脉冲信号 if(DQ_7) dat|=0x80; Delay(4);
} return(dat);}存储器操作命令CopyScratchpad[48h]这条命令把暂存器的内容拷贝到DS1
8B20的EEPROM里,即把温度报警触发字节存入非易失性存储器里。存储器操作命令ConvertT[44h]这条命令启动
一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,
而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出“0”,若温度转换完成,则输出“1”。例如:向DS18B20写
一个字节0x44,就可以启动DS18B20进行温度转换,代码与实现跳过读序列号操作代码一样。存储器操作命令RecallE
EPROM[B8h]这条命令把报警触发器里的值拷回暂存器。这种拷回操作在DS18B20上电时自动执行,这样器件一上电暂存器里马
上就存在有效的数据了。若在这条命令发出之后发出读时间隙,器件会输出温度转换忙的标识:“0”=忙,“1”=完成。存储器操作命令
ReadPowerSupply[B4h]若把这条命令发给DS18B20后发出读时间隙,器件会返回它的电源模式:“0”=寄生
电源,“1”=外部电源。工作模块258路温度采集监控电路设计利用AT89S52单片机及DS18B20单线数字传感器,设计
一个8路温度采集监控电路。此电路由AT89S52单片机最小系统、8路DS18B20温度采集、3个独立按键键盘以及6个数码管动态扫
描显示构成。I/O口分配:8路DS18B20温度采集接P2口;3个独立按键键盘接P3口;6个数码管动态扫描显示接P0口和P
1口。温度采集电路设计DQ引脚电路把8个DS18B20的DQ引脚分别接到P2口的8个引脚;DQ引脚还需要接上拉电阻4
.7k和电源。供电方式选择为了提高温度测量速度,选择外部供电方式。在VDD引脚接入一个外部电源,GND引脚接地,GND引
脚不能悬空。监控电路设计键盘电路设计8路温度采集监控系统有两种工作模式。用MODE按键进行工作模式切换,在手动模式下按
UP键通道加1,按DOWN键通道减1。这3个按键分别接到P3口的P3.0、P3.1和P3.2引脚。显示电路设计数码管动态
扫描显示电路由6个共阴极数码管、74LS245及电阻组成。P0口输出显示段码,经由一片74LS245驱动输出给数码管,P1口
输出位码(片选)。8路温度采集监控电路设计与实现工作模块268路温度采集监控程序设计工作任务对8路温度采集监
控系统进行程序设计,循环采集监控八个通道的温度值,能实现手动控制和自动控制两种工作模式。自动模式下:每3秒钟更换一个通道,每个循
环更换8次,一直循环下去。手动模式下:按UP通道加1,按DOWN通道减1。键盘处理程序设计键盘接口以及相关变量定义工作
模式切换手动模式自动模式8路温度采集程序设计温度采集接口定义读取温度8路温度显示程序设计获取各显示
位通道编号是存放在display[0];按照显示温度格式获取通道编号、温度百位、温度十位、温度个位及温度十分位。数码管接
口以及相关变量定义数码管显示显示说明:正常状态下,每通道均以XXX.X的格式显示温度(环境温度)。单片机应用技术项
目教程(C语言版)计算机科学系项目十8路温度采集监控系统项目十8路温度采集监控系统终极目标: 能利用
AT89S52单片机及DS18B20单线数字传感器,通过C语言程序实现8路温度采集监控,完成单片机输入输出控制系统的设计、运行及调
试。促成目标:了解DS18B20内部结构;掌握DS18B20工作步骤;掌握DS18B20的通讯协议;会利用I/O口进
行键盘、显示以及温度采集电路设计;会利用ROM操作命令和存储器操作命令实现温度采集。DS18B20温度传感器温度测量与控制
技术在工业、农业、国防等行业有着广泛的应用。DS18B20单线数字温度传感器因测量精度高电路简单,价格低廉而被广泛使用。每
片DS18B20都有唯一的产品序列号并存储在内部ROM中,以便在构成大型温度测控系统时在单线上挂接任意多个DS18B20芯片,
为测量系统的构建引入全新概念。可选的VDD引脚VDD3数据输入/输出脚DQ2接地GND1说明符号引脚
FC90h1111110010010000-55℃FE6Fh1111111001101111-25.0625
℃FF5Eh1111111101011110-10.125℃FFF8h1111111111111000-0
.5℃0000h00000000000000000℃0008h0000000000001000+0.5℃
00A2h0000000010100010+10.125℃0191h0000000110010001+25.
0625℃0550h0000010101010000+85℃07D0h0000011111010000+1
25℃数据输出(十六进制)数据输出(二进制)温度750ms12位11375ms11位01187.5ms1
0位1093.75ms9位00温度最大转换时间分辨率R0R1这个命令允许总线控制器读到DS18B20的8位系
列编码、唯一的序列号和8位CRC码。只有在总线上存在单只DS18B20的时候才能使用这个命令。如果总上有不止一个从机,当所有从机试图同时传送信号时就会发生数据冲突(漏极开路连在一起开成相与的效果)。匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的DS18B20。只有和64位ROM序列完全匹配的DS18B20才能响应随后的存储器操作命令。所有和64位ROM序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少器件或它们的64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。
献花(0)
+1
(本文系草戒指工作...首藏)