单片机数据采集系统
- 格式:docx
- 大小:50.09 KB
- 文档页数:8
模拟数据采集(八路模拟量)
◇
一设计思想:
单片机数据采集系统是计算机在工业控制中最为普遍的应用系统¸它的任
务是采集生产过程中的各种工况参数经过处理后送入内存储器,CPU 再对这些参数数据进行分析,运算和处理。
本系统设计一个单片机系统,负责数据的采集和显示,设计一个多路数据输入输出系统,实现8路输入和输出。
采用89C51系列单片机、ADC0809、LCD1602等芯片实现硬件仿真,采用C 语言编程。
最后硬件电路在Proteaus 下仿真实现。
数据采集电路的原理框图1所示。
图1 数据采集电路的原理框图
硬件部分实现对8路数据采集和显示的功能,包括MCS-51单片机、ADC0809、LCD1602;软件部分实现单片机对8路输入数据的采集以及对LCD 的显示操作。
主要设计思想:单片机P1与ADC0809相连,P0与LCD 连接。
模拟信号通过IN0——IN7输入到ADC0809中转换为数字信号,P1获得此值后,经过处理得到每位的数据后,通过P2口写数据到LCD 屏上。
模拟输入通道1 模拟输入通道2
模拟输入通道8
ADC0809
MCS-51 单片机
LCD1062。
单片机与传感器的数据采集与处理技术在现代智能设备和物联网系统中,单片机与传感器的数据采集与处理技术起着至关重要的作用。
单片机作为一个微型计算机,能够通过各种传感器采集到的数据进行处理和分析,从而实现对环境、设备等方面的实时监测和控制。
本文将详细介绍单片机与传感器的数据采集与处理技术,帮助读者更好地了解这一领域的知识和应用。
一、传感器的作用及分类传感器是将感知到的信息转化为电信号或其他形式的信号的设备,常用于测量各种物理量,如温度、湿度、压力等。
根据其工作原理和测量对象的不同,传感器可分为光学传感器、温度传感器、压力传感器等多种类型。
在数据采集系统中,传感器起着关键作用,能够实时捕获环境中的各种信息,并将其转化为数字信号供单片机进行处理。
二、单片机的基本结构和功能单片机是一种集成了微处理器、存储器和各种输入输出接口的微型计算机,常用于嵌入式系统中。
单片机具有高度集成、体积小、功耗低等特点,能够实现对外部设备和传感器的数据采集和控制。
在数据处理方面,单片机通过其内部的运算单元和存储单元,对采集到的数据进行处理和分析,实现各种功能的实现。
三、数据采集与处理流程数据采集与处理技术通常包括三个基本步骤:传感器信号采集、数据传输和单片机数据处理。
首先,传感器将感知到的信息转化为电信号,并通过模拟数字转换芯片(ADC)转化为数字信号;其次,将采集到的数据通过串口或其他接口传输给单片机;最后,单片机对接收到的数据进行处理和分析,根据预先设定的算法实现各种功能。
四、常用的传感器和单片机在实际应用中,常用的传感器包括温湿度传感器、光学传感器、压力传感器等;常用的单片机包括51系列单片机、STM32系列单片机等。
这些传感器和单片机具有不同的特点和功能,适用于不同的应用场景和要求。
例如,温湿度传感器可用于环境监测,光学传感器可用于图像识别,压力传感器可用于工业控制等。
五、数据采集与处理技术的应用数据采集与处理技术在各个领域均有广泛的应用,如工业自动化、智能家居、智能农业等。
6科技资讯科技资讯S I N &T NOLOGY I NFO RM TI ON 2008N O .15SCI ENC E &TECH NOLOG Y I N FOR M A TI ON 信息技术随着单片机技术的发展,其高稳定性和高信价比的到了个广范的认可,越来越多的应用在数据采集系统和监测系统。
我国工业自动化程度的迅速发展,对数据采集系统要求也越来越高,由原来的单一数据采集逐渐扩展到多数据的采集,如对工业生产设备的电流、电压、温度、压力、流量等数据的采集。
数据采集的准确、快速关系到生产安全及产品的质量。
数据采集系统有很多种实施方案,本文介绍采用SST89C58单片机作为中心控制单元,应用串行A/D 转换芯片完成多路数据采集,利用RS232串口驱动芯片完成单片机与PC 的数据交换,这样用户可以在上位机上利用本系统提供的数据处理平台对数据进行查询、分析、绘图和远程监控等,本系统可以是工作人对生产设备的运行监测和故障排查。
1硬件实现本系统有上位机(PC)和下位机(单片机)组成。
多线程数据采集系统的工作是:传感器将被测信号的物理量转换成电信号,经过信号调节(滤波),抑制干扰噪声信号的高频分量,经过采样器,将信号的采样值转化为数字信号,再通过接口电路将数据送到单片机中进行处理。
对于P C 机器的要求根据需要而定一般应选择处理速度快、存储量大、性能稳定。
应尽量选择品牌机器,在实际应用中品牌机器的稳定性还是的到认可的。
如果PC 一旦出现问题那对数据采集系统的影响很大,对生产安全和产品的质量都有很大的影响。
操作软件选择组态王,工业控制组态软件是一种可以各种数据采集卡等设备中实时采集数据,发出控制命令并监控系统运行是否正常的软件包,组态软件能充分利用W i ndow s 强大的图形编辑功能,以动画方式显示监控设备的运行状态,方便地构成监控画面和实现控制功能,并可以生成报表,立时数据库等。
系统采用组态王6.5作为监控软件开发平台,组态王是运行在W i ndo ws 2000/XP/NT,由工程浏览器T ouchm a k 和画面行系统T ouc hvi e w 两部分组成。
单片机原理及系统课程设计
专业:自动化
班级:动xxx
姓名:xxxxxx
学号:******xxx
指导教师:xxxxxx
兰州交通大学自动化与电气工程学院
2012 年 7月 1日
1引言
在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用。
传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型。
目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面。
本次设计是以ADC0808作为A/D转换模块,以AT89C51为核心控制器件,以LED作为输出显示的简易数据采集器,主要功能是检测电压的大小。
2 设计方案及原理
2.1设计要求
可以检测一路电压信号,电压信号量程0~5V,AD转换精度8位;用LED 数码管显示测量值。
给出系统硬件电路原理图(用proteus或其它电路图软件画出);给出系统程序流程图、程序清单(加注释);以论文格式给出设计报告。
2.2 设计方案
选择AT89C51单片机为核心控制器件;A/D转换则采用ADC0808实现;与单片机的接口为P1口和P2口的高四位引脚,电压显示采用4位一体的LED数码
管,LED 数码的段码输入,由并行端口P0产生:位码输入,用并行端口P2低四位产生。
硬件电路设计由6个部分组成:A/D 转换电路,AT89C51单片机系统,LED 显示系统、时钟电路、复位电路以及测量电压输入电路。
硬件电路设计框图如图1所示。
图1 数字电压表系统硬件设计框图
3硬件设计
图2
数据采集系统的硬件电路
AT89C51
显示系统
A/D 转换复位电路 时钟电路
测量电压
4程序设计
4.1程序设计总方案
根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序模块,数值转换模块和显示子程序模块,这四个程序模块构成了整个系统软件的主程序,如图12所示。
图3 单片机数据采集系统主程序框图
4.2 系统子程序设计
(1)初始化
对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等。
(2)A/D转换子程序
A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图13所示。
图4 模数转换结构图
(3)显示子程序
显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms[10]。
在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出中断功能实现11μs定时,通过软件延时程序来实现5ms的延时。
5总结
这次单片机课程设计有很多的收获,锻炼了自己的实践动手能力,温习了单片机编程知识,很有意义!在这过程中遇到了很多很多的问题:1、硬件电路的搭建问题。
找到了ADC0809,AT89C51,但是显示器不知道用哪个好,前面两个都是自己熟悉的芯片,显示器很陌生,这是遇到的第一个问题,最后想了想,上网查了些资料,学习了显示的芯片,最终解决问题。
2、芯片选择好了后发现屏幕不
会亮,很纠结,刚开始想着是程序出了问题,但是最终没能找出错误,又再看了显示器芯片的介绍,最终发现是没接显示亮度的端口。
总的来说,这次能够独立的做一个单输入的电压器,培养和锻炼了自己,很有意义,以后要多做这样的练习!
6参考文献
[1]张金敏.单片机原理与应用系统设计[M].成都:西南交通大学出版社2011:233-250
[2]李华.计算机控制系统[M].北京:机械工业出版社,2011:151-158
[3]李华.单片机原理及应用[M].兰州:兰州大学出版社,2001:190-198
7附录
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char/*定义uchar为无符号字符型*/
sbit P2_3=P2^3;/*定义p2_3为P2口的第四位*/
sbit OE=P3^0;/*定义OE为p3口的第一位*/
sbit EOC=P3^1;/*定义EOC为P3口的第二位*/
sbit P2_1=P2^1;/*定义P2_1为P2口的第二位*/
sbit P2_2=P2^2;/*定义P2_2为P2口的第三位*/
sbit ST=P3^2;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
uchar code leddata_dot[]={0x40,0x79,0x24,0x30,0x19,0x12};
uchar code leddata[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; void delay(uchar n)/*延时函数delay*/
{
uchar i,j;
for(i=0;i<n;i++)
for(j=0;j<125;j++);
}
void convert(uchar volt_data)/*转换函数*/
{
uchar temp;
P0=leddata_dot[volt_data/51];
P2_1=1;
delay(3);/*启动延时函数delay*/
P2_1=0;
if((volt_data%51)<0x19)
{
P0=leddata[(volt_data%51)*10/51];
P2_2=1;/*P2.2被赋值为1*/
delay(3);
P2_2=0;/*P2.2被清零*/
}
else
{
P0=leddata[(volt_data%51)*10/51+5];/*定义p0口*/
P2_2=1;
delay(3);
P2_2=0;
}
temp=(((volt_data%51)*10)/51)*10%51;
if(temp<0x19)
{
P0=leddata[temp*10/51];/*重新定义P0口*/
P2_3=1;
delay(3);
P2_3=0;
}
else
{
P0=leddata[temp*10/51+5];/*定义P0口*/
P2_3=1;
delay(3);
P2_3=0;
}
}
void main()/*主函数*/
{
uchar volt_data;/*定义volt_data为无符号字符型*/
P3_4=1;/*置位p3.4*/
P3_5=1;/*置位p3.5*/
P3_6=0;/*把p3.6清零*/
while(1)/*无限循环*/
{
ST=0;
_nop_();
ST=1;
_nop_();
ST=0;
if(EOC==0)/*当AD转换结束时,就进入到延时程序*/ delay(100);
while(EOC==0);
OE=1;/*输出使能为1时,能输出已转换的数字量*/ volt_data=P1;
OE=0;/*输出使能为0,AD转换器不输出数据*/ convert(volt_data);
}
}。