资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第9章 MCS-51单片机的其他接口,第9章 MCS-51单片机的其他接口,9.1 LCD与MCS-51接口,液晶显示器按其功能可分为三类:笔段式液晶显示器、字符点阵式液晶显示器和图形点阵式液晶显示器。,9.1.1 字符型点阵式LCD液晶显示器,有16字,1,行、16字,2,行、20字,2,行和40字,2,行等的字符液晶显示模块。这些LCM虽然显示字数各不相同,但是都具有相同的输入输出界面。本节将以16,2,字符型液晶显示模块RT-1602C为例,详细介绍字符型液晶显示模块的应用。,一字符型液晶显示模块RT-1602C的外观与引脚,RT-1602C采用标准的16脚接口,各引脚情况如下:,第1脚:VSS,电源地,第2脚:VDD,+5V电源,第3脚:VL,液晶显示偏压信号,第4脚:RS,数据/命令选择端,高电平时选择数据寄存器、低电平时选择指令寄存器。,第5脚:R/W,读/写选择端,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。,第6脚:E,端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。,第714脚:D0D7,为8位双向数据线。,第15脚:BLA,背光源正极,第16脚:BLK,背光源负极,二字符型液晶显示模块RT-1602C的内部结构,液晶显示模块RT-C1602C的内部结构可以分成三部份:一为LCD控制器,二为LCD驱动器,三为LCD显示装置,如图所示:,LCD,控制器,LCD,驱动器,LCD,显示装备,VSS,VDD,VO,VS,V/W,E,DB0DB7,控制器采用HD44780,驱动器采用HD44100。,HD44780集成电路的特点:,1、可选择57或510点字符。,2、HD44780不仅作为控制器而且还具有驱动4016点阵液晶像素的能力,,在外部加一HD44100外扩展多40路/列驱动,则可驱动162LCD。,3、HD44780内藏显示缓冲区DDRAM、字符发生存储器(ROM)及用户自定义的字符发生器CGRAM。,HD44780有80个字节的显示缓冲区,分两行,地址分别为00H27H,40H67H,它下实际显示位置的排列顺序跟LCD的型号有关,液晶显示模块RT-1602C的显示地址与实际显示位置的关系如图所示。,HD44780内藏的字符发生存储器(ROM)已经存储了160个不同的点阵字符图形,如图所示:,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。比如数字“1”的代码是00110001B(31H),又如大写的英文字母“A”的代码是01000001B(41H),可以看出英文字母的代码与ASCII编码相同。要显示“1”时,我们只需将ASCII码31H存入DDRAM指定位置,显示模块将在相应的位置把数字“1”的点阵字符图形显示出来,我们就能看到数字“1”了。,00,01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,27,40,41,42,43,44,45,46,47,48,49,4A,4B,4C,4D,4E,4F,50,67,LCD,16,字,2,行,1清屏命令,格式:,RS,R/W,D7,D6,D5,D4,D3,D2,D1,D0,0,0,0,0,0,0,0,0,0,1,功能:清除屏幕,将显示缓冲区DDRAM的内容全部写入空格(ASCII20H)。,光标复位,回到显示器的左上角。,地址计数器AC清零。,2光标复位命令,格式:,RS,R/W,D7,D6,D5,D4,D3,D2,D1,D0,0,0,0,0,0,0,0,0,1,0,功能:光标复位,回到显示器的左上角。,地址计数器AC清零。,显示缓冲区DDRAM的内容不变。,3输入方式设置命令,格式:,RS,R/W,D7,D6,D5,D4,D3,D2,D1,D0,0,0,0,0,0,0,0,1,I/D,S,功能:设定当写入一个字节后,光标的移动方向以及后面的内容是否移动。,当I/D=1时,光标从左向右移动;I/D=0时,光标从右向左移动。,当S=1时,内容移动,S=0时,内容不移动。,4显示开关控制命令,格式:,RS,R/W,D7,D6,D5,D4,D3,D2,D1,D0,0,0,0,0,0,0,1,D,C,B,功能:控制显示的开关,当D=1时显示,D=0时不显示。,控制光标开关,当C=1时光标显示,C=0时光标不显示。,控制字符是否闪烁,当B=1时字符闪烁,B=0时字符不闪烁。,5光标移位置命令,格式:,RS,R/W,D7,D6,D5,D4,D3,D2,D1,D0,0,0,0,0,0,1,S/C,R/L,*,*,功能:移动光标或整个显示字幕移位。,当S/C=1时整个显示字幕移位,当S/C=0时只光标移位。,当R/L=1时光标右移,R/L=0时光标左移。,6功能设置命令,格式:,RS,R/W,D7,D6,D5,D4,D3,D2,D1,D0,0,0,0,0,1,DL,N,F,*,*,功能:设置数据位数,当DL=1时数据位为8位,DL=0时数据位为4位。,设置显示行数,当N=1时双行显示,N=0时单行显示。,设置字形大小,当F=1时510点阵,F=0时为57点阵。,7设置字库CGRAM地址命令,格式:,RS,R/W,D7,D6,D5,D4,D3,D2,D1,D0,0,0,0,1,CGRAM的地址,功能:设置用户自定义CGRAM的地址,对用户自定义CGRAM访问时,要先设定CGRAM的地址,地址范畴063。,8显示缓冲区DDRAM地址设置命令,格式:,RS,R/W,D7,D6,D5,D4,D3,D2,D1,D0,0,0,1,DDRAM的地址,功能:设置当前显示缓冲区DDRAM的地址,对DDRAM访问时,要先设定DDRAM的地址,地址范畴0127。,9读忙标志及地址计数器AC命令,格式:,RS,R/W,D7,D6,D5,D4,D3,D2,D1,D0,0,1,BF,AC的值,功能:读忙标志及地址计数器AC,,当BF=1时则表示忙,这时不能接收命令和数据;BF=0时表示不忙。,低7位为读出的AC的地址,值为0127。,10写DDRAM或CGRAM命令,格式:,RS,R/W,D7,D6,D5,D4,D3,D2,D1,D0,1,0,写入的数据,功能:向DDRAM或CGRAM当前位置中写入数据。对DDRAM或CGRAM写入数据之前须设定DDRAM或CGRAM的地址。,11读DDRAM或CGRAM命令,格式:,RS,R/W,D7,D6,D5,D4,D3,D2,D1,D0,1,1,读出的数据,功能:从DDRAM或CGRAM当前位置中读邮数据。当DDRAM或CGRAM读出数据时,先须设定DDRAM或CGRAM的地址。,四LCD显示器的初始化,LCD使用之前须对它进行初始化,初始化可通过复位完成,也可在复位后完成,初始化过程如下:,1清屏。,2功能设置。,3开/关显示设置。,4输入方式设置。,9、12 LCD显示器与单片机的接口与应用,下图是LCD显示器与8051单片机的接口图,图中RT-1602C的数据线与8051的P1口相连,RS与8051的P2.0相连,R/W与8051的P2.1相连,E端与8051的P2.7相连。编程在LCD显示器的第一行、第一列开始显示“GOOD”,第二行、第6列开始显示“BYE”。,汇编语言程序:,RS BIT P2.0,RW BIT P2.1,E BIT P2.7,ORG 00H,AJMP START,ORG 50H,;主程序,START:MOV SP,#50H,ACALL INIT,MOV A,#10000000B ;写入显示缓冲区起始地址为第1行第1列。,ACALL WC51R,MOV A,“G”;第1行第1列显示字母“G”。,ACALL WC51DDR,MOV A,“O”;第1行第2列显示字母“O”。,ACALL WC51DDR,MOV A,“O”;第1行第3列显示字母“O”。,ACALL WC51DDR,MOV A,“D”;第1行第4列显示字母“D”。,ACALL WC51DDR,MOV A,#11000101B ;写入显示缓冲区起始地址为第2行第6列。,ACALL WC51R,MOV A,“B”;第2行第6列显示字母“B”。,ACALL WC51DDR,MOV A,“Y”;第2行第7列显示字母“Y”。,ACALL WC51DDR,MOV A,“E”;第2行第8列显示字母“E”。,ACALL WC51DDR,LOOP:AJMP LOOP,;初始化子程序,INIT:MOV A,#00000001H ;清屏,ACALL WC51R,MOV A,#00111000B ;使用8位数据,显示两行,使用5*7的字型。,LCALL WC51R,MOV A,#00001110B ;显示器开,光标开,字符不闪烁。,LCALL WC51R,MOV A,#00000110B ;字符不动,光标自动右移一格。,LCALL WC51R,RET,;检查忙子程序,F_BUSY:PUSH ACC ;保护现场,PUSH DPH,PUSH DPL,PUSH PSW,WAIT:CLR RS,SETB RW,CLR E,SETB E,MOV A,P1,CLR E,JB ACC.7,WAIT ;忙,等待,POP PSW ;不忙,恢复现场,POP DPL,POP DPH,POP ACC,ACALL DELAY,RET,;写入命令子程序。,WC51R:ACALL F_BUSY,CLR E,CLR RS,CLR RW,SETB E,MOV P1,ACC,CLR E,ACALL DELAY,RET,;写入数据子程序。,WC51DDR:ACALL F_BUSY,CLR E,SETB RS,CLR RW,SETB E,MOV P1,ACC,CLR E,ACALL DELAY,RET,;延时子程序。,DELAY:MOV R6,#5,D1:MOV R7,#248,DJNZ R7,$,DJNZ R6,D1,RET,END,C语言编程:,#include ,#define uchar unsigned char,sbit RS=P20;,sbit RW=P21;,sbit E=P27;,void delay(void);,void init(void);,void wc5r(uchar i);,void wc51ddr(uchar i);,void fbusy(void);,/主函数,void main(),SP=0 x50;,init();,wc51r(0 x80);/写入显示缓冲区起始地址为第1行第1列,wc51ddr(0 x44);/第1行第1列显示字母“G”,wc51ddr(0 x4f);/第1行第2列显示字母“O”,wc51ddr(0 x4f);/第1行第3列显示字母“O”,wc51ddr(0 x47);/第1行第4列显示字母“D”,wc51r(0 xc5);/写入显示缓冲区起始地址为第2行第6列,wc51ddr(0 x42);/第2行第6列显示字母“B”,wc51ddr(0 x59);/第2行第7列显示字母“Y”,wc51ddr(0 x45);/第2行第8列显示字母“E”,while(1);,/初始化函数,void init(),wc51r(0 x01);/清屏,wc51r(0 x38);/使用8位数据,显示两行,使用5*7的字型,wc51r(0 x0e);/显示器开,光标开,字符不闪烁,wc51r(0 x06);/字符不动,光标自动右移一格,/检查忙函数,void fbusy(),RS=0;RW=1;,E=1;E=0;,while(P1&0 x80)E=0;E=1;/忙,等待,delay();,/写命令函数,void wc51r(uchar j),fbusy();,E=0;RS=0;RW=0;,E=1;,P1=j;,E=0;,delay();,/写数据函数,void wc51ddr(uchar j),fbusy();,E=0;RS=1;RW=0;,E=1;,P1=j;,E=0;,delay();,/延时函数,void delay(),uchar y;,for(y=0;y0 xff;y+);,9.2 MCS-51单片机与I2C总线芯片接口,9.2.1 I2C总线简介,一I2C总线的主要特点,I2C总线是由PHILIPS公司开发一种简单、双向二线制同步串行总线。它只需要两根线即在连接于总线上的器件之间传送信息。这种总线的主要特点有:,1总线只有两根线,即串行时钟线(SCL)和串行数据线(SDA),这在设计中大大减少了硬件接口。,2每个连接到总线上的都有一个用于识别的器件地址,器件地址由芯片内部硬件电路和外部地址引脚同时决定,避免了片选线的连接方法,并建立简单的主从关系,每个器件既可以作为发送器,又可以作为接收器。,3同步时钟允许器件以不同的波特率进行通信。,4同步时钟可以作为停止或重新启动串行口发送的握手信号。,5串行的数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。,6连接到同一总线的集成电路数只受400pF的最大总线电容的限制。,二I2C总线的基本结构,三I2C总线信息传送,当I2C总线没有进行信息传送时,数据线(SDA)和时钟线(SCL)都为高电平时。当主控制器向某个器件传送信息时,首先应向总线送开始信号,然后才能传送信息,当信息传送结束时应送结束信号,开始信号和结束信号规定如下:,开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。,结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。,开始信号和结束信号之间传送的是信息,信息的字节数没有限制,但每个字节必须为8位,高位在前,低位在后。数据线SDA上每一位信息状态的改变只能发生在时钟线SCL为低电平的期间,因为SCL高电平的期间SDA状态的改变已经被用来表示开始信号和结束信号。每个字节后面必须接收一个应答信号(ACK),ACK是从控制器在接收到8位数据后向主控制器发出的特定的低电平脉冲,用以表示已收到数据。主控制器接收到应答信号(ACK)后,可根据实际情况作出是否继续传递信号的判断。若未收到ACK,则判断为从控制器出现故障。具体情况如图所示:,SDA,SCL,开始,信号,1,2,7,8,9,应答位,1,2,8,9,1,应答位,结束,信号,主控制器每次传送的信息的第一个字节必须是器件地址码,第二个字节为器件单元地址,用于实现选择所操作的器件的内部单元,从第三个字节开始为传送的数据。其中器件地址码格式如下:,D7,D6,D5,D4,D3,D2,D1,D0,器件类型码,片选,R/W,四I2C总线读、写操作,1当前地址读,该操作将从所选器件当前地址读,读的字节数不指定,格式如下:,S,控制码(R/W=1),A,数据1,A,数据2,A,P,2指定单元读,该操作将从所选器件指定地址读,读的字节数不指定,格式如下:,S,控制码,(R/W=0),A,器件单元,地址,A,S,控制码,(R/W=1),A,数据1,A,数据2,A,P,3指定单元写,该操作将从所选器件指定地址写,写的字节数不指定,格式如下:,S,控制码,(R/W=0),A,器件单元,地址,A,数据1,A,数据2,A,P,其中:S表示开始信号,A表示应答信号,P表示结束信号。,9.2.2 I2C总线EEPROM芯片与单片机接口,一串行EEPROM电路CAT24WCXX系列概述,CAT24WCXX系列是美国CATALYST公司出品的,包含1-256K位,支持I2C总线数据传送协议的串行CMOS EEPROM芯片,可用电擦除,可编程自定义写周期,自动擦除时间不超过10ms,典型时间为5ms。,CAT24WCXX系列包含CAT24WC01020408163264128256共8种芯片,容量分别为1、2、4、8、16、32、64、128、256KB。串行EEPROM一般具有两种写入方式,一种是字节写入方式,还有另一种页写入方式。允许在一个写周期内同时对1个字节到一页的若干字节的编程写入,一页的大小取决于芯片内页寄存器的大小。其中,CAT24WC01具有8字节数据的页面写能力,CAT24WC02040816具有16字节数据的页面写能力,CAT24WC3264具有32字节数据的页面写能力,CAT24WC128256具有64字节数据的页面写能力。,二CAT24WCXX的引脚,CAT24WC01/02/04/08/16/32/64、CAT24WC128、CAT24WC256管脚排列图分别为如图(1)、(2)、(3)所示:,其中:,SCL:串行时钟线。这是一个输入管脚,用于形成器件所有数据发送或接收的时钟。,SDA:串行数据/地址线。它是一个双向传输线,用于传送地址和所有数据的发送或接收。它是一个漏极开路端,因此要求接一个上拉电阻到Vcc端(速率为100KHz时电阻为10K,,,400KHz时为1K,)。对于一般的数据传输,仅在,SCL为低电平期间SDA才允许变化。SCL为高电平期间,留给开始信号(START)和停止信号(STOP)。,A0、A1、A2:器件地址输入端。这些输入端用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0(CAT24WC01除外)。,WP:写保护。如果WP管脚连接到VCC,所有的内容都被写保护(只能读)。当WP管脚连接到VSS或悬空,允许对器件进行正常的读/写操作。,VCC:电源线。,VSS:地线。,三CAT24WCXX的器件地址,型号,控制码,片选,读写,总线访问的器件,CAT24WC01,1010,A2 A1 A0,1/0,最多8个,CAT24WC02,1010,A2 A1 A0,1/0,最多8个,CAT24WC04,1010,A2 A1 a8,1/0,最多4个,CAT24WC08,1010,A2 a9 a8,1/0,最多2个,CAT24WC16,1010,a10 a9 a8,1/0,最多1个,CAT24WC32,1010,A2 A1 A0,1/0,最多8个,CAT24WC64,1010,A2 A1 A0,1/0,最多8个,CAT24WC128,1010,X X X,1/0,最多1个,CAT24WC256,1010,0 A1 A0,1/0,最多4个,四CAT24WCXX的写操作,1字节写,结束,应答信号,数据,数据,器件内单元地址,应答信号,应答信号,读写位,器件地址,开始,SDA线信号,2页写,应答信号,数据1,器件内单元地址,应答信号,应答信号,读写位,器件地址写,开始,SDA线信号,数据n,应答信号,结束,3应答查询,可以利用内部写周期时禁止数据输入这一特性。一旦主器件发送停止位指示主器件操作结束时,CAT24WCXX启动内部写周期,应答查询立即启动,包括发送一个起始信号和进行写操作的从器件地址。,4写保护,写保护操作特性可使用户避免由于不当操作而造成对存储区域内部数据的改写,当WP管脚接高电平时,整个寄存器区全部被保护起来而变为只可读取。,五CAT24WCXX的读操作,1当前地址读,SDA线信号,开始,读写位,应答信号,无应答信号,结束,数据,器件地址,2随机地址读,读写位,器件地址读,器件内单元地址,应答信号,应答信号,读写位,器件地址写,开始,SDA线信号,应答信号,结束,器件内单元地址,开始,应答信号,3顺序地址读,应答信号,数据1,应答信号,读写位,器件地址读,SDA线信号,数据2,应答信号,结束,数据n,无应答信号,六CAT24WCXX与单片机的接口与编程,下图是8051单片机与串行EEPROM芯片CAT24WCXX的接口电路。图中用的EEPROM芯片为CAT24WC04,其它芯片与单片机的连接与它相同。8051的P1.0、P1.1作为I2C总线与CAT24WC04的SDA和SCL相连,连接时注意I2C总线须通过电阻接电源。P1.3与WP相连。CAT24WC04的地址线A2、A1、A0直接接地。则片选编码为000,CAT24WC04的器件地址码的高7位为1010000。,8051,P1.0,P1.1,P1.2,VCC,SDA,SCL,WP,VSS,A0,A1,A2,CAT24W04,VCC,20K,20K,编程(略),9.3 MCS-51单片机与时钟日历芯片接口,9.3.1 并行日历时钟芯片DS12887与单片机接口,一DS12887主要功能,(1)内含一个锂电池,断电后运行十年以上不丢失数据。,(2)计秒,分,时,天,星期,日,月,年,并有闰年补偿功能。,(3)二进制数码或BCD码表示时间,日历和定闹。,(4)12小时或24小时制,12小时时钟模式带有PM和AM指示,有夏令时功能。,(5)Motorola和Intel总线时序选择。,(6)有128个字节RAM单元与软件接口,其中:14个字节作为时钟寄存器和控制寄存器,114字节为通用RAM,所有RAM单元数据都具有掉电保护功能。,(7)可编程方波信号输出。,(8)中断信号输出(IRQ)和总线兼容,定闹中断、周期性中断、时钟更新周期结束中断可分别由软件屏蔽,也可分别进行测试。,二DS12887基本原理及引脚说明,DS12887内部由振荡电路,分频电路,周期中断/方波选择电路,14字节时钟寄存器和控制寄存器,114字节用户非易失RAM,十进制/二进制累加器,总线接口电路,电源开关写保护单元和内部锂电池等部分组成。DS12887引脚如图所示:,Vcc:直流电源+5V电压。当Vcc电压在正常范围内时,数据可读写;当Vcc低于4.25V,读写被禁止,计时功能仍继续;当Vcc下降到3V以下时,RAM和计时器供电被切换到内部锂电池。,MOT(模式选择):MOT引脚接到Vcc时,选择MOTOROLA时序,当接到GND时,选择Intel时序。,SQW(方波输出信号):SQW引脚能从实时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器A编程改变。,AD0-AD7(双向地址/数据复用线):总线接口,可与Motorola微机系列和Intel微机系列接口。,ALE(地址锁存信号):在ALE的下降沿把AD0AD7输入的地址锁存入DS12887。,(数据读信号):低电平有效。,(数据写信号):低电平有效。,(片选信号):在访问DS12887的总线周期内,片选信号必须保持为低。,(中断请求信号):低电平有效,可作微处理的中断输入。没有中断的条件满足时,处于高阻态。线是漏极开路输入,要求外接上接电阻。,(复位信号):当该脚保持低电平时间大于200ms,保证DS12887有效复位。,三,内部寄存器,DS12887的内部有128个存储单元,其中:10字节的存放实时时钟时间、日历和定闹的RAM;4个字节的控制和状态特殊寄存器;114字节的带掉电保护的用户RAM。几乎所有的128个字节都可直接读写。,1时间、日历和定闹单元,时间、日历和定时闹钟通过写相应的存储单元字节设置或初始化,当前时间和日历信息通过读相应的存储单元字节来获取,其字节内容可以是二进制或BCD形式。时间可选择12小时制或24小时制,当选择12小时制时,小时字节的高位逻辑“1”代表PM,逻辑“0”代表AM。时间、日历和定闹字节是双缓冲的,总是可访问的。每秒钟这10个字节走时1秒,检查一次定时闹钟条件,如在更新时,读时间和日历可能引起错误。,地址,功能,数范围,二进制格式,BCD码格式,0,秒,059,003BH,0059H,1,秒闹钟,059,003BH,0059H,2,分,059,003BH,0059H,3,分闹钟,059,003BH,0059H,4,小时(12时制),112,010CH AM 818CH PM,010CH AM 818CH PM,小时(24时制),023,0017H,0023H,5,时闹钟(12时制),112,010CH AM 818CH PM,010CH AM 818CH PM,时闹钟(24时制),023,0017H,0023H,6,星期(星期天=1),17,0007H,0007H,7,日,131,011FH,0131H,8,月,112,010CH,0112H,9,年,099,0063H,0099H,2寄存器A,寄存器0AH的格式如下:,D7,D6,D5,D4,D3,D2,D1,D0,UIP,DV2,DV1,DV0,RS3,RS2,RS1,RS0,UIP:更新(UIP)位用来标志芯片是否即将进行更新。当UIP位为1时,更新即将开始,这时不准对时钟、日历和闹钟信息寄存器进行读/写操作;当它为0时,表示在至少44s内芯片不会更新,此时,时钟、日历和闹钟信息可以通过读写相应的字节获得和设置。,UIP位为只读位,并且不受复位信号(RESET)的影响。通过把寄存器B中的SET位设置为1,可以禁止更新并将UIP位清0。,DV0,DV1,DV2:这3位是用来开关晶体振荡器和复位分频器。,当DV0DV1DV2010时,晶体振荡器开启并且保持时钟运行;,当DV0DV1DV211X时,晶体振荡器开启,但分频器保持复位状态。,RS3,RS2,RS1,RS0:中断周期和SQW输出频率选择位。4位编码与中断周期和SQW输出频率的对应关系见下表:,RS3 RS2 RS1 RS0,中断周期,SQW输出频率,0000,-,-,0001,3.90625ms,256Hz,0010,7.8125ms,128 Hz,0011,122.070,s,8192 Hz,0100,244.141,s,4069 Hz,0101,488.281,s,2048 Hz,0110,976.562,s,1024 Hz,0111,1.953125ms,512 Hz,1000,3.90625 ms,256 Hz,1001,7.8125 ms,128 Hz,1010,15.625 ms,64 Hz,1011,31.25 ms,32 Hz,1100,62.5 ms,16 Hz,1101,125 ms,8 Hz,1110,250 ms,4 Hz,1111,500 ms,2 Hz,3寄存器B,寄存器0BH的格式如下:,D7,D6,D5,D4,D3,D2,D1,D0,SET,PIE,AIE,UIE,SQWE,DM,24/12,DSE,SET:当SET0,芯片更新正常进行;当SET1,芯片更新被禁止。SET位可读写,并不会受复位信号的影响。,PIE:当PIE0,禁止周期中断输出到 IRQ;当PIE1,允许周期中断输出到 IRQ.,AIE:当AIE0,禁止闹钟中断输出到IRQ;当AIE1,允许闹钟中断输出到 IRQ.,UIE:当UIE0,禁止更新结束中断输出到 IRQ;当UIE1,允许更新结束中断输出到IRQ。此位在复位或设置SET为高时清0.,SQWE:当SQWE0,SQW脚为低;当SQWE1,SQW输出设定频率的方波。,DM:DM0,BCD;DM1,二进制,此位不受复位信号影响。,24/12:此位为1,24时制;为0,12小时制,DSE:夏令时允许标志。在四月的第一个星期日的15959AM,时钟调到30000AM;在十月的最后一个星期日的15959AM,时钟调到10000AM。,4寄存器C,寄存器0CH的格式如下:,D7,D6,D5,D4,D3,D2,D1,D0,IRQF,PF,AF,UF,0,0,0,0,IRQF:当有以下情况中的一种或几种发生时,中断请求标志位(IRQF)置1;PFPIE1或AFAIE1或UFUIE1,既IRQFPFPIE+AFAIE+UFUIE,IRQF旦置1,IRQ脚输出低电平,送出中断请求。所有标志位在读寄存器C或复位后清0。,PF:周期中断标志。,AF:闹钟中断标志。,UF:更新中断标志。,第0位到第3位无用,不能写入,只能读出,且读出的值恒为0。,5寄存器D,寄存器0DH的格式如下:,D7,D6,D5,D4,D3,D2,D1,D0,VRT,0,0,0,0,0,0,0,VRT:当VRT0时表示内置电池能量耗尽,此时RAM中的数据的正确性就不能保证了。,第0位到第6位无用,只能读出,且读出的值恒为0。,6用户RAM,在DS12887中,114字节带掉电保护RAM不专用一任何特殊功能,它们可被处理器程序用作非易失内存,在更新周期也可访问,它的地址范围为0DH7FH。如果片选地址CS=0F000H,则DS12887内部128个存储单元的地址为0F000H0F07FH。,四DS12887与单片机的接口,下图是8051与DS12887的接口电路,DS12887的片选信号接P2.7,则DS12887的片内128个单元的地址可为7F00H7F7FH。,DS12887的处理过程为:,1寄存器B的SET位置1,芯片停止工作。,2时间、日历和定闹单元置初值。,3读寄存器C,以消除已有的中断标志。,4读寄存器D,使片内寄存器和RAM数据有效。,5寄存器B的SET位清0,启动DS12887开始工作。,DS12887的驱动程序(略),9.3.2 串行日历时钟芯片与单片机接口,一DS1302的主要性能指标,(1)DS1302实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力。,(2)内部含有31个字节静态RAM,可提供用户访问。,(3)采用串行数据传送方式,使得管脚数量最少,简单3 线接口。,(4)工作电压范围宽:2.05.5V。,(5)工作电流:2.0V时,小于300nA。,(6)时钟或RAM数据的读/写有两种传送方式:单字节传送和多字节传送方式。,(7)采用8脚DIP封装或SOIC封装。,(8)与TTL兼容,Vcc=5V。,(9)可选工业级温度范围:-40,C,+85,C,。,(10)具有涓流充电能力。,(11)采用主电源和备份电源双电源供应。,(12)备份电源可由电池或大容量电容实现。,二引脚功能,DS1302的引脚如图所示,其中:,X1、X2:32.768KHz晶振接入引脚。,GND:地。,:复位引脚,低电平有效。,I/O:数据输入/输出引脚,具有三态功能。,SCLK:串行时钟输入引脚。,Vcc1:工作电源引脚。,Vcc2:备用电源引脚。,三DS1302的寄存器及片内RAM,DS1302有一个控制寄存器、12个日历、时钟寄存器和31个RAM。,1控制寄存器,控制寄存器用于存放DS1302的控制命令字,DS1302的RST引脚回到高电平后写入的第一个字就为控制命令。它用于对DS1302读写过程进行控制,它的格式如下:,D7,D6,D5,D4,D3,D2,D1,D0,1,RAM/CK,A4,A3,A2,A1,A0,RD/W,其中:,D7:固定为1,D6:RAM/CK位,片内RAM或日历、时钟寄存器选择位。,D5D1:地址位,用于选择进行读写的日历、时钟寄存器或片内RAM。对日历、时钟寄存器或片内RAM的选择见表。,寄存器名称,D7,D6,D5,D4,D3,D2,D1,D0,1,RAM/CK,A4,A3,A2,A1,A0,R/W,秒寄存器,1,0,0,0,0,0,0,0或1,分寄存器,1,0,0,0,0,0,1,0或1,小时寄存器,1,0,0,0,0,1,0,0或1,日寄存器,1,0,0,0,0,1,1,0或1,月寄存器,1,0,0,0,1,0,0,0或1,星期寄存器,1,0,0,0,1,0,1,0或1,年寄存器,1,0,0,0,1,1,0,0或1,写保护寄存器,1,0,0,0,1,1,1,0或1,慢充电寄存器,1,0,0,1,0,0,0,0或1,时钟突发模式,1,0,1,1,1,1,1,0或1,RAM0,1,1,0,0,0,0,0,0或1,1,1,0或1,RAM30,1,1,1,1,1,1,0,0或1,RAM突发模式,1,1,1,1,1,1,1,0或1,2日历、时钟寄存器,DS1302共有12个寄存器,其中有7个与日历、时钟相关,存放的数据为BCD码形式。日历、时钟寄存器的格式如表。,寄存器名称,取值范围,D7,D6,D5,D4,D3,D2,D1,D0,秒寄存器,00,59,CH,秒的十位,秒的个位,分寄存器,00,59,0,分的十位,分的个位,小时寄存器,01,12或00,23,12/24,0,A/P,HR,小时的个位,日寄存器,01,31,0,0,日的十位,日的个位,月寄存器,01,12,0,0,0,1或0,月的个位,星期寄存器,01,07,0,0,0,0,星期几,年寄存器,01,99,年的十位,年的个位,写保护寄存器,WP,0,0,0,0,0,0,0,慢充电寄存器,TCS,TCS,TCS,TCS,DS,DS,RS,RS,时钟突发寄存器,说明:,(1)数据都以BCD码形式。,(2)小时寄存器的D7位为12小时制/24小时制的选择位,当为1时选12小时制,当为0时选24小时制。当12小时制时,D5位为1是上午,D5位为0是下午,D4为小时的十位。当24小时制时,D5、D4位为小时的十位。,(3)秒寄存器中的CH位为时钟暂停位,当为1时钟暂停,为0时钟开始启动。,(4)写保护寄存器中的WP为写保护位,当WP=1,写保护,当WP=0未写保护,当对日历、时钟寄存器或片内RAM进行写时WP应清零,当对日历、时钟寄存器或片内RAM进行读时WP一般置1。,(5)慢充电寄存器的TCS位为控制慢充电的选择,当它为1010才能使慢充电工作。DS为二极管选择位。DS为01选择一个二极管,DS为10选择二个二极管,DS为11或00充电器被禁止,与TCS无关。RS用于选择连接在VCC2与VCC1之间的电阻,RS为00,充电器被禁止,与TCS无关,电阻选择情况见表.,RS位,电阻器,阻值,00,无,无,01,R1,2K,10,R2,4K,11,R3,8K,3.片内RAM,DS1302片内有31个RAM单元,对片内RAM的操作有两种方式:单字节方式和多字节方式。当控制命令字为C0HFDH时为单字节读写方式,命令字中的D5D1用于选择对应的RAM单元,其中奇数为读操作,偶数为写操作。当控制命令字为FEH、FFH时为多字节操作(表9.5中的RAM突发模式),多字节操作可一次把所有的RAM单元内容进行读写。FEH为写操作,FFH为读操作。,DS1302通过RST引脚驱动输入输出过程,当置RST高电平启动输入输出过程,在SCLK时钟的控制下,首先把控制命令字写入DS1302的控制寄存器,其次根据写入的控制命令字,依次读写内部寄存器或片内RAM单元的数据,对于日历、时钟寄存器,根据控制命令字,一次可以读写一个日历、时钟寄存器,也可以一次读写8个字节,对所有的日历、时钟寄存器(表9.5中的时钟突发模式),写的控制命令字为0BEH,读的控制命令字为0BFH;对于片内RAM单元,根据控制命令字,一次可读写一个字节,一次也可读写31个字节。当数据读写完后,RST变为低电平结束输入输出过程。无论是命令字还是数据,一个字节传送时都是低位在前,高位在后,每一位的读写发生在时钟的上升沿。,4DS1302的输入输出过程,四、DS1302与单片机的接口,DS1302与单片机的连接仅需要3条线:时钟线SCLK、数据线I/O和复位线 RST。连接图如图。时钟线SCLK与P1.0相连,数据线I/O与P1.1相连,复位线 RST与P1.2相连。,VCC2,X1,X2,GND,VCC1,SCLK,I/O,RST,+5V,8051,P1.0,P1.1,P1.2,+5V,图中DS1302的驱动程序。(略),9.4 MCS-51单片机与数字温度传感器的接口,9.4.1 DS18B20简介,9.4.2 DS18B20的主要特性,(1)适应电压范围宽:3.05.5V,在寄生电源方式下可由数据线供电。,(2)在使用中不需要任何外围元件。,(3)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条信号线即可实现微处理器与DS18B20的双向通信。,(4)测温范围:-55+125,在-10+85时精度为0.5。,(5)编程
展开阅读全文