最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

实验八 心电信号数据的存储

来源:动视网 责编:小OO 时间:2025-10-01 02:03:59
文档

实验八 心电信号数据的存储

实验八心电信号数据的存储一、实验要求本实验利用AT24C16对单片机进行外部数据存储器的扩展,使用8051单片机模拟I2C总线实现串行E2PROM的读写。将单片机内部RAM30H开始的16个字节的数据写到外部数据区,然后再将外部数据区的16个字节的内容读到内部RAM40H开始的单元中,以检验是否将数据正确的写到外部存储器。二、实验目的1、1、   熟悉I2C串行数据总线技术的结构和原理。2、2、   掌握AT24C系列E2PROM接口的转换性能及编程。3、3、   掌握AT24C系列与80C5
推荐度:
导读实验八心电信号数据的存储一、实验要求本实验利用AT24C16对单片机进行外部数据存储器的扩展,使用8051单片机模拟I2C总线实现串行E2PROM的读写。将单片机内部RAM30H开始的16个字节的数据写到外部数据区,然后再将外部数据区的16个字节的内容读到内部RAM40H开始的单元中,以检验是否将数据正确的写到外部存储器。二、实验目的1、1、   熟悉I2C串行数据总线技术的结构和原理。2、2、   掌握AT24C系列E2PROM接口的转换性能及编程。3、3、   掌握AT24C系列与80C5
实验八      心电信号数据的存储

一、实验要求

 本实验利用AT24C16对单片机进行外部数据存储器的扩展,使用8051单片机模拟I2C总线实现串行E2PROM的读写。将单片机内部RAM 30H开始的16个字节的数据写到外部数据区,然后再将外部数据区的16个字节的内容读到内部RAM 40H开始的单元中,以检验是否将数据正确的写到外部存储器。

二、实验目的

1、1、    熟悉I2C串行数据总线技术的结构和原理。

2、2、    掌握AT24C系列 E2PROM接口的转换性能及编程。

3、3、    掌握AT24C系列与80C51单片机的接口方法。

4、4、    通过实验了解如何使用具有I2C总线接口功能的串行E2PROM来扩展单片机的外部数据存储区。

三、实验设备

  1  PC机                                            一台

  2  实验面包板                                        一个

  3  80C51仿真器                                      一套

44         元件:  AT24C16                                   1片

55         导线                                             若干

四、实验说明

    I2C 是一种新的芯片间的通讯方式,由PHILIPS 开发和推广。I2C通讯采用两条线进行通讯,一条数据线,一条时钟线,可进行多器件通讯。总线上的每个器件都有自己的地址。数据传送是双向的,总线支持多主机,8051上I2C总线的接口为P0 端口的两根线,有专门的特殊功能寄存器来控制总线的工作和执行传输协议。而在单片机系统中广泛使用E2PROM作为数据存储器,AT24C系列串行E2PROM是具有I2C总线接口功能的数据存储器。本实验介绍了I2C总线及AT24C系列串行E2PROM,给出了8051单片机与串行E2PROM通讯的硬软件实现方法和实用的读/写子程序。

1、 I2C总线简介

   I2C总线是一种双线串行数据总线,具有多端控制能力,由串行数据(SDA)线和串行时钟(SCL)线,在CPU与被控IC与IC之间进行数据双向传输,最高传输率为100千比特/秒。SDA线与SCL线均为双向I/O线,经电阻接+5伏,当总线空闲时,两线为高电平,当I2C总线有所挂IC准备发送数据时,把集电极电压拉低,从而使与之相连的SDA线电压降低,占据了SDA线发送数据。在传送数据过程,有三种信号出现,分别是: 

·开始信号。SCL线为高电平,SDA线由高电平变低电平,视为开始传送数据。 

·结束信号。SCL线为高电平,SDA线由低电平变高电平,视为结束传送数据。 

·应答信号。接收数据的IC收到期1字节(8比特)数据后,向发送数据的IC发出低电平脉冲信号,视为已收到信号。

在I2C总线上传送的一个数据字节由八位组成。总线对每次传送的字节数没有,但每个字节后必须跟一位应答位。数据传送首先传送最高位(MSB),数据传送按图1所示格式进行。首先由主机发出启动信号“S”(SDA在SCL高电平期间由高电平跳变为低电平),然后由主机发送一个字节的数据。启动信号后的第一个字节数据具有特殊含义:高七位是从机的地址,第八位是传送方向位,0表示主机发送数据(写),1表示主机接收数据(读)。被寻址到的从机设备按传送方向位设置为对应工作方式。标准I2C总线的设备都有一个七位地址,所有连接在I2C总线上的设备都接收启动信号后的第一个字节,并将接收到的地址与自己的地址进行比较,如果地址相符则为主机要寻访的从机,应在第九位答时钟脉冲时向SDA线送出低电平作为应答。除了第一字节是通用呼叫地址或十位从机地址之外,第二字节开始即数据字节。数据传送完毕,由主机发出停止信号“P”(SDA在SCL高电平期间由低电平跳变为高电平)。

2、 AT24C系列串行E2PROM

  AT24C系列串行E2PROM具有I2C总线接口功能,功耗小,宽电源电压(根据不同型号2.5V~6.0V),工作电流约为3mA,静态电流随电源电压不同为30μA~110μA,存储容量见表1。

  (1) AT24C系列 E2PROM接口及地址选择

  由于I2C总线可挂接多个串行接口器件,在I2C总线中每个器件应有唯一的器件地址,按I2C总线规则,器件地址为7位数据(即一个I2C总线系统中理论上可挂接128个不同地址的器件),它和1位数据方向位构成一个器件寻址字节,最低位D0为方向位(读/写)。器件寻址字节中的最高4位(D7~D4)为器件型号地址,不同的I2C总线接口器件的型号地址是厂家给定的,如AT24C系列E2PROM的型号地址皆为1010,器件地址中的低3位为引脚地址A2A1A0,对应器件寻址字节中的D3、D2、D1位,在硬件设计时由连接的引脚电平给定。

  对于E2PROM的片内地址,容量小于256字节的芯片(AT24C01/02),8位片内寻址(A0~A7)即可满足要求。然而对于容量大于256字节的芯片,则8位片内寻址范围不够,如AT24C16,相应的寻址位数应为11位(211=2048)。若以256字节为1页,则多于8位的寻址视为页面寻址。在AT24C系列中对页面寻址位采取占用器件引脚地址(A2、A1、A0)的办法,如AT24C16将A2、A1、A0作为页地址。凡在系统中引脚地址用作页地址后,该引脚在电路中不得使用,作悬空处理。AT24C系列串行E2PROM的器件地址寻址字节如表1所示,表中P0P1P2表示页面寻址位。

  (2) AT24C系列 E2PROM读写操作

  对AT24C系列 E2PROM的读写操作完全遵守I2C总线的主收从发和主发从收的规则。

  连续写操作:连续写操作是对E2PROM连续装载n个字节数据的写入操作,n随型号不同而不同,一次可装载字节数见表1。SDA线上连续写操作数据状态如图2。 

  AT24C系列片内地址在接收到每一个数据字节地址后自动加1,故装载一页以内规定数据字节时,只须输入首地址,若装载字节多于规定的最多字节数,数据地址将“上卷”,前面的数据被覆盖。

  连续读操作:连续读操作时为了指定首地址,需要两个伪字节写来给定器件地址和片内地址,重复一次启动信号和器件地址(读),就可读出该地址的数据。由于伪字节写中并未执行写操作,地址没有加1。以后每读取一个字节,地址自动加1。 在读操作中接收器接收到最后一个数据字节后不返回肯定应答(保持SDA高电平)随后发停止信号。连续读操作SDA上数据状态如图3。

五、8051单片机与AT24C系列 E2PROM通讯的硬软件实现

  (1) 硬件电路

  图4是用8051 P1口模拟I2C总线与E2PROM连接电路图(以AT24C16为例),由于AT24C16是漏极开路,图中R1、R2为上拉电阻(5.1k)。A0~A2地址引脚、TEST测试脚均悬空。

  (2) 软件实现

  由前述分析和图4的硬件电路,我们编制了E2PROM的读写子程序。两者的主要区别在于读子程序需发器件地址(写)和片内地址作为伪字节,之后再发一次开始信号和器件地址(读命令)。

  读写程序分别见: I2CREAD.ASM  I2CWRITE.ASM 

  写程序:  I2CWRITE.ASM

    ;将51单片机内部RAM区30H开始的16个字节写到E2PRPR0M的第0页中00H单元开始的区域

    ;写串行E2PROM子程序EEPW

    ; (R3)=器件地址                              1010 p2p1p0 R/W = 1010***0 

    ; (R4)=片内字节地址                      A7A6A5A4A3A2A1A0=********

    ; (R1)=欲写数据存放地址指针     8051RAM区地址0~255

    ; (R7)=连续写字节数n                    224C16连续写字节数n<=16

    MOV R3,  #10100000B                 ;器件寻址(写),选择向24c16第0页写数据

    MOV R4, #00000000B                 ;片内地址为00H        

    MOV R1, #30H                             ; 8051RAM区地址30H    

    MOV R7,  #16                               ;24C16连续写字节数n<=16

EEPW:

    MOV    P1, #0FFH

    CLR    P1.0        ;发开始信号( 高电平变为低电平)

    MOV    A,   R3        ;送器件地址

    CALL    SUBS

    MOV    A,  R4        ;送片内字节地址

    CALL    SUBS

AGAIN:

        MOV A,  @R1

        CALL SUBS        ;调发送单字节子程序

        INC    R1        ; 8051RAM区地址

        DJNZ     R7, AGAIN    ;连续写n个字节

        CLR  P1.0        ;SDA置0, 准备送停止信号

        CALL DELAY        ;延时以满足传输速率要求

        SETB    P1.1        ;发停止信号

        CALL   DELAY

        SETB   P1.0        ;电平变高,写停止位

        SJMP  FINISH        ;结束写数据,转读数据程序

          

    ;写一个字节

 SUBS: 

        MOV   R0,#08H    ;发送单字节子程序

 LOOP:

        CLR   P1.1        ;产生低电平

        RLC   A            ;从高位到低位发送,左移到进位标志中

        MOV   P1.0,   C

        NOP

        SETB   P1.1        ;产生高电平,形成写数据脉冲

        CALL  DELAY

        DJNZ   R0,    LOOP     ;循环8次送8个bit

        CLR   P1.1

        CALL  DELAY

        SETB   P1.1                    ;产生应答脉冲

REP:

        MOV    C,   P1.0        ;读应答信号

        JC    REP        ;判应答到否,未到则等待

        CLR      P1.1        ;应达到,使电平变低,准备下一字节数据的发送

        RET

DELAY:

    NOP

    NOP

    RET

FINISH:

END

 

读程序: I2CREAD.ASM

    ;将E2PRPR0M的第0页中00H单元开始的16个字节读到51单片机内部RAM区40H开始的区域

    ;读串行E2PROM子程序EEPR

    ;(R1)=欲读数据存放地址指针       8051RAM区地址0~255    

    ;(R3)=器件地址              1010 p2p1p0 R/W = 1010***0  和      1010 p2p1p0 R/W = 1010***1分别送一次    

    ;(R4)=片内字节地址          A7A6A5A4A3A2A1A0=********

    ;(R7)=连续读字节数        24C16连续读字节数n<=16

 READDATA:

    MOV R3,  #10100000B            ;器件寻址(写),选择24c16第0页

    MOV R4, #00000000B                 ;片内地址为00H        

    MOV R1, #40H                             ; 8051RAM区地址40H    

    MOV R7,  #16                               ;24C16连续写字节数n<=16

 EEPR: 

    MOV   P1,#0FFH

    CLR      P1.0        ;发开始信号

    MOV     A  ,R3        ;送器件地址(写)

    CALL   SUBS        ;调发送单字节子程序

    MOV   A,R4        ;送片内字节地址

    CALL  SUBS

    MOV  P1,#0FFH

    CLR   P1.0        ;再发开始信号

;下面这俩句使A=10100000 的第0位变为1,表示:器件寻址(读),选择从24c16第0页读数据. 

;等同于命令: MOV R3,  #10100001B  和   MOV A, R3    

    MOV  A,R3        ;再送器件地址(读)

    SETB  ACC.0        ;发读命令

    CALL  SUBS

MORE: 

    CALL  SUBR

    MOV  @R1,A

    INC   R1

DJNZ R7,MORE

CLR   P1.0

    CALL   DELAY

    SETB   P1.1

    CALL  DELAY

    SETB  P1.0        ;送停止信号

    SJMP  FINISH

;写一个字节        

SUBS: 

    MOV   R0,#08H        ;发送单字节子程序

LOOP:

    CLR   P1.1        ;产生低电平

    RLC   A            ;从高位到低位发送,左移到进位标志中

    MOV   P1.0,   C

    NOP

    SETB   P1.1        ;产生高电平,形成写数据脉冲

CALL  DELAY

    DJNZ   R0,    LOOP     ;循环8次送8个bit

    CLR   P1.1

    CALL  DELAY

    SETB   P1.1                    ;产生应答脉冲

REP:

    MOV    C,   P1.0        ;读应答信号

    JC    REP        ;判应答到否,未到则等待

    CLR      P1.1        ;应达到,使电平变低,准备下一字节数据的发送

    RET

DELAY:

NOP

NOP

RET

;读一个字节                

SUBR: 

MOV    R0,#08H        ;接受单字节子程序

LOOP2:

     SETB   P1.1

     CALL  DELAY

     MOV   C,  P1.0

     RLC    A

     CLR   P1.1

     CALL   DELAY

     DJNZ  R0,   LOOP2

     CJNE   R7,  #01H,  LOWLEVEL

     SETB    P1.0        ;若是最后一个字节置A=1,不置响应信号,保持高电平,准备发停止信号

 

     AJMP   SETOK

LOWLEVEL: 

    CLR     P1.0    ;否则置A=0,置响应信号

SETOK: 

    CALL   DELAY

    SETB   P1.1

    CALL  DELAY

    CLR   P1.1

    CALL   DELAY

    SETB      P1.0    ;应答毕,SDA置1(由于8051不能自动发起应答信号,需要人为地使p1.0=1)

    RET

FINISH:

END

    程序中多处调用了DELAY子程序(仅两条NOP指令),这是为了满足I2C总线上数据传送速率的要求,只有当SDA数据线上的数据稳定下来之后才能进行读写(即SCL线发出正脉冲)。另外,在读最后一数据字节时,置应答信号为“1”,表示读操作即将完成。

 

总结:

在仪器中使用E2PROM保存数据,这是仪器具有校准、标定功能的基本条件。8051单片机与串行E2PROM的结合满足了这一要求,这种方法电路简单、编程方便。E2PROM读写数据安全可靠,保证了系统运行过程中数据的稳定。

文档

实验八 心电信号数据的存储

实验八心电信号数据的存储一、实验要求本实验利用AT24C16对单片机进行外部数据存储器的扩展,使用8051单片机模拟I2C总线实现串行E2PROM的读写。将单片机内部RAM30H开始的16个字节的数据写到外部数据区,然后再将外部数据区的16个字节的内容读到内部RAM40H开始的单元中,以检验是否将数据正确的写到外部存储器。二、实验目的1、1、   熟悉I2C串行数据总线技术的结构和原理。2、2、   掌握AT24C系列E2PROM接口的转换性能及编程。3、3、   掌握AT24C系列与80C5
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top