远程数据采集系统设计.docx

上传人:b****8 文档编号:12290717 上传时间:2023-06-05 格式:DOCX 页数:34 大小:980.82KB
下载 相关 举报
远程数据采集系统设计.docx_第1页
第1页 / 共34页
远程数据采集系统设计.docx_第2页
第2页 / 共34页
远程数据采集系统设计.docx_第3页
第3页 / 共34页
远程数据采集系统设计.docx_第4页
第4页 / 共34页
远程数据采集系统设计.docx_第5页
第5页 / 共34页
远程数据采集系统设计.docx_第6页
第6页 / 共34页
远程数据采集系统设计.docx_第7页
第7页 / 共34页
远程数据采集系统设计.docx_第8页
第8页 / 共34页
远程数据采集系统设计.docx_第9页
第9页 / 共34页
远程数据采集系统设计.docx_第10页
第10页 / 共34页
远程数据采集系统设计.docx_第11页
第11页 / 共34页
远程数据采集系统设计.docx_第12页
第12页 / 共34页
远程数据采集系统设计.docx_第13页
第13页 / 共34页
远程数据采集系统设计.docx_第14页
第14页 / 共34页
远程数据采集系统设计.docx_第15页
第15页 / 共34页
远程数据采集系统设计.docx_第16页
第16页 / 共34页
远程数据采集系统设计.docx_第17页
第17页 / 共34页
远程数据采集系统设计.docx_第18页
第18页 / 共34页
远程数据采集系统设计.docx_第19页
第19页 / 共34页
远程数据采集系统设计.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

远程数据采集系统设计.docx

《远程数据采集系统设计.docx》由会员分享,可在线阅读,更多相关《远程数据采集系统设计.docx(34页珍藏版)》请在冰点文库上搜索。

远程数据采集系统设计.docx

远程数据采集系统设计

(此文档为word格式,下载后您可任意编辑修改!

中国矿业大学徐海学院

专业技能考核培训设计报告

 

姓名:

学号:

专业:

 电子科学与技术 

设计题目:

远程数据采集系统设计

专题:

基于CPLD/FPGA的电压数据采集

指导教师:

2013年5月

CPLD课程设计任务书

专业年级学号学生姓名

任务下达日期:

2013年5月6日

设计日期:

2013年5月6日至2013年5月20日

设计题目:

基于PC、MCU和CPLD/FPGA的远程数据采集系统设计

设计专题题目:

基于CPLD/FPGA的电压数据采集

设计主要内容和要求:

利用上位计算机、单片机、可编程逻辑器件和ADC器件构成一个远程数据采集系统,系统具备远程/就地两种控制模式,具有8通道循环采集和指定通道采集两种数据采集方式。

具体要求如下:

1.CPLD/FPGA硬件电路和AHDL控制软件设计

电路具备控制ADC0809的采集功能,具备6位数码管动态扫描功能,具备8位按键输入功能,具备和单片机信号交换功能。

2.单片机硬件电路和监控软件设计

电路具备和CPLD/FPGA交换信息,以及和上位机算计进行RS232的通讯功能,能将上位机发出的控制指令下达到CPLD/FPGA中,并将采集的数据传送到上位计算机中。

3.单片机程序要求用C51编制。

上位机算计软件设计

利用VB或VC程序编制上位计算机控制程序,实现远程数据采集功能并实时显示采集的数据和通道号。

指导教师签字:

摘要

随着科学技术的迅猛发展,新技术革命将把人类由工业化社会推进到信息化社会为主要内容的数据采集测试技术,已形成了一门专门的技术科学。

数据采集系统是计算机、智能仪器与外界物理世界联系的桥梁,是获取信息的重要途径。

数据采集技术是信息科学的重要分支,它不仅应用在智能仪器中,而且在现代工业生产、国防军事及科学研究等方面都得到了广泛应用,无论是过程控制、状态检测,还是故障诊断、质量检测,都离不开数据采集系统。

本文介绍一种基于EP1K30TC144-3的CPLD/FPGA和89S52单片机的一种电压测量电路,基本内容包括单片机最小系统、AD转换电路、键盘和LED显示电路,以及设计系统涉及的其他电路。

系统硬件电路由标准电路和自制电路两部分组成。

标准电路包括单片机最小系统、6个LED数码管电路和键盘电路以及CPLD/FPGA系统,这部分电路已制成电路板,自制电路自行设计焊接,包含标准电路不具备的其他电路。

系统软件根据设计任务自行设计独立编制并进行调试,最终实现利用上位机远程控制系统进行数据采集功能并实时显示采集的数据和通道号。

关键词:

89S52单片机、EP1K30TC144-3芯片、CPLD/FPGA、上位机、电压采集、AD转换电路

1绪论1

1.1课程简介1

1.1.1课程设计的性质、目的和任务1

1.2系统设计思路1

1.3方案论证及比较2

1.3.1单片机控制方案的选用2

1.3.2FPGA控制方案的选用2

1.4系统设计原理框图3

2硬件电路设计4

2.1单片机电路4

2.1.1单片机电路板4

2.1.2单片机最小系统5

2.1.3显示译码电路5

2.2A/D转换7

2.2.1ADC0809内部结构7

2.2.2ADC0809转换原理8

2.2.3AD转换电路9

2.2.4电路设计9

2.3硬件设计流程10

2.3.1硬件设计流程图10

2.3.2CPLD系统流程框图11

2.3.3详细管脚说明11

3软件设计13

3.1设计任务13

3.1.1基本任务13

3.1.2扩展任务13

3.2程序设计13

3.2.1软件设计流程13

3.2.2单片机设计流图14

3.2.3BCD码转换电路与显示电路设计程序:

14

3.2.4八位二进制乘法器17

3.2.5用上位机和拨码开关控制8路通道选择:

18

3.2.6单片机与PC机通讯程序19

4系统调试21

4.1硬件部分21

4.2软件部分21

5总结23

参考文献:

24

附录二ADC0809与单片机连接图26

附录三元器件清单27

附录四程序代码28

1绪论

1.1课程简介

1.1.1课程设计的性质、目的和任务

《单片机系统设计》是在学习《单片机原理及应用》、《CPLD》等相关理论课程之后,所设置的重要的综合性实践教学环节。

此次技能考核的目的是通过课题的设计、安装和调试,使我们全面了解掌握电子技术应用设计的基本技能,巩固已学的理论知识并综合应用,进行电子系统的设计,从而培养工程实践能力、创新能力,培养严肃认真的工作作风和科学态度,具备简单科技论文、技术综述报告的写作能力等。

通过查阅资料、选定方案、设计电路、安装调试、写技术报告等过程,得到一次科学研究工作的启蒙训练,也为以后利用单片机开发电子产品奠定坚实的基础。

在对远程数据采集装置进行设计时,其设计分为硬件设计与软件设计两部分,具体的设计流程如图:

图1-1设计流程图

1.2系统设计思路

本次实验要求设计基于单片机的电压数据采集装置,课程设计分设计、制作和调试三个部分。

设计选题以单片机、AD0809为核心,基本内容应包括单片机最小系统、CPLD系统、键盘(拨码开关)和LED显示电路,以及设计系统涉及的其他电路。

系统硬件电路由单片机系统和CPLD系统两部分组成。

其中单片机系统包括单片机最小系统、8个LED数码管电路和键盘电路,可根据设计需要进行配置选用。

CPLD系统则需自行设计焊接,包含EP1K30TC144芯片。

设计中采用了模数转换器,利用ADC0809型8位MOS型A/D转换器,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,实现模拟信号到数字信号的转换。

显示部分利用LED数码管显示模块,来显示采集到的电压分量。

1.3方案论证及比较

1.3.1单片机控制方案的选用

方案一:

采用8031为核心,由于其内部没有存储器,所以利用2764扩展8KB的外部存储器,用8031的两组I/O接口。

方案二:

采用AT89C52作为核心,对AD转换的数据进行采集并显示。

其内置的8KB字节点擦除可编程EEPROM片内程序存储器和256字节RAM,无需外部扩展。

所以选用方案二,采用AT89C52作为核心,其片内程序存储器空间足够满足本系统程序存储器的需要,可以省去对片外EPROM程序存储器和地址锁存器,使电路结构简捷。

1.3.2FPGA控制方案的选用

方案一:

采用EP1K30TC144-3为核心,具备6位数码管动态扫描功能和8位按键输入功能,以及与单片机进行信号交换等功能。

方案二:

采用EP1K30TC144-3为核心,同样具备6位数码管动态扫描功能和8位按键输入功能,以及与单片机进行信号交换等功能。

且管脚数目较少,适合本次设计使用。

所以选用方案二,采用EP1K30TC144-3为核心,其功能已经满足设计需要,且应用简单,管脚分配方便,使电路结构简洁。

1.4系统设计原理框图

图1-2系统设计原理框图

2硬件电路设计

系统硬件电路由单片机系统和CPLD系统两部分组成。

其中单片机系统包括单片机最小系统、8个LED数码管电路和键盘电路,可根据设计需要进

行配置选用。

CPLD系统则需自行设计焊接,包含EP1K30TC144芯片。

2.1单片机电路

2.1.1单片机电路板

单片机电路板电路框图如图2;

图2-1电路框图

2.1.2单片机最小系统

图2-2单片机最小系统图

该原理图包含单片机以及外部连接译码,锁存电路端口,其中的ALE,REST为高电平时用来启动ADC0809.P0、P2口控制数码输出显示,P3口的P3.3、P3.4、P3.5控制按键,P1.1~P1.3控制通道选择。

晶振采用12MHZ,该频率有利于提高串口的通信可靠性,同时又保证单片机有较高的运行速度。

2.1.3显示译码电路

LED显示电路可提供8位LED显示;可显示P1(P3)口状态;也可显示输入按键状态。

图2-3LED显示电路

显示电路采用6位共阳极LED动态扫描显示,CD4511输出所需字形,74LS138选择字位。

在动态方式中,逐个地循环地点亮各位显示器。

图2-4数码管显示电路

显示译码电路部分由P0口或P2口输出显示。

显示译码器采用CD4511芯片:

输入:

BCD输出:

七段码

74LS138芯片是用来控制显示时候的字位的,由于单片机的管脚是有限的通过使用138芯片可以避免少使用些单片机的管脚,当输入001时,译码

2.2A/D转换

2.2.1ADC0809内部结构

ADC0809由8路模拟开关、地址锁存与译码器、比较器、256电阻阶梯、树状开关、逐次逼近式寄存器SAR、控制电路和三态输出锁存器等组成。

图2-5ADC0809结构图

2.2.2ADC0809转换原理

图2-6ADC0809转换工作时序

工作原理:

当单片机端的P3.3接低电平时,可以使两个非门打开

(1)当模拟量送至某一输入通道后,CPU将标识该通道编码的三位地址信号经数据线或地址线输入到ADDC、ADDB、ADDA引脚上。

(2)地址锁存允许ALE锁存地址信号,启动命令START启动A/D转换。

(3)转换开始,EOC变低电平,转换结束,EOC变为高电平。

EOC可作为中断请求信号。

(4)转换结束后,可通过执行IN指令,设法在输出允许OE脚上形成一个正脉冲,打开三态缓冲器把转换的结果输入到DB,一次A/D转换便完成。

2.2.3AD转换电路

图2-7AD转换电路原理图

2.2.4电路设计

硬件资源分配

数码管显示电路:

用P2口:

bcd码输出--P2.3~P2.0;字位选择--cba=P2.6~P2.4;小数点--P2.7

键盘电路:

P3口低四位

1号按键P3.0---模式切换

2号按键P3.1---通道、报警限加

3号按键P3.2--通道、报警限减

4号按键P3.3--查询法,接收ad转换状态(不作为按键使用)

中断法,收ad结束中断信号

ADC0809电压转换电路控制信号:

/wr==p3.6/rd==p3.7

eoc==p3.3Cs==p3.5

转换通道选择地址线:

CBA==P1(6-4)

2.3硬件设计流程

2.3.1硬件设计流程图

图2-8硬件设计框图

2.3.2CPLD系统流程框图

图2-9CPLD系统功能模块框图

2.3.3详细管脚说明

(1)时钟源

图2-10时钟源与CPLD对应管脚连接图

(2)输入开关

图2-1116个数据开关与CPLD对应管脚连接图

(3)数码管显示

实验箱有10个数码管(SEG1——SEG10),采用共阴极8段LED显示。

其中SEG1——SEG2采用静态显示方式,SEG3——SEG10采用动态扫描显示方式。

且SEG1、SEG2的8段LED显示输入端分别与8个LED管相连同时显示。

图2-12数码管管脚分配图

3软件设计

3.1设计任务

3.1.1基本任务

(1)、进行电压采集并显示

3.1.2扩展任务

(1)、指定通道采集

(2)、循环采集显示,默认每通道显示1秒钟。

3.2程序设计

3.2.1软件设计流程

图3-1软件设计流程框图

3.2.2单片机设计流图

图3-2单片机设计与AD0809设计流程图

3.2.3BCD码转换电路与显示电路设计程序:

Subdesigndcbzhhh--定义输入输出管脚

(ibd[15..0],inclk:

input;

odd[6..0],p,bitout[4..0]:

output;

Variable--定义触发器

mh[3..0],mm[3..0],mw[3..0],mr[3..0],ml[3..0]:

dff;

mrd[15..0],sta[1..0],stb[2..0],mseg[3..0],bitout[4..0],fpq[15..0],fp:

dff;

mhr[3..0],mmr[3..0],mwr[3..0],mrr[3..0],mlr[3..0]:

dff;

Begin

p=vcc;--点亮小数点

(fpq[],fp).clk=inclk;--分频

Iffpq[]==19999then

fp=!

fp;fpq[]=0;

Else

fp=fp;fpq[]=fpq[]+1;

Endif;

sta[].clk=fp;stb[].clk=fp;bitout[].clk=fp;mseg[].clk=fp;--给触发器输入时钟

(mh[],mm[],mw[],mr[],ml[],mrd[]).clk=inclk;

(mhr[],mmr[],mwr[],mrr[],mlr[]).clk=inclk;

Casesta[]is--BCD码转换

When0=>

mrd[]=ibd[];sta[]=1;

mhr[]=mhr[];mmr[]=mmr[];mwr[]=mwr[];mrr[]=mrr[];mlr[]=mlr[];

When1=>

Ifmrd[]==0then

mhr[]=mh[];mmr[]=mm[];mwr[]=mw[];mrr[]=mr[];mlr[]=ml[];

mh[]=mh[];mm[]=mm[];mw[]=mw[];mr[]=mr[];ml[]=ml[];

sta[]=0;

Else

mhr[]=mh[];mmr[]=mm[];mwr[]=mw[];mrr[]=mr[];mlr[]=ml[];

mrd[]=mrd[]-1;

sta[]=1;

Ifml[]==9then

ml[]=0;

Ifmr[]==9then

mr[]=0;

Ifmw[]==9then

mw[]=0;

Ifmm[]==9then

mm[]=0;

Ifmh[]==9then

mh[]=0;

Else

mh[]=mh[]+1;

Endif;

Else

mm[]=mm[]+1;mh[]=mh[];

Endif;

Else

mw[]=mw[]+1;mm[]=mm[];mh[]=mh[];

Endif;

Else

mr[]=mr[]+1;mw[]=mw[];mm[]=mm[];mh[]=mh[];

Endif;

Else

ml[]=ml[]+1;mr[]=mr[];mw[]=mw[];mm[]=mm[];mh[]=mh[];

Endif;

Endif;

Endcase;

casestb[]is--隐含状态机的使用

when0=>--动态扫描显示电路

mseg[]=mlr[];

bitout[]=1;

stb[]=1;

when1=>

mseg[]=mrr[];

bitout[]=2;

stb[]=2;

when2=>

mseg[]=mwr[];

bitout[]=4;

stb[]=3;

when3=>

mseg[]=mmr[];

bitout[]=8;

stb[]=4;

when4=>

mseg[]=mhr[];

bitout[]=16;

stb[]=0;

endcase;

Table

mseg[3..0]=>odd[6..0];

h"1"=>h"06";

h"2"=>h"5b";

h"3"=>h"4f";

h"4“=>h"66";

h"5“=>h"6d";

h"6“=>h"7d";

h"7"=>h"07";

h"8“=>h"7f";

h"9"=>h"6f";

endtable;

End;

3.2.4八位二进制乘法器

FUNCTIONlpm_mult(dataa[7..0],datab[7..0],sum[7..0])--设置乘法器参数

WITH(LPM_WIDTHA=8,LPM_WIDTHB=8,LPM_WIDTHP=16,

LPM_WIDTHS=16,INPUT_A_IS_CONSTANT="no",

INPUT_B_IS_CONSTANT="no",USE_EAB="off",

LPM_REPRESENTATION="unsigned")

RETURNS(result[15..0]);

Subdesignmultt--定义输入输出管脚

(daa[7..0],dab[7..0]:

input;

res[15..0]:

output;

Variable--实现乘法器功能

multa:

lpm_mult;

Begin

multa.sum[]=gnd;

multa.dataa[]=daa[];

multa.datab[]=dab[];

res[]=multa.result[];

End;

3.2.5用上位机和拨码开关控制8路通道选择:

Include“dcbzhhh.inc”;--调用BCD转换和显示模块

Include“multt.inc”;--调用乘法器模块

Subdesignsjcjjj--定义输入输出管脚

(inclk,eoc,ds[7..0],tdxuanze[2..0],fsxuanze,bomakg[2..0]:

input;

add[2..0],otclk,out[6..0],st,oe,led[7..0],p,wx[4..0]:

output;

Variable

zhq:

dcbzhhh;

cfq:

multt;

fpq[4..0],fp,outd:

dff;--定义D触发器

sm[1..0],dp[7..0],st,outdd[20..0]:

dff;

Begin

oe=vcc;

(fpq[],fp,outdd[],outd).clk=inclk;

zhq.inclk=inclk;

Iffpq[]==19then--分频

fpq[]=0;fp=!

fp;

Else

fpq[]=fpq[]+1;fp=fp;

Endif;

ifoutdd[]==999999then

outdd[]=0;outd=!

outd;

else

outdd[]=outdd[]+1;outd=outd;

endif;

(sm[],st,dp[]).clk=fp;otclk=fp;

iffsxuanze==0then--选择通道方式

add[]=tdxuanze[];

else

add[]=bomakg[];

endif;

Casesm[]is--实现ADC转换功能

When0=>

st=gnd;dp[]=ds[];

sm[]=1;

When1=>

st=gnd;dp[]=dp[];

ifeocthen

sm[]=2;

else

sm[]=1;

endif;

When2=>

st=vcc;sm[]=0;dp[]=ds[];

Endcase;

cfq.daa[]=196;--将采集的二进制数据转化为十进制数据

cfq.dab[]=dp[];

zhq.ibd[]=cfq.res[];

wx[]=zhq.bitout[];

p=zhq.p;

out[6..0]=zhq.odd[];

led[]=dp[];

End;

3.2.6单片机与PC机通讯程序

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharr;

voidinit();

voidmain()//主程序

{

init();

while

(1)//while()死循环

{

}

}

/**串口中断服务程序**/

voidser()interrupt4

{

RI=0;//清除串行接收中断申请位

r=SBUF;//接收上位机数据

P2=r;//将数据送给P2口

r=P0;

SBUF=r;//发送P0数据给上位机

while(TI==0);//当TI=1时,完成发送,向CPU申请中断

TI=0;//关闭串口中断

}

/**串口初始化**/

voidinit()

{

r=0xff;//将P0口置高电平

TMOD=0x20;//写控制字20H

TH1=0x98;//T1高4位赋初值98H

TL1=0x98;//T1低4位赋初值98H

TR1=1;//启动定时器T1,从而设定串口通信的波特率

SM0=0;

SM1=1;//设定串口通信方式为十位异步收发器(方式1)

REN=1;//打开串口通讯,允许接收

ES=1;//开放串口中断

EA=1;//开放CPU中断

}

4系统调试

系统调试包括硬件调试和软件调试两部分,介绍一下我在这两方面遇到一些问题,以及如何解决的。

4.1硬件部分

硬件焊接分为EP1K30TC144贴片式芯片小板的焊接和CPLD开发板及CPLD扩展板的焊接,在焊接EP1K30TC144时,由于拖锡技术应用的不是很娴熟,所以导致芯片的焊接出现管脚短路的情况。

其次就是焊接CPLD扩展板时,由于AD0809芯片与电位器是管脚连接出错,即开始时电位器的管脚定义出错,导致调节电位器旋钮时数码管显示的数值不发生变化,经万用表检测,发现焊接问题之后及时纠正便实现了功能。

4.2软件部分

(1)CPLD(AD、乘法器)模块程序:

将AD转换的输出结果转换为电压值,即乘以196得到的数据,此时要扩展输入输出端口的长度。

255*196=49980需要5个数码管,其中4个只需要7段,最高一个数码管需要8段,多添加了一个小数点,只需要在输出端定义一个变量,然后在管脚分配时分给小数点即可(取名为dcbzhh)。

但由于实验程序名为dcbzhh(输入管脚p表示小数点,fpq和fp都表示分频)的程序中引用数码管是调用了五个,其中有两个是静态扫描,另三个是动态扫描。

而使用静态扫描下载程序时在CPLD板上会出现错误。

所以设计时全部用动态扫描数码管,并设置一个公共端!

而动态扫描时seg1~seg6共用七段数码管,所以定义输出odd时只需要定义为odd[6..0](取名为dcbzhhh)。

(2)单片机与CPLD实现通信的程序:

输出定义为out[6..0]即一组5个动态显示数码管

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2