基于单片机和CPLD实时数据采集显示系统设计

发布者:玄幻剑客最新更新时间:2009-12-22 来源: 电子设计工程关键字:单片机  可编程逻辑器件  多路选择器  数据采样  实时显示 手机看文章 扫描二维码
随时随地手机看文章

1 引言

    数据采集是分析模拟信号量数据的有效方法。而实时显示数据是自动化检测系统的现实需求。在测试空空导弹导引头的过程中,导引头的响应信号包括内部二次电源信号和模拟量电压信号。检测过程中要求检测系统实时显示导引头的工作状态,显示二次电源和模拟量响应电压信号,判断导引头性能,同时保证在非常情况下人为对导引头做出应急处理,保护导引头。对于模拟量电压信号,通常采用模数转换、事后数据标定的方法实现。根据现实需求,研制相应检测系统可作为导引头日常维护和修理的重要工具。这里介绍一种基于单片机和CPLD的实时数据采集显示系统设计方案。

2 系统构成

    该系统中待采集显示电压信号共16路,动态电压范围为-22~+27 V。由于这些电压信号变化频率较低,或者认为频率无变化,且检测系统只关心其电压值,所以在低采样率下就可满足系统要求。根据需求,系统设计的采样率即显示刷新速率在1.56 k/s以上。

    采用单片机80C196KB和可编程逻辑器件EPM7128SLC为核心控制器,以80C196KB内部集成A/D转换器作为模数转换器实现16路电压信号的实时数据采集、显示、控制。该系统总体设计结构框图如图1所示。

    整个系统主要由信号预处理、信号选通、单片机采集、双机数据传输以及数据处理显示等模块构成。其中,信号选通模块由CPLD和多路模拟选择器组成。

3 系统硬件电路设计

3.1 信号预处理电路

    由于待采集电压信号输入动态范围较宽,且极性各异,对于单片机A/D转换器来说,需要调理到能够采集的电压范围闱0~5 V,所以要统一调理采集信号,如图2所示。

    图2中运放LM224和MC1556均采用双电压供电,以提高动态信号输入范围;电阻均采用精度为0.1%的精密型金属膜电阻,以提高电压转换精度。

    在二级电压凋理过程中,MC1556同相输人端采用稳压电路以减少长时间通电情况下温度升高对系统产生的不良影响。南于电压跟随器具有输入阻抗大和输出驱动能力强的特点,故在预处理电路的输入端和输出端均采用电压跟随电路。

3.2 信号选通电路

    ADG508A是一款8通道CMOS模拟多路选择器,具有高速转换速度和低内阻特性,通道切换具有防短路功能。在CPLD控制下,它可对采集信号进行有序通道切换,配合单片机进行数据采集。

    EPM7128SLC是一款Ahera公司生产的CPLD,其容量为128个宏单元,采用硬件描述语言VHDL对CPLD编程设置实现信号的选通控制。首先编写分频器模块对1 MHz晶体振荡器进行20分频,输出2路相位相错、周期为20 μs的矩形同步信号。其中一路信号经D触发器进行2分频,得到占空比50%、周期为40μs的方波信号;然后编写信号选通控制模块。此模块根据方波信号和另一路同步信号循环输出控制信号,两模块都在MuxPlus-II环境下开发,CPLD控制信号时序仿真结果如图3所示,其中,信号FRM和ROAD是单片机主程序运行的勤务信号;CS1和CS2是2片ADG508A的片选信号:A0、A1和A2则是ADG508A通道选通控制信号。

3.3 单片机采集电路

    80C196KB是Intel公司生产的一款16位CMOS单片机,片内集成有8路A/D转换器,该转换器包括一个8通道多路模拟开关,采样保持电路和10位A/D转换器。由于该系统外部有多路选择器,故内部无需通道转换,采用一个ACH0通道即可完成数据采集。对于采用12 MHz晶振的单片机系统,完成一次A/D转换需22μs。80C196KB的A/D转换器采用逐次逼近的方法完成模拟量到数字量的转换,基准电压设定非常关键,内部阻容网络将基准电压Vref等分为1 024个阶梯,每级为Vref/1 024 V。通过与基准电压比较,可得到10位数据转换结果,其中基准电压的精度以及稳定度直接影响到测量结果的绝对精度。因此在电路中Vref采用单独电源供电并通过基准稳压源如LM136的5 V提高精度及稳定度。

    80C196KB通过判断ROAD信号在其上升沿读取上次A/D转换结果,同时启动A/D转换器转换下一路信号,该单片机用FRM信号作为非屏蔽中断使计数器DXL归零,主程序循环一次,保证对16路通道信号的时分复用采集。单片机80C196KB程序流程如图4所示。

3.4 双机数据传输

    为达到采集数据的实时可控性,系统设计双机通信接口作为单片机A/D转换数据向计算机传输的通道。计算机采用WDM下的EPP模式通信,速度达500 KB/s~2 MB/s。使用双端口RAM IDT7130作为主要元件,通过通信接口,单片机将A/D转换数据存入双端口RAM中,计算机则实时显示从双端口RAM中读取的数据。单片机通过双端口RAM IDT7130的A端口进行写操作,计算机则通过B端口进行读操作。握手信号由单片机通过对ROAD信号计数产生,二者可异步读写操作,实现数据交换。图5为单片机与计算机接口电路。


4 系统软件设计

4.1 数据标定


   
在给定Vref=5 V,设单片机采集端口输入电压为Vin与之相对应的A/D转换数字量为X,则X=1 024 Vin/5V。对于线性变换预处理电路可采用Y=5KX/1 024,其中,Y表示电压实测值,X表示与Y对应的A/D转换值,K为放大器增益。令K=Ymax/5 V,其中Ymax表示待测量电压的最大值。为保证采集精度,应先计算Ymax,以保持足够的A/D转换有效数字。以待采集电压0~27 V为例,预处理电路增益为27/5=5.4。

4.2 实时显示

    读数及显示软件在VC++6.0环境下编写,使用对话框模式,并口采用WDM驱动方式。软件运行时直接打开驱动设备,同时使用AfxBeginThread()函数生成一个新线程,其控制线程函数实时更新读取并显示数据。由于单片机采用1O位A/D转换器,所以一次转换结果分两次传输,分别为高位和低位传输。并口数据传输也采用8位方式。上位机在读取数据后,2组数据经移位、加法运算后得出一个完整数据,标定后在计算机界面显示。

5 结论

    实践证明,该实时采集显示系统完全满足导引头的检测需求。采集电压精度可达mV级,刷新率在1.56 k/s以上。该系统采用单片机和CPLD技术,电路设计结构简单,实际应用可靠性高、通用性强、使用灵活,且采集通道具有扩展性。但在电路设计过程中应注意:由于系统既有模拟电路又有数字电路,所以合理布线对系统至关重要,应采取合理布线措施以保证基准地线的稳定性,从而提高采集精度。

关键字:单片机  可编程逻辑器件  多路选择器  数据采样  实时显示 引用地址:基于单片机和CPLD实时数据采集显示系统设计

上一篇:RS添加1100余种Microchip产品
下一篇:多媒体投影机遥控器的单片机仿真

推荐阅读最新更新时间:2024-03-16 12:27

单片机烧录程序怎么分类
说起给单片机烧录程序,大家应该都不陌生,我最早接触单片机是从51单片机开始的,型号是STC89C52RC,当时烧录程序就是用的下面这种烧录软件——STC-ISP。 这种方式,通过串口连接单片机,选择一个合适的波特率就可以烧录了。 后来学习STM32,编程时使用KEIL软件自带的下载按钮就能下载程序,方便了不少,但需要额外使用J-Link等下载器。 再后来,接触到产品研发,给已经发布出的产品升级,都是要靠远程无线升级的(想想看,产品已经到客户那里了,当软件需要升级时,要是还使用有线的方式烧录程序,得有多麻烦) 既然给单片机烧录程序的方式有多种,那烧录方式具体怎么分类呢? 可以分为3种: ISP(In-System Pro
[单片机]
<font color='red'>单片机</font>烧录程序怎么分类
51单片机初级之KeilC51新建工程[1]
1.新建一个DEMO文件夹 2.KeilC51中点击新建文件 3.命名工程,并保存到DEMO文件夹中 4.选择芯片设备(我们选择AT89C52芯片) 5.添加启动文件(STARTUP.A51) 6.整个工程建好了,但是这个时候工程没有东西,需要添加文件 7.新建main.c文件 7.1点击左上方新建文件图标(或者使用快捷键CTRL+N) 7.2出现一个不知名的Text1文件 7.3保存该Text1为main.c文件(点击左上角工具栏保存图标或快捷键CTRL+S) 7.4将该main.c文件保存在DEMO文件夹中 8.添加该main.c文件 8.1在project栏目中 右键sourc
[单片机]
51<font color='red'>单片机</font>初级之KeilC51新建工程[1]
C8051F020单片机及其在总磷在线自动分析仪中的应用
1 概述   C8051F0XX系列单片机是Cygnal公司新推出的一种混合信号系统级单片机。该系列单片机片内含CIP-51的CPU内核,它的指令系统与MCS-51完全兼容。其中的C8051F020单片机含有64kB片内Flash程序存储器,4352B的RAM、8个I/O端口共64根I/O口线、一个12位A/D转换器和一个8位A/D转换器以及一个双12位D/A转换器、2个比较器、5个16位通用定时器、5个捕捉/比较模块的可编程计数/定时器阵列、看门狗定时器、VDD监视器和温度传感器等部分。C8051F020单片机支持双时钟,其工作电压范围为2.7~3.6V(端口I/O,RST和JTAG引脚的耐压为5V)。与以前的51系列单片机相比
[单片机]
C8051F020<font color='red'>单片机</font>及其在总磷在线自动分析仪中的应用
浅谈用单片机模拟PLC(山寨三菱系列)
读书的时候因为学的自动化所以一直以为PLC是控制的王道,经常鄙视楼下电子系搞单片机的,而且灰常2B的认为单片机都TM弱电太娇气不耐艹玩单片机的都是吊丝!所以经常混迹于PLC实验室电子实验室居然只去了几次,然而随着对单片机和PC机的了解逐渐加深,越来越觉得自己当年的自己太傻太天真了哎 个人觉得PLC和单片机的关系就好比图章和圆珠笔一样,图章操作简单傻子能盖出漂亮的图案但缺点也显而易见灵活性太差了你不能用图章盖出一些复杂的图案,圆珠笔就正好相反虽然操作难度大点但灵活性强了n个数量级。 既然单片机的灵活性那么强那么我们能用单片机来模拟PLC吗,很明显是可以的而且PLC的核心其实也是单片机,那么该怎么模拟PLC呢?PLC分程
[单片机]
浅谈用<font color='red'>单片机</font>模拟PLC(山寨三菱系列)
HCS12X单片机的SD卡FAT文件系统读写设计
随着信息技术的飞速发展,高容量存储芯片日益向大容量小体积发展,其中以SD卡、Micro SD卡为突出代表。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。大小犹如一张邮票的SD卡,重量只有2 g,却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。通过单片机处理SD卡信息,可以将信息化嵌入式产业向更小体积发展。考虑到稳定性与读取速度,研究中采用了Freescale公司的16位单片机MC9S12XSl28MAA。为了进一步满足嵌入式研究的实时调试与应用需要,把SD卡的读取以及FATl6文件系统的读取写入移植到此单片机中,使开发应用有更好的扩展性。本文首次把FATl6文件系统的读取移植到
[单片机]
关于软件延时
1T系列单片机的小范围延时计算公式(us) :(4*t + 10) * 1/f void delay(u8 t) { while(--t); } 另外再来看一个nop相关的 /* 1T系列单片机在12M晶振下产生指定us数的软件延时 */ void Delay_us(unsigned char us) { do { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } while (--us); } /* 12T系列单片机在12M晶振下产生指定us
[单片机]
单片机对汽车行车状况实时监测和语音提醒的实现
  一、主要功能   1.行驶状况监测   车辆语音提示器可对车辆行驶的路况好/坏(车辆颠簸是否严重)进行监测;可对在雾天、雨天和夜晚的车辆行驶进行监测;可对行驶途中驾驶员打手机进行监测,对停行后车内手机有电话打入进行监测;可对连续长时间行驶进行监测;可对驾驶员酒后驾车进行监测;可对行驶中车门是否关好进行监测和可对非法启动车辆进行监测等。   2.实时监测的语音提示   (1)在启动车辆时,将有“祝您本次旅途愉快!”的语音提示。   (2)在启动车辆三分钟后。将有提示系好安全带的语音“为了您的安全,请系好安全带”。   (3)对路况不好时,将有“路况不好,请注意安全”的语音提示。   (4)车辆在雨天行驶时,将有“雨
[单片机]
<font color='red'>单片机</font>对汽车行车状况<font color='red'>实时</font>监测和语音提醒的实现
80C51单片机中断的编程使用方法介绍
1、单片机中断: 找了一张 80C51 单片机的图如下: 其中,在 P3.2、P3.3 的位置,即 12 ,13 引脚处,标有 INT0 和 INT1,那两个引脚就是外部中断的输入。上面一个横杠代表低电平有效,给 P3.2、P3.3 赋值 0,就可以运行已经写好的中断服务程序。具体怎么用,还要熟悉一些中断寄存器的使用。 2、中断寄存器: (1)、IE (Interrupt Enable):中断允许控制寄存器 EA (IE.7):EA=0 时,所有中断禁止(即不允许中断) EA=1 时,各中断的产生由个别的允许位决定 ET2 (IE.5):定时器 2 溢出中断允许(8052 用,博主用的 STC89C54RD+ 也有) ES
[单片机]
80C51<font color='red'>单片机</font>中断的编程使用方法介绍
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved