实验4 生物信号的数据采集.docx

上传人:b****6 文档编号:8259008 上传时间:2023-01-30 格式:DOCX 页数:18 大小:189.40KB
下载 相关 举报
实验4 生物信号的数据采集.docx_第1页
第1页 / 共18页
实验4 生物信号的数据采集.docx_第2页
第2页 / 共18页
实验4 生物信号的数据采集.docx_第3页
第3页 / 共18页
实验4 生物信号的数据采集.docx_第4页
第4页 / 共18页
实验4 生物信号的数据采集.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

实验4 生物信号的数据采集.docx

《实验4 生物信号的数据采集.docx》由会员分享,可在线阅读,更多相关《实验4 生物信号的数据采集.docx(18页珍藏版)》请在冰豆网上搜索。

实验4 生物信号的数据采集.docx

实验4生物信号的数据采集

实验四生物信号的数据采集

一、实验要求

利用8位串行控制模数转换器TLC0832做A/D转换器,采用实验板上的电位器,或其它信号(如心电仿真仪信号)提供模拟量输入,编制程序,将模拟量转换成二进制数字量。

存放在RAM区,以供查阅。

二、实验目的

1、熟悉串行外围设备接口SPI总线技术的结构和原理。

2、掌握8位串行控制模数转换器TLC0832的转换性能及编程。

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

4、通过实验了解如何使用单片机进行数据采集。

三、实验设备

 1PC机一台

 2实验面包板一个

 380C51仿真器一套

4元件:

TLC0832一片

4导线若干

四、实验说明

一个微处理器系统中除了作为核心部件的微处理器外,多少要使用一些外围设备(通常被简称为“外设”)。

微处理器外设之间的连接方式基本上可以分为并行和串行2大类,也就是通过并行或串行接口连接。

并行接口设备使用了多根数据线,一次同时可以传递多个BIT的数据,所以传递速度较快,单器件之间的连线复杂。

而串行接口设备仅使用了一根数据线,每次只能传递一个BIT的数据,所以传递速度较慢,但由于使用串行接口的系统中器件之间的连线比较简单,在微型化的系统中倍受重视。

随着器件时钟速度的不断提高,串行接口的数据交换率同样可以做得很高。

另外基于异步串行接口电路的技术的器件因其相当高的效率,在DSP系统中被广泛采用。

(1)SPI总线介绍

串行外围设备接口SPI(serialperipheralinterface)总线技术是Motorola公司推出的一种同步串行接口。

SPI总线是一种三线制同步式串行总线,其物理结构是相当典型的。

因其硬件配备(在各种串行接口中)较为“完整”,所以,与SPI有关的软件就相对简单,使CPU有更多的时间处理其他事务。

它基本上由3根连线构成,即:

DI,DO,CLK,故称为三线制串行总线。

除了这3条基本信号线以外,当系统使用多个SPI器件时,为区别各个器件,往往还要加上一条片选信号线“/CS”。

使用了/CS信号后,所有的SPI器件可以使用公共的DI,DO,CLK信号,而只有/CS有效的芯片才被主控器件操纵。

各信号线的意义为:

信号符号

信号名称

信号意义

DI

数据输入线

外设的数据输入端,其电平表示当前输入的数据

DO

数据输出线

外设的数据输出端,其电平表示当前输出的数据

CLK

时钟信号

主控器件提供的同步时钟,以保证数据的正确

/CS

片选信号

用来选通所操纵的器件

除了上述引线之外,由于各种外设控制功能的不同,采用SPI接口,有时还要添加一些辅助的控制线,例如复位信号、中断信号等。

(2)实际SPI器件TLC0832

实际的SPI器件品种繁多,本次实验使用的TLC0832是一种基于SPI接口的双路A/D转换器。

该器件的详细资料参见参考文献[1]和文献[2]

TLC0832是一种2通道逐次逼近似方式的A/D转换器。

基本性能如下:

☐8位分辨率

☐可以“满量程”工作或使用5V基准电压

☐单通道或多路器选择的双通道,可单端或差分输入选择

☐当时钟频率为250kHz时,转换时间为32s

☐总非调整误差为1LSB

TLC0832的引脚及其功能:

实验用的TLC0832芯片为8脚的“双列直插”(DIP)式封装。

其引线方式参见下图。

各引脚的意义参见下表:

序号

引脚名称

意义

1

/CS

片选信号。

当该信号为高电平时,芯片未被选中,所有信号引线均为高阻态。

芯片的任何功能必须当该信号为低电平时方能实现。

2

CH0

模拟通道0的输入端。

可以作为独立的输入通道使用,也可以由程序控制,与CH1配合实现差分输入方式。

3

CH1

模拟通道1的输入端。

可以作为独立的输入通道使用,也可以由程序控制,与CH0配合实现差分输入方式。

4

GND

地线。

5

DI

数据输入端。

来自主控器件(CPU)的控制命令由此输入。

6

DO

数据输出端。

转换结果由此输出。

7

CLK

时钟信号。

8

VCC/REF

电源/参考电压输入端。

TLC0832的动作时序:

TLC0832的动作时序见下图。

图中可见TLC0832的全部动作过程。

应当注意以下要点:

1.任何有效操作均必须在/CS为低电平时才能实现。

所以,开始对TLC0832作任何操作都必须首先将/CS由高电平置为低电平,一次完整的操作结束后,应当及时地将/CS置为高电平;

2.时钟信号CLK是由主控器件(CPU)主动提供的,它控制了转换的节拍;

3.一个完整的转换过程分2个基本步骤:

A.由CPU向器件发出控制命令;B.CPU从器件读出转换后的数据;

4.控制命令由CPU通过DI线向器件发出,包括3个BIT。

第1个BIT为启动位,后2个BIT为配置位;

5.2个BIT的配置位的名称为SGL/DIF和ODD/EVEN,共同决定了器件的输入性质(参见附表);

6.CLK信号是由CPU操纵下“人为制造”出高低电平变化而形成的。

每当需要向器件写入命令时,应当首先将所需要的数据加到DI脚上,然后让CLK由低电平向高电平变化(上升沿),这时器件会自动保持DI上的数据,之后,应当将CLK恢复到低电平,以便下一个节拍的操作;

7.由器件中读出数据时有些不同,此时应当首先将CLK置为高电平,然后,再将CLK由高电平置为低电平,在由高电平向低电平变化的“下降沿”后,器件的DO端会出现有效的数据信号。

CPU可以在此时检测DO端的状态,读出有效的数据;

8.命令BIT发送之后,便可以开始读出转换结果,事实上,器件内部的逐次近似转换过程是在CLK的控制下一拍、一拍地进行,每一拍完成一个BIT的转换,转换的结果同时就出现在DO上,这就是所谓的“外部时钟方式”。

特点是简单,但是对于外部时钟的“占空比”有较严格的控制,否则精度将受到影响——有些串行A/D器件内部自己配备了时钟系统,无须CPU的CLK信号,而是利用自身的时钟系统完成转换,这样的器件精度比较有保障。

使用这种器件时,在启动器件开始转换后,CPU应当等待“转换完成(EOC)”信号,当EOC出现后,才开始读取数据;

9.数据读出时,器件首先以“高位在前”(MSB-First)方式输出数据,然后再以“低位在前”(LSB-First)方式输出数据。

事实上,应用系统的设计人员可以根据自己的需要选择适当的方式读取数据,如果只需要MSB-First方式,则启动转换后只需要8个CLK就可以完成全部操作,这时,从图中的第12个CLK后面的操作可以不必进行;

10.全部操作完成后应当将/CS置为高电平。

使用TLC0832需要注意:

TLC0832要求在转换数据时CLK占空比为40%~60%,否则会导致转换结果不正确,CLK可由单片机的一根I/O口线驱动,用软件控制脉冲的频率和占空比。

TLC0832的模拟输入信号的的功能比较齐备,可以通过控制命令灵活地配置为差分或单端方式。

即,2个输入通道CH0和CH1可以作为一对差分输入的互补信号线,也可以配置为各自独立的单端输入信号线。

请注意以下要点:

1、配置命令由信号SGL/DIF和ODD/EVEN2个BIT组成,排列顺序是SGL/DIF在前,ODD/EVEN在后,2个控制BIT组合的意义参见附表;

2、差分输入方式是指一对大小相同方向相反的输入方式,它需要2个输入端,而且这2个输入端有极性之分;

3、单端输入实际上也需要2个输入端,一个是信号端,另一个是参考端,即所谓的“地”。

但是应当注意,地线作为参考端被假定为稳定不变的,输入信号完全由输入端上的电压变化而决定;

4、TLC0832配置为差分输入方式时只能组成一路输入;配置为单端输入方式时,可以提供2路独立的输入。

TLC0832输入信号地址控制逻辑表

地址选择

通道号

操作意义

SGL/DIF

ODD/EVEN

CH0

CH1

L

L

H

H

L

H

L

H

+

+

+

+

CH0为正极性,CH1为负极性的差分输入方式

CH0为负极性,CH1为正极性的差分输入方式

选择CH0的单极性,单通道方式

选择CH1的单极性,单通道方式

H=高电平,L=低电平,

–or+=所选择的输入端的终端极性

五、实验电路及连线

 LC0832与51系列微处理器的连接相当简单,具体的参考电路参见下图:

实验中,我们采用选择CH0的单极性,单通道方式。

因此,CH1端应接地,CH0端为输入电压。

我们采用通过可调电位器的方法改变输入电压,以观察A/D转换结果。

配置命令由信号SGL/DIF和ODD/EVEN2个BIT组成,在本实验中应设置为:

SGL/DIF=1;ODD/EVEN=0

六、软件流程及编程

1、A/D转换的软件流程图

图中绘出了A/D转换的基本过程。

必须说明,这个流程图并不是最优化的,而仅仅表现了A/D转换的主要步骤。

流程图的右侧绘出了每个步骤相应的注释。

图中使用了sCLK子程序,该子程序的流程图附在本小节的后部。

这里应当注意的是,sCLK子程序中使用了2个延时子程序,DELAY1和DELAY2,其目的是为了调整时钟信号的频率和占空比,实际的延时子程序可以用不同长度的循环来实现,或者简单地插入若干个NOP来解决。

具体的延时长度应当视实际需要而定。

延时时间的确定原则在于使得CLK信号处于高电平和低电平的时段基本相等,而且必须考虑到sCLK子程序返回后,A/D程序进行其它操作时CLK处于低电平的时段长度。

2、A/D转换程序:

(见源程序文件TLC0832.ASM)

BEGIN:

CLRP1.4;/CS=0,选通器件

SETBP1.1;DI=1,置启动条件

CALLSCLK;发出一个时钟

SETBP1.1;DI=S/D=1,送控制命令的第1个BIT

CALLSCLK;发出一个时钟

CLRP1.1;DI=O/E=0,送控制命令的第2个BIT

MOVA,#00H;设存放转换结果的寄存器A初值

MOVR0,#08H;读8位BIT

GETDATA:

CALLSCLK;发出一个时钟

MOVC,P1.0;由DO读出一个BIT,检测DO的状态

RLCA;将读出的BIT用于字节输出到指定的BYTE,选通器件

DJNZR0,GETDATA;读完8次了吗?

未读完,继续

SETBP1.4;/CS=1.读完,放弃对于器件的控制

SJMP$

;SCLK入口

SCLK:

SETBP1.2;CLK=1,发出时钟的高电平

NOP;适当延时片刻

NOP

NOP

NOP

CLRP1.2;CLK=0,发出时钟的低电平

NOP;适当延时片刻

NOP

NOP

NOP

RET

END

;查指令表可知NOP指令需用1个机器周期,在12MHz晶振时,一个机器周期时间长度为12/(12MHZ)=1us

;所以该段延时程序执行时间为:

2*1us=2us

;因此,若取CLK的时钟占空比为50%,则高低电平延时时间相同,即总共的时钟周期为:

2*2us=4us,

;即CLK时钟频率为1/(4us)=250KHz

;同学们可以编写两个不同的延时程序,实现不同的CLK时钟频率和占空比,

;但是要注意CLK必须在10KHz~600KHz之间,占空比必须在40%~60%之间.

参考文献

[1]武汉力源电子股份有限公司.TLC0831C/I,TLC0832C/I8位串行控制模数转换器产品资料.1998.6武汉

[2]TexasInstrumentsIncorporated.DataSheetofTLC0831C,TLC0831I,TLC0832C,TLC0832I8-BITANALOG-TO-DIGITALCONVERTERSWITHSERIALCONTROL.APRIL1996,USA

 

七、实验思考题

1单步执行参考程序,观察记录实验结果:

Vi=0V,1V,2V,3V,4V,5V时,A/D转换的数据。

2A/D转换数据的分辨率?

3A/D转换数据的时间(1个字节)?

4修改完善参考程序,实现定时采样的功能。

查看记录DATA、CODE空间的数据,实现数据的采集。

实验五生物信号数据通讯与存储

一、实验要求

本实验利用AT24C16对单片机进行外部数据存储器的扩展,使用8051单片机模拟I2C总线实现串行E2PROM的读写。

将单片机内部RAM30H开始的16个字节的数据写到外部数据区,然后再将外部数据区的16个字节的内容读到内部RAM40H开始的单元中,以检验是否将数据正确的写到外部存储器。

二、实验目的

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

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

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

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

三、实验设备

 1PC机一台

 2实验面包板一个

 380C51仿真器一套

4元件:

AT24C161片

5导线若干

四、实验说明

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是用8051P1口模拟I2C总线与E2PROM连接电路图(以AT24C16为例),由于AT24C16是漏极开路,图中R1、R2为上拉电阻(5.1k)。

A0~A2地址引脚、TEST测试脚均悬空。

  

(2)软件实现

  由前述分析和图4的硬件电路,我们编制了E2PROM的读写子程序。

两者的主要区别在于读子程序需发器件地址(写)和片内地址作为伪字节,之后再发一次开始信号和器件地址(读命令)。

  读写程序分别见:

I2CREAD.ASMI2CWRITE.ASM

  写程序:

I2CWRITE.ASM

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

;写串行E2PROM子程序EEPW

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

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

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

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

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

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

MOVR1,#30H;8051RAM区地址30H

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

EEPW:

MOVP1,#0FFH

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

MOVA,R3;送器件地址

CALLSUBS

MOVA,R4;送片内字节地址

CALLSUBS

AGAIN:

MOVA,@R1

CALLSUBS;调发送单字节子程序

INCR1;8051RAM区地址

DJNZR7,AGAIN;连续写n个字节

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

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

SETBP1.1;发停止信号

CALLDELAY

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

SJMPFINISH;结束写数据,转读数据程序

;写一个字节

SUBS:

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

LOOP:

CLRP1.1;产生低电平

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

MOVP1.0,C

NOP

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

CALLDELAY

DJNZR0,LOOP;循环8次送8个bit

CLRP1.1

CALLDELAY

SETBP1.1;产生应答脉冲

REP:

MOVC,P1.0;读应答信号

JCREP;判应答到否,未到则等待

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

RET

DELAY:

NOP

NOP

RET

FINISH:

END

读程序:

I2CREAD.ASM

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

;读串行E2PROM子程序EEPR

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

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

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

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

READDATA:

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

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

MOVR1,#40H;8051RAM区地址40H

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

EEPR:

MOVP1,#0FFH

CLRP1.0;发开始信号

MOVA,R3;送器件地址(写)

CALLSUBS;调发送单字节子程序

MOVA,R4;送

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1