数据采集系统课件.docx
《数据采集系统课件.docx》由会员分享,可在线阅读,更多相关《数据采集系统课件.docx(30页珍藏版)》请在冰豆网上搜索。
数据采集系统课件
课程设计说明书NO.1
数据采集系统的设计
1系统方案设计
1.1设计任务要求
设计一个数据采集系统。
其主要功能有:
可实现1-16通道单端模拟量输入,输入电压范围为0-10V,分辨率为12位。
并且实时显示通道号和相应的输入电压值。
要求:
完成软、硬件设计。
16路模拟量输入信号的控制,可通过多路开关来实现;A/D转换器要选择分辨率为12位,输入电压值要经过标度变换、转换为BCD码后送去显示。
1.2系统方案
系统硬件电路如图1:
AD574将0—10V模拟信号转换为00—FF数字信号并传送单片机,然后由单片机进行数据存储及数据处理,最终由LED显示器显示。
完成对模拟信号的采集。
图1
2硬件系统设计
2.1硬件系统设计原理
如图2所示,本系统中,以AT89S51单片机为运算和控制的核心,它具有4个8位并行的I/O端P0-P3,其中由P0口控制数码管显示,P1口控制信号输入。
16路模拟量采集由两个CD4051完成,A/D转换由AD574完成。
沈阳大学
课程设计说明书NO.2
图2
2.2硬件系统各个电路的设计
(1)2.2.1多路模拟开关电路设计
1、多路模拟开关的选取
目前采用CMOS工艺的多路开关应用最为广泛。
尽管模拟开关种类很多,但其功能基本相同,只是在通道数、开关电阻、漏电流、输入电压及方向切换等性能参数有所不同。
多路模拟开关主要有4选1、8选1、双4选1、双8选1和16选1等,它们之间除通道和外部管脚排列有些不同,其电路结构、电源组成及工作原理基本相同。
常用单端、双端八路模拟开关CD4051的引脚图如图3所示。
沈阳大学
课程设计说明书NO.3
图3
VDD为正电源,VEE为负电源,VSS为地,要求VDD+|VEE|≤18V。
用两个CD4051扩展成16通道的多路模拟开关如图4所示,16通道的多路模拟开关真值表见表1。
图4
沈阳大学
课程设计说明书NO.4
表1十六通道的CD4051多路模拟开关真值表
输入状态
选中通道号
A3
A2
A1
A0
0
0
0
0
0
0
0
0
1
1
0
0
1
0
2
0
0
1
1
3
0
1
0
0
4
0
1
0
1
5
0
1
1
0
6
0
1
1
1
7
1
0
0
0
8
1
0
0
1
9
1
0
1
0
10
1
0
1
1
11
1
1
0
0
12
1
1
0
1
13
1
1
1
0
14
1
1
1
1
15
沈阳大学
课程设计说明书NO.5
2、A/D转换器的选取
AD574是美国模拟器件公司(AnalogDevices)推出的单片高速12位逐次逼近型A/D转换器,转换时间<25μs。
自带三态缓冲器,可以直接与8位或16位的微机相连,且能与CMOS及TTL电平兼容。
由于AD574内置基准电压源及时钟发生器,这使它在不需要任何外部电路和时钟信号的情况下完成一切A/D转换功能。
可以采用±12V和±15V两种电源电压,应用非常方便。
图5所示为AD574A的内部结构框图。
AD574A为28引脚双列直插式封装,其引脚配置如图6所示。
图5
沈阳大学
课程设计说明书NO.6
3AD574的引脚功能
图6
VL:
数字逻辑部分电源+5V。
:
数据输出格式选择信号引脚。
当
=1(+5V)时,双字节输出,即12条数据线同时有效输出;当
=0(0V)时,为单字节输出,即只有高8位或低4位有效。
:
片选信号端,低电平有效。
A0:
字节选择控制线。
在转换期间:
A0=0,AD574A进行全12位转换。
在读出期间:
当A0=0时,高8位数据有效;A0=1时,低4位数据有效,中间4位为“0”,高4位为三态。
因此当采用两次读出12位数据时,应遵循左对齐原则。
:
读数据/转换控制信号,当
=1,ADC转换结果的数据允许被读取;当
=0,则允许启动A/D转换。
CE:
启动转换信号,高电平有效。
可作为A/D转换启动或读数据的信号。
Vcc、VEE:
模拟部分供电的正、负电源,为±12V或±15V。
REFOUT:
10V内部参考电压输出端。
REFIN:
内部解码网络所需参考电压输入端。
沈阳大学
课程设计说明书NO.7
BIPOFF:
补偿调整。
接至正负可调的分压网络,以调整ADC输出的零点。
10VIN、20VIN:
模拟量10V及20V量程的输入端口,信号的另一端接至AG引脚。
DG:
数字公共端(数字地)。
AG:
模拟公共端(模拟地)。
它是AD574A的内部参考点,AG和DG在封装时已连接在一起。
DB0~DB11:
数字量输出。
STS:
输出状态信号引脚。
转换开始时,STS达到高电平,转换过程中保持高电平。
转换完成时返回到低电平。
AD574A的控制信号的组合控制功能如表2所示。
表2AD574A的控制信号的组合控制功能表
CE
A0
工作状态
0
×
×
×
×
禁止
×
1
×
×
×
禁止
1
0
0
×
0
启动12位转换
1
0
0
×
1
启动8位转换
1
0
1
接1脚(+5V)
×
12位并行输出有效
1
0
1
接地
0
高8位并行输出有效
1
0
1
接地
1
低4位加上尾随4个0有效
必须指出
端与TTL电平不兼容,故只能用通过布线接至+5V或0V上。
另外A0在数据输出期间不能变化。
如果要求AD574A以独立方式工作,只要将CE、
端接入+5V,
和A0接至0V,将
作为数据读出和数据转换启动控制。
当
=1时,数据输出端出现被转换后的数据,
=0时,即启动一次A/D转换。
在延时0.5μs后STS=1表示转换正在进行。
经过一次转换周期Tc(典型值为25μs)后STS跳回低电平表示A/D转换完毕,可以从数据输出端读取新的数据。
启动AD574A转换的时序图如图7所示,AD574A的读周期时序图如图8所示。
沈阳大学
课程设计说明书NO.8
图7图8
AD574A有单极性和双极性两种模拟信号转换方式,这主要通过改变AD574A引脚8、10、12的外接电路来实现。
图9左侧所示为单极性转换电路,可实现输入信号0~10V或0~20V的转换,其系统模拟信号的地线应与引脚9相连,使其地线的接触电阻尽可能小,图9右侧为双极性转换电路,可实现输入信号-5V~+5V或-10V~+10V的转换。
图9
沈阳大学
课程设计说明书NO.9
2.2.2AD574与单片机连接
图10中将转换结束状态线STS与单片机的P1.1相连,故该接口采用查询方式。
由于AD574A片内有时钟,故无需外加时钟信号。
由于AD574A内部含有三态锁存器,故可直接与单片机数据总线接口。
AD574A是12位向左对齐输出格式,所以将低4位DB3~0接到DB11~8,第一次读出高8位DB11~4,第二次读出低4位,此时DB7~4为0000。
图10中,片选信号由P0.7控制,由于图中高8位地址P2.7~P2.0未使用,故只使用低8位地址,采用寄存器寻址方式。
设启动AD574A的地址是7CH,读取高8位数据的地址为7EH,读取低4位数据的地址为7FH。
图10
沈阳大学
课程设计说明书NO.10
2.2.3单片机模块
1、AT89S51单片机的简介
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统供给高性价比的解决方案。
AT89S51具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不一样产品的需求。
AT89S51与AT89C51相比,外型管脚完全相同,AT89C51的HEX程序无须任何转换可直接在AT89S51运行,结果一样。
AT89S比AT89C51新增了一些功能,支持在线编程和看们狗是其中主要特点。
它们之间主要区别在于以下几点:
1.引脚功能:
管脚几乎相同,变化的有,在AT89S51中P1.5,P1.6,P1.7具有第二功能,即这3个引脚的第二功能组成了串行ISP编程的接口。
2.编程功能:
AT89C51仅支持并行编程,而AT89S51不但支持并行编程还支持ISP再线编程。
在编程电压方面,AT89C51的编程电压除正常工作的5V外,另Vpp需要12V,而AT89S51仅仅需要4-5V即可。
3.烧写次数更高:
AT89S51标称烧写次数是1000次,实为1000-10000次,这样更有利开始学习者反复烧写,降低学习成本。
4.工作频率更高:
AT89C51极限工作频率是24MHZ,而AT89S51最高工作频率是33MHZ,(AT89S51芯片有两中型号,支持最高工作频率分别为24MHZ和33MHZ)从而具有更快的计算速度。
沈阳大学
课程设计说明书NO.11
5.电源范围更宽:
AT89S51工作电压范围,达4-5.5V,而AT89C51在底于4.8V和高于5.3V的时侯则无法正常工作。
6.抗干扰性更强:
AT89S51内部集成看门狗计时器(WatchdogTimer),而AT89C51需外接看门狗计时器电路,或者用单片机内部定时器构成软件看门狗来实现软件抗干扰。
2、AT89S51引脚及功能介绍
AT89S51引脚图如下图11所示:
图11
沈阳大学
课程设计说明书NO.12
AT89S51芯片的40个引脚功能为:
VCC:
电源电压。
GND:
接地。
RST:
复位输入。
当RST变为高电平并保持2个机器周期时,将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭该功能。
DISKRTO位缺省为RESET输出高电平打开状态。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡放大器的输出。
P0口:
一组8位漏极开路型双向I/O口。
也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输
出一个电流(IIL)。
Flash编程和程序校验期间,P1接收低8位地址。
P1口部分端口引脚及功能如表3所示。
表3P1口特殊功能
P1口引脚
特殊功能
P1.5
MOSI(用于ISP编程)
P1.6
MOSI(用于ISP编程)
P1.7
SCK(用于ISP编程)
沈阳大学
课程设计说明书NO.13
P2口:
一个带内部上拉电阻的8位双向I/O口。
P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的
外部数据存储器时,P2口线上的内容在整个访问期间不改变。
Flash编程和程序校验期间,P2亦接收低8位地址。
P3口:
一个带内部上拉电阻的8位双向I/O口。
P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写“1”时,它们被内部的上拉电阻把拉到高电并可作输入端口。
作输入端口使用时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表3所示。
P3口还接收一些用于Flash闪速存储器编程和程序校验期间的控制信号。
表4P3口特殊功能
P3口引脚
特殊功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
沈阳大学
课程设计说明书NO.14
PSEN/:
程序储存允许输出是外部程序存储器的读先通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN/有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的PSEN/信号。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器,EA端必须保持低电平,需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
Flash存储器编程时,该引脚加上+12V的编程电压VPP。
注:
I/O口的读写
P0~P3口都可以作为普通的I/O口来使用。
当作为输入口使用时,必须先向该口的锁存器中写入“1”,然后再从引脚缓冲器中读入引脚状态,这样的读入结果才正确。
当作为输出口使用时,可能要经常修改输出口各引脚的状态,为此在AT89S51单片机的指令系统中,设置有“读-修改-写”指令。
例如,逻辑与指令“ANLP1,A”就属于这类指令。
该指令的执行过程是:
CPU先读入P1上的数据,然后与累加器A中的数据按位进行逻辑与操作,最后将与的结果送回P1口,完成对P1口各位状态的修改。
这类指令中,读入P1口的数据是前一次写入P1口输出锁存器的数据,而不是P1口的实际状态,两者不一定相同。
例如,用P1的一根线去驱动一个晶体管的基极,当向此口线写入“1”时,晶体管导通,并把引脚上的电平拉成低电平“0”。
这时若从引脚上读取数据(引脚缓冲器),会读错成“0”,而不是先前输出的“1”。
为此,在P0~P3口每一根线的结构上都设有一个读锁存器缓冲器,当执行这类指令时,读入的数据时锁存器的输出状态。
3、复位电路设计
RES引脚是复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即两个机器周期)以上。
若使用频率为6MHz的晶振,则复位信号持续时间应超过4us,才能完成复位。
复位操作有上电自动复位和按键手动复位两种方式。
本设计采用上电复位,如图12所示。
沈阳大学
课程设计说明书NO.15
图12
上电自动复位电路是在加电瞬间电容通过充电来实现的。
在通电瞬间,电容C3通过电阻充电RST端出现正脉冲,用以复位。
上电瞬间,RST端的的电位与Vcc相同,随着电容的逐步充电,充电电流减小,RST电位逐渐下降。
上电复位所需的最短时间是振荡器建立时间加上二个机器周期,在这段时间里,振荡建立时间不超过10ms。
4、晶振电路设计
AT89S51芯片内部有一个高增益反相放大器,用于构成振荡器。
反相放大器的输入端为XTAL1,输出端为XTAL2,两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器,如图13所示。
电容器C1和C2通常取30pF左右,可稳定频率并对振荡频率有微调作用。
本设计中采用6MHz的晶振构成单片机的时钟电路。
晶振频率也就是振荡电路的脉冲频率,也称振荡频率。
(振荡脉冲频率范围为0~24MHz)
图13
沈阳大学
课程设计说明书NO.16
此振荡器由XTAL1端向内部时钟电路提供一定的频率时钟源信号。
另外,振荡器的工作还可由软件控制,当对单片机内电源控制寄存器PCON中的PD位置1时,可停止振荡器的工作,使单片机进入省电工作状态,此振荡器称为内部振荡器。
晶振频率是单片机的一项重要性能指标。
因为单片机的时钟信号是通过振荡信号分频得到的,所以竞争频率直接影响时钟信号的频率。
晶振频率高,系统的时钟频率就高,单片机运行速度也就快。
然而晶振频率高对存储器等的速度和印刷电路板的工艺要求也高。
晶振频率不但影响速度,而且对单片机的工作电流也有一定影响,所以在选择晶振频率是,要兼顾速度、功耗和线路工艺。
片内振荡器对构成并联谐振电路的外接电容C1和C2要求并不严格,外接晶体时,C1和C2的典型值为30pF左右。
而且,在设计印刷电路板时,晶体(或陶瓷谐振器)和电容应尽可能安装得靠近单片机,以减少寄生电容,保证振荡器的稳定和可靠性。
2.2.4输出电路设计
输出电路采用数码管显示,显示方法为动态扫描显示。
动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
显示部分的原理图如下图14所示,利用8255A扩展的4位LED动态显示器接口电路。
图中将所有位的段选线相应地并联在一起,PB口作为段数端口,经同相驱动器后接
沈阳大学
课程设计说明书NO.17
显示器各个极,形成段选线的多路复用,而PA3~PA0作为扫描口线,经反相驱动器75452接显示器公共阴极。
在每一时刻使PA3~PA0中有一位为高电平,即4位显示器中仅有一位公共阴极位低电平,其他位为高电平,同时,段选线上输出相应位要显示的字符字型码。
这样同一时刻,4位LED中只有选通那一位显示出字符,而其他位熄灭的。
同样,下一时刻,只让下一位的选线处于选通状态,而其他位处于关闭状态,同时,在段选线上输出相应位将要显示字符的字型码。
如此循环下去,就可以使4位显示出要显示的字符。
图14
沈阳大学
课程设计说明书NO.18
3、软件系统设计
3.1主程序流程图如图14所示
图14主程序流程图图15A/D转换子程序流程图
3.2A/D转换流程图如图15所示
3.3A/D转换数据处理程序
本设计中,以查询方式实现A/D转换。
查询方式A/D转换程序如下:
ORG0200H
START:
MOVDPTR,#9000H
MOVP1,#0FFH
沈阳大学
课程设计说明书NO.19
MOVR0,#07CH
MOVX@R0,A
LOOP:
JBP1.1,LOOP
INCR0
INCR0
MOVXA,@R0
MOVX@DPTR,A
INCR0
INCDPTR
MOVXA,@R0
MOVX@DPTR,A
HERE:
AJMPHERE
RET
3.4显示子程序
根据LED显示器的结构原理,显示不同的字符需要不同的字形码。
本设计选用共阴极数码管,由PA口控制LED信号灯的显示。
数码管显示的真值表如下表所示:
表4数码管显示真值表
显示字符
共阴极接法
共阳极接法
显示字符
共阴极接法
共阳极接法
0
3FH
C0H
C
39H
C6H
1
06H
F9H
D
5EH
A1H
2
5BH
A4H
E
79H
86H
3
4FH
B0H
F
71H
8EH
4
66H
99H
P
73H
8CH
5
6DH
92H
U
3EH
C1H
6
7DH
82H
T
31H
CEH
7
07H
F8H
Y
6EH
91H
8
7FH
80H
H
76H
89H
9
6FH
90H
L
38H
C7H
A
77H
88H
“灭”
00H
FFH
B
7CH
83H
…
…
…
沈阳大学
课程设计说明书NO.20
LED显示程序为:
DISPLAY:
MOVDPTR,#NUMTAB
MOVR0,#2
DP1:
MOVR2,#150;设置动态显示次数
LOOP3:
MOVA,#0EH;选通点亮第1位数码管
MOVP0,A
MOVA,R1
MOVCA,@A+DPTR
MOVP2,A
ACALLDIMS
SETBP0.0;选通点亮第2位数码管
CLRP0.1
MOVA,50H
MOVCA,@A+DPTR
MOVP2,A
CLRP2.7
ACALLDIMS
SETBP0.1;选通点亮第3位数码管
CLRP0.2
MOVA,51H
MOVCA,@A+DPTR
MOVP2,A
ACALLDIMS
SETBP0.2;选通点亮第4位数码管
CLRP0.3
MOVA,52H
MOVCA,@A+DPTR
MOVP2,A
ACALLDIMS
SETBP0.3
DJNZR2,LOOP3
DJNZR0,DP1
RET
DIMS:
MOVR7,#00
DJNZR7,$
RET
沈阳大学
课程设计说明书NO.21
3.5多路数据采集系统主程序
具体程序如下:
STBITP3.5
OEBITP3.4
EOCBITP3.3
ORG0000H
AJMPSTART
ORG0030H
START:
MOVR5,#0
SETT:
MOVA,R5