简易数据采集系统设计题目:二选一1. 设计一个单片机控制的数据采集系统,要求A/D 精度12位,采样频率最高100KHz,输入8路信号,分时复用A/D 芯片,将采集到的波形进行4K 的SRAM 存储,然后通过串行口发送给计算机2. 设计一波形发生电路,计算机通过串行口向板卡发送波形电路,波形存储到板卡上的SRAM 中,然后进行计算机控制的D/A 波形产生,板卡上用单片机进行控制 要求:1. 选择器件,确定具体型号。
2. 画原理图。
3. 根据器件封装画PCB 图。
4. 写出相应的单片机和微机控制程序。
5. 写出详细的原理分析报告。
器件选择:TI 公司生产的8位逐次逼近式模数转换器ADC0809,8051,MAX232 原理图如下:原理报告原理报告::采集多路模拟信号时,一般用多路模拟开关巡回检测的方式,即一种数据采集的方式。
利用多路开关(MUX )让多个被测对象共用同一个采集通道,这就是多通道数据采集系统的实质。
当采集高速信号时,A/D 转换器前端还需加采样/保持(S/H)电路。
待测量一般不能直接被转换成数字量,通常要进行放大、特性补偿、滤波等环节的预处理。
被测信号往往因为幅值较小,而且可能还含有多余的高频分量等原因,不能直接送给A/D 转换器,需对其进行必要的处理,即信号调理。
如对信号进行放大、衰减、滤波等。
通常希望输入到A/D 转换器的信号能接近A/D 转换器的满量程以保证转换精度,因此在直流电流电源输出端与A/D 转换器之间应接入放大器以满足要求。
本题要求中的被测量为0~5V 直流信号,由于输出电压比较大,满足A/D 转换输入的要求,故可省去放大器,而将电源输出直接连接至A/D 转换器输入端。
关于A/D 转换器的选取: 1.转换时间的选择转换速度是指完成一次A/D 转换所需时间的倒数,是一个很重要的指标。
A/D 转换器型号不同,转换速度差别很大。
通常,8位逐次比较式ADC 的转换时间为100us 左右。
由于本系统的控制时间允许,可选8位逐次比较式A/D 转换器。
2.ADC 位数的选择A/D 转换器的位数决定着信号采集的精度和分辨率。
要求精度为0.5%。
对于该8个通道的输入信号,8位A/D 转换器,其精度为80.39%2−=输入为0~5V 时,分辨率为850.01961122FsNV v ==−−Fsv—A/D 转换器的满量程值N —ADC 的二进制位数量化误差为850.0098(1)2(1)222FsNQ V v===−×−×ADC0809是8位逐次逼近式模数转换器,包括一个8位的逼近型的ADC 部分,并提供一个8通道的模拟多路开关和联合寻址逻辑,为模拟通道的设计提供了很大的方便。
控制与显示方法分析用单片机作为这一控制系统的核心,接受来自ADC0809的数据,经处理后通过串口传送,由于系统功能简单,键盘仅由两个开关和一个外部中断端组成,完成采样通道的选择,单片机通过接口芯片与LED数码显示器相连,驱动显示器显示相应通道采集到的数据。
单片机系统分析1.复位电路单片机在开机时都需要复位,以便中央处理器CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。
51的RST引脚是复位信号的输入端。
复位电平是高电平有效,持续时间要有24个时钟周期以上。
本系统中单片机时钟频率为6MHz则复位脉冲至少应为4us。
上电复位电路上电瞬间,RST端的的电位与Vcc相同,随着电容的逐步充电,充电电流减小,RST电位逐渐下降。
上电复位所需的最短时间是振荡器建立时间加上二个机器周期,在这段时间里,振荡建立时间不超过10ms。
复位电路的典型参数为:C取10uF,R取8.2k,故时间常数τ=RC=10×106−×8.2×103=82ms以满足要求。
振荡源在MCS-51内部有一个用于构成振荡器的高增益反相放大器。
引脚XTAL1(19)、XTAL2(18)分别是此放大器的输入端和输出端显示与键盘分析对系统发出命令和输出显示测量结果,主要是由键盘和LED数码显示器组成。
缓慢变化信号和直流信号,要求用数码管适时地进行十进制显示,由于精度要达到0.5%,所以这里用5只LED数码显示器来表示该十进制数,用两只七段数码显示器表示通道号。
为实现通道的选取,用键盘实现控制功能译码方法用单片机驱动LED 数码管有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分 显示方法在该单片机系统中,使用7段LED 显示器构成8位显示器,段选线控制显示的字符,位选线控制显示位的亮或暗。
传输方式分析传输方式的选择串行通信有同步和异步两种工作方式。
同步方式要求发送与接受保持严格同步,由于串行传输逐位按顺序进行,为了约定数据是由哪一位开始传输,需设定同步字符。
此方式传输速度快,但硬件复杂。
异步方式,规定了数据传输格式,每个数据均以相同的帧格式传送,每帧信息由起始位、数据位、奇偶效验位和停止位组成。
帧与帧间用高电平分隔开,但每帧均需附加位,降低了传输效率。
异步通信依靠起始位、停止位保持通信同步。
对硬件的要求低,实现起来比较简单、灵活,适用于数据的随机发送/接收,一般适用于50~9600bps 的低速串行通信。
数据采集电路把连续变化量变成离散量的过程称为量化,也可理解为信号的采样。
把以一定时间间隔T 逐点采集连续的模拟信号,并保持一个时间t ,使被采集的信号变成时间上离散、幅值等于采样时刻该信号瞬时值的一组方波序列信号,即采样信号。
A/D 转换的一般步骤 采样-保持为了能不失真的恢复原模拟信号,采样频率应不小于输入模拟信号的频谱中最高频率的两倍,这就是采样定理,即sImax 2ff ≥由于A/D 转换需要一定的时间,所以在每次采样结束后,应保持采样电压在一段时间内不变,直到下一次采样的开始。
实际中采样-保持是做成一个电路。
量化与编码模拟信号经采样-保持电路后,得到了连续模拟信号的样值脉冲,他们是连续模拟信号在给定时刻上的瞬时值,并不是数字信号。
还要把每个样值脉冲转换成与它幅值成正比的数字量。
以上为A/D 转换的一般步骤,在本电路中由ADC0809芯片完成。
ADC0809内部功能与引脚介绍分辨率和精度在第一章中已作了相应的计算和分析。
ADC0809八位逐次逼近式A /D 转换器是一种单片CMOS 器件,包括8位模拟转换器、8通道转换开关和与微处理器兼容的控制逻辑。
8路转换开关能直接连通8个单端模拟信号中的任何一个。
ADC0809主要性能逐次比较型 CMOS 工艺制造单电源供电无需零点和满刻度调整具有三态锁存输出缓冲器,输出与TTL 兼容 易与各种微控制器接口 具有锁存控制的8路模拟开关 分辨率:8位功耗:15mW最大不可调误差小于±1LSB (最低有效位) 转换时间(500CLK f KHz =)128us 转换精度:0.4%±ADC0809没有内部时钟,必须由外部提供,其范围为10~1280kHz 。
典型时钟频率为640kHz 引脚排列及各引脚的功能,引脚排列如图所示。
各引脚的功能如下:IN0~IN7:8个通道的模拟量输入端。
可输入0~5V 待转换的模拟电压。
D0~D7:8位转换结果输出端。
三态输出,D7是最高位,D0是最低位。
A、B、C:通道选择端。
当CBA=000时,IN0输入;当CBA=111时,IN7输入。
ALE:地址锁存信号输入端。
该信号在上升沿处把A、B、C的状态锁存到内部的多路开关的地址锁存器中,从而选通8路模拟信号中的某一路。
START:启动转换信号输入端。
从START端输入一个正脉冲,其下降沿启动ADC0809开始转换。
脉冲宽度应不小于100~200ns。
EOC:转换结束信号输出端。
启动A/D转换时它自动变为低电平。
OE:输出允许端。
CLK:时钟输入端。
ADC0809的典型时钟频率为640kHz,转换时间约为100µs。
REF(-)、REF(+):参考电压输入端。
ADC0809的参考电压为+5V。
VCC、GND:供电电源端。
ADC0809使用+5V单一电源供电。
当ALE为高电平时,通道地址输入到地址锁存器中,下降沿将地址锁存,并译码。
在START上升沿时,所有的内部寄存器清零,在下降沿时,开始进行A/D转换,此期间START应保持低电平。
在START下降沿后10us左右,转换结束信号变为低电平,EOC为低电平时,表示正在转换,为高电平时,表示转换结束。
OE为低电平时,D0~D7为高阻状态,OE为高电平时,允许转换结果输出。
ADC0809与MCS-51系列单片机的接口方法ADC0809与8051单片机的硬件接口有3种形式,分别是查询方式、中断方式和延时等待方式,本题中选用中断接口方式。
由于ADC0809无片内时钟,时钟信号可由单片机的ALE信号经D触发器二分频后获得。
ALE引脚得脉冲频率是8051时钟频率的1/6。
该题目中单片机时钟频率采用6MHz,则ALE输出的频率是1MHz,二分频后为500Hz,符合ADC0809对频率的要求。
由于ADC0809内部设有地址锁存器,所以通道地址由P0口的低3位直接与ADC0809的A、B、C相连。
通道基本地址为0000H~0007H。
其对应关系如表所示。
控制信号:将P2.7作为片选信号,在启动A/D转换时,由单片机的写信号和P2.7控制ADC的地址锁存和启动转换。
由于ALE和START连在一起,因此ADC0809在锁存通道地址的同时也启动转换。
在读取转换结果时,用单片机的读信号RD和P2.7引脚经或非门后,产生正脉冲作为OE信号,用一打开三态输出锁存器通信电路51单片机有一个全双工的串行口,所以单片机和PC之间可以方便地进行串口通讯。
进行串行通信时要满足一定的条件,如PC的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,这里用专用芯片MAX232进行转换,用专用芯片更简单可靠。
它包含两路接收器和驱动器,内部有一个电源电压变换器,可以把输入的+5V电压变换位RS-232输出电平所需的+10V电压。
所以,用该芯片接口的串行通信只需单一的+5V电源就可以了。
其应用性更强。
相关程序:数据采集部分程序如下ADSUB: SETB P3.6MOV 20H, #00H ;清转换结果存放寄存器MOV 21H, #00HCLR P3.6 ;CLR 1549 CSMOV R0, #02HCLR AADTS: CLR P3.4 ; I/O CLOCK清零NOPMOV C, P3.5RLC ASETB P3.4 ;I/O CLOCK 置位DJNZ R0, ADTS ;高2位读完? 否, 转ADTSMOV 20H, A ;高2位结果送20HMOV R0, #08HCLR AADTC: CLR P3.4 ;I/O CLOCK 清零NOPMOV C, P3.5RLC ASETB P3.4 ;I/O CLOCK 置位DJNZ R0, ADTC ;低8位读完? 否,转ADTCMOV 21H, A ;低8位结果送21HRET串口通信的程序:'初始化代码Private Sub Form_Load()mPort=2 ‘设置串口2MSComm.Settings="2400,n,8,1" ‘波特率2400,无校验,8位数据,一位停止位MSComm.InputLen=0 ‘读取接受缓冲区的所有字符MSComm.InBufferSize=1024 ‘设置接受缓冲区为1024字节MSComm.OutBufferSize=512 ‘设置发送缓冲区为512字节MSComm.PortOpen=True ‘打开串口MSComm.SThreshold=0 ‘不触发发送事件MSComm.RThreshold=1 ‘每一个字符到接收缓冲区都触发接收事件MSComm.InBufferCount=0 ‘清除发送缓冲区数据MSComm. OutBufferCount=0 ‘清除接收缓冲区数据Text_SEND.Text=“” ‘清空发送文本框Text_RECV.Text=“” ‘清空接收文本框End Sub2.发送数据Private Sub Button_SEND_Click()Dim x As StringIf Text_SEND.Text=“”Then ‘发送数据不能为空X=MsgBox(“发送数据不能为空”,16)Exit SubEnd IfIf Not MSComm.PortOpen Then ‘保证串口打开MSComm.PortOpen=TrueEnd IfMSComm.OutPut=Text_SEND.Tex+Chr$(13) ‘发送数据For i=1 To 20000000 ‘延时NextEnd Sub3.接收数据Private Sub MSComm_OnComm.()Slect Case mEvent ‘检验串口事件错误处理Case comEventOverrun ‘数据丢失Text_SEND.Text=“” ‘清空发送缓冲区Text_RECV.Text=“” ‘清接收缓冲区Text_SEND.SetFous=“”Exit SubCase comEventRxOver ‘接收缓冲区溢出Text_SEND.Text=“” ‘清空发送缓冲区Text_RECV.Text=“” ‘清空接收缓冲区Text_SEND.SetFous=“”Exit SubCase comEventOver ‘发送缓冲区已满Text_SEND.Text=“” ‘清空发送缓冲区Text_RECV.Text=“” ‘清空接收缓冲区Text_SEND.SetFous=“”Exit Sub‘事件处理Case comEvReceive ‘接收缓冲区内有数据Dim str As Stringstr= MSComm.InPut ‘从接收队列中读入字符串Text_RECV.Text=Text_RECV.Text+str ‘读出字符串送显End SelectEnd Sub。