收藏 分销(赏)

单片机技术基础教程与实践-第8章 单总线、I2C总线与1602液晶.pdf

上传人:曲**** 文档编号:4758506 上传时间:2024-10-12 格式:PDF 页数:49 大小:1.78MB
下载 相关 举报
单片机技术基础教程与实践-第8章 单总线、I2C总线与1602液晶.pdf_第1页
第1页 / 共49页
单片机技术基础教程与实践-第8章 单总线、I2C总线与1602液晶.pdf_第2页
第2页 / 共49页
单片机技术基础教程与实践-第8章 单总线、I2C总线与1602液晶.pdf_第3页
第3页 / 共49页
单片机技术基础教程与实践-第8章 单总线、I2C总线与1602液晶.pdf_第4页
第4页 / 共49页
单片机技术基础教程与实践-第8章 单总线、I2C总线与1602液晶.pdf_第5页
第5页 / 共49页
点击查看更多>>
资源描述

1、单片机技术基础教程与实践第8章单总线、12c总线与1602液晶8.1单总线8.L1单总线介绍单总线(1-Wire 是Maxim全资子公司Dallas的一项专有技术,与目前多数标准串行数 据通信方式,如SPLFC等不同,它采用单根信号线,既传输时钟,又传输数据,而且数据 传输是双向的,它具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸 多优点。单总线采用简单的信令协议,通过一条公共数据线实现主机/主控制器与一个或多个从 机之间的半双工、双向通信,如图所示。作者:夏路易电子工业出版社所有在单总线主机/从机配置中,所有设备共享一条公共蜘制楝蜩躺播勒这条 单总线实现数据传输与供电。典

2、型的单总线主机包括一个漏极开路I/O口,通过电阻上拉至113V至5V电源。也 可以选用更完善的主控制器,这种控制器具有专用的线驱动器。单总线系统的另一个重要特性是:每个从机有一个唯一的、不能更改(ROM)的 64位光刻序列号(ID)。除了为终端产品提供唯一的电子ID外,64位ID还允许主机从 挂接在同一条总线上的许多从机芯片中选择一个,由此实现主、从机通信。单总线通信由主机启动、控制所有的数据传输。单总线通信波形与脉宽调制类似,数据位传输按照宽脉冲(逻辑1)或窄脉冲(逻 辑0)发送数据。总线主机(MS)首先发出“复位”脉冲启动通信过程,并通过该 脉冲同步整个总线系统。大多数单总线器件都支持两种

3、数据速率:15kbps的标准速率和Hlkbps的高速速 率。通信协议为自同步,并可接收数据位之间的较长延迟。作者:夏路易电子工业出版社所有、口心小土人女以4弹片机技术基础教程与实践 由主机发出的读写时间片开始时对 主机写0 I主机写1|主机读1|主机读0SS 1线芯片采样MS主机采样在没有专用总线主机的情况下,单片机可以产生单总线时序信号。对单片机系统要 求如下:(1)单片机的通信端口必须是双向的,其输出为漏极开路,且具有弱上拉。这也是所 有单总线的基本要求。2 单片机必须能产生标准速度单总线通信所需的精确延时和高速通信所需要的 0.25LIS延时。(3 通信过程不能被中断。作者:夏路易电子工

4、业出版社所有8.L2DS18B20工作原理单片机技术基础教程与实践1.DS18B20的特点单线数字温度传感器DS18B20器件的特点如下:1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条信号线即可实现单片机与 DS18B20的双向通讯。2 在使用中不需要任何外围元件。3 可用数据线供电,电压范围:3.05.5V。4 测温范围:-55125。测温分辨率为0.5。5 通过编程可实现912位的数字读数方式6 用户可自设定非易失性的报警上下限值。7)支持多点组网功能,多个DS18B20可以并联在三条线上,实现多点测温。8 负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作

5、。作者:夏路易电子工业出版社所有单片机技术基础教程与实践DS18B20T0-921T18T内部VDD64位 RCM 和单线接口VEDJ电源控制作者:夏路易电子工业出版社所有DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感魏揭楙皴第辘翱腾触发器TH和TL、配置寄存器。DS18B20的管脚排列如图8-3所示,其中DQ为数字信号输入/输 出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。1 64 b闪速ROM的结构如下:8b检验CRC48b序列号8b工厂代码(10H)MSB LSBMSB LSBMSB LSB在ROM中,开始是8位是产品类型的编号,接着是

6、每个器件的惟一的序号,共有48位,最 后8位是前56位的CRC校验码。可用ROM操作命令读出其内容。(2 内部存储器DS 18B20温度传感器的内部存储器格式如下:温度低位温度高位THTL配置保留保留保留8 位 CRCLSB MSB第1,2字节保存温度数值,第1字节为低位,第2字节为高位。第3,4字节锁存器TH和TL保存非易市失性温度报警数据,可通过软件写入用户报警上下限。作者:夏路易电子工业出版社所有第5字节是配置寄存器,其内容用于确定温度值的数字转换分到牌片网刖螭冏t按践埼 存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如下:TMR1R011111该寄存器低5位都是1,TM是测

7、试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为3用户不要去改动,R1和R0决定温度转换的精度位数,即 是来设置分辨率,如下表所示(DS18B20出厂时被设置为12位)。由表可知,设定的分辨率越高,所需要的温度数据转换时间就越长。R1R0分辨率最大温度转换时间(ms 00993.750110187.501011275.001112750.00第68字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。CRC的产生在64 b ROM的最高有效字节中存储有循环冗余校验码(CRC。处理器根据ROM的前56位来计算 CRC

8、值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。作者:夏路易电子工业出版社所有3.温度值格式单片机技术基础教程与实践当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩 展的二进制补码形式存储在内部存储器的第1,2字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625/LSB形式表示。温度值格式如下:位76543210低字23222122-12-22-32-4J字SSSSS262524可以知道,当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换 为原码(在取补),再计算十进

9、制值。如下是一部分温度值对应表。温度()二进制十六进制+1250000 01111101 000007D0H+25.06250000 00011001 00010191H+0.50000 00000000 10000008H00000 00000000 00000000H-0.51111 11111111 1000FFF8H-25.06251111 11100110 1111FE6FH作意由路易UU 0%子工业出FC90H单片机技术基础教程与实践4.DS18B20与单片机的典型接口设计DS18B20与51单片机的接线如图所示。VDD上图是具有独立电源线的DS18B20接线图,由于数据线空闲时为

10、高电平,因此需要加一个 上拉电阻4.7kQ,另外2个脚分别接电源和地。下图是寄生电源供电方式,为保证在有效的DS18B20时钟周期内提供足够的电流,51单片 机的I/O口控制场效应管对单线总线上拉,当DS18B20处于写存储器操作和温度测量操作时,场效应管导通,使总线有强上拉,上拉开启时间最大为10 piso采用寄生电源供电方式时VDD和GND端均接地。作者:夏路易电子工业出版社所有8.L3软件设计 单片机技术基础教程与实践1.复位与读、写时序由于DS18B20是在一根I/O线上读写数据,对读写有着严格的时序要求,因此有通信协议 来保证各位数据传输的正确性和完整性。(1)DS18B20的复位时

11、序Tr 主机发出复位脉冲最小480口 s 最大960口 sVED,GN)主机的最短接收时间(480p s)rDS18B20应答(60-240p s)DS18B2冷待 15-60p s复位要求主CPU将数据线下拉500的 然后释放,DS18B20收到信号后等待16 60然左右,后发出602402低脉冲,主CPU收到此信号表示复位成功。作者:夏路易电子工业出版社所有单片机技术基础教程与实践(2)DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。读时序是从单片机把单总线拉低之后,在15联之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个

12、读时序过程,至少需要60us才能完成。VED.GN)主机读0时间15|j s间隙 lu s主机读1时间115p s45p s45p s主机采样主机采样作者:夏路易电子工业出版社所有单片机技术基础教程与实践(3)DS18B20的写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样10总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。上 主机写o时间 1最小6卬s 间隙最大 12O|J s kip

13、sw|_TLmin tye max i 间1一 15|j s f 15p s 1一 30|j s f f*DS1&2睐样时间 一 上主机写1时间 一32_隙 min tye max15p s 卜一 3 Op s-15|j s f DS18B2睐样时间 一作者:夏路易电子工业出版社所有单片机技术基础教程与实践2.操作命令介绍 1 ROM命令读ROM 33h 该命令允许从DS18B20芯片中读出8位编码、序列号和8位CRC码,总线上只有一个DS18B20 的时候才可用。匹配ROM命令(55h 该命令后跟64位ROM序列,可以在总线上找到一个唯一的DS18B20,只有这个匹配的芯片才 能响应随后的命

14、令,而所有不匹配的芯片都等待复位,总线上有1个或多个器件时,都可以使 用这个命令。跳过ROM命令(CCh 在总线上只有单芯片时,可以使用这条命令跳过ROM搜索,节省时间,如果有多个芯片,则 会发生数据冲突。搜索ROM命令(FOh 当不知道总线上有多少芯片和各芯片序列号时,这条命令采用排除法识别总线上的芯片的64 位编码。报警搜索命令(Ech 最近一次测温后,满足报警条件的芯片,将响应这条命令报警。作者:夏路易电子工业出版社所有 2 DS18B20的操作命令 单片机技术基础教程与实践1 写暂存器命令 4Eh 写入开始地址为TH(字节2,随后是TL(字节3 和配置字节(字节4,所有写入操作 必须在

15、DS18B20芯片复位之前完成。2 读暂存器命令 BEh 该命令从字节0开始,一直读完所有字节(字节8,如果只需要读取部分数据,则可以使 用复位命令终止。3 拷贝暂存器命令(48h 将暂存器内容拷贝到EEPROM中。4 启动温度转换命令(44h 启动总线上的DS 18B20进行温度转换。5 读EEPROM命令 B8h 将EEPROM内的数据读回暂存器6 读供电模式命令(B4h 若是寄生电源,芯片返回0,若是外部电源,返回1。作者:夏路易电子工业出版社所有8.1.4 DS18B20测量温度的例题单片机技术基础教程与实践例题8-1两位数码管显示DS18B20测量的温度。用独立电源向DS18B20芯

16、片供电,DS18B20芯片的信号线与51单片机的P3_7引脚相连。温层值的整数部分用两位数码管显示,小数部分用5个发光管显示,最高位数码管的小数点 显示负号。单片机时钟频率H.0592MHz。源程序如下:#include#include /本程序运行时钟为 11.0592MHZunsigned char code dispcode=0 xC050 xF950 xA450 xB0?0 x9950 x92?0 x8250 xF850 x8050 x90,0 x7c,0 x39,0 x5e,0 x79,0 x71,0 x00;整数部分译码表unsigned char code dispnum=0 x

17、fe90 xfd50 xfb90 xf7?0 xef,0 xdf,0 xbf,0 x7f,Oxff);/温度小数部分译码表unsigned char timecount;中 断次数变量unsigned char readdata2;保存温度值的数组unsigned char test 9testl 5testO;/保存温度值的中间变量sbit DQ=P3 A7;/DS18B20 的信号端bits靠夏路易/正负号标志电子工业出版社所有void delay(unsigned int i)延时函数 单片机技术基础教程与实践while(i);reset(void)/复位DS18B20的函数unsign

18、ed char x=0;DQ=1;delay(8);DQ=0;delay(80);DQ=1;delay(14);x=DQ;delay(20);)void writecommandtodsl8b20(unsigned char command)写字节至UDS18B20的函数 unsigned char i=0;fbr(i=8;i0;i)DQ=0;DQ=command&0 x01;delay(5);DQ=1;夏路昴 电子工业tB版社所有)unsigned char readdatafromds 18b20(void)/从DS18B20读取锥技术基石出教程与实践unsigned char i=0;u

19、nsigned char temp=0;fbr(i=8;i0;i)(DQ=0;temp=l;DQ=1;if(DQ)temp|=0 x80;delay(4);)return(temp);作者:夏路易电子工业出版社所有void main(void)主函数单片机技术基础教程与实践TMOD=OxO 1;定时/计数器0工作在模式1TH0=(65536-4000)/256;设置初值TL0=(65536-4000)%256;设置初值ETO=1;/允许定时器0中断EA=1;允许总中断TRO=1;/启动定时器0while(l)P1=dispcodetest/10;/Pl 口相连的数码管显示温度值高位PO=dis

20、pcodetest%10;/P0 口相连的数码管显示温度值低位P2=dispnum(test0&0 x0f)*10/32;/将温度值的小数部分送P2 口连接的发光管显示Pl_7=-sflag;/高位数码管的小数点显示负号,亮表示负制温度值)作者:夏路易电子工业出版社所有void tO(void)interrupt 1 using 0 定时/计数器0的中断服务幽羲片机技术基础教程与头践unsigned char result;TH0=(65536-4000)/256;/重置定时/计数器0的初值TL0=(65536-4000)%256;timecount+;中断次数每次增加1if(timecoun

21、t=150)当150次中断后,执行如下语句(timecount=0;清0中断次数reset();/复位DS18B20writecommandtodsl 8b20(0 xcc);发送跳过 ROM 搜索命令writecommandtods 18b20(0 xbe);/发送读命令readdata0=readdatafromdsl8b20();/读温度值低8位,高4位为整数部分,低4位为小数readdata 1=readdatafromds 18b20();/读温度值高8位,高5位为符号位,0表示正数1表示负数,低3位为温度值sflag=0;/判断正负号作者:夏路易电子工业出版社所有if(readda

22、tal&Oxf8)!=OxOO)如果高8位与OxfS相与不等于0娱极按印础脚为实践(sflag=l;/则是负温度值,是补码readdata 1=-readdata 1;/求高8 位反码readdataO=-readdataO;求低 8 位反码result=readdataO+l;低8位加 1,形成补码送变量resultreaddataO=result;形成补码送回原变量if(result255)/如果低 8 位大于 255readdatal+;/向高3 位进位testO=readdataO;将温度值低8位送变量test。testl=readdatal;/将温度值高8位送变量testltest=

23、(readdatal*256)+readdata0)/16;求整数部分的实际温度值reset();/复位 DS18B20writecommandtods 18b20(0 xcc);向 DS18B20 发送跳过 ROM 搜索命令writecommandtods 18b20(0 x44);启动下一次转换 作者:夏路易 电子工业出版社所有例题8-3 读ROM程序 单片机技术基础教程与实践该例程序为读DS18B20ROM的程序,购买回DS18B20芯片后,在安装到现场之前,应该将其ROM内容读出。该例中DS18B20的信号与51单片机的P3_7端相连。单片机时钟频率11.0592MHz o源程序如下:

24、#include“AT89X5LH”sbit DQ=P3 A7;定义通信端口void delay(unsigned int i)延 时函数while(i);InitDS 18B20(void)初始化 DS 18B20unsigned char x=0;DQ=1;DQ 复位delay(8);调用延时函数DQ=0;单片机将DQ电平拉低delay(80);调用延时函数,大于480usDQ=1;将DQ电平拉高delay(14);调用延时函数延时x=DQ;/稍做延时后如果x=0则初始化成功x=l则初始化失败delay(20);、作者:夏路易 电子工业出版社所有ReadOneChar(void)/读字节函

25、数unsigned char i=0;单片机技术基础教程与实践unsigned char dat=0;for(i=8;i0;i)DQ=0;dat=l;DQ=1;if(DQ)dat|=0 x80;delay(4);retum(dat);)WriteOneChar(unsigned char dat)写字节函数 unsigned char i=0;for(i=8;i0;i)DQ=0;DQ=dat&OxOl;delay(5);DQ=1;dat=l;一 作者:夏路易 电子工业出版社所有unsigned char code dispcode=0 xC050 xF950 xA450 xB050 x9950

26、 x922t|DS(SB0 x88,0 x83,0 xC6,0 xAl,0 x86,0 x8E;/十六进制-7段显示译码表unsigned char code xzfJ=fOxfe.Oxfd.Oxfb.OxfY.Oxef.Oxdf.Oxbf.OxJf;字节顺序变量 unsigned char timecount;unsigned char s8;存放ROM内容的数组变量main()/主函数unsigned char i=0;TMOD=0 x01;/定时器0,工作在模式1TH0=(65536-4000)/256;设置定时器初值TL0=(65536-4000)%256;ET0=l;EA=1;TR0

27、=l;/允许定时器0中断允许总中断/启动定时器0作者:夏路易电子工业出版社所有while(l)单片机技术基础教程与实践if(P3_2=0)当与P3_2相连的按键按下后,执行如下操作(for(i=2000;i0;i);while(P3_2=0);/等待按键抬起Init_DS 18B20();调用函数初始化 DS 18B20WriteOneChar(Ox33);向DS 18B20发送读ROM内容的操作命令fbr(i=0;i=8)nn=0;)作者:夏路易电子工业出版社所有8.2 12c总线 单片机技术基础教程与实践8.2.1 Pc总线介绍I2C Inter-Integrated Circuit 总线

28、是一种由Philps公司开发的两线式串行总线,用于连 接微控制器及其外围设备。12c总线产生于在80年代,最初为音频和视频设备开发,如今主要 在电路板上用于芯片之间的互连。1.FC总线特点12c总线最主要的优点是其简单性和有效性。12c总线支持多主控器件(芯片),其中任何能够进行发送和接收的器件(芯片)都可 以成为主控芯片。一个主控器件(芯片)能够控制信号的传输和时钟频率。当然,在任何时 刻只能有一个主控器件(芯片)。作者:夏路易电子工业出版社所有 1 总线的构成及信号类型单片机技术基础教程与实践12c总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在单片机与被 控器件之间、

29、器件与器件之间进行双向传送,最高传送速率100kbps。各种具有12c接口的器 件均并联在这条总线上,每个器件都有唯一的地址,在信息的传输过程中,FC总线上并接的 每一器件既是主控器件(或被控器件),又是发送器件(或接收器件)。单片机发出的控制 信号分为地址码和数据两部分,地址码用来选址,即接通需要控制的器件;数据就是向选定 器件传输的内容,这样各器件虽然挂在同一条总线上,却彼此独立,互不相关。SCLSDA从机1 从机2 从机n目前有很多芯片上都集成了 12c接口 o作者:夏路易电子工业出版社所有 2 12c总线基础 单片机技术基础教程与实践1 总线空闲状态当SDA与SCL信号线为高电平时(由

30、上拉电阻拉向电源电压),总线处于空闲状态。2 12c总线上的信号在传送数据过程中共有三种类型信号:启用信号、结束信号和应答信号。启用信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。应答信号:接收数据的器件在接收到8位数据后,向发送数据的器件发出特定的低电平脉冲,表示已收到数据。例如,单片机向接收器件发出一个信号后,等待接收器件的应答信号,单片机 接收到应答信号后,根据实际情况做出是否继续传递信号的判断。如果接收器收到8位数据后,没有使ACK=O,而是ACK为1,则表示接收失败(NACK。ACK应该在SCL线

31、上出现第9个脉冲之前,使SDA=O。若是接受器为主控器时,则应该收到最后一个字节后,发送一个NACK信号(ACK=1,通 知被控器接收结束,并释放总线。控制总线数据传送的芯片为主控器件,该器件提供一次通信所需要的总线启动信号、时钟信 号,被控芯片的地址与停止信号。受主控器件控制进行数据传送操作的器件为受控(从)器件。主控器件和受控器件都可以工作在接收和发送状态。在单片机系统中,总线一般由主控器件(通 常为单片机)控制。作者:夏路易电子工业出版社所有3)SDA信号与SCL信号之间的关系 单片机技术基础教程与实践SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态

32、的改 变被用来表示起始和停止条件。如图8-n所示。r nSCL-rI_起始位地址或 应答a 可改变_停止位6)插入等待时间若是接收芯片没有准备好接收下一个字节,则接收芯片将SCL信号拉低,这时发送器件自动 进入等待状态,直到接收芯片准备好接收下一个字节,释放总线,发送器件才继续发送下一个 字节。若是接收器件不能及时返回应答信号,贝USDA信号一直保持高电平。作者:夏路易电子工业出版社所有7 重启动总线单片机技术基础教程与实践在主控器完成一次完整的通信后,如果需要继续霸占总线,则在最后一个应答信号ACK信号 之后的SCL高电平期间,使SDA信号出现下降沿,则会重新启动总线。8 总线封锁只有有一个

33、器件将总线SCL信号锁定在低电平,则12c被封锁,所有器件不能实现通信。作者:夏路易电子工业出版社所有(3)总线仲裁单片机技术基础教程与实践如果两个主器件同时使用12c总线传送数据,就会出现哪个主器件使用总线的问题,也就 出现了总线仲裁问题。如果两个主器件同时使用12c总线传送数据,则同时送出SCL时钟,由于各个器件之间是 线与关系,则最终结果会合并成一个时钟脉冲,其低电平为各个时钟的低电平之“或”,高 电平为各个时钟高电平之“与”。由于FC总线上连接的各个12c器件之间是线与关系,对于12c总线来说,只要有一个器件 在SDA信号线上输出低电平信号,贝USDA信号线就是低电平。所以发送数据的器

34、件在发送 SDA信号的同时,还在检查SDA信号的电平与所发送的信号是否一致,如果不一致,则说明 有其他发送数据的器件也在发送数据,因此就退出;如果一致,则继续发送数据。在总线仲裁过程中,最终获得总线控制权的主器件没有丢失数据,这是“低电平优先”的仲 裁原则。作者:夏路易电子工业出版社所有2.FC总线数据传输过程 单片机技术基础教程与实践有两种工作模式:1 主控器为发送器(主控发送器),被控器是接收器(被控接收器)2 主控器是接收器(主控接收器),被控器为发送器(被控发送器)一般规律如下:1 主控器控制全部发送过程。(2 以启用信号开始,以停止信号结束。3 传送的字节数没有限制。4 主控器发送启

35、用信号后,紧跟着发送地址字节。(5 读写控制位用于向被控器提供读写信息,如果为0,则被控器接收数据,如果为1,则被控 器发送数据,就是主控器从被控器读入数据。6 每传送一个字节需要9个脉冲,前8个时钟脉冲对应的是数据,最后一个脉冲对应的是反馈 应答信号ACK。(7 所有连接在12c总线上被控器件都接收启动信号后的地址字节,并把7位地址码与自己寄存 器中的地址码比较,如果相同,则为主控器寻找的被控器,在第9个时钟脉冲时反馈应答信号。(8 每个数据字节都是高位在前。作者:夏路易电子工业出版社所有3.信号传送格式 单片机技术基础教程与实践主控器与被控器进行一次通信称为一帧。典型的信号格式有以下三种;

36、(1)主控器向被控器写入数据如果主控器向被控器写入n个字节,则格式如下:启动地址读写ACK9ACK停止位7位08位主控发皿被控 返回主控发出被控返回主控发 出主控发出n个字节数据/被控返回n个ACK,若 是被捽返回NACK表ZK接收不成功作者:夏路易电子工业出版社所有(2)主控器从被控器读回数据 单片机技术基础教程与实践如果主控器向被寻址的被控器读回n个字节,则格式如下:启动地址读写ACKACKNACK止 停位7位18位主控发出控回 被返被控发出主控返回主控返回NACK,表示数据接收完主控 发出被控发出n个字节数据/主控 返回n-1个ACK毕作者:夏路易电子工业出版社所有(3 主控器连续发动两

37、次数据传输单片机技术基础教程与实践如果主控器先向被控器写入数据,然后再读回数据,则格式如下:启动地址读写A C K数据A C K/N A重启动地址读写数据A C KNAC K停止位7位08位C K7位18位主控发出被控返回主控发出被控返回主控发出被控发出主控返回控回C表数接完 主返加跖示据收毕主控发出向被控写入 n个字节数 据,若是被 控返回 NACK表示 接收不成功被控发出 n个字节 数据/主控 返回n-1个 ACK作者:夏路易电子工业出版社所有4.地址格式 单片机技术基础教程与实践为了减少引脚数目,12c总线的7位地址格式如下:D7D6D5D4D3D2D1D0从芯片地址R/W地址由7位组成

38、,占用了地址字节的的高7位,字节的0位为数据方向控制位。由于地址位是 7位,因此在12c总线上可以连接127个具有12c接口的芯片。7位地址中,4位为固定地址(器件类型地址),3位为可编程地址。例如LM75数字温度传 感器的固定地址为1001,则其地址为:1001A3A2AlDO由于只有3位可编程地址,所以在该12c总线上只能连接8个相同的芯片。部分器件类型地址如下:存储器类:1010LED与LCD号区动器:0111作者:夏路易电子工业出版社所有5.常见的12c总线工作方式 单片机技术基础教程与实践一般情况下,只要的时钟频率满足SDA和SCL上升沿与下降沿的需求,就可以用软件方法 实现单片机与

39、FC器件的通信。6.PC器件与12c总线连接12c接口的存储器AT24co2与12c总线连接方式如下图所示。VCC10k 10k24C02AO VCCAl WPA2 SCLGND SDASCLJUC0作者:夏路易电子工业出版社所有8.2.2 12c 接口 存储器 AT24co2单片机技术基础教程与实践1.AT24co2 特点与400KHz 12c总线兼容。1.8至U6.0伏工作电压范围。低功耗CMOS技术。写保护功能当WP为高电平时进入写保护状态。页写缓冲器。自定时擦写周期。1,000,000编程/擦除周期。可保存数据100年。8 脚DIP SOIC 或TSSOP 封装。温度范围商业级工业级和

40、汽车级。VCC WP SCL SDA作者:夏路易电子工业出版社所有2.引脚排列 单片机技术基础教程与实践AT24c02的引脚排列如图所示。其中:SDA是串行数据脚。该脚为双向弓I脚,漏极开路,用于地址、数据的输入和数据的输出,使用时需加上拉电阻。SCL是时钟脚。该引脚为器件数据传输的同步时钟信号。SDA和SCL脚均为施密特触发输入,并有滤波电路,可有效抑制噪声尖峰信号,保证在总 线噪声严重时器件仍能正常工作。在单片机系统中,总线受单片机控制。单片机产生串行时 钟(SCL),控制总线的存取,发送启用STRAT和停止STOP信号。WP是写保护引脚,该引脚高电平时处于写保护状态。如果WP管脚连接到电

41、源VCC,所 有的内容都被写保护只能读,当WP管脚连接到地线VSS或悬空允许器件进行正常的读/写操 作AO、A1和A2引脚是器件地址选择引脚。若是悬空,相当于接0电平,如果只有一个 AT24c02被总线寻址这三个地址输入脚A0A1 A2可悬空或连接到VSS。VCC是电源引脚,电源电压范围是L8V6V,极限电压为一2V7V。VSS是地线引脚。各个引脚承受极限电压为一2VVCC+2V作者:夏路易电子工业出版社所有单片机技术基础教程与实践3.器件地址格式AT24co2的器件地址格式如下:1010A2A1A0R/W因为是EEPROM,所以高4位都是1010,后4位中的前3位为可选择地址,所以一块电路板

42、上,最多允许8个AT24co2器件。1.字节写在字节写模式下单片机发送起始命令、从器件地址以及R/W位置0给从器件;从器件产生 应答信号后,主器件发送AT24c02的字节地址,主器件在收到从器件的第2个应答信号后,再发 送数据到被寻址的存储单元,AT24C02再次应答后,主器件产生停止信号,随后AT24co2开始 内部数据的擦写,在内部擦写过程中AT24C02不再应答主器件的任何请求。写时序如图所示。作者:夏路易电子工业出版社所有单片机技术基础教程与实践2.读操作(1)立即地址读AT24c02的地址计数器内容为最后操作字节的地址加1,也就是说如果上次读/写的操作 地址为N,则立即读的地址为从地

43、址N+1开始,如果N=255则计数器将翻转到0,且继续输出 数据,AT24c02接收到器件地址信号、R/W位置1信号,首先发送一个应答信号,然后发送一 个8位字节数据,主器件不需发送一个应答信号但要产生一个停止信号。立即读时序如图所示。启动位0 1|0|1 1 1R/W ACK主机发送的从机地址 读 从机主机接收的字节地址NACK停止位 主机主机P作者:夏路易电子工业出版社所有(2)选择地址读单片机技术基础教程与实践选择地址读操作允许单片机对寄存器的任意字节进行读操作,单片机首先发送起始信号、从 器件地址、需要读取的字节数据的地址;在AT24co2应答之后,主器件重新发送起始信号、从器件地址(

44、R/W位置1),AT24co2响应并发送应答信号,然后输出所要求的一个8位字节 数据,主器件不发送应答信号但产生一个停止信号。AT24c02选择地址读的时序如图所示。NA3K 停止位主机主机p作者:夏路易电子工业出版社所有(3)连续地址读单片机技术基础教程与实践连续读操作可通过立即读或选择性读操作方式启动,在AT24co2发送完一个8位字节数据后,单片机产生一个应答信号来响应,通知AT24co2,单片机要求更多的数据,对应每个单片机 产生的应答信号,AT24c24将发送一个8位数据字节,当单片机不发送应答信号,而发送停 止位时结束此操作。从AT24C02输出的数据按顺序由N到N+1输出,读操作

45、时地址计数器在 AT24c02整个地址内增加,当读取的字节超过256,计数器将翻转到0并继续输出数据字节。连续地址读的时序如图所示 主机接收的数据1主机接收的数据2主机接收的数据n_.a,r RA ACK 从机地址读从机ACK 主机ACK 主机N%K 停止位 主机主机作者:夏路易电子工业出版社所有例题8-5 写入AT24c02芯片一个字节,然后读出并在数码管上撇此机技术基础教程与实践按下按键kl写0 x12到0 x01地址,按下按键k3写0 x25到0 x01地址,按下按键k2从。x01地址读出 一个字节,显示在P0和P1 口相连的数码管上。单片机时钟频率H.0592MHz。源程序如下:#de

46、fine uchar unsigned char 定义一下方便使用#define uint unsigned int#define ulong unsigned long#include 包括一个52标准内核的头文件#define WriteDeviceAddress OxaO 定义器件在12c总线中的地址(读写位为0)#define ReadDviceAddress Oxal 定义器件在12c总线中的地址(读写位为1 sbit SCL=P3A7;sbit SDA=P3A6;sbitKl=P3A2;sbit K2=P3A3;sbit K3=P3A4;作者:夏路易电子工业出版社所有单片机技术基础

47、教程与实践void DelayMs(unsigned int number)延时函数 unsigned char temp;fdr(;number!=O;number)fbr(temp=l 12;temp!=0;temp);)void Start()启用总线SDA=1;SCL=1;SDA=0;SCL=0;void StopQ 停用总线SCL=0;SDA=0;SCL=1;SDA=1;void NoAck()发送应答信号ACKSDA=1;SCL=1;SCL=0;作者:夏路易电子工业出版社所有单片机技术基础教程与实践bit TestAck()测试应答信号ACKbit ErrorBit;SDA=1;S

48、CL=1;ErrorBit=SDA;SCL=0;retum(ErrorBit);Write8Bit(unsigned char input)/写入8个二进制位到AT24co2 unsigned char temp;fbr(temp=8;temp!=0;temp)SDA=(bit)(input&0 x80);SCL=1;SCL=0;input=inputl;作者:夏路易电子工业出版社所有void Write24c02(uchar ch.uchar address)StartQ;写入一个字节到AT2辨褊醵麻撇心与实践Write8Bit(WriteDeviceAddress);发送器件的地址Test

49、Ack();Write8Bit(address);TestAck();Write8Bit(ch);TestAck();StopO;DelayMs(lO);)uchar Read8Bit()/发送写入字节的地址发送写入的数据从AT24co2中读出8个二进制位unsigned char temp jbyte=O;fbr(temp=8;temp!=0;temp)SCL=1;rbyte=rbytel;rbyte=rbyte|(unsigned char)(SDA);SCL=0;起叫傅y喂路易电子工业出版社所有uchar Read24c02(uchar address)从24co2中address地址读

50、出喻镯蔗术基础教程与实践uchar ch;StartQ;启用总线Write8Bit(WriteDeviceAddress);/发送器件的地址TestAck();Write8Bit(address);TestAck();StartQ;/测试应答信号/发送读出字节的地址/测试应答信号启用总线Write8Bit(ReadDviceAddress);发送器件的地址TestAckQ;ch=Read8Bit();NoAck();StopO;retum(ch);/测试应答信号读8位数据无应答信号停止总线/返回读出数据unsigned char hexl6=0 xC050 xF950 xA450 xB050

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服