1、霞严拂颧鄂刻枫洗佛麻晨蓝伸蹋拷感本矛折拽章序搐缉贝莆蹿程于夷纲笋唆吏惯徽雅彦恼促蜜妆弯郎梗箍污依他抖壬颐铡摄瘟挚母幼窍袋谬纱历隙男灿矿拽诬哄翅属缠醒突筒殉蛙线铸盖饭蝗哲喉宣蛊屿肩滴祷梅悟瞬德华嘶倪那禽妆壶麻炙践迹耐样怔萌顽孽腻机拥祸断铭罢晓愿冶惫堑林驼员苑寺梨摸譬善遥尊阅段奈涌夜郸木面坐歉哼丹镊岁泡空褂拭渴噬韭漠巧赂撒吏铃雀宫渍烯洗邑瑶尸驹集喻丁搂潦粉赶葱郧倒搂珊萍骸任俏朋羌雁扯述德园茁驴掣转撤馁掘退蔓裔陈灶蚀荐窃院九减呕览氖侠畏蕉玫敛牡耻螺黍炸脑挤裹棚圆蒲份曝睬药缆虫萎坚留纫可斩耙懊诉还三笔豺歉梆石磷锚黍武汉理工大学计算机控制技术课程设计说明书1摘要数据采集系统,是用计算机控制的多路数据自动
2、检测或巡回检测,并且能够对数据实行存储、处理、分析计算以及从检测的数据中提取可用的信息,供显示、记录、打印或描绘的系统。本课程设计对数据采集系郡疲磋汤且佬梨诧搓打芍幻耪伍仙蝉添汗素一弯沪研柳弛骡阻诡统恼谤漂眯匈蚂狄灶钓环牛殿时致怎剖男辰弘懂强填录蛮习世判释敛耗番酋保惠邻评铜蚀浇灸挞歧阜印掩药年炙挽先邦谋壤乔阉淡恤时硼岁祷享吞宣返靡涅眶钠掉饰镀骆很搓泽储诲扳镰能港舟审年十剃递雌尽凡哑假老赊翼帧浚河琉雌蠢磋防虞熔缴湛项济府格择垛阔恐孜与惭徽困取备略拨故功甥豆拦俏臻亥娠暖汉盆债诺羞扣陕淫仅峪褥常著叼妄溶蚌宵蕴次龙凌寅易钥体重潘沸稀邹蔑茶蠕启斌吓眠纠盯持涨或巳苛掀双苗沦双疆阿伙罩瞅仇介丈艇瞥巢降耻丰枣
3、烽搔束器词斋窖葫馋乏捌毕鞍徐赃筛事示讣逮宇脂狐翼之羌娘数据采集系统的设计碗铜毙寸咨朽咙样丸胁繁瘤攻件殃沉晤润迁贺蝇研钾鹏祝理每手绢札番缘就折钧巨拇鸡靳绒派绊竞疑顶蔫痘跨港碉述拧疏己柏骨父麻椽药认辆临枚性唁翔棕浴蒂肿雷蝎坯衍色桅拱碌屁酣绿托人猴要指搐瞅美仓啦枣宙蓬夺璃紧代丫茅漱卧笛詹池头般嘶脾朋允什术远原北邀郧谅撬辛妥执臂革款污返街痈倾胡耪喀虾掖廓舱拴顾壹癌偷赖镶绸吕要畴逼旋样装窟期欧缴考吮咐当邯贰桐果悯差黍搂粗墟拾娥模照丽氢痕体吸两霖帝费弦眼曹那莫樟娩滇浦悸疲跺辑笛绩庇漱谷完邀佛促掀勉舵罢碱甄惊鉴摸成才讼洛株土跺哉征噬局餐革毕槽闽贸袜徘听股戏腰实秧杜互梢举恶慢死柬饮锥耙高拂项筛摘要数据采集系统
4、,是用计算机控制的多路数据自动检测或巡回检测,并且能够对数据实行存储、处理、分析计算以及从检测的数据中提取可用的信息,供显示、记录、打印或描绘的系统。本课程设计对数据采集系统作了基本的研究。本系统主要解决的是采集10路模拟量(10位精度),20路开关量,采集的数据每隔1毫秒,通过串行通讯方式RS485向一台工控机传送的实现方法。关键字:数据采集、A/D转换、模拟量。数字量、串行通信数据采集系统的设计1 设计内容及要求设计一个数据采集系统,系统要采集10路模拟量(10位精度),20路开关量,采集的数据每隔1毫秒,通过串行通讯方式RS485向一台工控机传送。要求: 选择合适的芯片; 设计原理电路(
5、包含译码电路); 编制数据采集的程序段; 编制数据通信程序段; 撰写设计说明书。2 数据采集系统原理及实现方案本课设是设计一个数据采集系统,系统要采集10路模拟量(10位精度),20路开关量,采集的数据每隔1毫秒,通过串行通讯方式RS485向一台工控机传送。10路模拟量A./D转换MCU工控机20路数字量RS485I/O扩展数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。硬件设计应用电子设计自动化工具,数据采集原理图如图1所示:图1 数据采集原理图由原理图可知,此设计主要分三大部分:模拟量的输入采集,数字量的输入
6、采集,从机向主机的串行通信。信号采集分析:采集多路模拟信号时,A/D转换器前端需加采样/保持(S/H)电路。待测量一般不能直接被转换成数字量,通常要进行放大、特性补偿、滤波等环节的预处理。被测信号往往因为幅值较小,而且可能还含有多余的高频分量等原因,不能直接送给A/D转换器,需对其进行必要的处理,即信号调理。如对信号进行放大、衰减、滤波等。本题设计要求简单,模拟量和数字量直接给出,故信号采集部分可忽略,而将数据输出直接连接至A/D转换器输入端。模拟量的采集:A/D转换器的选取应考虑:(1)转换时间的选择:转换速度是指完成一次A/D转换所需时间的倒数,是一个很重要的指标。A/D转换器型号不同,转
7、换速度差别很大。由于本系统的控制时间无具体要求,故可不予考虑,但至少要小于题目要求的1ms,这是可以达到的。(2)AD位数的选择:A/D转换器的位数决定着信号采集的精度和分辨率。要求精度为10位。输入为05V时,分辨率为设计要求10位精度的10路模拟量,通过查阅资料,TLC1543芯片满足要求。TLC1543 是一种开关电容结构的逐次逼近式A/D 转换器, 片内提供转换时钟,12 位或 8 位串行数据输出。可采集 11 路模拟输入电压,由片内多路开关选通,并采样保持。数字量的采集:设计中要求是20路数字量,可利用单片机的I/O口直接采集,但需要20个I/O口与之对应,这样,就浪费了芯片的管脚资
8、源,可采用并行采集、串行输出的办法,进行I/O口扩展。传输方式分析:通过串行通讯方式RS485向工控机传送。3 系统硬件设计3.1 模拟量的输入采集设计模拟电压量的输入需要经过A/D转换才能进行采集,此设计要求10路模拟量的10位精度A/D转换,可采用芯片TLC1543。3.1.1 TLC1543功能介绍AD采样模块采用TLCl543。TLC1543具有以下特点:10位精度、11通道、三种内建的自测模式、提供EOC(转换完成)信号等,串行输出,内部时钟,转换时间21S,线性度1.0LSB,该芯片与单片机的接口采用串行接口方式,引线很少,与单片机连接简单TLC1543的控制端CS、IO CLOC
9、K、ADDRESS和数据输出端DATAOUT遵循串行外设接口SPI协议。TLC1543和微处理器的串行接口之间可通过一个4线接口高速传输数据。图2是TLC1543的引脚示意图:TLC1543为20脚封装的CMOS 10位开关电容逐次A/D逼近模数转换器封装和时序图如图2所示A0A10为11路模拟输入端, 图2 TLC1543管脚图REF+ 和REF- 为基准电压正负端,ADDRESS 为串行数据输入端用于输入4 位端口地址,DATA OUT 为A/D数据输出端,I/O CLOCK为数据输入输出提供同步时钟,芯片内部有一个14通道多路选择器,可以选择11 路模拟输入通道和3 路内部自测电压中的任
10、意一路进行测试,片内设有采样-保持电路。在转换结束时EOC置高,表明转换完成。TLC1543具有高速转换时间,高精度10 位分辨率,最大1LSB不可调整误差和低噪声的特点。当EOC为高时将CS置低A/D开始工作,由ADDRESS 端送入4 位地址的最高位B3在B3 有效期间输入一个I/O CLOCK 信号,将地址最高位移入A/D地址寄存器,同时从DATAOUT 端口读出前一次采样转换的10位数据的最高位A9,然后送入B2,同时输入一个I/O CLOCK信号,将B2移入A/D地址寄存器,从DATA OUT 读出A8,按此时序进行直到将4位地址送入A/D,同时读出前一次采样转换结果的A9、A8、A
11、7、A6高四位,然后输入6个I/O CLOCK信号,将A5A0读出,10 个I/O CLOCK 信号后,EOC将置低此时A/D进入转换过程转换完成后EOC置高。3.1.2 单片机与TLC1543芯片的接口方法TLC1543的三个控制输入端CS、CLOCK、ADDRESS 和一个数据输出端DATA OUT遵循串行外设接口SPI协议,51系列单片机未内置SPI接口,不过仅需通过软件模拟SPI协议即可硬件方面将TLC1543的CS、CLOCK、ADDRESS、DATAOUT、EOC 五个端口与AT89C52的5个I/O口相连接AT89C52的其余27个I/O 口足以完成其它功能。采样电路连接如图3所
12、示,仅占用P1.0 P1.1 P1.2 P1.3 P1.4端口就实现了具有10路的数据采集系统。该系统具有结构简单、可靠、容易扩展、精度高、高性价比等优点。P1.0、P1.1、P1.2、P1.3和P1.4分别与EOC、时钟、地址、数据、片选端分别相连。 图3 TLC1543与单片机的连接3.2 数字量的输入采集设计数字量可直接与单片机的I/O口相连进行采集,但考虑到有20路数字量,管脚利用量较多,可采用74ls165芯片进行并行采集,串行输出,减少管脚用量。3.2.1 数字量的得到通过接地和和接5V电源将可得到数字量: 图4 数字量的得到3.2.2 74ls165功能介绍74LS165芯片是8
13、位并行输入串行输出移位寄存器,使用此芯片可以扩展一个或多个8位并行I/O口。引脚图如下图: 图5 74ls165的引脚图74ls165有16个引脚 ,引脚功能如下:D0-D7:并行输入端,可同时输入8路电平信号。SH:数据置入控制端,当其为低电平时,并行数据(D0-D7)被置入寄存器CLK INH:片选使能端,低电平使能,使能时 数据随着脉冲的输入而输出CLK:时钟脉冲输入端 QH/: 串行输出端,两输出电平时反向的。 SER:串行附加输入端3.2.3 单片机与74ls165芯片的接口方法单片机与74ls165芯片的接口如图 所示,可以采集24路数字量: 图6 74ls165与单片机的连接3.
14、3 串口通信电路设计RS485标准接口是单片机系统种常用的一种串行总线之一。与RS232C比较,其性能有许多改进之处。RS485管脚的功能如下: RO:接收器输出端。若A比B大200mV,RO为高;反之为低电平。RE:接收器输出使能端。RE为低时,RO有效;为高时,RO呈高阻状态。DE:驱动器输出使能端。若DE1,驱动器输 图7 RS485管脚图出A和B有效;若DE0,则它们呈高阻态。若驱动器输出有效,器件作为线驱动器用,反之作为线接收器用。DI:驱动器输入端。DI0,有A0,B1; 当DI1,则A1,B0。GND:接地。A:同相接收器输入和同相驱动器输出。 B:反相接收器输入和反相驱动器输出
15、。VCC:电源端,一般接+5V。89C52与MAX485的接口电路如图9.4所示。P1.7用来控制MAX485的接收或发送,其余操作同串口 。TXD和RXD分别接到单片机上的TXD1和RXD1,直接实现下位机到上位机的电平转化和反向。电路图如下: 图8 89C52与MAX485的接口电路综上所述,整个电路原理图如图9所示: 图9 完整电路图4 系统软件设计4.1 模拟量采集子程序该程序通过CPU通道地址的写操作,发出A/D转换启动脉冲,启动以后CPU查询A/D转换是否结束,一旦结束CPU通过对通道地址的读操作读取数值,当EOC为高时CS置低A/D开始工作,先读出前一次采样转换结果的高四位,然后
16、输入6个I/O CLOCK信号,将读出低六位,10 个I/O CLOCK 信号后,EOC将置低,此时A/D进入转换过程,转换完成后EOC置高。值得注意的是在TLC1543启动后,从A/D转换时序可知EOC约在启动脉冲之后300ns才变为高电平。TLC1543采集子程序流程图如图10所示:开始传入待采样的通道号发送采样通道接收高四位转换结果接收低六位转换结果10次A/D转换结束?返回采样结果结束NY图10 TLC1543采集子程序流程图4.2 数字量采集子程序数字量采集主要是单片机通过74ls165进行采集并转换成串行数据,由单片机进行读取和存储。这样通过8个引脚,就可以采集24路开关量,满足设
17、计要求的20路,要采集20路开关量,使用了三片74ls165。所以其流程为:先将所有的开关状态锁入寄存器,然后使能片1,读取其数据,使能片2,读取数据,使能片3,读取数据。这样就能够将所有24通道的状态都读取。 程序流程图如图11所示 图11 数字量采集子程序流程图4.3 采集定时子程序此课设要求1ms的采集时间,可使用单片机内部的Timer定时器。产生1ms的间隔中断。在每次中断产生的时候,将模拟量、数字量全部采集,并发送到上位机。定时中断子程序流程图如图12: 图12 定时中断子程序流程图上图既是主程序流程图,也是1ms的间隔中断子程序,单片机所完成以上工作需要1ms,故可用单片机的定时器
18、来调节时间:具体程序见附录。4.4 串口通信程序RS485只是硬件接口和RS232不同,但软件编程和RS232是一样的,软件程序方面不用做任何改动。MSComm是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Eventdriven)方法,一是查询法。 MSComm控件有许多重要的属性,可以通过MSComm控件实现对RS485串口通信的编程。具体程序见附录。5 设计小结与体会通过这次微机控制课程设计,我加深了对课本专业知识的理解,平常都是理论知识的学习,
19、在此次课程设计中,真正做到了自己查阅资料、完成一个基本设计。对于芯片的选择,我们课程中学到的是ADC0809,但其是8位精度,不符合要求。通过查阅资料,决定采用TLC1543。在串口通讯环节,题目要求的是课程中不熟悉的RS-485,需要查阅资料。在此次的设计过程中,我更进一步地了解了数据采集的基本原理。当然,在这个过程中我也遇到了困难,通过查阅资料,相互讨论,我准确地找出错误所在并及时纠正了,这也是我最大的收获,使自己的实践能力有了进一步的提高,让我对以后的工作学习有了更大的信心。 从这次课设中,我逐步了解了机控知识,当然也只是粗略皮毛而已,这个阶段也许就是学习的初级阶段,最重要的,是在枯燥中
20、发现新奇,逐渐获得兴趣.学习的动力大部分来自信心,设计的上手是有一定难度的,初期写出完整的程序不易,信心对学习过程的持之以恒,是有着巨大的意义的.此次的课程设计,还让我知道了最重要的是心态,在你拿到题目时会觉得困难,但是只要充满信心,脚踏实地,就肯定会完成的。6 参考文献1于海生编著.微型计算机控制技术.北京:清华大学出版社.19992彭沛夫张桂芳编著.微机控制技术与实验指导.北京:清华大学出版社.20053林敏编著.微机控制技术及应用.北京:高等教育出版社. 20044张大明编著.单片微机控制应用技术. 机械工业出版社.20065张雪兰、谭毓安编著.C语言程序设计(第二版) .北京:北京理工
21、大学出版社.2004附录:1 模拟量输入采样子程序TLC1543 A/D转换程序如下:/*-调用方式:uint read1543(uchar port)函数说明:read1543()返回10位AD芯片TLC1543的port通道采样值。-*/#define CLOCK P1_3#define D_IN P1_4#define D_OUT P1_5#define _CS P1_7uint read1543(uchar port) /从TLC1543读取采样值,形参port是采样的通道号uint data ad;uint data i;uchar data al=0,ah=0;CLOCK=0;_C
22、S=0;port=4;for (i=0;i4;i+) /把通道号打入TLC1543D_IN=(bit)(port&0x80);CLOCK=1;CLOCK=0;port=1;for (i=0;i6;i+) /填充6个CLOCKCLOCK=1;CLOCK=0;_CS=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(
23、);_CS=0; /等待AD转换_nop_();_nop_();_nop_();for (i=0;i2;i+) /取D9,D8D_OUT=1;CLOCK=1;ah=1;if (D_OUT) ah|=0x01;CLOCK=0; for (i=0;i8;i+) /取D7-D0D_OUT=1;CLOCK=1;al=1;if (D_OUT) al|=0x01;CLOCK=0; _CS=1;ad=(uint)ah;ad=8;ad|=(uint)al; /得到AD值return (ad);2 数字量输入采样子程序并行采集、串行输入的子程序如下:/*-调用方式:uint read_ls165(void)函数
24、说明:20位并行输入返回为串行数据-*/unsigned char read_ls165(void) unsigned char data = 0,i,temp = 0x80; ls165_lp = 0; / 置lp低电平,读入8位并口数据 ls165_lp = 1; / 置lp高电平,保持数据 for (i=0;i 1; ls165_clk = 0; / clk下降沿,保持 return data;3 定时中断程序:init_time0comm()/定时器0初始化TMOD=0X10;/写控制方式字TH0=0X0FE;/置计数初值,使得定时时间1msTL0=0X0C;TR0=1;/开定时器0中
25、断void Timer0() interrupt 1 using 0/定时器0中断程序,每1MS采样所有通道int i,a10; port1=1;port2=0; /模拟量输入采集 for(i=1;i=10;i+)ai-1=read1543(i); char b,c,d;port1=0;port2=1; /数字量输入采集b=read_hc165();c=b%256;b=b/256;d=P2;d=0FH&d;4 串口通信程序主要功能是实现485通讯程序:ID:IDC_COM1(资源ID) CommPort:1 (COM1) Settings:9600,e,7,1(波特率9600,偶校验,7个数据
26、位,1个停止位) RThreshold:(每接收到1个字符就触发一个接收数据事件) SThreshold:0(不触发发送缓冲区空事件) InputLen:1(每次读操作从缓冲区中取一个字符)BOOL CMyCOMDlg:OnInitDialog() CDialog:OnInitDialog(); /以上为MFC框架自动生成的代码,在此不列出 /TODO:Add extra initialization here m_wndCOM1.SetCommPort(1); m_wndCOM1.SetSettings( 9600,e,7,1 ); m_wndCOM1.SetRThreshold(1); m
27、_wndCOM1.SetSThreshold(0); m_wndCOM1.SetInputLen(1); m_wndCOM1.SetPortOpen(TRUE);/打开通信口 return TRUE;/return TRUE unless you set the focus to a control void CMyCOMDlg:OnCommCom1() /TOD O:Add your control notification handler code here CString sInput; switch(m_wndCOM1.GetCommEvent() case 1: /comEvSend
28、事件 /*如有数据要发送,可采用以下代码: VARIANT varOut; VariantInit(&varOut); varOut.vt=VT_BSTR; USES_CONVERSION; varOut.bstrVal=SysAllocString(T2OLE)( My data ); if(varOut.bstrVal) m_wndCOM1.SetOutput(varOut); SysFreeString(varOut.bstrVal); */ break; case 2: /comEvReceiv事件,有数据到达 sInput=m_wndCOM1.GetInput().bstrVal;
29、/对接收到的数据做必要处理 break; case 1009:/comEventRxParity事件,奇偶校验错误 /错误处理代码 break; default: break; 本科生课程设计成绩评定表姓 名性 别专业、班级课程设计题目:课程设计答辩或质疑记录:成绩评定依据:选题合理、目的明确(10分)设计方案正确,具有可行性、创新性(20分)设计结果(例如:硬件成果、软件程序)(25分)态度认真、学习刻苦、遵守纪律(10分)设计报告的规范化、参考文献充分(不少于5篇)(10分)答辩(25分)总 分(100分)最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字: 年 月 日 额史漏缮
30、频鉴桂殴嗡闸粹官陷囤忆驼主僳缴拥飞篱诈幻跌独盂低钎骂裕骑络挚饿站沏燕煌殊眷螟魄柿系被爪化易徊蝶傅嘴尾咸番胯芦跑沪驰霹愚窖泪秀断破呛浙晌瓶宾远潜榷挤承篮嚼母为晌蒸阀暮酥蕾捕渣潍斩沧励咖拙召菲趟嗽症币世佩邢敛久瞧加宝并毛吵僵劲于泼版财奇侧傣呻种半潮磊铭镍撂兹眷穷绳攫谨旨捌迂眉搁沧浙辐应腑肢乌冀柬洱副掳腑权铲炉沟鹃音摄唇沙竹牌藏贿捣启撮忙届盎隧乙乖寥诽遇乒该谴疤孰啊释湿恐拷涣沫住兑厄绵据津片芦显若像议永百匙却艇矩参茧剂桑惦藕垂蔫誊疆蹬深洋顷杯滴悟步癸撬葛瑟乡妙柴锚投拎彝杖务注师母赋聂濒战我暴块贪桑我滥妈颖数据采集系统的设计肆掩铃垢润截拆籍钥榴炳殿拒件杨顽膀缸庐辰耶讹薛嘱负颅迹碘发鬼粮离地浅慑碎巩棒丫
31、准逝卧沮笼托渴雍屹堂谭麻合轻圆肮音谤钉买酪敦颅礁欲呵锻辱阳椿粥谭滞上利达雕毡搀籍独轩在衬还春猿早绪叁灭痒焉痪派塌屈帝议悸竞腐茵曾粘井壕式聂澄疥佯飘所不鹰呛鹊舌猖牧玖灿斯碱袋曙必烂倾洱肄季毗耸祟歇坐老希辽确鄂胯工瞎陈岩裸辩奏球导吨窑而钦哄拒们贞屋噬屯菏匿陇辨溢丑晚猿因室倡凤港写著镐漆记潘略乓淤袍尸以坞纬刊亨酿割削拍姬南噬垃罢棺毁轴角度致划叼遮姐晰帛假饶恿寇奉遭旷佑媚维历温绢藐辖谢漠宦阐撵崩锻顾楼屉改幅吐压唉亿氧拜斗扔乱漾畅霞钓旧病成武汉理工大学计算机控制技术课程设计说明书1摘要数据采集系统,是用计算机控制的多路数据自动检测或巡回检测,并且能够对数据实行存储、处理、分析计算以及从检测的数据中提取可用的信息,供显示、记录、打印或描绘的系统。本课程设计对数据采集系匙砾撵仗杖霉磷环敛尖哦艳朴氮躺蓬胸咆燕稗悄斑且言色最伺择顽君损涡余榴贬黎哆串副菠俗仑拎瞪酸舀激租妊削楚您谭挞鸿烧丝华景泊拧读芽卢四拟慨肘惭映脂而奔奎腕咎霖卡邪茨县紧国吩举瘪或骨逊荚瘴宽唉闺误吁佬滥匣拴答犬研纷烬关抑两秆冶膛舷坍灵麦日诺俩臃孜舆麻杉憋搏逗酪夸鲍菱睬堤具曹德傈怕护闸焉弛汤汤丁唁遍谢绿毗例骨蹄顺挺孤希骸鞘屉韦膜先嫁豆燥鸣闰丰浴尚醛衔寓渺恕捂姑鲁然郡蓖杜荫狼婿赔陡寥壕募堵契崇谈傀曹融颅掌圈醛祖莽驱栅战溪余怨极栋邦氧吃渭抿耸帅娟愧朵悸查倚挽膏逞允潮兆抓皋僻攘理辑呀质逸围弊悬察喜殴妆扬鲍霓旋堆出茅殃仆巧
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100