李辉
(晋城市城市管理监督指挥中心 山西 晋城 048000)
随着信息技术的发展和普及,数据采集技术已在通信、测控仪器、航空航天、工业自动控制等领域得到了广泛的应用,同时C8051F060微控制器体积非常小、功能很强、可靠性也比较好,非常适合应用于计算机控制系统中用于对现场传感器进行采集以及实现现场设备控制的场合。
美国Silicon Laboratories公司于前几年推出了一款具有集成混合信号的片上智能系统型的单片机C8051F060,具有与80C51兼容的CIP-51内核,指令集与MCS-51完全兼容。具有59个数I/O管脚;它采用的是具有高速、流水线结构等特点的CIP-51内核(最快可达25MIPS),其内部指令的执行速度于MCS-51相比,有了极大的提高。C8051F060的内部功能部件主要包括了两个16位、采集速率达到1 Msps的ADC模块、具备寻址功能的64 kB的XRAM、控制器局域网(CAN2.0B)控制器、两个具有可编程数据更新方式12位DAC、SPI接口、此外还有SMBus/I2C接口以及两个UART串接、一个具有八通道多路开关的十位、200 ksps的ADC、集成在芯片内部的看门狗定时器、片内VDD监视器以及温度传感器等。
系统以C8051F060为核心,采用I/O口采集外部的模拟信号,使用微控制器内部集成的的AD转换器,将模拟量转换成数字量,并通过计算机UART口上传至电脑上。计算机端编写接收软件把数据接收上来,并通过软件内部控件将传感器数据还原成原始波形曲线,这样就实现了将传感器数据采集、波形复原功能。本系统的传感器数据采集模块部分的结构图如图1所示。
图1 传感器数据采集模块结构图Fig.1 Sensor data acquisition module structure diagram
传感器采集模块采用单片机内部的AD转换器,在输入端采用电阻分压方式对信号幅度进行调节,可以增大传感器信号的输入范围。
本系统进行电平转换功能的芯片采用的是MAX232,之所以需要转换,是因为C8051F060输出的信号是TTL电平,而电脑上具有的是标准串口;因此必须要转换二者之间的电气参数,所以要对单片机输出的TTL信号电平进行一定的信号转换才能完成单片机与PC机的数据通讯。进行电压转换的芯片是MAX1658,因为外接的供电电源是5 V,但是C8051F060采用的是3.3 V进行供电,所以需要电压转换。传感器数据采集模块图如图2所示。
图2 传感器数据采集模块电路图Fig.2 Sensor data acquisition module circuit
传感器数据采集模块软件设计部分主要由单片机c8051f060端和以及电脑上位机端两个部分组成。单片机c8051f060端主要功能是实现内部ADC采集多个传感器数据,存入数组后并通过UART口向电脑上位机端实时上传。电脑上位机端软件主要功能是实现设置单片机c8051f060的通信波特率、接收单片机C8051F060采集的传感器数据以及将波形进行还原等功能。
传感器数据采集模块以单片机为核心控制单元,最多可采集外部八路传感器信号。本模块使用的是单片机c8051f060内部的数字模拟转换器ADC2。启动ADC2开始转换所用的方法为为采用定时器2溢出的方式。单片机c8051f060将8个信号通道采集上来的传感器信号统统转换成为数字信号,再向单片机UART口发送数据之前,关闭单片机的所有中断。等待数据全部发送结束后,打开单片机所有的中断,开始准备下一次对传感器进行数据采集。传感器数据采集模块的程序流程情况图如图3所示。
图3 传感器数据采集模块程序流程图Fig.3 Sensor data acquisition module program flow chart
C8051f060单片机的内部定时器2的中断应用程序:
void TIMER2_ISR (void) interrupt 5//单片机 c8051f060的内部定时器2中断
{
SFRPAGE=TMR2_PAGE;
TF2=0; //去掉中断标志TF2
tongdao_input++; //切换至下一路输入
if(tongdao_input==moni_input) //当最后一路数据采集完成后转到第一通道
{
tongdao_input=0;
}
SFRPAGE=ADC2_PAGE;
AMX2SL=tongdao_input;
}
C8051f060单片机的内部ADC2转换结束中断应用程序:
void ADC2_ISR (void)interrupt 18//单片机 c8051f060的内部ADC2转换结束中断
{
static long jishuqi[10]={0L};
unsigned char i;
char SFRPAGE_SAVE=SFRPAGE;//保存目前的 SFR配置页
SFRPAGE=ADC2_PAGE;//切换到 ADC2的配置页AD2INT=0; //去掉ADC2的转换完成标志
jishuqi[amux_convert]=ADC2; //读取ADC2内的数值
if(tongdao_convert== (moni_input-1))
{
for(i=0; i result[i]=jishuqi[i]; jishuqi[i]=0L; } SFRPAGE=UART1_PAGE;//切换到串口配置页 EA=0;//关闭所有中断 for(j=0; j { SBUF1=244+j; while(!TI1); TI1=0; celiangzhi=result[j]*243/1023;//将测量值经过计算转换为实际值 SBUF1=measurement; while(!TI1);//等待串口发送成功标志变化 TI1=0; } EA=1;//重新开全局中断 } tongdao_convert= 通 道 _input;//当 前 转 换 路 变 为tongdao_input SFRPAGE=SFRPAGE_SAVE; //保存当前的SFR配置页 } 上位机端采用Visual Basic程序语言进行数据接收与波形还原。以下为串口配置初始化函数程序代码: Main.ctrMSComm.InputLen=1 Main.ctrMSComm.InputMode=1'接受方式为二进制数组 Main.ctrMSComm.InBufferSize=1024'接受缓冲区为1大小 Main.ctrMSComm.RThreshold=1'接收缓冲区为一个字节就触发事件 intPort=1 strSet="115200,n,8,1" blnAutoSendFlag=False blnReceiveFlag=False intReceiveLen=0'接收初始化 绘图部分主要调用两条语句:Line语句和PSet语句。Line语句表示在图中画一个线段:起点和终点分别是语句中的两个坐标点。PSet语句的作用是在制定容器内画一个点,此容器的位置就是语句内的坐标点。 Line语句与PSet语句如下: drawline.Line(X0,Y0)-(X,Y) drawline.PSet(X,Y) 图4与图5为用Visual Basic程序编写的多路数据采集系统数据接收界面以及波形还原界面。 图4 多路数据采集系统数据接收界面Fig.4 The data receiving interface of multi-channel data acquisition system 图5 多路数据采集系统波形还原界面Fig.5 Multi channel data acquisition system to restore the waveform interface 在多路数据采集系统设计完成后,对系统进行了测试。在任意一路模拟信号端连接信号发生器,对数据进行采集,并波形还原,再与用示波器捕捉到的信号发生器的波形进行比较,看是否吻合。图6与图8为示波器捕捉到的频率为30 Hz的三角波与正弦波截图。图7与图9为用多路数据采集系统采集到数据后进行波形还原后,在计算机上看到的波形图。 可以从图6~图9中看到:多路数据采集系统采集到的波形发生器的波形与示波器捕捉到的信号发生器的波形基本一致。 图6 三角波30 Hz(示波器)Fig.6 Triangle wave 30 Hz(DSO) 图7 三角波30 Hz(上位机)Fig.7 Triangle wave 30 Hz(PC) 图8 三角波30 Hz(示波器)Fig.8 Triangle wave 30 Hz(DSO) 图9 三角波30 Hz(上位机)Fig.9 Triangle wave 30 Hz(PC) 文中设计的基于C8051F060的多路数据采集系统可对8路模拟量数据进行采集,并能实时传输到PC机,并能实时显示所采集的数据及模拟量的波形。且成本低廉,结构简单,可广泛应用于各种工业场合中。 [1]潘琢金.C8051F060/1/2/3/4/5/6/7混合信号ISP FLASH微控制器[M].新华龙电子有限公司,2004. [2]张培仁.基于C语言C8051F系列微控制器原理与应用[M].北京:清华大学出版社,2007. [3]李雁翎.Visual Basic程序设计[M].北京:清华大学出版社,2004. [4]康健,武彬.基于单片的变频调速恒压给水控制系统设计[J].煤炭技术.2012(5):23-26.KANG Jian,WU Bin.The design of control system of based on chip VVVF constant pressure watersupply[J].Coal technology,2012,(5):23-26. [5]田泽.嵌入式系统与应用[M].北京:航空航天大学出版,2005. [6]李洪科,吴汉松.基于RTW的无刷直流电机控制系统仿真的新方法.微计算机信息,2005:67-69.LI Hong-ke,WU Han-song.Based on RTW brushless DCmotor control system simulation the new method[J].Microcomputer Information,2005(6):67-69.2.2 电脑端系统的上位机软件设计
3 系统测试
4 结 论