基于单片机的多路数据采集系统设计说明_第1页
基于单片机的多路数据采集系统设计说明_第2页
基于单片机的多路数据采集系统设计说明_第3页
基于单片机的多路数据采集系统设计说明_第4页
基于单片机的多路数据采集系统设计说明_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..引言近年来,数据采集及其应用受到了人们越来越广泛的关注,数据采集系统也有了迅速的发展,它可以广泛的应用于各种领域。单片机作为微型计算机的一个重要分支,应用广泛,对人类社会产生了巨大的影响。Intel公司生产的51系列单片机,由于具有集成度高、处理功能强、可靠性好、系统结构简单、价格低廉、易于使用等优点。在我国已经得到了广泛的应用。特别是在智能仪器仪表、工业检测控制等一些领域取得了令人瞩目的成就。基于单片机的数据采集系统完全能够满足各种测控系统需要,实时性好,应用前景广阔。对于本设计而言,其主要任务就是将0~5V的直流电压进行测量并送到数码管去显示。基于功能与价格的考虑,在这里选用了比较常见的逼近型ADC0809芯片,其在精度、速度和价格上都适中,可以满足我们在这个设计的要求。考虑到本系统是由单片机供电,选用了低功耗的数码管,以满足显示结果的要求。软件设计方面,采用了功能模块化的设计思想;键盘模数转换控制采用了单片机外部中断0与外部中断1结合的方式来实现,大大提高了单片机的效率,实时处理能力。由于对汇编语言较为了解,所以采用汇编语言来编程。1设计任务及总体设计方案在本次课程设计中,要求设计一个基于单片机的的多路数据采集系统,这个课题和我们所学的课程联系紧密、息息相关,涉及到很多的知识,是对我们所学知识的一次考察,利于我们对学过的知识复习一遍,加深理解。1.1设计任务与要求在本次设计中要求我们达到以下三点要求:〔1单片机控制A/D转换器检测多路电压〔2检测的结果送单片机处理并显示〔3数码管轮流显示各路电压或显示指定的通道电压1.2总体设计方案〔1选择89S52作为主芯片,ISP下载线编程、方便灵活、功能强大,完全可以满足本设计的性能要求,而且89S52是51系列中比较常用的芯片,好用〔2选择ADC0809作为模数转换器,就本设计的要求而言,ADC0809性价比相当的高,而且在很多的课程都学习过,比如:智能仪器、单片机等课程,对它的性能、结构都比较了解。〔3选择74LS74作为分频器,从单片机的ALE输出2MHZ的频率,经过74LS74的4分频作用,最终产生一个500KHZ的时钟频率给ADC0809,使ADC0809正常工作。〔4还有一些外围电路,比如:ISP下载电路、单片机复位电路、数码管显示电路等,这样才能组成一个完整的多路数据采集系统。其系统框图如图1-2-1所示74LS74分频器ALE74LS74分频器ALE89S52单片机数码管显示数码管显示CLKCLKADC0809图1-2-1系统框图2硬件设计数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛引用在各个领域。在该系统中需要将模拟量转换为数据量,而A/D是将模拟量转换为数字量的器件,需要考虑的指标有:分辨率、转换时间、转换误差等等。而单片机是该系统的基本的微处理系统,它完成数据读取、处理及逻辑控制,数据传输等一系列的任务。数据采集系统一般由信号调理电路,多路切换电路,采样保持电路,A/D,单片机等组成。但是在本设计中直接就对输入电压进行A/D转换,着重在模数转换器的选择和使用上。2.1单片机的选择 单片机是一种面向大规模的集成电路芯片,是微型计算机中的一个重要的分支。此系统是由CPU、随即存取数据存储器、只读程序存储器、输入输出电路〔I/O口,还有可能包括定时/计数器、串行通信口、显示驱动电路〔LCD和LED驱动电路、脉宽调制电路、模拟多路转换器及A/D转换器等电路集成到一个单块芯片上,构成了一个最小但完善的计算机任务。单片机要使用特定的组译和编译软件编译程序,在用keiluvision4把程序下载到单片机内。 而本设计选用的是AT89S52.AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。其结构图如下图2-1-1所示图2-1-189S52结构2.2模数转换器的选择A/D转换器的种类很多,就位数来说,可以分为8位、10位、12位和16位等。位数越高其分辨率就越高,价格也就越贵。A/D转换器型号很多,而其转换时间和转换误差也各不相同。 <1>逐渐逼近式A/D转换器:它是一种速度快、精度较高、成本较低的直接式转换器,其转换时间在几微秒到几百微秒之间。 <2>双积分A/D转换器:它是一种间接式的A/D转换器,优点是抗干扰能力强,精度比较高,缺点是数度很慢,适用于对转换数度要求不高的系统。 <3>并行式A/D转换器:它又被称为flash〔快速型,它的转换数度很高,但她采用了很多个比较器,而n位的转换就需要2n-1个比较器,因此电路规模也极大,价格也很贵,只适用于视频A/D转换器等数度特别高的领域。 鉴于上面三种方案,在价格、转换速度等多种标准考量下,在本设计选用的是逐渐逼近式A/D转换器——ADC0809.2.3显示部分LED数码显示管是一种由LED发光二极管组合显示字符的显示器件。它使用了8个LED显示管,其中7个用于显示字符,1个用来显示小数点,故通常称之为八段发光二极管数码显示器。对LED数码显示器的控制可以采用按时间向它提供具有一定驱动能力的位选和段选信号。LED数码显示有动态扫描显示法和静态显示。在单片机中,为了节省硬件资源,多采用动态扫描显示法。为了布线和做板的简单,采用一个4位的共阴数码管。2.4按键部分为实现显示指定的通道电压,需要用到单片机的外部中断0和外部中断1来实现跳转,其原理图如下图2-4-1所示,Q11接到外部中断0〔P3.2,Q12接到外部中断1<P3.3>。当按下按键S3时,给P3.2低电平,启动外部中断0;当按下按键S3时,给P3.3低电平,启动外部中断1,编写相应的中断服务程序就可以实现功能。图2-4-1按键原理图3软件设计3.1主程序设计主程序的设计的思路是:当没有中断的时候,就按顺序从1通道轮流显示到8通道。在外部中断0<INTER0>的中断服务程序中对寄存器R2加1,即进入外部中断0时,R2就加1;在外部中断1<INTER1>的中断服务程序中对寄存器R0加1,即进入外部中断0时,R0就加1。在主程序中对R2进行比较,当R2=1时就停止轮流显示,即当外部中断0第一次响应后,停止轮流显示;当R2=2是将R0的值赋给R3,〔R3是通道轮流显示的条件寄存器然后调用显示子程序。其程序流程图如下图3-1-1所示开始P3.7=0?初始化开始P3.7=0?初始化 N开中断 Y开中断调用调用通道选择子程序LPINCR3INCR3MOVR3,#01HR3=9?MOVR3,#01HR3=9? YR2=1? NR2=1?YR2=2? NR2=2?N将R0的值赋给R3将R0的值赋给R3 Y图3-1-1程序流程图3.2子程序设计子程序有4个,分别是通道选择子程序LP,显示子程序DISPLAY,延迟子程序D10ms,数据处理子程序CAI。<1>通道选择子程序LP:LP: CJNER3,#01H,LP1;根据R3来选择通道CLRP2.7 ;开通道CLRP2.6 CLRP2.5AJMPQIDLP1:...;有8个通道,格式一样的,...LP7:SETBP2.7 ;8通道SETBP2.6 SETBP2.5QID:CLRP2.0;启动ADC0809,给P2.0输入一个正脉冲NOPNOPNOPSETBP2.0 NOP NOP NOP CLRP2.0 P2.1,$ ;判断是否开始转换 JNBP2.1,$ ;判断转换是否结束ACALLD10ms1 MOV44H,P0 ;将P0口的给44H ACALLCAI ;调用数据处理子程序YAN1:ACALLDISPLAY1 ;显示通道数 ACALLDISPLAY ;显示转换结果DJNZR4,YAN1 ;延迟RET这个子程序的作用是根据R3的值来选择通道,实现8路数据顺序采集、轮流显示,当这个子程序调用结束后,就会返回主程序,实行INCR3操作,并将R3与#09H比较。〔2显示子程序DISPLAY:DISPLAY: ;数码显示子程序MOVDPTR,#TAB MOVA,40HMOVCA,A+DPTR CLRP2.2 SETBP2.3 CLRP2.4 ADDA,#80HMOVP1,A ACALLD10ms1MOVDPTR,#TAB MOVA,41HMOVCA,A+DPTRCLRP2.2 CLRP2.3 SETBP2.4 MOVP1,AACALLD10ms1 RETDISPLAY1:MOVDPTR,#TAB MOVA,R3MOVCA,A+DPTR SETBP2.2CLRP2.4 CLRP2.3 MOVP1,A ACALLD10ms1 RET这个子程序的作用是:根据P2.2、P2.3、P2.4的不同赋值来选择数码管显示,显示的段码分别存储在40H,41H,而通道数段码存储在R3。〔3延迟子程序D10ms:D10ms:MOVR5,#14HDL:MOVR6,#0FFHDL0:DJNZR6,DL0DJNZR5,DLRET这个子程序起到延迟的作用,因为在显示的时候可能要用到延迟才能够让数码管上的值显示的清晰明了,这个是必不可少的。〔4数据处理子程序CAI:CAI:MOVA,44H;数据处理子程序MOVB,#51DIVAB ;B为余数MOV40H,A;整数存入40HMOVA,B ;余数大于19H〔25时F0为1CLRF0SUBBA,#1AH ;判断余数是否大于19〔25?MOVF0,C ;判断溢出MOVA,#10MULAB ;余数扩大10倍MOVB,#51DIVABF0,LOOP7ADDA,#5;余数大于19H〔25时,结果加5LOOP7:MOV41H,A MOVA,BCLRF0SUBBA,#1AHMOVF0,CMOVA,#10MULABMOVB,#51DIVABF0,LOOP8ADDA,#5LOOP8:MOV42H,ARET因为A/D转换输出为2位16进制数,电压显示方式为十进制数,所以应进行数据转换,所以需要调用这个数据处理子程序CAI,其转换公式为:VCC[A/D转换输出〔十六进制]=FF〔十六进制X〔转换后显示为十进制值5V〔最大电压值4硬件制作与调试当硬件制作完成后,在检测没有发生短路和断路的情况下,就可以编写程序进行调试可分成一下几个步骤:〔1编写一个小程序,然后烧写到芯片里,有可能烧不进去,这可能是ISP下载口接反了或者是芯片的问题,一步一步的检查。〔2当小程序能够烧写进去并且能够实现程序的功能以后,说明硬件应该没什么问题,接着再编写能够实现更多功能的程序,并且能过实现为止,这样循序渐进,由小到大,这样编写出来的程序就可以实现〔3可能存在这样的问题:每个模块的程序都能实现,但是当把它们集合在一起的时候就不行了,这就要检查每个模块之间的调用有没有问题了,下面是具体的流程:4.1硬件制作硬件制作的流程如下:<1>画出电路草稿图,经过修改选择,确定好方案。<2>根据电路图,利用DXP2004,画出原理图。<3>编译原理图,确定无误后导入PCB图。<4>排版PCB图,考虑好用单面还是双面板来制板,然后连线。<5>据原理图生成元件清单,买好所用器件及铜板。<6>打印PCB,进行印板腐蚀,打孔、焊接。<7>完成焊接之后,检查电路,最后上电观察电路是否正常。4.2调试在电脑上装好keil编程软件及下载器软件progisp1.66,将编好的程序生成可执行文件,文件名以.HEX为后缀。通过下载器,将仿真好的程序烧入单片机芯片。给电路上电,看硬件是否正常工作。以下是我调试的遇到的问题:<1>板子制作出来,发现下载器画错了,管脚接得不对。所以要烧入程序必须借助单片机最小系统版。<2>电路板上电,烧入程序,发现数码管不亮。按下任何键都没有反应,能确定的是板子复位电路不起作用。<3>上电检查单片机每个管脚的电压,没有发现异常。再检查各块芯片,也能显示正常。说明硬件部分没有问题,只需考虑软件部分了。<4>仔细的研究程序,觉得可能按键去抖没有做好。在程序中添加了延时去抖,再次烧入单片机,电路能正常工作了,调试成功。调试仪器:数字万用表〔1个,电源〔1个,下载器〔1个测量结果及误差表如下:通道数Int1Int2Int3Int4Int5Int6Int7Int8万用表测量电压值2.8v0.0v5.0v3.9v3.0v2.0v1.0v0.0v数码显示值2.8v0.0v5.0v4.0v3.0v1.9v1.0v0.0v误差0.0v0.0v0.0v0.1v0.0v0.1v0.0v0.0v从上表来对比看,采集到的电压值很接近实际电压。证明电路是对的,软件程序处理没有错误,硬件做得比较成功。5分析设计方案优缺点5.1优点本次课程设计,设计方案优点有以下几个:〔1硬件简单,器件少,制作容易。〔2所用器件都是常用的,易买,而且价格便宜。〔3采集各个通道的电压因为电阻值不一致,在调试时易辨别是否为所采集通道的电压值。〔4显示部分用一个四位共阴数码管。首先,采用集成数码管最大的好处是减少了PCB制作的困难。第二,采用NPN9014三极管驱动而不使用芯片,节约了成本。5.2缺点方案设计存在的不足之处如下:硬件电路中采用了74LS74进行分频出500KHz送至ADC0809的时钟端。原则上ADC0809确实需要500KHz来驱动,不过正常情况下,1MHz是也是可以的。即采用6MHz的晶振,经单片机分频从ALE端输出的频率为1MHz来驱动即可。所以分频显得多此一举了。但为了保证ADC0809一定能正常工作,才会采取分频。〔2输出数据没有采取锁存,显示时数码管虽然能显示,但数据不够稳定。本次课程设计的目的是培养和锻炼学生的实践能力,同时希望学生能把所学到的东西应用至实际生活中。虽然之前的实验做过多通道采集,但那只是软件部分,根本不涉及硬件的设计,所以对硬件的组成原理是不深入了解的。另外,这次课题也能加强学生的自学能力。就像本次课程设计,用到了74LS74才自己上网去查资料,通过仿真确信可行才用于实践中。还有单片机C语言编程,之前是有一定的基础,可毕竟还不足,仍需要自己花时间去学习,边学便用。为以后的工作做了一定的准备。6总结在本次设计中发现了不少的问题,也解决了很多的问题,学会了如何去发现问题、分析问题进而解决问题。特别是在调试的时候,在我制作完成硬件后,在将程序烧到芯片里的时候,没有烧进去,不知道原因在哪里,我把电路检测了一遍,没有发生短路或断路的情况,于是我怀疑是不是芯片的问题,把别人的芯片拿来试了一下,但还是烧不进去,只好再检查一下电路,最后在检查PCB的时候发现是ISP下载口接反了,将其重新焊接,再试接成功了。当然在程序调试的过程中不止这些问题,比如:烧写程序进去后,数码管没有反映,检查一下程序的逻辑有没有错,有时会陷入某个语句的死循环,跳不出来;显示的数字不同步,那有可能是在显示时的延迟不够,达不到要求等等一些问题。程序的调试是一件枯燥而持久的事情,所以要保持耐心和热情,有的问题一时间找不到原因,那不妨换个思路,也许就会豁然开朗了。这不仅是在调试的时候需要,在编程的时候,乃至做什么事情的时候,在看似陷入绝境的时候,不妨换个思路、换个角度,当看问题的角度不同的时候,可能就会有一些新的想法。在这次设计中锻炼了我将软件和硬件结合起来的能力,加深了对以前学过的知识的记忆和理解。同时让我站在一个新的角度去看问题,想实现某种功能并不只有一条途径,切不可陷入固定的思维,认为只有这样做才行,这样可能到最后也解决不了问题。问题是多种多样的,答案也不只有一种。谢辞在完成课程设计的时候,衷心的感谢我的指导老师黄源老师。在我遇到问题和困难的时候,他给了我很大的帮助,有了他的帮助,我的课程设计才能少走一点弯路,在这里道一声真挚的感谢。当然也要感谢帮助过我的其他老师们,每当有问题去求教她们的时候,她们总是不厌其烦、耐心的给我指导。当有一些学过的知识记不起来时,她们总是慢慢的引导,直到将知识点记起来,最终把问题解决。在这里真的要谢谢她们,谢谢!8参考文献[1]白驹珩、雷晓平.单片计算机及其应用〔二.高等教育出版社,2005.9[2]阎石.数字电子技术基础[M].北京:高等教育出版社,2006.5[3]王选民.智能仪器原理及设计[M].北京:清华大学出版社,2008.2附录元件清单:序号名称数量单价备注1单片机89C521+1个DIP40底座2A/D转换08091+1个DIP28底座34位共阴数码管1410K精密电位器25按键3小61*40圆针插座27三极管32N30948电阻710K9电阻333010电阻1100K11电容227pf12电容110413晶振112MHZ141*40排针2151*8排线216ISP下载口12*517单面板1180mm*85mm程序:ORG0000HAJMPMAINORG0003HAJMPINTER0 ORG0013H AJMPINTER1 ORG0030H;----------------------------------------------------------MAIN:MOVR0,#01H ;初始化MOVR1,#00H MOVR3,#00H MOVR4,#02HMOV40H,#00HMOV41H,#00HJNBP3.7,LOOP ;P3.7作为开始键AJMPMAINLOOP:ACALLD10msJNBP3.7,START AJMPMAIN;----------------------------------------------------------START: SETBEA ;开中断 SETBIT0 SETBIT1 SETBEX0 SETBEX1ACALLLPINCR3 CJNER3,#09H,ST1MOVR3,#01H;----------------------------------------------------------ST1:CJNER1,#01H,NEXT2 ;进行中断变量的比较AJMPST1NEXT2:CJNER1,#02H,NEXT3MOVR1,#00H MOVA,R0 MOVR0,#00H MOVR3,A NEXT3:AJMPSTART;----------------------------------------------------------INTER0: ;中断服务程序0 MOVR1,#01H CJNER0,#00H,N1 ACALLD10ms1 AJMPN2N1:MOVR1,#02HN2:RETIINTER1: ;中断服务程序1INCR0 RETI;----------------------------------------------------------LP: CJNER3,#01H,LP1;根据R3来选择通道CLRP2.7 ;开通道CLRP2.6 CLRP2.5AJMPQID ;LP1:CJNER3,#02H,LP2;2通道CLRP2.7CLRP2.6 SETBP2.5 AJMPQIDLP2:CJNER3,#03H,LP3;3通道CLRP2.7SETBP2.6 CLRP2.5 AJMPQIDLP3:CJNER3,#04H,LP4;4通道CLRP2.7SETBP2.6 SETBP2.5 AJMPQIDLP4:CJNER3,#05H,LP5;5通道SETBP2.7CLRP2.6 CLRP2.5 AJMPQIDLP5:CJNER3,#06H,LP6;6通道SETBP2.7CLRP2.6 SETBP2.5 AJMPQIDLP6:CJNER3,#07H,LP7;7通道SETBP2.7SETBP2.6 CLRP2.5 AJMPQIDLP7:SETBP2.7 ;8通道SETBP2.6 SETBP2.5QID:CLRP2.0;启动ADC0809,给P2.0输入一个正脉冲NOPNOPNOPSETBP2.0 NOP NOP NOP CLRP2.0 P2.1,$ ;判断是否开始转换 JNBP2.1,$ ;判断转换是否结束ACALLD10ms1 MOV44H,P0 ;将P0口的给44H ACALLCAI ;调用数据处理子程序YAN1:ACALLDISPLAY1 ;显示通道数 ACALLDISPLAY ;显示转换结果DJNZR4,YAN1 ;延迟RET;----------------------------------------------------------CAI:MOVA,44H;数据处理子程序MOVB,#51DIVAB ;B为余数MOV40H,A;整数存入40HMOVA,B ;余数大于19H〔25时F0为1CLRF0SUBBA,#1AH ;判断余数是否大于19〔25?MOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论