第8章-单总线I2C总线与1602液晶课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第8章-单总线I2C总线与1602液晶课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 总线 I2C 1602 液晶 课件
- 资源描述:
-
1、作者:夏路易电子工业出版社所有第第8章章 单总线、单总线、I2C总线与总线与1602液晶液晶8.1 单总线单总线8.1.1 单总线介绍单总线介绍 单总线(1-Wire)是Maxim全资子公司Dallas的一项专有技术,与目前多数标准串行数据通信方式,如SPI,I2C等不同,它采用单根信号线,既传输时钟,又传输数据,而且数据传输是双向的,它具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。单总线采用简单的信令协议,通过一条公共数据线实现主机/主控制器与一个或多个从机之间的半双工、双向通信,如图所示。1线 主 机V C CR1线 芯 片 11线 芯 片 n端 口 控 制PI
2、OINFCRXDTXD1WIRE内 置 VDD控 制芯 片功 能C(寄 生 电 源).作者:夏路易电子工业出版社所有 在单总线主机/从机配置中,所有设备共享一条公共数据线,从机芯片借助这条单总线实现数据传输与供电。典型的单总线主机包括一个漏极开路I/O口,通过电阻上拉到3V至5V电源。也可以选用更完善的主控制器,这种控制器具有专用的线驱动器。单总线系统的另一个重要特性是:每个从机有一个唯一的、不能更改(ROM)的64位光刻序列号(ID)。除了为终端产品提供唯一的电子ID外,64位ID还允许主机从挂接在同一条总线上的许多从机芯片中选择一个,由此实现主、从机通信。单总线通信由主机启动、控制所有的数
3、据传输。单总线通信波形与脉宽调制类似,数据位传输按照宽脉冲(逻辑1)或窄脉冲(逻辑0)发送数据。总线主机(MS)首先发出“复位”脉冲启动通信过程,并通过该脉冲同步整个总线系统。大多数单总线器件都支持两种数据速率:15kbps的标准速率和111kbps的高速速率。通信协议为自同步,并可接收数据位之间的较长延迟。作者:夏路易电子工业出版社所有 在没有专用总线主机的情况下,单片机可以产生单总线时序信号。对单片机系统要求如下:(1)单片机的通信端口必须是双向的,其输出为漏极开路,且具有弱上拉。这也是所有单总线的基本要求。(2)单片机必须能产生标准速度单总线通信所需的精确1s延时和高速通信所需要的0.2
4、5s延时。(3)通信过程不能被中断。由主机发出的读写时间片开始时刻SSSSMSMS主机写0主机写1主机读1主机读0SS1线芯片采样MS主机采样.作者:夏路易电子工业出版社所有8.1.2 DS18B20工作原理工作原理 1.DS18B20的特点单线数字温度传感器DS18B20器件的特点如下:1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条信号线即可实现单片机与DS18B20的双向通讯。2)在使用中不需要任何外围元件。3)可用数据线供电,电压范围:3.0 5.5 V。4)测温范围:-55 125。测温分辨率为0.5。5)通过编程可实现912位的数字读数方式6)用户可自设定非易失性的
5、报警上下限值。7)支 持 多 点 组 网 功 能,多 个 DS18B20可 以 并 联 在 三 条 线 上,实 现 多 点 测 温。8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。作者:夏路易电子工业出版社所有64位ROM和单线接口D1D2电源控制VDDDQ存储与控制逻辑温度传感器高温报警值TH低温报警值TL配置寄存器缓存8位CRC校验发生器内部VDDCDS18B20GNDDQVDDTO-92.作者:夏路易电子工业出版社所有DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图8-3
6、所示,其中DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。(1)64 b闪速ROM的结构如下:8b检验CRC48b序列号8b工厂代码(10H)MSB LSBMSB LSBMSB LSB在ROM中,开始是8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后 8 位 是 前 5 6 位 的 C R C 校 验 码。可 用 R O M 操 作 命 令 读 出 其 内 容。(2)内部存储器DS18B20温度传感器的内部存储器格式如下:温度低位温度高位THTL配置保留保留保留8位CRCLSB MSB第1,2字节保存温度数值,第1字节为低位
7、,第2字节为高位。第3,4字节锁存器TH和TL保存非易市失性温度报警数据,可通过软件写入用户报警上下限。作者:夏路易电子工业出版社所有第5字节是配置寄存器,其内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如下:TMR1R011111 该寄存器低5位都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,即是来设置分辨率,如下表所示(DS18B20出厂时被设置为12位)。由表可知,设定的分辨率越高,所需要的温度数据转换
8、时间就越长。第68字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。CRC的产生在64 b ROM的最高有效字节中存储有循环冗余校验码(CRC)。处理器根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。R1R0分辨率最大温度转换时间(ms)00993.750110187.501011275.001112750.00作者:夏路易电子工业出版社所有3.温度值格式当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在内部存储器的第1,2字节
9、。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625/LSB形式表示。温度值格式如下:可以知道,当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码(在取补),再计算十进制值。如下是一部分温度值对应表。位76543210低字节232221202-12-22-32-4高字节SSSSS262524温度()二进制十六进制+1250000 01111101 000007D0H+25.06250000 00011001 00010191H+0.50000 00000000 10000008H00000 00000000 00000000H0.5111
10、1 11111111 1000FFF8H25.06251111 11100110 1111FE6FH551111 11001001 0000FC90H作者:夏路易电子工业出版社所有4.DS18B20与单片机的典型接口设计DS18B20与51单片机的接线如图所示。上图是具有独立电源线的DS18B20接线图,由于数据线空闲时为高电平,因此需要加一个上拉电阻4.7 k,另外2个脚分别接电源和地。下图是寄生电源供电方式,为保证在有效的DS18B20时钟周期内提供足够的电流,51单片机的I/O口控制场效应管对单线总线上拉,当DS18B20处于写存储器操作和温度测量操作时,场效应管导通,使总线有强上拉,上
11、拉开启时间最大为10 s。采用寄生电源供电方式时VDD和GND端均接地。51单片机DS18B20GND DQVDDVDDRVDD4.7k(外电源)单总线51单片机DS18B20GND DQVDDRVDD4.7k单总线I/OI/O.作者:夏路易电子工业出版社所有8.1.3 软件设计软件设计 1.复位与读、写时序由于DS18B20是在一根I/O线上读写数据,对读写有着严格的时序要求,因此有通信协议来保证各位数据传输的正确性和完整性。(1)DS18B20的复位时序 复位要求主CPU将数据线下拉500s,然后释放,DS18B20收到信号后等待1660s左右,后发出60240s低脉冲,主CPU收到此信号
12、表示复位成功。GNDVDD主机发出复位脉冲最小480s最大960s15-60s(480s)DS18B20应答(60-240s)DS18B20等待主机的最短接收时间.作者:夏路易电子工业出版社所有(2)DS18B20的读时序 对于DS18B20的读时序分为读0时序和读1时序两个过程。读时序是从单片机把单总线拉低之后,在15s之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。主 机 读 1时 间GNDVDD主 机 读 0时 间1 s间 隙1 s间 隙15 s45 s15 s45 s主 机 采 样主 机 采 样.1 s间 隙作者
13、:夏路易电子工业出版社所有(3)DS18B20的写时序 对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。主机写1时间GNDVDD主机写0时间最小60s最大120s1s间隙1s间隙15s15s30sDS18B20采样时间mintyemax15s15s30sDS18B20采样时间mintyemax.作者:夏路易电子工业出版社所有2.操作命令介绍(1
14、)ROM命令 读ROM(33h)该命令允许从DS18B20芯片中读出8位编码、序列号和8位CRC码,总线上只有一个DS18B20的时候才可用。匹配ROM命令(55h)该命令后跟64位ROM序列,可以在总线上找到一个唯一的DS18B20,只有这个匹配的芯片才能响应随后的命令,而所有不匹配的芯片都等待复位,总线上有1个或多个器件时,都可以使用这个命令。跳过ROM命令(CCh)在总线上只有单芯片时,可以使用这条命令跳过ROM搜索,节省时间,如果有多个芯片,则会发生数据冲突。搜索ROM命令(F0h)当不知道总线上有多少芯片和各芯片序列号时,这条命令采用排除法识别总线上的芯片的64位编码。报警搜索命令(
15、Ech)最近一次测温后,满足报警条件的芯片,将响应这条命令报警。作者:夏路易电子工业出版社所有(2)DS18B20的操作命令1)写暂存器命令(4Eh)写入开始地址为TH(字节2),随后是TL(字节3)和配置字节(字节4),所有写入操作必须在DS18B20芯片复位之前完成。2)读暂存器命令(BEh)该命令从字节0开始,一直读完所有字节(字节8),如果只需要读取部分数据,则可以使用复位命令终止。3)拷贝暂存器命令(48h)将暂存器内容拷贝到EEPROM中。4)启动温度转换命令(44h)启动总线上的DS18B20进行温度转换。5)读EEPROM命令(B8h)将EEPROM内的数据读回暂存器6)读供电
16、模式命令(B4h)若是寄生电源,芯片返回0,若是外部电源,返回1。作者:夏路易电子工业出版社所有8.1.4 DS18B20测量温度的例题测量温度的例题 例题8-1 两位数码管显示DS18B20测量的温度。用独立电源向DS18B20芯片供电,DS18B20芯片的信号线与51单片机的P3_7引脚相连。温度值的整数部分用两位数码管显示,小数部分用5个发光管显示,最高位数码管的小数点显示负号。单片机时钟频率11.0592MHz。源程序如下:#include#include /本程序运行时钟为11.0592MHZunsigned char code dispcode=0 xC0,0 xF9,0 xA4,
17、0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90 ,0 x7c,0 x39,0 x5e,0 x79,0 x71,0 x00;/整数部分译码表unsigned char code dispnum=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f,0 xff;/温度小数部分译码表 unsigned char timecount;/中断次数变量unsigned char readdata2;/保存温度值的数组unsigned char test,test1,test0;/保存温度值的中间变量sbit DQ=P37;/DS
18、18B20的信号端bit sflag;/正负号标志作者:夏路易电子工业出版社所有 void delay(unsigned int i)/延时函数while(i-);reset(void)/复位DS18B20的函数 unsigned char x=0;DQ=1;delay(8);DQ=0;delay(80);DQ=1;delay(14);x=DQ;delay(20);void writecommandtods18b20(unsigned char command)/写字节到DS18B20的函数 unsigned char i=0;for(i=8;i0;i-)DQ=0;DQ=command&0 x
19、01;delay(5);DQ=1;command=1;作者:夏路易电子工业出版社所有unsigned char readdatafromds18b20(void)/从DS18B20读取一个字节 unsigned char i=0;unsigned char temp=0;for(i=8;i0;i-)DQ=0;temp=1;DQ=1;if(DQ)temp|=0 x80;delay(4);return(temp);作者:夏路易电子工业出版社所有void main(void)/主函数 TMOD=0 x01;/定时/计数器0工作在模式1TH0=(65536-4000)/256;/设置初值TL0=(65
20、536-4000)%256;/设置初值ET0=1;/允许定时器0中断EA=1;/允许总中断TR0=1;/启动定时器0while(1)P1=dispcodetest/10;/P1口相连的数码管显示温度值高位P0=dispcodetest%10;/P0口相连的数码管显示温度值低位P2=dispnum(test0&0 x0f)*10/32;/将温度值的小数部分送P2口连接的发光管显示 P1_7=sflag;/高位数码管的小数点显示负号,亮表示负制温度值 作者:夏路易电子工业出版社所有void t0(void)interrupt 1 using 0 /定时/计数器0的中断服务函数 unsigned c
21、har result;TH0=(65536-4000)/256;/重置定时/计数器0的初值TL0=(65536-4000)%256;timecount+;/中断次数每次增加1if(timecount=150)/当150次中断后,执行如下语句 timecount=0;/清0中断次数reset();/复位DS18B20writecommandtods18b20(0 xcc);/发送跳过ROM搜索命令writecommandtods18b20(0 xbe);/发送读命令readdata0=readdatafromds18b20();/读温度值低8位,高4位为整数部分,低4位为小数readdata1=
22、readdatafromds18b20();/读温度值高8位,高5位为符号位,0表示正数 /1表示负数,低3位为温度值sflag=0;/判断正负号作者:夏路易电子工业出版社所有if(readdata1&0 xf8)!=0 x00)/如果高8位与0 xf8相与不等于0(按位“与”运算)sflag=1;/则是负温度值,是补码readdata1=readdata1;/求高8位反码readdata0=readdata0;/求低8位反码result=readdata0+1;/低8位加1,形成补码送变量resultreaddata0=result;/形成补码送回原变量if(result255)/如果低8位
23、大于255readdata1+;/向高3位进位 test0=readdata0;/将温度值低8位送变量test0test1=readdata1;/将温度值高8位送变量test1test=(readdata1*256)+readdata0)/16;/求整数部分的实际温度值reset();/复位DS18B20writecommandtods18b20(0 xcc);/向DS18B20发送跳过ROM搜索命令writecommandtods18b20(0 x44);/启动下一次转换作者:夏路易电子工业出版社所有例题8-3 读ROM程序该例程序为读DS18B20 ROM的程序,购买回DS18B20芯片后
24、,在安装到现场之前,应该将其ROM内容读出。该例中DS18B20的信号与51单片机的P3_7端相连。单片机时钟频率11.0592MHz。源程序如下:#include AT89X51.Hsbit DQ=P37;/定义通信端口void delay(unsigned int i)/延时函数while(i-);Init_DS18B20(void)/初始化DS18B20unsigned char x=0;DQ=1;/DQ复位delay(8);/调用延时函数DQ=0;/单片机将DQ电平拉低delay(80);/调用延时函数,大于480usDQ=1;/将DQ电平拉高delay(14);/调用延时函数延时x=
25、DQ;/稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay(20);作者:夏路易电子工业出版社所有ReadOneChar(void)/读字节函数unsigned char i=0;unsigned char dat=0;for(i=8;i0;i-)DQ=0;dat=1;DQ=1;if(DQ)dat|=0 x80;delay(4);return(dat);WriteOneChar(unsigned char dat)/写字节函数unsigned char i=0;for(i=8;i0;i-)DQ=0;DQ=dat&0 x01;delay(5);DQ=1;dat=1;作者:夏路易电子
展开阅读全文