实验4 生物信号的数据采集.docx
- 文档编号:8259008
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:18
- 大小:189.40KB
实验4 生物信号的数据采集.docx
《实验4 生物信号的数据采集.docx》由会员分享,可在线阅读,更多相关《实验4 生物信号的数据采集.docx(18页珍藏版)》请在冰豆网上搜索。
实验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;送
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验4 生物信号的数据采集 实验 生物 信号 数据 采集