微机式医学仪器设计实验教材实验.docx
《微机式医学仪器设计实验教材实验.docx》由会员分享,可在线阅读,更多相关《微机式医学仪器设计实验教材实验.docx(20页珍藏版)》请在冰豆网上搜索。
微机式医学仪器设计实验教材实验
实验四生物信号的数据采集
一、实验要求
利用8位串行控制模数转换器0832做转换器,采用实验板上的电位器,或其它信号(如心电仿真仪信号)提供模拟量输入,编制程序,将模拟量转换成二进制数字量。
存放在区,以供查阅。
二、实验目的
1、熟悉串行外围设备接口总线技术的结构和原理。
2、掌握8位串行控制模数转换器0832的转换性能及编程。
3、掌握0832与80C51单片机的接口方法。
4、通过实验了解如何使用单片机进行数据采集。
三、实验设备
1PC机一台
2实验面包板一个
380C51仿真器一套
4元件0832一片
4导线若干
四、实验说明
一个微处理器系统中除了作为核心部件的微处理器外,多少要使用一些外围设备(通常被简称为“外设”)。
微处理器外设之间的连接方式基本上可以分为并行和串行2大类,也就是通过并行或串行接口连接。
并行接口设备使用了多根数据线,一次同时可以传递多个的数据,所以传递速度较快,单器件之间的连线复杂。
而串行接口设备仅使用了一根数据线,每次只能传递一个的数据,所以传递速度较慢,但由于使用串行接口的系统中器件之间的连线比较简单,在微型化的系统中倍受重视。
随着器件时钟速度的不断提高,串行接口的数据交换率同样可以做得很高。
另外基于异步串行接口电路的技术的器件因其相当高的效率,在系统中被广泛采用。
(1)总线介绍
串行外围设备接口()总线技术是公司推出的一种同步串行接口。
总线是一种三线制同步式串行总线,其物理结构是相当典型的。
因其硬件配备(在各种串行接口中)较为“完整”,所以,与有关的软件就相对简单,使有更多的时间处理其他事务。
它基本上由3根连线构成,即:
,,,故称为三线制串行总线。
除了这3条基本信号线以外,当系统使用多个器件时,为区别各个器件,往往还要加上一条片选信号线“”。
使用了信号后,所有的器件可以使用公共的,,信号,而只有有效的芯片才被主控器件操纵。
各信号线的意义为:
信号符号
信号名称
信号意义
数据输入线
外设的数据输入端,其电平表示当前输入的数据
数据输出线
外设的数据输出端,其电平表示当前输出的数据
时钟信号
主控器件提供的同步时钟,以保证数据的正确
片选信号
用来选通所操纵的器件
除了上述引线之外,由于各种外设控制功能的不同,采用接口,有时还要添加一些辅助的控制线,例如复位信号、中断信号等。
(2)实际器件0832
实际的器件品种繁多,本次实验使用的0832是一种基于接口的双路转换器。
该器件的详细资料参见参考文献[1]和文献[2]
0832是一种2通道逐次逼近似方式的转换器。
基本性能如下:
☐8位分辨率
☐可以“满量程”工作或使用5V基准电压
☐单通道或多路器选择的双通道,可单端或差分输入选择
☐当时钟频率为250时,转换时间为32μs
☐总非调整误差为±1
0832的引脚及其功能:
实验用的0832芯片为8脚的“双列直插”()式封装。
其引线方式参见下图。
各引脚的意义参见下表:
序号
引脚名称
意义
1
片选信号。
当该信号为高电平时,芯片未被选中,所有信号引线均为高阻态。
芯片的任何功能必须当该信号为低电平时方能实现。
2
0
模拟通道0的输入端。
可以作为独立的输入通道使用,也可以由程序控制,与1配合实现差分输入方式。
3
1
模拟通道1的输入端。
可以作为独立的输入通道使用,也可以由程序控制,与0配合实现差分输入方式。
4
地线。
5
数据输入端。
来自主控器件()的控制命令由此输入。
6
数据输出端。
转换结果由此输出。
7
时钟信号。
8
电源/参考电压输入端。
0832的动作时序:
0832的动作时序见下图。
图中可见0832的全部动作过程。
应当注意以下要点:
1.任何有效操作均必须在为低电平时才能实现。
所以,开始对0832作任何操作都必须首先将由高电平置为低电平,一次完整的操作结束后,应当及时地将置为高电平;
2.时钟信号是由主控器件()主动提供的,它控制了转换的节拍;
3.一个完整的转换过程分2个基本步骤:
A.由向器件发出控制命令;B.从器件读出转换后的数据;
4.控制命令由通过线向器件发出,包括3个。
第1个为启动位,后2个为配置位;
5.2个的配置位的名称为和,共同决定了器件的输入性质(参见附表);
6.信号是由操纵下“人为制造”出高低电平变化而形成的。
每当需要向器件写入命令时,应当首先将所需要的数据加到脚上,然后让由低电平向高电平变化(上升沿),这时器件会自动保持上的数据,之后,应当将恢复到低电平,以便下一个节拍的操作;
7.由器件中读出数据时有些不同,此时应当首先将置为高电平,然后,再将由高电平置为低电平,在由高电平向低电平变化的“下降沿”后,器件的端会出现有效的数据信号。
可以在此时检测端的状态,读出有效的数据;
8.命令发送之后,便可以开始读出转换结果,事实上,器件内部的逐次近似转换过程是在的控制下一拍、一拍地进行,每一拍完成一个的转换,转换的结果同时就出现在上,这就是所谓的“外部时钟方式”。
特点是简单,但是对于外部时钟的“占空比”有较严格的控制,否则精度将受到影响——有些串行器件内部自己配备了时钟系统,无须的信号,而是利用自身的时钟系统完成转换,这样的器件精度比较有保障。
使用这种器件时,在启动器件开始转换后,应当等待“转换完成()”信号,当出现后,才开始读取数据;
9.数据读出时,器件首先以“高位在前”()方式输出数据,然后再以“低位在前”()方式输出数据。
事实上,应用系统的设计人员可以根据自己的需要选择适当的方式读取数据,如果只需要方式,则启动转换后只需要8个就可以完成全部操作,这时,从图中的第12个后面的操作可以不必进行;
10.全部操作完成后应当将置为高电平。
使用0832需要注意:
0832要求在转换数据时占空比为4060%,否则会导致转换结果不正确,可由单片机的一根口线驱动,用软件控制脉冲的频率和占空比。
0832的模拟输入信号的的功能比较齐备,可以通过控制命令灵活地配置为差分或单端方式。
即,2个输入通道0和1可以作为一对差分输入的互补信号线,也可以配置为各自独立的单端输入信号线。
请注意以下要点:
1、配置命令由信号和2个组成,排列顺序是在前,在后,2个控制组合的意义参见附表;
2、差分输入方式是指一对大小相同方向相反的输入方式,它需要2个输入端,而且这2个输入端有极性之分;
3、单端输入实际上也需要2个输入端,一个是信号端,另一个是参考端,即所谓的“地”。
但是应当注意,地线作为参考端被假定为稳定不变的,输入信号完全由输入端上的电压变化而决定;
4、0832配置为差分输入方式时只能组成一路输入;配置为单端输入方式时,可以提供2路独立的输入。
0832输入信号地址控制逻辑表
地址选择
通道号
操作意义
0
1
L
L
H
H
L
H
L
H
+
–
+
–
+
+
0为正极性,1为负极性的差分输入方式
0为负极性,1为正极性的差分输入方式
选择0的单极性,单通道方式
选择1的单极性,单通道方式
H=高电平,L=低电平,
–+=所选择的输入端的终端极性
五、实验电路及连线
0832与51系列微处理器的连接相当简单,具体的参考电路参见下图:
实验中,我们采用选择0的单极性,单通道方式。
因此,1端应接地,0端为输入电压。
我们采用通过可调电位器的方法改变输入电压,以观察转换结果。
配置命令由信号和2个组成,在本实验中应设置为:
=1;0
六、软件流程及编程
1、转换的软件流程图
图中绘出了转换的基本过程。
必须说明,这个流程图并不是最优化的,而仅仅表现了转换的主要步骤。
流程图的右侧绘出了每个步骤相应的注释。
图中使用了子程序,该子程序的流程图附在本小节的后部。
这里应当注意的是,子程序中使用了2个延时子程序,1和2,其目的是为了调整时钟信号的频率和占空比,实际的延时子程序可以用不同长度的循环来实现,或者简单地插入若干个来解决。
具体的延时长度应当视实际需要而定。
延时时间的确定原则在于使得信号处于高电平和低电平的时段基本相等,而且必须考虑到子程序返回后,程序进行其它操作时处于低电平的时段长度。
2、转换程序:
(见源程序文件0832)
:
P1.4;0,选通器件
P1.11,置启动条件
;发出一个时钟
P1.11,送控制命令的第1个
;发出一个时钟
P1.10,送控制命令的第2个
A,#00H;设存放转换结果的寄存器A初值
R0,#08H;读8位
:
;发出一个时钟
C,P1.0;由读出一个,检测的状态
A;将读出的用于字节输出到指定的,选通器件
R0,;读完8次了吗?
未读完,继续
P1.41.读完,放弃对于器件的控制
$
入口
:
P1.21,发出时钟的高电平
;适当延时片刻
P1.20,发出时钟的低电平
;适当延时片刻
;查指令表可知指令需用1个机器周期,在12晶振时,一个机器周期时间长度为12/(12)=1
;所以该段延时程序执行时间为:
2*12
;因此,若取的时钟占空比为50%,则高低电平延时时间相同,即总共的时钟周期为:
2*24,
;即时钟频率为1/(4)=250
;同学们可以编写两个不同的延时程序,实现不同的时钟频率和占空比,
;但是要注意必须在10600之间,占空比必须在4060%之间.
参考文献
[1]武汉力源电子股份有限公司.8位串行控制模数转换器产品资料.1998.6武汉
[2].0831C,0831I,0832C,0832I8.1996,
七、实验思考题
1单步执行参考程序,观察记录实验结果:
0V,1V,2V,3V,4V,5V时,转换的数据。
2转换数据的分辨率?
3转换数据的时间(1个字节)?
4修改完善参考程序,实现定时采样的功能。
查看记录、空间的数据,实现数据的采集。
实验五生物信号数据通讯与存储
一、实验要求
本实验利用24C16对单片机进行外部数据存储器的扩展,使用8051单片机模拟I2C总线实现串行E2的读写。
将单片机内部30H开始的16个字节的数据写到外部数据区,然后再将外部数据区的16个字节的内容读到内部40H开始的单元中,以检验是否将数据正确的写到外部存储器。
二、实验目的
5、熟悉I2C串行数据总线技术的结构和原理。
6、掌握24C系列E2接口的转换性能及编程。
7、掌握24C系列与80C51单片机的接口方法。
8、通过实验了解如何使用具有I2C总线接口功能的串行E2来扩展单片机的外部数据存储区。
三、实验设备
1PC机一台
2实验面包板一个
380C51仿真器一套
4元件:
24C161片
5导线若干
四、实验说明
I2C是一种新的芯片间的通讯方式,由开发和推广。
I2C通讯采用两条线进行通讯,一条数据线,一条时钟线,可进行多器件通讯。
总线上的每个器件都有自己的地址。
数据传送是双向的,总线支持多主机,8051上I2C总线的接口为P0端口的两根线,有专门的特殊功能寄存器来控制总线的工作和执行传输协议。
而在单片机系统中广泛使用E2作为数据存储器,24C系列串行E2是具有I2C总线接口功能的数据存储器。
本实验介绍了I2C总线及24C系列串行E2,给出了8051单片机与串行E2通讯的硬软件实现方法和实用的读/写子程序。
1、 I2C总线简介
I2C总线是一种双线串行数据总线,具有多端控制能力,由串行数据()线和串行时钟()线,在与被控与之间进行数据双向传输,最高传输率为100千比特/秒。
线与线均为双向线,经电阻接+5伏,当总线空闲时,两线为高电平,当I2C总线有所挂准备发送数据时,把集电极电压拉低,从而使与之相连的线电压降低,占据了线发送数据。
在传送数据过程,有三种信号出现,分别是:
·开始信号。
线为高电平,线由高电平变低电平,视为开始传送数据。
·结束信号。
线为高电平,线由低电平变高电平,视为结束传送数据。
·应答信号。
接收数据的收到期1字节(8比特)数据后,向发送数据的发出低电平脉冲信号,视为已收到信号。
在I2C总线上传送的一个数据字节由八位组成。
总线对每次传送的字节数没有限制,但每个字节后必须跟一位应答位。
数据传送首先传送最高位(),数据传送按图1所示格式进行。
首先由主机发出启动信号“S”(在高电平期间由高电平跳变为低电平),然后由主机发送一个字节的数据。
启动信号后的第一个字节数据具有特殊含义:
高七位是从机的地址,第八位是传送方向位,0表示主机发送数据(写),1表示主机接收数据(读)。
被寻址到的从机设备按传送方向位设置为对应工作方式。
标准I2C总线的设备都有一个七位地址,所有连接在I2C总线上的设备都接收启动信号后的第一个字节,并将接收到的地址与自己的地址进行比较,如果地址相符则为主机要寻访的从机,应在第九位答时钟脉冲时向线送出低电平作为应答。
除了第一字节是通用呼叫地址或十位从机地址之外,第二字节开始即数据字节。
数据传送完毕,由主机发出停止信号“P”(在高电平期间由低电平跳变为高电平)。
2、 24C系列串行E2
24C系列串行E2具有I2C总线接口功能,功耗小,宽电源电压(根据不同型号2.5V~6.0V),工作电流约为3,静态电流随电源电压不同为30μA~110μA,存储容量见表1。
(1)24C系列E2接口及地址选择
由于I2C总线可挂接多个串行接口器件,在I2C总线中每个器件应有唯一的器件地址,按I2C总线规则,器件地址为7位数据(即一个I2C总线系统中理论上可挂接128个不同地址的器件),它和1位数据方向位构成一个器件寻址字节,最低位D0为方向位(读/写)。
器件寻址字节中的最高4位(D7~D4)为器件型号地址,不同的I2C总线接口器件的型号地址是厂家给定的,如24C系列E2的型号地址皆为1010,器件地址中的低3位为引脚地址A2A1A0,对应器件寻址字节中的D3、D2、D1位,在硬件设计时由连接的引脚电平给定。
对于E2的片内地址,容量小于256字节的芯片(24C01/02),8位片内寻址(A0~A7)即可满足要求。
然而对于容量大于256字节的芯片,则8位片内寻址范围不够,如24C16,相应的寻址位数应为11位(211=2048)。
若以256字节为1页,则多于8位的寻址视为页面寻址。
在24C系列中对页面寻址位采取占用器件引脚地址(A2、A1、A0)的办法,如24C16将A2、A1、A0作为页地址。
凡在系统中引脚地址用作页地址后,该引脚在电路中不得使用,作悬空处理。
24C系列串行E2的器件地址寻址字节如表1所示,表中P0P1P2表示页面寻址位。
(2)24C系列E2读写操作
对24C系列E2的读写操作完全遵守I2C总线的主收从发和主发从收的规则。
连续写操作:
连续写操作是对E2连续装载n个字节数据的写入操作,n随型号不同而不同,一次可装载字节数见表1。
线上连续写操作数据状态如图2。
24C系列片内地址在接收到每一个数据字节地址后自动加1,故装载一页以内规定数据字节时,只须输入首地址,若装载字节多于规定的最多字节数,数据地址将“上卷”,前面的数据被覆盖。
连续读操作:
连续读操作时为了指定首地址,需要两个伪字节写来给定器件地址和片内地址,重复一次启动信号和器件地址(读),就可读出该地址的数据。
由于伪字节写中并未执行写操作,地址没有加1。
以后每读取一个字节,地址自动加1。
在读操作中接收器接收到最后一个数据字节后不返回肯定应答(保持高电平)随后发停止信号。
连续读操作上数据状态如图3。
五、8051单片机与24C系列E2通讯的硬软件实现
(1)硬件电路
图4是用8051P1口模拟I2C总线与E2连接电路图(以24C16为例),由于24C16是漏极开路,图中R1、R2为上拉电阻(5.1k)。
A0~A2地址引脚、测试脚均悬空。
(2)软件实现
由前述分析和图4的硬件电路,我们编制了E2的读写子程序。
两者的主要区别在于读子程序需发器件地址(写)和片内地址作为伪字节,之后再发一次开始信号和器件地址(读命令)。
读写程序分别见:
I2I2
写程序:
I2
;将51单片机内部区30H开始的16个字节写到E20M的第0页中00H单元开始的区域
;写串行E2子程序
;(R3)=器件地址1010p2p1p0=1010***0
;(R4)=片内字节地址A7A6A5A4A3A2A1A0=********
;(R1)=欲写数据存放地址指针8051区地址0~255
;(R7)=连续写字节数n224C16连续写字节数n<=16
R3,#10100000B;器件寻址(写),选择向24c16第0页写数据
R4,#00000000B;片内地址为00H
R1,#30H;8051区地址30H
R7,#16;24C16连续写字节数n<=16
:
P1,#0
P1.0;发开始信号(高电平变为低电平)
A,R3;送器件地址
A,R4;送片内字节地址
:
A,1
;调发送单字节子程序
R1;8051区地址
R7,;连续写n个字节
P1.0置0,准备送停止信号
;延时以满足传输速率要求
P1.1;发停止信号
P1.0;电平变高,写停止位
;结束写数据,转读数据程序
;写一个字节
:
R008H;发送单字节子程序
:
P1.1;产生低电平
A;从高位到低位发送,左移到进位标志中
P1.0,C
P1.1;产生高电平,形成写数据脉冲
R0,;循环8次送8个
P1.1
P1.1;产生应答脉冲
:
C,P1.0;读应答信号
;判应答到否,未到则等待
P1.1;应达到,使电平变低,准备下一字节数据的发送
:
:
读程序:
I2
;将E20M的第0页中00H单元开始的16个字节读到51单片机内部区40H开始的区域
;读串行E2子程序
;(R1)=欲读数据存放地址指针8051区地址0~255
;(R3)=器件地址1010p2p1p0=1010***0和1010p2p1p0=1010***1分别送一次
;(R4)=片内字节地址A7A6A5A4A3A2A1A0=********
;(R7)=连续读字节数24C16连续读字节数n<=16
:
R3,#10100000B;器件寻址(写),选择24c16第0页
R4,#00000000B;片内地址为00H
R1,#40H;8051区地址40H
R7,#16;24C16连续写字节数n<=16
:
P10
P1.0;发开始信号
A3;送器件地址(写)
;调发送单字节子程序
4;送片内字节地址
P10
P1.0;再发开始信号
;下面这俩句使10100000的第0位变为1,表示:
器件寻址(读),选择从24c16第0页读数据.
;等同于命令:
R3,#10100001B和A,R3
3;再送器件地址(读)
.0;发读命令
:
1
R1
R7
P1.0
P1.1
P1.0;送停止信号
;写一个字节
:
R008H;发送单字节子程序
:
P1.1;产生低电平
A;从高位到低位发送,左移到进位标志中
P1.0,C
P1.1;产生高电平,形成写数据脉冲
R0,;循环8次送8个
P1.1
P1.1;产生应答脉冲
:
C,P1.0;读应答信号
;判应答到否,未到则等待
P1.1;应达到,使电平变低,准备下一字节数据的发送
:
;读一个字节
:
R008H;接受单字节子程序
2:
P1.1
C,P1.0
A
P1.1
R0,2
R7,#01H,
P1.0;若是最后一个字节置1,不置响应信号,保持高电平,准备发停止信号
:
P1.0;否则置0,置响应信号
:
P1.1
P1.1
P1.0;应答毕置1(由于8051不能自动发起应答信号,需要人为地使p1.0=1)
:
程序中多处调用了子程序(仅两条指令),这是为了满足I2C总线上数据传送速率的要求,只有当数据线上的数据稳定下来之后才能进行读写(即线发出正脉冲)。
另外,在读最后一数据字节时,置应答信号为“1”,表示读操作即将完成。
总结:
在仪器中使用E2保存数据,这是仪器具有校准、标定功能的基本条件。
8051单片机与串行E2的结合满足了这一要求,这种方法电路简单、编程方便。
E2读写数据安全可靠,保证了系统运行过程中数据的稳定。
六、实验思考题
1程序调试时,怎样查找硬件、软件故障?
2连续执行写程序和读程序,查看记录、空间的数据,实现数据的存储和读取。
3观察记录,的波形,分析工作时序。