基于51单片机和Labview的多路模拟数据采集(AD采集)
- 格式:pdf
- 大小:383.38 KB
- 文档页数:13
基于51系列单片机串行多通道数据采集系统设计(南京铁道职业技术学院,江苏苏州,黄克亚215137)【摘要】:摘要:本文详细介绍了11通道12位串行AD转换芯片器TLC2543的结构、主要特点、工作原理与编程要点。
给出了TLC2543与51系列单片机的硬件接口电路和软件控制程序,并在Proteus软件中进行系统仿真。
【关键词】:单片机、TLC2543、C语言、仿真引言:51系列单片机因其优越的性能,较低的价格,灵活方便的控制方法获得广泛应用,但是作为数字系统的单片机要想处理现实中广泛存在模拟量就必须进行AD转换。
目前AD转换芯片有很多,但大多数是精度不高,占用单片机太多的I/O口,使其应用受到很大的限制。
本论文所讨论的是基于11通道、12位串行AD转换芯片TLC2543数据采集系统的实现。
1TLC2543的特点及引脚TLC2543是12bit串行A/D转换器,使用开关电容逐次逼近技术完成A/D转换过程.由于是串行输入结构,能够节省51系列单片机的I/O资源.其特点有:1)12bit分辨率A/D转换器;2)在工作温度范围内10us转换时间;3)11个模拟输入通道;4)3路内置自测试方式;5)采样率为66啊kb/s6)线性误差±1LSB(max);7)有转换结束(EOC)输出;8)具有单、双极性输出;9)可编程的MSB或LSB前导;10)可编程的输出数据长度.TLC2543的引脚排列如图1所示.图l中AIN0~AINl0为模拟输入端;CS为片选端;DIN为串行数据输入端;DOUT为A/D转换结果的三态串行输出端;EOC为转换结束端;CLK为I/O时钟;REF+为正基准电压端;REF-为负基准电压端;VCC为电源;GND为地.2TLC2543的使用方法2.1控制字的格式控制字为从DATA INPUT端串行输人的8位数据,它规定了TLC2543要转换的模拟量通道、转换后的输出数据长度、输出数据的格式。
单片机原理及系统课程设计专业:自动化 ________班级:自动化姓名:_________学号:_________指导教师: __________________2015年12月29日基于单片机的多路数据采集1引言通过一个学期的学习,我认为要学好单片机这门课程,不仅要认真学习课本知识,更重要的是要学会通过实践巩固学到的知识,本次课设中我们设计制作的题目是基于单片机的多路数据采集系统设计。
1.1设计背景随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数据采集。
本设计使用简便,功能丰富。
本设计控制芯片采用的是STC89C51, AD转换采用ADC0809芯片,显示采用的是四位共阴极数码管。
关键字:STC89C51、ADC0809、8路电压采集。
2.1系统设计方案在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
本次设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。
A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。
数据处理则由芯片STC89C51来完成,其负责把ADC0809传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外它还控制着ADC0809芯片工作。
2.2总体设计方案3硬件设计3.1晶振电路晶体振荡器,简称晶振,它可以等效成一个电容和一个电阻并联再串联一个 电容的二端网络。
晶振有一个重要的参数,那就是负载电容值,选择与负载电容 值相等的并联电容,就可以得到晶振标称的谐振频率。
图2晶振电路3.2 P0 口上拉电阻本次设计中九位排阻在依次连接单片机 P0 口各引脚的同时并依序连接数码管 各引脚(上拉电阻VCC 端接单片机VCC 端)o 上拉电阻既能为单片机提供部分电 压能力,同时也能起到预防线路中电流过大的作用。
基于51单片机的多路数据采集器一、摘要:用51单片机控制ADC0808将模拟信号(0~0.5V)转换成数值量(0~255),再控制LED数码管以十六进制实时显示出来。
ADC0808为模/数(A/D)转换器。
在Proteus软件上实现电路设计和程序设计,并进行实时交互仿真。
本设计采用了以单片机为开发平台,控制系采用AT89C52单片机,A/D转换采用ADC0808。
系统除能确保实现要求的功能外,还可以方便进行8路其它A/D转换量的测量。
万用板经过排版、布线、焊接、调试等工作后基于51单片机的简易电压表成形。
关键字:51单片机ADC0808 LED数码显示二、设计要求1、用51单片机作为控制器,来控制ADC0808将模拟信号转换成数值量(0—255);2、可准确测量0—0.5V电压,最小分辨率2mV;3、测量误差小于5%;4、用51单片机控制两位数码管显示实时测量电压的16进制数值量;5、单片机采用中断工作方式;6、在Proteus软件上实现多路电压的测量的电路和程序设计,并进行实时仿真;三、功能创新(1) 在Proteus软件上实现了8路电压的测量设计,并仿真成功,且在万用板上焊接、调试成功;(2) 设计一个外部开关通过中断方式来选择任意一路的电压测量,并用单片机控制一位数码管显示路数;(3)通过编程实现直接在LED数码管上显示测量电压值,并精确到1mV;(4) 设计一个由LED灯和蜂鸣器组成的报警电路,当被测电压超过测量范围时,报警电路实现报警;四、硬件电路设计1、系统设计框图根据设计要求与思路,在Proteus软件上设计和仿真该系统的设计方案。
硬件电路由6个部分组成,即单片机电路、复位电路、4位LED显示电路、A/D转换电路和键盘及报警电路、放大电路。
系统设计框图如下:图1 系统框图2、单片机系统电路本次设计选择Atmel公司生产的AT89C52作为控制芯片。
AT89系列与MCS-51系列单片机相比有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片,使整个电路体积更小。
《基于单片机和LabVIEW的多路数据采集系统设计》篇一一、引言随着科技的飞速发展,多路数据采集系统在众多领域的应用日益广泛。
基于单片机和LabVIEW技术的多路数据采集系统,因其高效、可靠、灵活的特点,正逐渐成为现代数据采集的主流方案。
本文将详细介绍基于单片机和LabVIEW的多路数据采集系统的设计思路、实现方法和应用前景。
二、系统设计概述本系统以单片机为核心控制器,采用LabVIEW软件进行上位机界面设计和数据处理。
系统可实现多路数据的同步采集、实时显示、数据存储及远程传输等功能。
通过单片机的高效数据处理能力和LabVIEW的强大数据分析能力,实现对多路数据的精确采集和处理。
三、硬件设计1. 单片机选择:选用高性能、低功耗的单片机作为核心控制器,负责数据的采集、处理和传输。
2. 数据采集模块:根据实际需求,设计多路数据采集模块,包括传感器接口、数据转换电路等。
3. 通信接口:设计合适的通信接口,如USB、串口等,实现单片机与上位机之间的数据传输。
4. 电源模块:为整个系统提供稳定的电源供应,保证系统的正常运行。
四、软件设计1. LabVIEW界面设计:使用LabVIEW软件进行上位机界面设计,包括数据采集、数据处理、数据显示等模块。
2. 数据处理算法:根据实际需求,设计合适的数据处理算法,如滤波、放大、数字化等。
3. 数据存储与传输:将处理后的数据存储到本地或通过网络传输到其他设备。
4. 程序调试与优化:对程序进行调试和优化,保证系统的稳定性和性能。
五、系统实现1. 单片机编程:使用C语言或汇编语言对单片机进行编程,实现数据的采集、处理和传输。
2. LabVIEW程序设计:使用LabVIEW软件进行上位机程序设计,实现数据的实时显示、存储和传输。
3. 系统调试:对系统进行整体调试,确保各模块的正常运行和数据的准确性。
4. 系统优化:根据实际运行情况,对系统进行优化,提高系统的性能和稳定性。
六、应用前景基于单片机和LabVIEW的多路数据采集系统具有广泛的应用前景。
基于单片机和LabVIEW的多路数据采集系统设计作者:夏妍孙硕来源:《电子技术与软件工程》2018年第12期摘要本文设计多路数据采集系统时,设计思想采用虚拟仪器,在LabVIEW软件平台基础上,以单片机系统作为数据采集部分,分析了该系统的具体设计过程,旨在为实际设计工作提供参考。
【关键词】单片机 LabVIEW 多路数据采集系统设计虚拟仪器是一种软硬件测试平台,以计算机为基础,已经广泛的应用到工业控制领域。
美国国家仪器公司基于虚拟仪器软件开发平台,推出了LabVIEW,其主要面向的领域为计算机测控领域,集中了图形开发、调试及运行功能。
多路数据采集系统利用LabVIEW设计时,多路信号的模拟采集通常利用NI公司的数据采集板卡,但数据采集板卡的价格比较高,导致开发成本大,而且开发周期也比较长。
为解决该问题,本文以单片机代替数据采集板卡,促进开发成本降低的同时,提升数据采集效率。
1 系统硬件设计本文设计多路数据采集系统过程中,系统构成包含两部分,一部分为上位机,采用LabVIEW;另一部分为下位机,单片机即设置在此部分中,系统原理图见图1。
通常,上位机并不会较高的要求硬件,选择普通PC即可,而下位机则对硬件要求较高,因此,本节主要介绍下位机硬件的设计方法。
按照实际需求,下位机功能模块主要包含三部分,分别为信息收集模块、微型控制器、RS232串行通讯模块。
1.1 信息收集模块该模块由多部分构成,如多路模拟信号传输器、数据预处理电路。
设计信息收集模块电路时,一般采用两种方式,一种为信息收集电路利用单独电子元件构建,另一种为通过系统内部控制器所具备的A/D功能设计。
嵌入式系统情况下,根据其硬件设计理论,本文在进行信息收集模块电路设计过程中,采用第二種方式,使用现购买的多路模拟信号传感器。
在信号预处理部分,计算放大器电流为其主要使用的,增强原本比较微弱的传感器信号,使A/D转换输入电压需求得到满足。
1.2 微型控制器根据信息收集模块的设计方案,结合系统对微型控制器能力的要求,下位机硬件控制中心选择STC12C5A60S2单片机,原因是此类型单片机以8051内核为基础建立,并具备机械周期/单时钟功能,同时,该单片机内部还设置有FLASH、计数器、定时器、SRAM等,可将信息收集、控制期间的功能要求有效满足,并与微型控制器的设计要求相符合。
《基于单片机和LabVIEW的多路数据采集系统设计》篇一一、引言随着科技的发展,多路数据采集系统在工业、医疗、环境监测等领域的应用越来越广泛。
为了满足多路数据的高效、准确采集需求,本文提出了一种基于单片机和LabVIEW的多路数据采集系统设计。
该系统设计旨在实现多路信号的同时采集、处理及实时监控,以适应复杂多变的应用环境。
二、系统概述本系统采用单片机作为核心控制器,结合LabVIEW软件进行数据采集和处理。
系统由多个传感器模块、单片机控制器、数据传输模块以及上位机软件组成。
传感器模块负责实时监测各种物理量,如温度、湿度、压力等,并将采集到的数据传输给单片机控制器。
单片机控制器对数据进行处理和存储,并通过数据传输模块将数据发送至上位机软件进行进一步的处理和显示。
三、硬件设计1. 传感器模块:传感器模块采用高精度、高稳定性的传感器,如温度传感器、湿度传感器等,实现对物理量的实时监测。
传感器模块的输出为数字信号或模拟信号,方便与单片机进行通信。
2. 单片机控制器:采用具有高速处理能力的单片机作为核心控制器,实现对数据的快速处理和存储。
单片机与传感器模块和数据传输模块进行通信,实现数据的实时采集和传输。
3. 数据传输模块:数据传输模块采用无线或有线的方式,将单片机控制器的数据传输至上位机软件。
无线传输方式具有灵活性高、安装方便等优点,但需要考虑信号干扰和传输距离的问题;有线传输方式则具有传输速度快、稳定性好等优点。
四、软件设计1. 单片机程序设计:单片机程序采用C语言编写,实现对传感器数据的实时采集、处理和存储。
同时,程序还需要与上位机软件进行通信,实现数据的实时传输。
2. LabVIEW程序设计:LabVIEW程序采用图形化编程语言编写,实现对单片机传输的数据进行实时处理和显示。
同时,LabVIEW程序还可以实现对数据的存储、分析和报警等功能。
五、系统实现1. 数据采集:传感器模块实时监测各种物理量,并将采集到的数据传输给单片机控制器。
干货联盟原理图外接USB转TTL线最小系统传感器程序/*************************此部分为18B20的驱动程序*************************************/#include <reg52.H>#include <intrins.h>sbit D18B20=P3^7;#define NOP() _nop_() /* 定义空指令*/#define _Nop() _nop_() /*定义空指令*/void TempDelay (unsigned char idata us);void Init18b20 (void);void WriteByte (unsigned char idata wr); //单字节写入void read_bytes (unsigned char idata j);unsigned char CRC (unsigned char j);void GemTemp (void);void Config18b20 (void);void ReadID (void);void TemperatuerResult(void);bit flag;unsigned int idata Temperature;unsigned char idata temp_buff[9]; //存储读取的字节,read scratchpad为9字节,read rom ID 为8字节unsigned char idata id_buff[8];unsigned char idata *p,TIM;unsigned char idata crc_data;unsigned char code CrcTable [256]={0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65, 157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220, 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98, 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154, 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36, 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205, 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238, 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139, 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53};///*************************************************************Function:延时处理*parameter:*Return:*Modify:*************************************************************/void TempDelay (unsigned char idata us){while(us--);}/************************************************************ *Function:18B20初始化*parameter:*Return:*Modify:*************************************************************/ void Init18b20 (void){D18B20=1;_nop_();D18B20=0;TempDelay(75); //delay 530 uS//80 _nop_();D18B20=1;TempDelay(12); //delay 100 uS//14 _nop_();_nop_();_nop_();if(D18B20==0)flag = 1; //detect 1820 success! elseflag = 0; //detect 1820 fail!TempDelay(18); //20_nop_();_nop_();D18B20 = 1;}/************************************************************ *Function:向18B20写入一个字节*parameter:*Return:*Modify:*************************************************************/ void WriteByte (unsigned char idata wr) //单字节写入{unsigned char idata i;for (i=0;i<8;i++){D18B20 = 0;_nop_();D18B20=wr&0x01;TempDelay(2); //delay 45 uS //3_nop_();_nop_();D18B20=1;wr >>= 1;}}/************************************************************ *Function:读18B20的一个字节*parameter:*Return:*Modify:*************************************************************/ unsigned char ReadByte (void) //读取单字节{unsigned char idata i,u=0;for(i=0;i<8;i++){D18B20 = 0;u >>= 1;D18B20 = 1;if(D18B20==1)u |= 0x80;TempDelay (2);_nop_();}return(u);}/************************************************************ *Function:读18B20*parameter:*Return:*Modify:*************************************************************/ void read_bytes (unsigned char idata j){unsigned char idata i;for(i=0;i<j;i++){*p = ReadByte();p++;}}/************************************************************ *Function:CRC校验*parameter:*Return:*Modify:*************************************************************/ unsigned char CRC (unsigned char j){unsigned char idata i,crc_data=0;for(i=0;i<j;i++) //查表校验crc_data = CrcTable[crc_data^temp_buff[i]];return (crc_data);}/************************************************************ *Function:读取温度*parameter:*Return:*Modify:*************************************************************/ void GemTemp (void){read_bytes (9);if (CRC(9)==0) //校验正确{Temperature = temp_buff[1]*0x100 + temp_buff[0];// Temperature *= 0.625;Temperature /= 16;TempDelay(1);}}/************************************************************ *Function:内部配置*parameter:*Return:*Modify:*************************************************************/void Config18b20 (void) //重新配置报警限定值和分辨率{Init18b20();WriteByte(0xcc); //skip romWriteByte(0x4e); //write scratchpadWriteByte(0x19); //上限WriteByte(0x1a); //下限WriteByte(0x7f); //set 11 bit (0.125)Init18b20();WriteByte(0xcc); //skip romWriteByte(0x48); //保存设定值Init18b20();WriteByte(0xcc); //skip romWriteByte(0xb8); //回调设定值}/************************************************************ *Function:读18B20ID*parameter:*Return:*Modify:*************************************************************/ void ReadID (void)//读取器件id{Init18b20();WriteByte(0x33); //read romread_bytes(8);}/************************************************************ *Function:18B20ID全处理*parameter:*Return:*Modify:*************************************************************/ void TemperatuerResult(void){p = id_buff;ReadID();Config18b20();Init18b20 ();WriteByte(0xcc); //skip romWriteByte(0x44); //Temperature convertInit18b20 ();WriteByte(0xcc); //skip romWriteByte(0xbe); //read Temperaturep = temp_buff;GemTemp();}void GetT emp(){if(TIM==100) //每隔1000ms 读取温度{ TIM=0;TemperatuerResult();}}/************************************* [ t1 (10ms)中断] 中断*************************************/ void timer1() interrupt 1{TH0=(65536-10000)/256;TL0=(65536-10000)%256;TIM++;}} Labview界面。
《基于单片机和LabVIEW的多路数据采集系统设计》篇一一、引言随着现代工业自动化和智能化的发展,多路数据采集系统在各种应用领域中发挥着越来越重要的作用。
为了满足高精度、高效率的数据采集需求,本文提出了一种基于单片机和LabVIEW 的多路数据采集系统设计。
该系统不仅具备多路数据同时采集和处理的能力,而且具有良好的实时性和可扩展性。
二、系统设计概述本系统以单片机作为核心控制器,通过多路传感器实现对多种数据的实时采集。
同时,利用LabVIEW软件进行上位机界面设计和数据处理。
系统设计主要包括硬件设计和软件设计两部分。
三、硬件设计1. 单片机选择:选用性能稳定、处理速度快、功耗低的单片机作为核心控制器。
单片机应具备多路ADC(模数转换器)接口,以便于连接多种传感器。
2. 传感器选择:根据实际需求选择合适的传感器,如温度传感器、湿度传感器、压力传感器等。
传感器应具备高精度、低噪声、快速响应等特点。
3. 数据采集电路:设计多路数据采集电路,将传感器输出的信号转换为单片机可处理的数字信号。
4. 通信接口:设计单片机与上位机之间的通信接口,如USB、串口等,以便于数据的传输和处理。
四、软件设计1. LabVIEW界面设计:利用LabVIEW软件进行上位机界面设计,包括数据采集、数据处理、数据存储等功能。
界面应具备友好的操作界面和丰富的功能选项。
2. 数据处理算法:设计合适的数据处理算法,如滤波、放大、计算等,以提高数据的准确性和可靠性。
3. 通信协议:制定单片机与上位机之间的通信协议,确保数据的准确传输和实时性。
4. 系统调试与优化:对系统进行调试和优化,确保系统的稳定性和可靠性。
五、系统实现1. 硬件连接:将单片机与传感器、通信接口等硬件设备连接起来,形成完整的数据采集系统。
2. 软件编程:编写单片机和上位机的程序,实现数据的实时采集、处理和传输。
3. 系统测试:对系统进行测试,包括功能测试、性能测试和稳定性测试等,确保系统满足设计要求。
252 •电子技术与软件工程 Electronic Technology & Software Engineering单片机技术• SCM Technology【关键词】单片机 LabVIEW 多路数据采集系统 设计虚拟仪器是一种软硬件测试平台,以计算机为基础,已经广泛的应用到工业控制领域。
美国国家仪器公司基于虚拟仪器软件开发平台,推出了LabVIEW ,其主要面向的领域为计算机测控领域,集中了图形开发、调试及运行功能。
多路数据采集系统利用LabVIEW 设计时,多路信号的模拟采集通常利用NI 公司的数据采集板卡,但数据采集板卡的价格比较高,导致开发成本大,而且开发周期也比较长。
为解决该问题,本文以单片机代替数据采集板卡,促进开发成本降低的同时,提升数据采集效率。
1 系统硬件设计本文设计多路数据采集系统过程中,系统构成包含两部分,一部分为上位机,采用LabVIEW ;另一部分为下位机,单片机即设置在此部分中,系统原理图见图1。
通常,上位机并不会较高的要求硬件,选择普通PC 即可,而下位机则对硬件要求较高,因此,本节主要介绍下位机硬件的设计方法。
按照实际需求,下位机功能模块主要包含三部分,分别为信息收集模块、微型控制器、RS232串行通讯模块。
1.1 信息收集模块该模块由多部分构成,如多路模拟信号传输器、数据预处理电路。
设计信息收集模块电路时,一般采用两种方式,一种为信息收集电路利用单独电子元件构建,另一种为通过系统内部控制器所具备的A/D 功能设计。
嵌入式系统情况下,根据其硬件设计理论,本文在进行信息收集模块电路设计过程中,采用第二基于单片机和LabVIEW 的多路数据采集系统设计文/夏妍 孙硕种方式,使用现购买的多路模拟信号传感器。
在信号预处理部分,计算放大器电流为其主要使用的,增强原本比较微弱的传感器信号,使A/D 转换输入电压需求得到满足。
1.2 微型控制器根据信息收集模块的设计方案,结合系统对微型控制器能力的要求,下位机硬件控制中心选择STC12C5A60S2单片机,原因是此类型单片机以8051内核为基础建立,并具备机械周期/单时钟功能,同时,该单片机内部还设置有FLASH 、计数器、定时器、SRAM 等,可将信息收集、控制期间的功能要求有效满足,并与微型控制器的设计要求相符合。