基于单片机的数字温度计毕业论文设计. 下载本文

内容发布更新时间 : 2024/5/16 3:54:03星期一 下面是文章的全部内容请认真阅读。

九个字节是冗余检验字节。

该字节各位的意义如下: TM R1 R0 1 1 1 1 1

低五位一直都是1 ,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如表1所示:(DS18B20出厂时被设置为12位)

表3-3 DS18B20温度转换时间表

R1 0 0 1 1 R0 0 1 0 1 分辨率/位 9 10 11 12 温度最大转向时间 93.75 187.5 375 750 根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。 3.3.2 温度传感器与单片机的连接

温度传感器的单总线(1-Wire)与单片机的P2.0连接,P2.0是单片机的高位地址线A8。P2端口是一个带内部上拉电阻的8位双向I/O,其输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对该端口写“1”,可通过内部上拉电阻将其端口拉至高电平,此时可作为输入口使用,这是因为内部存在上拉电阻,某一引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时。如执行MOVX DPTR指令,则表示P2端口送出高8位的地址数据。在访问8位地址的外部数据存储器时,可执行MOVX RI指令,P2端口内容即为特殊功能寄存器(SFR)区中R2寄存器内容,整个访问期间不改变。在Flash编程和程序校验时,P2端口也接收高位地址和其他控制信号。图3-5为DSl8820内部结构。图3-6为DSl8820与单片机的接口电路。

图3-5 DS18B20和单片机的接口连接

3.3.3 复位信号及外部复位电路

单片机的P1.6端口是MAX813看门狗电路中喂狗信号的输入端,即单片机每

执行一次程序就设置一次喂狗信号,清零看门狗器件。若程序出现异常,单片机引脚RST将出现两个机器周期以上的高电平,使其复位。该复位信号高电平有效,其有效时间应持续24个振荡脉冲周期即两个机器周期以上。若使用频率为12 MHz的晶体振荡器,则复位信号持续时间应超过2μs才完成复位操作。

图3-6 复位电路

3.4 单片机与报警电路

系统中的报警电路是由发光二极管和限流电阻组成,并与单片机的P1.2端口连接。P1端口的作用和接法与P2端口相同,不同的是在Flash编程和程序校验期间,P1接收低8位地址数据。

3.5 显示电路

采用技术成熟的74HCl64实现串并转换。LCD显示分为静态显示和动态显示。这里采用静态显示,系统通过单片机的串行口来实现静态显示。串行口为方式零状态,即工作在移位寄存器方式,波特率为振荡频率的1/12。当器件执行任何一条将SBUF作为目的寄存器的命令时,数据便开始从RXD端发送。在写信号有效时,相隔一个机器周期后发送控制端SEND有效,即允许RXD发送数据,同时允许从TXD端输出移位脉冲。图3-7为显示电路的连接图。

图3-7 显示电路的连接图

4 软件设计

4.1 DS18b20的读操作

DSl8B20的主要数据元件有:64位激光Lasered ROM,温度灵敏元件和非易失性温度告警触发器TH和TL。DSl8B20可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生(电容)电源为止。此外,还可外接5 V电源,给DSl8B20供电。DSl8B20的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。DS18B20读写时序如图4-1~4-3:

图4-1 DS18B20的复位时序图

图4-2 DS18B20的写数据时序图

图4-3 DS18B20的读数据时序图

由时序图可知,DS18B20在复位时需要480us的低电平,等待15us后MCU将总线拉高,等待DS18B20的响应信号;DS18B20在写数据时分为写“0”和写“1”操作,写“0”操作时,DS18B20需要至少60us的总线被拉低,然后在

60us内将“0”写入DS18B20中,持续时间至少1us,写“1”操作是只需将写入的“0”改为“1”即可;DS18B20读操作也分为读“0”和读“1”操作,读“0”操作时,总线需要15us被拉低,再拉高45us,然后再15us内将数据读走,读“1”操作同读“0”操作。程序流程图如图4-4:

开始 DS18B20的初始化 跳过读序列号的操作 启动温度转换 DS18B20的初始化 跳过读序列号的操作 读取温度寄存器 LOW-低八位 HIGH-高八位 RET 图4-4 DS18B20读取温度的流程图

4.2 DS18b20的温度数据处理

读出温度数据后,LOW的低四位为温度的小数部分,可以精确到0.0625℃,LOW的高四位和HIGH的低四位为温度的整数部分,HIGH的高四位全部为1表示负数,全为0表示正数。所以先将数据提取出来,分为三个部分:小数部分、整数部分和符号部分。小数部分进行四舍五入处理:大于0.5℃的话,向个位进1;小于0.5℃的时候,舍去不要。当数据是个负数的时候,显示之前要进行数据转换,将其整数部分取反加一。还因为DS18B20最低温度只能为-55℃,所以可以将整数部分的最高位换成一个“-”,表示为负数。图4-2为温度数据处理程序的流程图。