课程设计说明书
DS18B20功能命令如表1所示:
表1 DS18B20功能命令表
命令 CONVERT READ SCRATCHPAD
READ ROM WRITE SCRATPAD MATCH ROM SEARCH ROM ALARM SEARCH
SKIP ROM READ POWER SUPPLY
功能描述 启动温度转换 读取温度寄存器 读DS18B20的序列号
将数据写入暂存器的第2、3字节中
匹配ROM 搜索ROM 报警搜索 跳过读序列号的操作
读电源供给方式,0寄生,1外部电源
代码 44H BEH 33H 4EH 55H F0H ECH CCH B4H
其连线使用如图4所示(2接P3.6):
R24.7k321U2VCCDQGNDDS18B20109.0 图4 DS18B20连线图
由于DS18B20单线通信功能是分时完成的,所以有严格的时隙概念,读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该
6
课程设计说明书
协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。
DS18B20的复位时序 DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。
DS18B20的写时序
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
3.3 时钟电路
单片机的时钟信号使用内部震荡方式产生,其电路图如图5所示:
C122PFU1X112M18XTAL219XTAL1C222PFR110k9RSTC310uF293031PSENALEEA 图5内部震荡电路 7 课程设计说明书
电容器C、C1起稳定震荡频率、快速起振的作用,电容值一般为5-30pF,晶振通常选用6MHZ、12MHZ、24MHZ。内部震荡方式所得的时钟信号比较稳定。
3.4 温度显示电路
八位共阴极数码管,能够显示带一位小数的正负温度。零下时:3显示负号,4显示十位,5显示十位和小数位。6、7显示°C。零上时:3显示百位,4显示十位,5显示个位和小数位,6、7显示°C。当温度超过109.5°C或低于-49.5°C时,发光二极管闪烁并且喇叭报警。
图6 LED的管脚和电路原理
电路上,数码管又可以分为共阴和共阳两种。 数码管的公共端就是位选段。
共阴极的数码管公共端接地,段选高电平有效。 共阴极公共端接+5伏电源,段选端低电平有效。
位选端地意思就是只有这一端选通的时候才能给段选端赋不同的值。 比如说对共阴极的数码管,只有先给位选一个低电平时,才能给段选端赋不同的码,才能在数码管上显示不同的数字。
用途:用于各类仪表、仪器、家用电器等的数字显示。
特点“颜色丰富、亮度高、功耗低、响应速度快、易于集成电路译码器,驱动器直接配合使用。
8段数码管属于LED发光器件的一种。LED发光器件一般常用的有两类:数码管和点阵。8段数码管又称为8字数码管,分为8段:A、B、C、D、E、F、G、P。其中P位小数点。数码管常用的有10根管脚,每一段有一根管脚,另外两根管脚位一个数码管的公共端COM,两根之间互相连通,
八段数码管也分为共阴型和共阳型,共阳型就是发光管的正极都连在一起,作为一条引线,负极分开。八段数码发光管就是8个发光管组成的,在空间排列成为8字型带个小数点,只要将电压家在阳极和阴极之间相应的笔画就会发光。8个发光二极管的阳极并联在一起,8个阴极分开,因此成为共阳八段数码管。
8
其如图7:
课程设计说明书
ABCDEFGDP12345678
图7晶体管显示电路
3.5报警电路
由两个发光二极管组成和一个喇叭组成,分别是高温报警和低温报警,当高温超过110或低温低于50时,对应的二极管闪烁,同时喇叭发出警报。
如图8和图9:
R3220D1高温报警R4220D2低温报警
图8二极管报警电路
LS1SOUNDER 图9喇叭报警电路
9
课程设计说明书
4 程序设计
4.1 程序流程图
程序流程图如图10所示:
开始 初始化DS18B20 N 应答脉冲? Y 跳过读序列号的操作 发出温度转换的命令 等待温度转换完成 初始化DS18B20 跳过读序列号的操作 读温度命令 将温度高、低位读出 处理数据到百、十、个、小数位,并在数码管上显示 N 超出限制? Y 喇叭响和二级管闪烁
图10 程序流程图
10