基于51单片机的温度自动控制系统实现步进电机控制设计毕业设计论文 下载本文

第 37 页 共 84 页

很重要,对其操作的程序设计必须严格按照时序的先后次序与延时时间,才能保障对其操作的可靠实现。有DS18B20的操作协议,根据DS18B20的初始化时序、写时序、读时序要求,设计出对操作的通用初始化子程序模块、写字节程序模块、读字节程序模块。以下选取初始化子程序的说明其设计。

(1)DS18B20的初始化:

初始化时序如图5-7所示。

具体步骤: 图5-7 DS18B20 初始化时序 ①先将数据线置高电平“1”。

② 延时(该时间要求的不是很严格,但是尽可能的短一点)

37

第 38 页 共 84 页

③数据线拉到低电平“0”。

④延时750微秒(该时间的时间范围可以从480到960微秒)。 ⑥数据线拉到高电平“1”。

⑦延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返 回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行 等待,不然会使程序进入死循环,所以要进行超时控制)。

⑧若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的 高电平算起(第(5)步的时间算起)最少要480微秒。 ⑨将数据线再次拉高到高电平“1”后结束。 (2)DS18B20的写操作:

图 5-8 DS18B20 写时序

38

第 39 页 共 84 页

具体步骤:

① 数据线先置低电平“0”。 ② 延时确定的时间为15微秒。

③ 按从低位到高位的顺序发送字节(一次只发送一位)。 ④ 延时时间为45微秒。 ⑤ 将数据线拉到高电平。

⑥ 重复上(1)到(6)的操作直到所有的字节全部发送完为止。 ⑦ 最后将数据线拉高。 (3)DS18B20的读操作

图 5-9 DS18B20 读时序

具体步骤:

① 将数据线拉高“1”。

39

第 40 页 共 84 页

② 延时2微秒。

③ 将数据线拉低“0”。 ④ 延时15微秒。 ⑤ 将数据线拉高“1”。 ⑥ 延时15微秒。

⑦ 读数据线的状态得到1个状态位,并进行数据处理。

⑧ 延时30微秒。

5.3.4 DS18B20与单片机的典型接口设计

以 MCS-51单片机为例,中采用寄生电源供电方式,P1.1口接单线总线为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管和89C51的P1.0来完成对总线的上拉。当DS18B29处于写存储器和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD和GND端均接地。由于单线只有一根线,因此发送接口必须是三态的。主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。假设单片机系统所用的晶体管晶振频率为12MHZ,根据DS18B20的初始化时序、写时序和读时序,分别编写三个子程序:INTI为初始化子程序,WRITE为写子程序,READ为读子程序,所有的数据读写均由最低位开始,实际在实验中不用这种方式,只要在数据线上加一个上拉电阻4.7K,另外两个引脚分别接电源和地。 5.3.5数据采集电路的设计

数据采集电路主要由数字温度传感器DS18B20采集水温的温度。温度传感器的单总线(1-Wire)与单片机的 I/O连接,P3.7是单片机的高位地

40