基于微机控制通信的单片机通用数据采集系统.docx
- 文档编号:10168246
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:23
- 大小:31.63KB
基于微机控制通信的单片机通用数据采集系统.docx
《基于微机控制通信的单片机通用数据采集系统.docx》由会员分享,可在线阅读,更多相关《基于微机控制通信的单片机通用数据采集系统.docx(23页珍藏版)》请在冰豆网上搜索。
基于微机控制通信的单片机通用数据采集系统
1、内容简介:
本文论述了基于微机通信的单片机通用数据采集系统的硬件设计方法。
电路的主要功能是:
以C8051F020为核心的单片机数据采集系统通过RS232接口接收微机发送的数据采集命令,并将采集通过RS232接口传送给微机。
采集的数据有8路模拟量和2路数字量。
C8051F020采集的数据同时通过液晶显示器显示。
另外,电路上还设计了打印接口、键盘电路、数据存储电路、实时时钟电路、JTAG接口电路、声音报警电路等。
Thisarticleelaboratedbasedonthemicrocomputercorrespondencemonolithicintegratedcircuitgeneraldataacquisitionsystemhardwaredesignmethod.Theelectriccircuitmainfunctionis:
takeC8051F020asthecoremonolithicintegratedcircuitdataacquisitionsystemthedataacquisitionorderwhichtransmitsthroughtheRS232connectionreceivemicrocomputer,andwillgatherthroughtheRS232connectiontransmitsforthemicrocomputer.Thegatheringdatahas8groupsimulationquantitiesand2groupdigitalquantities.AtthesametimeC8051F020gatheringdatathroughliquid-crystaldisplaydemonstration.Moreover,ontheelectriccircuithasalsodesignedtheprintingconnection,thekeyboardelectriccircuit,thedatastorageelectriccircuit,thereal-timeclockelectriccircuit,theJTAGconnectionelectriccircuit,thesoundalarmcircuitandsoon.
2、选题论证
在工业生产和科学研究中,经常要对各种数据进行采集,传统的采集方式是利用PC机通过采集卡采集数据。
PC机处理能力强,便于数据处理及存储。
但是PC体积大携带不方便,对工作环境要求苛刻不适合工业现场数据采集。
单片机以其集成度高、运算速度快、体积小、运行可靠、价格低廉等优点广泛应用于现场数据采集。
基于微机控制通信的单片机通用数据采集系统结合PC机与单片机的优点于一体,完全能满足现场数据采集的要求,并且还可以通过串口与PC机通信,接收PC机控制命令及向PC机发送采集的数据。
3、特点功能总述
系统通过RS232串口接收PC机命令,完成相应通道的数据采集,再将采集处理后的数据通过RS232串口发给PC机。
同时系统可以通过键盘控制而独立工作。
在系统不方便与PC机通信的情况下,采集的数据可以存储在系统的存储电路中,系统断电数据不丢失。
同时采集的数据也可以通过液晶显示器显示出来或者经打印机打印出来。
实时时钟电路用来提供采集数据的日期及时间,以便数据保存及分析。
4、系统方案实现原理
本系统是以C8051F020为核心的数据采集系统。
C8051F020是美国CYGNAL公司推出得一款高速高性能混合信号控制器。
片内集成AD、DA、电压基准、多路开关、可编程增益放大器等模拟器件,使得C8051F020可以直接处理模拟信号。
系统使用C8051F020自带的12位AD转换器进行数据采集,采集的信号有两路4-20mA的电流信号、六路电压信号。
5、使用说明
给系统接入+5V电源,系统上电后默认采集0通道数据,该通道采集的是模拟电源经电位器分压后的电压。
系统将AD输出的二进制数据转换成十进制数据并显示出来。
系统扩展的六个按键,分别为‘上’、‘下’、‘左’、‘右’、‘确认’、‘取消’六个功能键。
可以通过‘上’、‘下’键来选择所要采集的通道。
按下‘上’键,系统采集的通道号减1。
按下‘下’键,系统采集的通道号加1。
系统还接收PC机发送的指令,指令形式为ASCII码。
PC机要采集哪个通道的数据就发送其对应的通道号即可。
例如PC机发送ASCII码‘5’,则系统开始采集通道5的数据,并将采集的数据上传至PC机。
PC机发送ASCII码‘8’停止接收数据,系统接收到ASCII码的‘8’后,停止向PC机发送数据。
但系统仍继续采集数据,并通过液晶显示采集的结果。
图1所示为系统硬件框图
图1系统硬件框图
6、试验程序
;SMBus总线单字节读写程序
;-----------------------------------------------
$include(c8051f020.inc);Includeregisterdefinitionfile.;
OKEQUP2.3;确认键
RIGHTEQUP2.2;右键
LEFTEQUP2.6;左键
UPEQUP2.5;上键
DOWNEQUP2.4;下键
CANCALEQUP2.7;取消键
SPEAKEREQUP3.0;蜂鸣器
LCD_STBEQUP3.4;液晶选通
LCD_BUSYEQUP3.6;液晶判忙
P_STBEQUP3.5;打印机选通
P_BUSYEQUP3.7;打印机判忙
;-----------------------------------------------
;内部数据存储器定义
;-----------------------------------------------
LOOPDATA10H
LOOPLDATA11H
LOOPLLDATA12H
DIS_TDHDATA13H;通道号显示寄存器
CUN_AINDATA14H;通道号寄存器
COM1RDATADATA15H;串口1接收的数据寄存器
L0DATA70H
L1DATA71H
L2DATA72H
L3DATA73H
L4DATA74H
L5DATA75H
L6DATA76H
L7DATA77H
D0DATA78H
D1DATA79H
D2DATA7AH
D3DATA7BH
D4DATA7CH
D5DATA7DH
D6DATA7EH
D7DATA7FH
;标志位定义
KEYCANCALBIT00H;按下取消键标志位
KEYDOWNBIT01H;按下下键标志位
KEYUPBIT02H;按下上键标志位
KEYLEFTBIT03H;按下左键标志位
KEYRIGHTBIT04H;按下右键标志位
KEYOKBIT05H;按下确定键标志位
KEYEDBIT06H;有键按下标志位
COM1RFBIT07H;串口1接收了一个字符标志
COM1_STABIT08H;串口1启动数据传输标志
CZSBIT12H;温度转换小数点标志位,纯整数
SZSBIT13H;温度转换小数点标志位,三整数
EZSBIT14H;温度转换小数点标志位,二整数
CXSBIT15H;温度转换小数点标志位,纯小数
;-----------------------------------------------
ORG0000H
LJMPRESET
ORG0023H
LJMPCOM1_ISR;串口1中断处理子程序入口
ORG00A3H
LJMPCOM2_ISR;串口2中断处理子程序入口
;-----------------------------------------------复位初始化程序
RESET:
MOVSP,#7FH;设置STACK堆栈
LCALLDELAY
MOVOSCICN,#14H;使用外部时钟
MOVOSCXCN,#0E7H;使用外部时钟
MOVLOOPL,#80H;延时,等待时钟稳定
LCALLDELAYL
MOVOSCICN,#18H;使用外部时钟
MOVWDTCN,#0DEH;关看门狗
MOVWDTCN,#0ADH;关看门狗
MOVRCAP2H,#0FFH;串口0
MOVRCAP2L,#0DCH;波特率9600(FFDC)
MOVSCON0,#070H;方式1
MOVT2CON,#034H;定时器2
MOVRCAP4H,#0FFH;串口1
MOVRCAP4L,#0EEH;波特率19200(FFEEH)
MOVSCON1,#070H
MOVT4CON,#034H
MOVIE,#91H;允许INT0,UART0中断
MOVEIE1,#002H;允许SMBus中断
MOVEIE2,#040H;允许UART1中断
MOVXBR0,#00000101B;设置交叉开关:
使能串1,SMBus.
MOVXBR1,#00000000B;设置交叉开关:
MOVXBR2,#01000100B;设置交叉开关:
使能串2.
MOVSMB0CR,#0E0H;SMBus时钟速率寄存器
MOVREF0CN,#03H;使用内部电压基准VREF
MOVAMX0CF,#00H;AD初始化子程序
MOVADC0CN,#80H
MOVADC0CF,#28H
SETBEA;开中断
;-----------------------------------------------
;IO口设置
;-----------------------------------------------
MOVP1,#00H;闲置IO置零处理
MOVP5,#00H;闲置IO置零处理
MOVP6,#00H;闲置IO置零处理
CLRP_BUSY;闲置IO置零处理
CLRP2.1;闲置IO置零处理
;-----------------------------------------------
;MAINPROGRAM
;-----------------------------------------------
MOVLOOPLL,#20H;延时,蜂鸣器开机提示
LCALLDELAYLL
CLRSPEAKER
CLRLCD_STB;初始化液晶选通端
CLRCOM1RF;初始化串口接收字符标志
CLRCOM1_STA;初始化串口启动传输标志
MAIN:
MOVA,#0F4H;液晶显示器清屏
LCALLWR_LCD;调用向液晶写数据子程序
LCALLDIS_PIC;调用显示“串口数据采集系统”子程序
DIS_LOOP:
MOVDIS_TDH,#30H;给通道号寄存器赋初值
MOVCUN_AIN,#08H;给通道号计数器赋初值
DIS_LOOP1:
LCALLDIS_PICTD;调用显示“通道号”子程序
MOVA,DIS_TDH;取出当前要采集的通道号
ANLA,#0FH
MOVAMX0SL,A;将当前采集的通道号送入AD,进行转换
LCALLADC;调用AD转换子程序
MOVR6,ADC0H;保存AD转换结果
MOVR7,ADC0L
LCALLHB2;将AD转换结果转换为十进制数
MOVD0,R4;保存十进制结果
MOVD1,R5
JNBCOM1_STA,DIS_LOOP11;判断是否将数据发送出去
LCALLCOM1_SEND;发送数据,调用串口发送数据子程序
DIS_LOOP11:
LCALLDIS_BCD;调用显示采集结果子程序
MOVLOOPLL,#40H;显示延时
DIS_LOOP2:
MOVLOOPL,#80H;显示延时
LCALLDELAYL
JNBCOM1RF,DIS_LOOP22;判断串口是否接收到命令
MOVA,COM1RDATA;接收到命令,将命令送入A
CJNEA,#38H,DIS_LOOP23;判断命令类型
CLRCOM1_STA;接收38H,停止通讯
CLRCOM1RF;清零接收数据标志
LJMPDIS_LOOP22;转到按键判断程序
DIS_LOOP23:
JCDIS_LOOP24;大于38H为无效命令
CLRCOM1_STA;停止数据传输
CLRCOM1RF;清零接收数据标志
LJMPDIS_LOOP22;转按键处理程序
DIS_LOOP24:
MOVDIS_TDH,COM1RDATA;保存串口接收的采集通道号
SETBCOM1_STA;启动数据传输
CLRCOM1RF;清零接收数据标志
DIS_LOOP22:
LCALLCOMP_KEY;调用按键判断子程序
JNBKEYUP,DIS_LOOP3;没有键按下
DECDIS_TDH;“上”键被按下,将采集通道号减一
MOVA,DIS_TDH;判断通道号是否溢出
CJNEA,#2FH,DIS_LOOP21;小于等于2FH则溢出
MOVDIS_TDH,#37H;通道号溢出,进行重新赋值
DIS_LOOP21:
LJMPDIS_LOOP1;继续显示
DIS_LOOP3:
JNBKEYDOWN,DIS_LOOP4;判断“下”键是否按下
INCDIS_TDH;“下”键被按下,将通道号加一
MOVA,DIS_TDH;判断通道号是否溢出
CJNEA,#38H,DIS_LOOP31;大于等于38H则溢出
MOVDIS_TDH,#30H;通道号溢出,进行重新赋值
DIS_LOOP31:
LJMPDIS_LOOP1;继续显示
DIS_LOOP4:
DJNZLOOPLL,DIS_LOOP2;显示延时循环
LJMPDIS_LOOP1;显示延时结束,退出延时循环
;-----------------------------------------------显示‘串口数据采集系统’
DIS_PIC:
MOVR6,#08H;显示的字符个数
MOVDPTR,#DIS_COM;显示字符串首地址
LCALLDIS_CHARS;调用显示字符串子程序
RET;返回
;-----------------------------------------------显示‘通道’
DIS_PICTD:
MOVR6,#02H;显示字符的个数
MOVDPTR,#DIS_AIN;显示字符串首地址
LCALLDIS_CHARS;调用显示字符串子程序
MOVA,#0F9H;显示通道号.8*16点阵ASCII码
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#004H;一个数值代表8个点
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#011H;一个数值代表1个点
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,DIS_TDH;要显示的ASCII值
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#0F9H;显示冒号.8*16点阵ASCII码
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#005H;一个数值代表8个点
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#011H;一个数值代表1个点
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#03AH;要显示的ASCII值,冒号
LCALLWR_LCD;调用向液晶写数据子程序
RET
;-----------------------------------------------显示D0,D1中4位BCDS码子程序
DIS_BCD:
MOVA,#0F9H;显示冒号.8*16点阵ASCII码
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#007H;一个数值代表8个点
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#011H;一个数值代表1个点
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,D0;要显示的ASCII值,冒号
ANLA,#0F0H;
SWAPA;
ADDA,#30H;
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#0F9H;显示冒号.8*16点阵ASCII码
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#008H;一个数值代表8个点
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#011H;一个数值代表1个点
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,D0;要显示的ASCII值,冒号
ANLA,#0FH;
ADDA,#30H;
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#0F9H;显示冒号.8*16点阵ASCII码
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#009H;一个数值代表8个点
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#011H;一个数值代表1个点
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,D1;要显示的ASCII值,冒号
ANLA,#0F0H;
SWAPA;
ADDA,#30H;
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#0F9H;显示冒号.8*16点阵ASCII码
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#00AH;一个数值代表8个点
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,#011H;一个数值代表1个点
LCALLWR_LCD;调用向液晶写数据子程序
MOVA,D1;要显示的ASCII值,冒号
ANLA,#0FH;
ADDA,#30H;
LCALLWR_LCD;调用向液晶写数据子程序
RET
;-----------------------------------------------显示汉字字符串子程序
DIS_CHARS:
MOVR0,#00H;取代码计数器
DIS_CHARS1:
MOVR7,#05H;发送命令计数器赋初值
DIS_CHARS2:
MOVA,R0;将代码计数器内的值赋给A,进行查表
MOVCA,@A+DPTR;取出向液晶发送的命令及数据
LCALLWR_LCD;调用向液晶写数据子程序
INCR0;将代码计数器加一
DJNZR7,DIS_CHARS2;等待一个字符(5个数据)显示结束
DJNZR6,DIS_CHARS1;等待所有字符显示结束
RET;返回
;-----------------------------------------------液晶写数子程序,将A中得值写入液晶
WR_LCD:
JBLCD_BUSY,$;判断液晶是否空闲,液晶忙则等待
NOP;时序延时
NOP;时序延时
NOP;时序延时
MOVP4,A;发出显示数据
NOP;时序延时
NOP;时序延时
NOP;时序延时
SETBLCD_STB;选通液晶
LCALLDELAY;时序延时
CLRLCD_STB;产生时序
JBLCD_BUSY,$;等待液晶接收数据,没接收完则等待
CLRLCD_STB;清零液晶宣统信号
LCALLDELAY;时序延时
RET;返回
;-----------------------------------------------
;串口发送数据子程序
;-----------------------------------------------
COM1_SEND:
MOVA,#41H;发送字符A
MOVSBUF0,A;送入寄存器
JNBTI,$;等待发送结束
CLRTI;清零发送结束标志位
MOVA,#49H;发送字符I
MOVSBUF0,A;送入寄存器
JNBTI,$;等待发送结束
CLRTI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 微机 控制 通信 单片机 通用 数据 采集 系统