ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:976.89KB ,
资源ID:12155851      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12155851.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(远程数据采集系统设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、远程数据采集系统设计中国矿业大学徐海学院专业技能考核培训设计报告 姓 名: 学 号: 专 业: 电子科学与技术 设计题目: 远程数据采集系统设计 专 题: 基于CPLD/FPGA的电压数据采集 指导教师: 设计地点: 时 间: 2013 年 5月CPLD课程设计任务书专业年级 学号学生姓名 任务下达日期:2013年 5 月6 日设计日期: 2013年5月6日 至 2013年5月20日设计题目:基于PC、MCU和CPLD/FPGA的远程数据采集系统设计设计专题题目: 基于CPLD/FPGA的电压数据采集设计主要内容和要求: 利用上位计算机、单片机、可编程逻辑器件和ADC器件构成一个远程数据采集系

2、统,系统具备远程/就地两种控制模式,具有8通道循环采集和指定通道采集两种数据采集方式。具体要求如下:1.CPLD/FPGA硬件电路和AHDL控制软件设计电路具备控制ADC0809的采集功能,具备6位数码管动态扫描功能,具备8位按键输入功能,具备和单片机信号交换功能。2.单片机硬件电路和监控软件设计电路具备和CPLD/FPGA交换信息,以及和上位机算计进行RS232的通讯功能,能将上位机发出的控制指令下达到CPLD/FPGA中,并将采集的数据传送到上位计算机中。3.单片机程序要求用C51编制。上位机算计软件设计利用VB或VC程序编制上位计算机控制程序,实现远程数据采集功能并实时显示采集的数据和通

3、道号。指导教师签字:摘 要随着科学技术的迅猛发展,新技术革命将把人类由工业化社会推进到信息化社会为主要内容的数据采集测试技术,已形成了一门专门的技术科学。数据采集系统是计算机、智能仪器与外界物理世界联系的桥梁,是获取信息的重要途径。数据采集技术是信息科学的重要分支,它不仅应用在智能仪器中,而且在现代工业生产、国防军事及科学研究等方面都得到了广泛应用,无论是过程控制、状态检测,还是故障诊断、质量检测,都离不开数据采集系统。 本文介绍一种基于EP1K30TC144-3的CPLD/FPGA和89S52单片机的一种电压测量电路,基本内容包括单片机最小系统、AD转换电路、键盘和LED显示电路,以及设计系

4、统涉及的其他电路。系统硬件电路由标准电路和自制电路两部分组成。标准电路包括单片机最小系统、6个LED数码管电路和键盘电路以及CPLD/FPGA系统,这部分电路已制成电路板,自制电路自行设计焊接,包含标准电路不具备的其他电路。系统软件根据设计任务自行设计独立编制并进行调试,最终实现利用上位机远程控制系统进行数据采集功能并实时显示采集的数据和通道号。关键词:89S52单片机、EP1K30TC144-3芯片、CPLD/FPGA、上位机、电压采集、AD转换电路1 绪论1.1课程简介1.1.1课程设计的性质、目的和任务单片机系统设计是在学习单片机原理及应用、CPLD等相关理论课程之后,所设置的重要的综合

5、性实践教学环节。此次技能考核的目的是通过课题的设计、安装和调试,使我们全面了解掌握电子技术应用设计的基本技能,巩固已学的理论知识并综合应用,进行电子系统的设计,从而培养工程实践能力、创新能力,培养严肃认真的工作作风和科学态度,具备简单科技论文、技术综述报告的写作能力等。通过查阅资料、选定方案、设计电路、安装调试、写技术报告等过程,得到一次科学研究工作的启蒙训练,也为以后利用单片机开发电子产品奠定坚实的基础。在对远程数据采集装置进行设计时,其设计分为硬件设计与软件设计两部分,具体的设计流程如图: 图1-1 设计流程图1.2系统设计思路本次实验要求设计基于单片机的电压数据采集装置,课程设计分设计、

6、制作和调试三个部分。设计选题以单片机、AD0809为核心,基本内容应包括单片机最小系统、CPLD系统、键盘(拨码开关)和LED显示电路,以及设计系统涉及的其他电路。系统硬件电路由单片机系统和CPLD系统两部分组成。其中单片机系统包括单片机最小系统、8个LED数码管电路和键盘电路,可根据设计需要进行配置选用。CPLD系统则需自行设计焊接,包含EP1K30TC144芯片。设计中采用了模数转换器,利用ADC0809型8位MOS型A/D转换器,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,实现模拟信号到数字信号的转换。显示部分利用LED数码管显示模块,来显示采

7、集到的电压分量。1.3方案论证及比较1.3.1单片机控制方案的选用方案一:采用8031为核心,由于其内部没有存储器,所以利用2764扩展8KB的外部存储器,用8031的两组I/O接口。方案二:采用AT89C52作为核心,对AD转换的数据进行采集并显示。其内置的8KB字节点擦除可编程EEPROM片内程序存储器和256字节RAM,无需外部扩展。 所以选用方案二,采用AT89C52作为核心,其片内程序存储器空间足够满足本系统程序存储器的需要,可以省去对片外EPROM程序存储器和地址锁存器,使电路结构简捷。1.3.2 FPGA控制方案的选用方案一:采用EP1K30TC144-3为核心,具备6位数码管动

8、态扫描功能和8位按键输入功能,以及与单片机进行信号交换等功能。方案二:采用EP1K30TC144-3为核心,同样具备6位数码管动态扫描功能和8位按键输入功能,以及与单片机进行信号交换等功能。且管脚数目较少,适合本次设计使用。所以选用方案二,采用EP1K30TC144-3为核心,其功能已经满足设计需要,且应用简单,管脚分配方便,使电路结构简洁。1.4 系统设计原理框图 图1-2系统设计原理框图2 硬件电路设计系统硬件电路由单片机系统和CPLD系统两部分组成。其中单片机系统包括单片机最小系统、8个LED数码管电路和键盘电路,可根据设计需要进行配置选用。CPLD系统则需自行设计焊接,包含EP1K30

9、TC144芯片。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.1P1.3控制通道选择。晶振采用12MHZ,该频率有利于提高串口的通信可靠性,同时又保证单片机有较高的运行速度。2.1.3 显示译码电路LED显示电路可提供8位LED显示;可显示P1(P3)口状态;也可显示输入按键状态。 图2-3 LED显示电路显示电路采用6位

10、共阳极LED动态扫描显示,CD4511输出所需字形,74LS138选择字位。在动态方式中,逐个地循环地点亮各位显示器。 图2-4 数码管显示电路显示译码电路部分由P0口或P2口输出显示。显示译码器采用CD4511芯片:输入:BCD 输出:七段码 74LS138芯片是用来控制显示时候的字位的,由于单片机的管脚是有限的通过使用138芯片可以避免少使用些单片机的管脚,当输入001时,译码可得:输入:07 输出:低电平 2.2 A/D转换2.2.1 ADC0809内部结构ADC0809由8路模拟开关、地址锁存与译码器、比较器、256电阻阶梯、树状开关、逐次逼近式寄存器SAR、控制电路和三态输出锁存器等

11、组成。图2-5 ADC0809结构图2.2.2 ADC0809转换原理 图2-6 ADC0809转换工作时序工作原理: 当单片机端的P3.3接低电平时,可以使两个非门打开(1)当模拟量送至某一输入通道后,CPU将标识该通道编码的三位地址信号经数据线或地址线输入到ADDC、ADDB、ADDA引脚上。 (2)地址锁存允许ALE锁存地址信号,启动命令START启动A/D转换。(3)转换开始,EOC变低电平,转换结束,EOC变为高电平。EOC可作为中断请求信号。 (4)转换结束后,可通过执行IN指令,设法在输出允许OE脚上形成一个正脉冲,打开三态缓冲器把转换的结果输入到DB,一次A/D转换便完成。2.

12、2.3 AD转换电路转换结束:EOC1 图2-7 AD转换电路原理图2.2.4电路设计硬件资源分配数码管显示电路:用 P2 口:bcd 码输出P2.3P2.0;字位选择 cba=P2.6P2.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.3 Cs= p3.5 转换通道选择地址线:CBA =P1(6-4)2.3 硬件设计流程2.3.1

13、 硬件设计流程图图2-8硬件设计框图2.3.2 CPLD系统流程框图图2-9 CPLD系统功能模块框图2.3.3 详细管脚说明(1)时钟源图2-10 时钟源与CPLD对应管脚连接图(2)输入开关图2-11 16个数据开关与CPLD对应管脚连接图(3)数码管显示实验箱有0个数码管(SEG1SEG10),采用共阴极段LED显示。其中SEG1SEG2采用静态显示方式,SEG3SEG10采用动态扫描显示方式。且SEG1、SEG2的段LED显示输入端分别与个LED管相连同时显示。图2-12 数码管管脚分配图3 软件设计3.1 设计任务3.1.1 基本任务 (1)、进行电压采集并显示 3.1.2 扩展任务

14、 (1)、指定通道采集 (2)、循环采集显示 ,默认每通道显示1秒钟。3.2程序设计3.2.1 软件设计流程图 3-1 软件设计流程框图3.2.2 单片机设计流图图3-2 单片机设计与AD0809设计流程图3.2.3 BCD码转换电路与显示电路设计程序:Subdesign dcbzhhh -定义输入输出管脚( ibd15.0,inclk :input; odd6.0, p,bitout4.0 :output;)Variable -定义触发器 mh3.0,mm3.0,mw3.0, mr3.0,ml3.0 :dff; mrd15.0,sta1.0,stb2.0,mseg3.0, bitout4.0

15、,fpq15.0,fp :dff; mhr3.0,mmr3.0,mwr3.0,mrr3.0, mlr3.0 :dff;Beginp=vcc; -点亮小数点(fpq,fp).clk=inclk; -分频 If fpq=19999 then fp=!fp;fpq=0; Else fp=fp;fpq=fpq+1; End if;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;Case sta is -BCD码转

16、换When 0 = mrd=ibd;sta=1; mhr=mhr;mmr=mmr;mwr=mwr;mrr=mrr;mlr=mlr;When 1 = If mrd=0 then 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; If ml=9 then ml=0; If mr=9 then mr=0; If mw=9 then mw=0; If mm=9 then mm=0; If

17、mh=9 then mh=0;Else mh=mh+1; End if; Else mm=mm+1;mh=mh; End if; Else mw=mw+1;mm=mm;mh=mh; End if; Else mr=mr+1;mw=mw;mm=mm;mh=mh; End if; Else ml=ml+1;mr=mr;mw=mw;mm=mm;mh=mh; End if;End if;End case;case stb is -隐含状态机的使用 when 0= -动态扫描显示电路 mseg=mlr; bitout=1; stb=1; when 1= mseg=mrr; bitout=2; stb=2

18、; when 2= mseg=mwr; bitout=4; stb=3; when 3= mseg=mmr; bitout=8; stb=4; when 4= mseg=mhr; bitout=16; stb=0; end case;Table mseg3.0=odd6.0; h0 =h3f; - “” h1 =h06; h2 =h5b; h3 =h4f; h4“ =h66; h5“ =h6d; h6“ =h7d; h7 =h07; h8“ =h7f; h9 =h6f; end table; End; 3.2.4八位二进制乘法器FUNCTION lpm_mult (dataa7.0, data

19、b7.0,sum7.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 (result15.0); Subdesign multt -定义输入输出管脚 (daa7.0,dab7.0:input; res15.0 :output; ) Variable -实现乘法器功能 multa :lpm_mult; Be

20、gin multa.sum=gnd; multa.dataa=daa; multa.datab=dab; res=multa.result; End;3.2.5 用上位机和拨码开关控制8路通道选择:Include “dcbzhhh.inc”; -调用BCD转换和显示模块Include “multt.inc”; -调用乘法器模块Subdesign sjcjjj -定义输入输出管脚(inclk,eoc,ds7.0,tdxuanze2.0,fsxuanze,bomakg2.0:input; add2.0,otclk,out6.0,st,oe,led7.0,p,wx4.0:output;)Variab

21、lezhq:dcbzhhh;cfq:multt;fpq4.0,fp,outd :dff; -定义D触发器sm1.0,dp7.0,st,outdd20.0:dff; Beginoe=vcc;(fpq,fp,outdd,outd).clk=inclk; zhq.inclk=inclk;If fpq=19 then -分频 fpq=0;fp=!fp;Else fpq=fpq+1;fp=fp;End if;if outdd= then outdd=0;outd=!outd;else outdd=outdd+1;outd=outd;end if;(sm,st,dp).clk=fp;otclk=fp;if

22、 fsxuanze=0 then -选择通道方式 add=tdxuanze;else add=bomakg;end if;Case sm is -实现ADC转换功能When 0 = st=gnd;dp=ds; sm=1;When 1 = st=gnd; dp=dp; if eoc then sm=2; else sm=1; end if;When 2= st=vcc; sm=0; dp=ds; End case;cfq.daa=196; -将采集的二进制数据转化为十进制数据cfq.dab=dp;zhq.ibd=cfq.res;wx=zhq.bitout;p=zhq.p;out6.0=zhq.o

23、dd;led=dp;End;3.2.6单片机与PC机通讯程序#include #define uchar unsigned char #define uint unsigned int uchar r; void init(); void main() /主程序 init(); while(1) /while()死循环 /* 串口中断服务程序 */ void ser() interrupt 4 RI = 0; /清除串行接收中断申请位 r = SBUF; /接收上位机数据 P2 = r ; /将数据送给P2口 r = P0; SBUF=r; /发送P0数据给上位机 while(TI=0); /

24、当TI=1时,完成发送,向CPU申请中断 TI = 0; /关闭串口中断 /* 串口初始化*/ void init() 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 系统调试系统调试包括硬件调试和软件调试

25、两部分,介绍一下我在这两方面遇到一些问题,以及如何解决的。4.1 硬件部分硬件焊接分为EP1K30TC144贴片式芯片小板的焊接和CPLD开发板及CPLD扩展板的焊接,在焊接EP1K30TC144时,由于拖锡技术应用的不是很娴熟,所以导致芯片的焊接出现管脚短路的情况。其次就是焊接CPLD扩展板时,由于AD0809芯片与电位器是管脚连接出错,即开始时电位器的管脚定义出错,导致调节电位器旋钮时数码管显示的数值不发生变化,经万用表检测,发现焊接问题之后及时纠正便实现了功能。4.2 软件部分(1)CPLD(AD、乘法器)模块程序:将AD转换的输出结果转换为电压值,即乘以196得到的数据,此时要扩展输入

26、输出端口的长度。255*196=49980需要5个数码管,其中4个只需要7段,最高一个数码管需要8段,多添加了一个小数点,只需要在输出端定义一个变量,然后在管脚分配时分给小数点即可(取名为dcbzhh)。但由于实验程序名为dcbzhh(输入管脚p表示小数点,fpq和fp都表示分频)的程序中引用数码管是调用了五个,其中有两个是静态扫描,另三个是动态扫描。而使用静态扫描下载程序时在CPLD板上会出现错误。所以设计时全部用动态扫描数码管,并设置一个公共端!而动态扫描时seg1seg6共用七段数码管,所以定义输出odd时只需要定义为odd6.0 (取名为dcbzhhh)。(2)单片机与CPLD实现通信

27、的程序:输出定义为out6.0即一组5个动态显示数码管。修改时在dcbzhhh里面将小数点定义在case语句的字位码描述语句中,即在最高位后面添加一句p=vcc,而不用在begin语句里面定义p=vcc.同时,在sjcjjj模块里面调用dcbzhhh模块时,将输出定义为out6.0 ,同时将AD转换的输出dp连接到AD转换的8通道输出,同时连接到单片机的P0口,而单片机则通过P2口低3位连接到CPLD通道选择端。最后将dcbzhhh模块的输出接到out6.0的输出即可完成CPLD与单片机的通信,但是要注意重新对管脚进行分配。(3)软件特色:在最终的CPLD模块中调用了八位二进制乘法器模块程序,以及16位BCD转换模块和动态扫描显示模块。即将乘法器模块、BCD转换模块、动态扫描显示模块的文本编辑程序最终融入整合在CPLD模块程序中,而没有采用直接调用乘法器图形文件的方法。虽然这样为程序调试带来了很多麻烦,使整体的程序设计显得比较繁琐,但是在我们小组成员的共同努力商讨以及老师的悉心指导下,最终我们程序调试成功,实现了相应的功能! 5 总结这次单片机课程设计过后,让我对单片机和CPLD这两门课程有了更进一步的理解和感悟。经过这次课程设计,自己收获很多,明白了团队合作的重要性,更加深了自己对AD转换以及单片机和PC机

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1