版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的多路数据采集系统设计TheDesignOfMulti-channelDataAcquisitionSystemBasedOnSCM摘要本文介绍了基于单片机的数据采集的硬件设计和软件设计,数据采集系统是模拟域与数字域之间必不可少的纽带,它的存在具有着非常重要的作用。本文介绍的重点是数据采集系统,而该系统硬件部分的重心在于单片机。数据采集与通信控制采用了模块化的设计,数据采集与通信控制采用了单片机AT89S52来实现,硬件部分是以单片机为核心,还包括A/D模数转换模块,显示模块,和串行接口部分。该系统从机负责数据采集并应答主机的命令。8路被测电压通过模数转换器ADC0809进行模数转换,实现对采集到的数据进行模拟量到数字量的转换,并将转换后的数据通过串行口MAX232传输到上位机,由上位机负责数据的接受、处理和显示,并用LED数码显示器来显示所采集的结果。软件部分应用VC++编写控制软件,对数据采集系统、模数转换系统、数据显示、数据通信等程序进行了设计。关键词:数据采集89C52单片机ADC0809MAX232AbstractThisarticledescribesthehardwaredesignandsoftwaredesignofthedataonwhichbasedonsignal-chipmicrocomputer.Thedatacollectionsystemisthelinkbetweenthedigitaldomainandanalogdomain.Ithasanveryimportantfunction.Theintroductivepointofthistextisadatatocollectthesystem.Thehardwareofthesystemfocusesonsignal-chipmicrocomputer.Datacollectionandcommunicationcontrolusemodulardesign.Thedatacollectedtocontrolwithcorrespondencetoadoptamachine8051tocarryout.Thepartofhardware’scoreisAT89S52,isalsoincludesA/Dconversionmodule,displaymodule,andtheserialinterface.Slavemachineisresponsiblefordataacquisitionandansweringthehostmachine.8roadsweremeasuredtheelectricvoltagetopasstheingeneralusemold-fewconversionofADC0809,therealizationcarriesontheconversionthatimitatestomeasurethenumeraltomeasuretowardsthedatathatcollect.ThensendthedatatothehostmachinethroughMAX232.thehostmachineisresponsiblefordataanddisplay,LEDdigitaldisplayisresponsibledisplaythedata.ThesoftwareispartlyprogrammedwithVC++.Thesoftwarecanrealizethefunctionofmonitoringandcontrollingthewholesystem.Itdesignsmuchprogramlikedata-acquisitiontreatment,data-displayanddata-communicationect.Keyword:dataacquisitionAT89C52ADC0809MAX232
目录第一章绪论 。在0x010~0x013存放读音“0”,以此类推“9”存放在0x034~0x034,“万”存放在0x038~0x03B,“十”存放在0x044~0x047。-通过以下判断顺序可以正确报数值:先判断数字位数,然后从最高位播起,每播一位追加单位播报;数字播报可以用每一位数字本身做偏移量,寻址播放;单位在最初判断数字位后,设定起始单位地址,然后逐一增加。开始开始播放buffer [i]播放buffer [i]数字压入buffer数字压入buffer播放单位播放单位确定数字位数d确定数字位数di++i++i=0i=0d--d--Buffer[i]为终止符?Buffer[i]为终止符?结束结束图3.5数字播报流程图4调试过程整个调试过程包括硬件调试、软件调试和系统测试三部分。每个模块在功能上相互联系又各自独立,所以在每个部分调试的过程中也要分模块进行。这样做的好处是,可以将出现的问题进行具有针对性的处理,避免出现问题时找不到真正原因。调试过程是对原理进一步理解和对原理中的不足改进的重要步骤。4.1硬件调试硬件正常是整个系统正常运转的基础,所以硬件调试就格外重要。硬件调试主要是对制版的电气特性进行检测,逐个排查电路布线问题,使器件在能正常工作。前期的电路特性检查必须十分耐心,硬件电路的细小问题都可能对软件的工作是否正常产生影响。硬件的调试主要经行了以下测试:第一,对于电路布线中容易短路和断路的地方进行检测。因为在印制板子的过程中难免出现细微问题,比如布线比较近的地方就可能出现短路,然后在焊接好以后,对容易焊接短路的地方进行检测。这部分检测较为容易用万用表测量短路档来检测即可。第二,在焊好板子后先不安装芯片上电。检测芯片底座供电电压是否正常。如果不正常,由于已经排除掉焊接短路、断路的问题,可以重点怀疑电路原理的问题。第三,安装芯片分模块检测电路是否正常,这时先检测单片机是否正常工作,然后通过单片机向各模块发送一些简单命令测试模块是否能正常工作。4.1.1单片机硬件电路检测单片机最小系统检测主要是检测单片机是否能正常启动。方法为用示波器检测单片机30脚,即ALE管脚是否有方波输出,且方波的频率因为晶振的1/6,即2M(晶振使用的是12M的)。检测到2M方波,说明单片机能正常启动。4.1.2液晶模块调试液晶模块检测主要是检测能否正常显示字符。利用前面提到的送字符串显示测试。当然首先要保证液晶初始化程序和子程序都是正确的,在此前提下查看液晶的硬件电路连接。注意要保证对比度适合。开始测试没有看到字符,就是因为对比度调节不合适。4.1.3ADC0809和语音电路调试检测ADC0809首先要检测ADC0809的时钟是否正确。本系统采用500Hz,可以用示波器加以检测。语音芯片保留了按键部分用来测试芯片是否正常工作和芯片电源供电是否正常。工作正常后,可以通过控制端口模拟SPI时序,用示波器观测各控制端是否有正常信号输出。在检测语音芯片控制端的时候发现信号有异常,不能对芯片进行控制,最后发现P2口的上拉排阻装反了。4.1.4放大电路检测放大电路主要是对传感器信号的放大。检测放大电路主要是检测放大电路能不能调零。将差分输入端同时接地,然后调整调零电阻,看是否能调零。放大电路放大倍数产生的误差也是主要要考虑的。为后面的数据处理可能导致较大误差。4.2软件调试本系统软件部分采用C语言编写,系统硬件电路比较简单,主要通过软件来实现各个模块之间的协调运作。由于软件运行的基础是硬件,所以在调试软件的过程中如果发现问题,应该同时考虑软件和硬件的问题。调试可以通过使用伟福仿真器来仿真调试。4.2.1液晶显示程序调试液晶显示在开始测试电路是否正常时,通过送字符串可以正常显示。但实际系统要求要显示的浓度值是动态变化的。开始曾想过,整个显示内容分段显示,数字单独显示,发现程序比较繁琐。所以想到如果可以将这个显示的内容看做一个整体的字符串,而其中的数字可以动态改变就可以了。通过使用scanf函数就可以达到目的。4.2.2语音播报程序调试语音播报主要是模拟SPI时序传输命令与数据。主要出现问题是开始播报数字,用每位数字作偏移量寻址播报,所播数字与实际不符。用编译器仿真查看程序中变量,发现问题为当数字量转化成字符放到字符串中时,值就转化成其对应的ASCⅡ码。因此想用数字做便宜量,要对其处理,即减掉30H即可。同时在分段播放时,没次播放前都要加入判断是否播放完毕,这样才能正常运行。调试初期,没有加入判断语句,导致分段播放混乱。还有要注意的是,当使用SPI模式不按照严格要求进行录音的时候,按键模式无效,此时不能通过按键来判断芯片是否正常。4.2.3其他程序调试模数转化程序比较简单,就是模拟其时序即可。数据处理部分,根据其线性关系可以得到求值公式,但是其斜率和输出的电压随温度变化,没能得到很好的解决,可以通过多次求值求平均值来减小误差,但室内空气检测,要求不是很精确,只要误差范围在允许范围内即可。4.3系统测试在各个模块软件功能基本实现的时候,其实也就是硬件与软件能配套实现的过程。在各个模块程序实现功能的时候,在整合整个系统的软件时要注意不要出现死循环。各功能单独测试时,可以实现并不意味着这个系统的功能可以正常实现。在软件上根据流程图,合理设置个功能的连接方式十分重要。以上调试经过以后可以,进行系统整体测试。由于传感器正常输出信号需要预热一个小时,系统在一个小时候才能正常测量。传感器预热后可以看到,液晶屏能够显示二氧化碳浓度。由于没有标准的二氧化碳浓度检测仪进行比较,没法进行自行标定。只能根据传感器芯片中所标定来处理传感器输出信号。所得浓度与实际值存在一些偏差,但是公共场合二氧化碳浓度测量本身精度要求并不高,只要偏差范围不是太大即可。然后可以经行按键功能测试。按设置菜单建,可以进入设置菜单,按一次是进行报警值的设置,按两次是进入报警间隔时间的设置。其他两个按键可以对数值进行增减设置。在显示浓度时,按下语音播放键,可以对浓度进行语音播报。在设置菜单时不能通过按键播放语音,这时播放按键用来经行设置相应数值。系统整体设计功能基本能够实现,能够对二氧化碳浓度进行实时显示和语音播报。5结论本系统设计过程中遇到一些问题,有些已经解决有些还有待改善。系统中主要应用了AT89S52单片机,ADC0809模数转化芯片,液晶LCD1602以及语音芯片1720。各个芯片在应用的过程中应该注意一些问题。对于AT89S52单片机,应用已经相当普及和广泛。由于其本身没有像类似凌阳单片机集成其他多种功能,在组建系统时只能起到中心控制器的作用,其他功能需要依靠其他芯片来组建相应的功能电路。尽管本身功能不是强大,但具有很强的灵活型,根据不同的需求来配合外部电路来实行控制。ADC0809经典的电路接口是利用单片机读写口和P2.0通过与非门来控制芯片启动。本系统中通过I/0口来模拟启动时序。在实现启动AD0809的程序调试中,在最开始的时候,通过简单的将ALE端置高电平,没能成功。最后通过对时序图的重新认识,才发现时边沿触发。这使我发现对与芯片的使用首先要读懂其时序图,很要的一点就是边沿触发还是电平触发。这一点在ADC1720的使用上也有体会。液晶LCD1602虽然不能显示汉字,但已经可以满足系统要求。在系统中对LCD的应用较为简单,仅是现实字符串。通过对LCD的命令字的了解,可以自行设置显示效果,例如可以通过控制显示模式达到字符滚动显示,由于本系统不涉及,就不再讨论。语音芯片ISD1720的使用是本系统中难度最大的部分。本芯片使用不单纯是一个放音电路,还含有其他的控制。因此程序首先要能完成指定地址的放音工作,还要配合其他的功能程序。在调试液晶和语音芯片的过程中,要从易道难逐步调试。开始就想实现整体功能较为困难。液晶的功能实现先由实现显示字符串内容开始,然后实现显示内容的切换,在实现现实内容的变动。而语音芯片则是先实现按键播放录音,然后实现SPI控制的录放音,最后实现分段播录功能的实现。语音电路的设计要注意,在线路布线的时候要注意电容要靠近指定管脚,可以提高录放音的质量。语音程序的应用一定要注意每执行完一跳语句要进行是否执行完毕的判断,在初步调试程序时发现没有判断将使得有的语句没有执行不能按预期的方式播放。也可以用足够的延时来代替完毕判断,但建议使用语句判断较为合理。系统的整体功能实现,不是简单的各个模块的功能实现的。尤其在软件编写方面格外突出,系统软件中各个功能程序的合理调用对最后系统的影响十分重要。系统的功能基本实现,但还有一些不足。从制作工艺上来看,布线还有待提高,有些进一步完善;从功能上看,由于室内测量的精度要求不是是特别高,所以本系统对传感器的信号处理的精度不是很高,如果要具有更广泛的应用,信号的处理部分要加以改善。本系统作为二氧化碳播报系统,建立了基本架构,根据不同场合需求可以对不同的功能模块加以改善从而达到要求。YY谢辞参考文献[1]王为青、程国钢.单片机KeilCx51应用开发技术[M].人民邮电出版社.[2]谭浩强.C程序设计[M].清华大学出版社,2005,104~106.[3]白驹珩,雷晓平.单片计算机及其应用.高等教育出版社&电子科技大学出版社,2005.[4]康华光等.电子技术基础模拟部分(第五版).高等教育出版社,2005.[5]马忠梅.单片机的C语言应用程序设计[M].北京航空航天大学出版社,1999.[6]劳五一,劳佳编著.模拟电子电路分析、设计与仿真[M].清华大学出版社,2007.5.[7]王秋爽,曾昭龙著.单片机开发基础与经典设计实例.机械工业出版社,2008[8]松井邦彦.传感器应用技巧(梁瑞林)[M].科学出版社,2006,16~18[9]Digitallogiccircuitanalysisanddesign.VictorP.Nelson[et.al.]1995byPrenticeHall,Inc.[10]田立,田清著,51单片机C语言程序设计快速入门.人民邮电出版社出版发行,2007.附录附录一:电路原理图附录二:程序清单主函数程序:voidmain(void){LCD_init();ISD_PU();time0_int();temp2=0;temp3=0;delay(10);alarm=0;time=10;while(1){AD0809_ST=0;AD0809_ST=1;delay(10); AD0809_ST=0;while(!AD0809_EOC); AD0809_OE=1; DigitalData=GetResult();DigitalData=DigitalData*100;DigitalData=(534-DigitalData)/65;temp1=pow(10,DigitalData);sprintf(buffer,"co2:%uppm",temp1); LCD_Disp();while(!BACK){while(!BACK);alarm=showmenu1();time=showmenu2();}while(!DOWN){bfnd();}if(temp3>time*6){EA=0;bfnd();temp2=0;EA=1; }if(temp1>alarm){SetPLAY(0x00,0x56,0x00,0x70);SetPLAY(0x00,0x80,0x00,0x8F);}}}主要子函数:voidtime0_int(){TMOD=0X22;TH0=0X06;TL0=0X06;ET0=1;EA=1;TF0=0;TR0=1;}//****************定时中断程序**********888voidTimer0_Overflow()interrupt1using0{ET0=0;temp2=temp2+1;if(temp2==40000){temp3++;temp2=0;}ET0=1;}voidbfnd(){SetPLAY(0x00,0x56,0x00,0x70);sprintf(buffer,"%u",temp1);bfsz(temp1);SetPLAY(0x00,0x70,0x00,0x7F);}//AD数据获取函数floatGetResult(){floattemp;floatVOLT;temp=ADData_BUS;VOLT=5*temp/255;returnVOLT;}//菜单设置子程序****************************************************intshowmenu1(void){inti,a,b,c,sum;LCD_init();sum=alarm;sprintf(string1,"alarmmunber:");LCD_Showstring(0,string1);sprintf(string1,"%dppm",alarm);LCD_Showstring(1,string1);while(BACK){if(!UP)i=0;elseif(!DOWN)i=1;elsei=3;switch(i){case0:;alarm=100+sum;sum=alarm;break;case1:;alarm=sum-100;sum=alarm;break;default:break;}sprintf(string1,"%dppm",alarm);LCD_Showstring(1,string1);}while(!BACK);return(alarm);}intshowmenu2(void){inti,a,b,c,sum;LCD_init();sum=time;sprintf(string1,"alarmtime:");LCD_Showstring(0,string1);sprintf(string1,"%dmin",time);LCD_Showstring(1,string1);while(BACK){if(!UP)i=0;elseif(!DOWN)i=1;elsei=3;switch(i){case0:;time=10+sum;sum=time;break;case1:;time=sum-10;sum=time;break;default:break;}sprintf(string1,"%dmin",time);LCD_Showstring(1,string1);}while(!BACK);LCD_init();return(time);}voidbfsz(uinta){ucharb,i,j;uintc;i=0j=pdwei(temp1);for(i=0;buffer[i]!='\0';i++){b=buffer[i]-0x30;SetPLAY(0x00,0x10+b*7,0x00,0x17+b*7);bfwei(j);j++;}}voidbfwei(uinti){switch(i){case0:SetPLAY(0x00,0x42,0x00,0x47);break;case1:SetPLAY(0x00,0x47,0x00,0x4C);break;case2:SetPLAY(0x00,0x4C,0x00,0x51);break;case3:SetPLAY(0x00,0x51,0x00,0x56);break;default:break;}}uintpdwei(uintnum){uinti;if(num>10000)i=0;elseif(num>1000)i=1;elseif(num>100)i=2;elseif(num>10)i=3;else;returni;}ganemploymenttribunalclaiEmploymenttribunalssortoutdisagreementsbetweenemployersandemployees.Youmayneedtomakeaclaimtoanemploymenttribunalif:youdon'tagreewiththedisciplinaryactionyouremployerhastakenagainstyouyouremployerdismissesyouandyouthinkthatyouhavebeendismissedunfairly
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《水環境調查方法》课件
- 2020年安徽省中考英语试卷及答案解析
- 小学一年级20以内加减法试题口算速算练习题
- 《护士礼仪行为规范》课件
- 《物业服务内涵》课件
- 银铜合金焊接知识点
- 地产建筑行业技术工作总结
- 会计行业会计人员培训总结
- 精神科护士的综合总结
- 零售业务员工作总结
- 2024年大学试题(管理类)-公共部门决策的理论与方法笔试历年真题荟萃含答案
- 在美术课堂中融入心理健康教育
- 2024年上海外服招聘笔试参考题库附带答案详解
- DLT 1051-2019电力技术监督导则
- 中国AED布局与投放专家共识护理课件
- 山东省枣庄市滕州市2023-2024学年高二上学期期末考试数学试卷
- 语文七年级下字帖打印版
- 无菌注射剂生产线清洁验证方案
- 2024年健康照护师理论试题
- 寒假小学生心理健康教育
- 健康体检授权委托书
评论
0/150
提交评论