基于18b20的温度测量仪课程设计报告(编辑修改稿)内容摘要:

将数据写入暂存器的 TH、 TL 字节 复制暂存器 48H 把暂存器的 TH、 TL字节写到 E2RAM中 重新调 E2RAM B8H 把 E2RAM中的 TH、 TL字节写到暂存器 TH、 TL字节 读电源供电方式 B4H 启动 DS18B20发送电源供电方式的信号给主 CPU ( 1) 先将数据线置高电平 “1”。 ( 2) 延时(该时间要求的不是很严格,但是尽可能的短一点) ( 3) 数据线拉到低电平 “0”。 ( 4) 延时 750微秒(该时间的时间范围可以从 480到 960微秒)。 ( 5) 数据线拉到高电平 “1”。 ( 6)延时等待 (如果初始化成功则在 15到 60毫秒时间之内产生一个由 DS18B20所返回的低电平 “0”。 据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。 ( 7)若 CPU读到了数据线上的低电平 “0” 后,还要做延时,其延时的时间从发出的高电平算起(第( 5)步的时间算起)最少要 480微秒。 ( 8) 将数据线再次拉高到高电平 “1” 后结束。 2. DS18B20的写操作 ( 1) 数据线先置低电平 “0”。 ( 2) 延时确定的时间为 15微秒。 ( 3) 按从低位到高位的顺序发送字节( 一次只发送一位)。 ( 4) 延时时间为 45微秒。 基于 18B20 的温度测量仪 13 ( 5) 将数据线拉到高电平。 ( 6) 重复上( 1)到( 6)的操作直到所有的字节全部发送完为止。 ( 7) 最后将数据线拉高。 3. DS18B20的读操作 ( 1)将数据线拉高 “1”。 ( 2)延时 2微秒。 ( 3)将数据线拉低 “0”。 ( 4)延时 15微秒。 ( 5)将数据线拉高 “1”。 ( 6)延时 15微秒。 ( 7)读数据线的状态得到 1个状态位,并进行数据处理。 ( 8)延时 30微秒。 74LS138的引脚与功能简介 74ls138引脚图 74HC138管脚图 : 74LS138 为 3 线- 8 线译码器,共有 54/74S138和 54/74LS138 两种线路结构型式,其工作原理如下: 当一个选通端( G1)为高电平,另两个选通端( /(G2A)和 /(G2B))为 低电平时,可将地址端( A、 B、 C)的二进制编码在一个对应的输出端以低 电平译出。 利用 G /(G2A)和 /(G2B)可 级联 扩展成 24 线译码器;若外接一个反 相器还可级联扩展成 32 线译码器。 若将选通端中的一个作为数据输入端时, 74LS138还可作数据分配器 用与非门组成的 3线 8线译码器 74LS138 基于 18B20 的温度测量仪 14 3线 8线译码器 74LS138的功能表 无论从逻辑图还是功能表我们都可以看到 74LS138的八个输出引脚,任何时刻要么全为高电平 1— 芯片处于不工作状态,要么只有一个为低电平 0,其余 7个输出引脚全为高电平 1。 如果出现两个输出引脚同时为 0的情况,说明该芯片已经损坏。 当附加控制门的输出为高电平( S= 1)时 ,可由逻辑图写出 基于 18B20 的温度测量仪 15 由上式可以看出,同时又是这三个变量的全部最小项的译码输出,所以也把这种译码器叫做最小项译码器。 71LS138有三个附加的控制端、和。 当、时,输出为高电平( S= 1),译码器处于工作状态。 否则,译码器被禁止,所有的输出端被封锁在高电平,如表。 这三个控制端也叫做 “ 片选 ” 输入端,利用片选的作用可以将多篇连接起来以扩展译码器的功能。 带控制输入端的译码器又是一个完整的数据分配器。 在图 “ 数据 ” 输入端(同时),而将作为 “ 地址 ” 输入端,那么从送来的数据只能通过 所指定的一根输出线送出去。 这就不难理解为什么把叫做地址输入了。 例如当= 101时,门的输入端除了接至输出端的一个以外全是高电平,因此的数据以反码的形式从输出,而不会被送到其他任何一个输出端上。 74HC573的引脚与功能简介 74HC573包含八进制 3态非反转透明锁存器,是一种高性能硅门 CMOS器件。 74HC573跟 LS/AL573的管脚一样。 器件的输入是和标 准 CMOS输出兼容的,加上拉电阻他们能和 LS/ALSTTL输出兼容。 锁存器 输入是和标准 CMOS 输出兼容的;加上拉 电阻 ,他们能和 LS/ALSTTL 输出兼容。 当锁存使能端 LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。 当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。 三态总线驱动输出 置数全并行存取 缓冲控制输入 使能输入有 改善抗扰度的滞后作用 原理说明: 74HC573的八个锁存器都是透明的 D 型锁存器,当使能( G)为高时, Q 输出 将随数据( D)输入而变。 当使能为低时,输出将锁存在已建立的数据电平上。 输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时, 新的数据也可以置入。 这种电路可以驱动大 电容 或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。 特别 适用于缓冲寄存器, I/O 通道,双向总线驱动器和工作寄存器。 数码管简介 此系统采用的是共阴极性的 LED数码管 ,高电平点亮。 如图 16 基于 18B20 的温度测量仪 16 图 16 数码管极性及端口分布 不过,我们此次是采用的四合一的数码管。 如图 17 图 四合一数码管 图 数码管的硬件连接图 基于 18B20 的温度测量仪 17 第四章 软件设计 源程序说明 include include //_nop_()。 延时函数用 define Disdata P0 //段码输出口 define discan P2 //扫描口 define uchar unsigned char define uint unsigned int sbit DQ=P1^3。 //温度输入口 uint h。 uint temp。 uchar code dis_7[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}。 //共阴 LED段码表 0 1 2 3 4 5 6 7 8 9 不亮 uchar code scan_con[4]={0xfb,0xfa,0xf9,0xf8}。 //列扫描控制字 uchar data temp_data[2]={0x00,0x00}。 //读出温度暂放 uchar data display[5]={0x00,0x00,0x00,0x00,0x00}。 //显示单元数据,共 4个数据和一个运算暂用 /*****************11us延时函数 *************************/ void delay(uint t) { for (。 t0。 t)。 } /****************显示扫描函数 ***************************/ scan() { char k。 for(k=1。 k4。 k++) //4位 LED扫描控制 { Disdata=dis_7[display[k]]。 //数据显示 discan=scan_con[k]。 //位 选 delay(200)。 } } /****************DS18B20复位函数 ************************/ ow_reset(void) { char presence=1。 while(presence) { 基于 18B20 的温度测量仪 18 while(presence) { DQ=1。 _nop_()。 _nop_()。 //从高拉倒低 DQ=0。 delay(50)。 //550 us DQ=1。 delay(6)。 //66 us presence=DQ。 //presence=0 复位成功 ,继续下一步 } delay(45)。 //延时 500 us presence=~DQ。 } DQ=1。 //拉高电平 } /****************DS18B20写命令函数 ************************/ //向 1WIRE 总线上写 1个字节 void write_byte(uchar val) { uchar i。 for(i=8。 i0。 i) { DQ=1。 _nop_()。 _nop_()。 //从高拉倒低 DQ=0。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //5 us DQ=valamp。 0x01。 //最低位移出 delay(6)。 //66 us val=val/2。 //右移 1位 } DQ=1。 delay(1)。 } /****************DS18B20读 1字节函数 ************************/ //从总线上取 1个字节 uchar read_byte(void) { uchar i。 uchar value=0。 for(i=8。 i0。 i) { DQ=1。 _nop_()。 _nop_()。 value=1。 DQ=0。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //4 us DQ=1。 _nop_()。 _nop_()。 _nop_()。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。