51单片机接口实验报告(桂电).doc
《51单片机接口实验报告(桂电).doc》由会员分享,可在线阅读,更多相关《51单片机接口实验报告(桂电).doc(13页珍藏版)》请在沃文网上搜索。
1、基于VC与单片机数据采集系统设计 接口实验报告一、实验目的及意义(1) 用微控制器实现对温度数据的采集;(2) 对采集数据进行控制与显示;(3) 将采集数据发送给PC机,学会用VC编写相应界面进行数据处理和显示;二、试验内容及方案论证在实际应用中,经常会遇到一些突发信号,需要对其进行高速采集,这种情况下采用高速的A/D自然成为首选。AD7862是AD公司推出的一个高速,低功耗,双12位的A/D转换,单+5V供电,功率为60mW。它包含两个4us的延时的ADC,两个锁存器,一个内部的+2.5V参考电压和一个高速并行输出端口。有四个模拟输入通道,分为两组,由A0选择。每一组通道有两个输入(VA1
2、& VA2 or VB1 & VB2),它们能同时的被采样和转化,保存相对的信号信息。它可以接受+10v的输入电压范围(AD7862-10),+2.5(AD7862-3)和0-2.5v(AD7862-2)。对模拟电压输入,具有过电保护功能,相对地,允许输入电压到达+17v,+7v,+7v,而不会造成损害,本实验选用AD7862-10。其具有以下主要特点:1、4通道模拟输入,2路同时转换(内置2个可同时工作的12位集成AD转换器);2、4us转换时间,250ksps采样速率;3、可选模拟量输入10V(AD7862-10);4、高速12位并行总线输出;5、内部提供+2.5V参考电压或者由外部提供参
3、考电压;;6、单一电源工作。本实验采用的微处理器是STC89C52RC单片机。STC89C52RC单片机使用方便,它与AT89S52单片机具有相同的内核,内部有256 Bytes片内RAM、8K Flash ROM,支持串口下载,易于在线编程调试,故采用这种单片机来做处理器。由于A/D的输出位数是12位,单片机的寄存器是8位的,所以要分成两次才能读得A/D转换的结果。本设计中,只需将单片机的两个IO口(P2、P0)分别与AD7862的DB0-DB11相连,即可完成数据采集基本硬件设计。本实验采用串口(RS232)将数据发送给PC机,波特率为9600、无校验;用VC 6.0编写相应的界面进行控制
4、与显示。实验电路的结构框图设计如下:微处理器STC89C52RCAD7862数据采集串口RS232PC机显示界面模拟信号输入( DC|AC )图1 数据采集系统结构框图如图,单片机控制AD进行数据采集,将采到的其中一路数据(共8字节)存入事先定义的数据缓冲区(共占8个字节),然后通过RS232串口发送到上位机,由PC进行相关数据处理,最后在界面上显示采集结果。本设计可以同时采集4路数据(AC|DC),并可以显示电压幅值与相关应波形。三、硬件设计单片机与PC机通过串口进行通信,软件程序的设计和硬件电路的连接都很简单。对于硬件来说,只需要把单片机的串口发送管脚TXD和接收管脚RXD经过232芯片的
5、电平转换通过DB9与PC机的I/O口直接相连就可以了。单片机串口为TTL电平,PC机串口为232电平,故需要电平转换电路。实验采用MAX232进行电平转换,转换的电路如图2所示:图2:RS232电平与TTL电平转换电路AD7862硬件设计如下。其中R5为0欧姆电阻0欧电阻相当于很窄的电流通路,能够有效地限制环路电流,使噪声得到抑制。电阻在所有频带上都有衰减作用(0欧电阻也有阻抗),这点比磁珠强。图3:AD7862硬件设计电路图四软件设计(1)上位机设计下位机的工作有两个方面,一个是控制AD7862采集VB1模拟通道,得到8字节数据(一个通道占2个字节),并保存到内部RAM单元;另一方面负责与上
6、位机(PC)通信,将保存的数据发送到PC,让上位机做处理。下面是上位机处理数据的核心算法部分代码:void CMSCommTestDlg:OnComm() / TODO: Add your control notification handler code here VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; int DataConut=0; BYTE rxdata2; /设置BYTE数组 用于接受数据 CString strtemp; if(ctrlComm.GetCommEvent()=2) /事件值为2表示接
7、受缓冲区内有字符 variant_inp=ctrlComm.GetInput(); /读缓冲区safearray_inp=variant_inp; /VARIANT型变量转换为COleSafeArray型len=safearray_inp.GetOneDimSize();/得到有效数据长度for(k=0;k=128) rxdata0=rxdata0-128;num =(float)(rxdata0*64+rxdata1); else rxdata1=rxdata1-128; num=(float)(rxdata1*64+rxdata0); /*/if(num2048)num=num*10/20
8、48; /AfxMessageBox(已得到正数!); else num=(num-4096)*10/2048; /AfxMessageBox(已得到负数!);value=num;savea=num; /保存数据到数组对后来以便求平均值和有效值/*绘制曲线*/CClientDC dc(this); CPen Line_pen(PS_SOLID,2,RGB(20,200,200);CPen *Old_pen;Old_pen=dc.SelectObject(&Line_pen); /将画笔选进设备描述表dc.MoveTo(b,int(-numb*10+141);/113dc.LineTo(b+8,
9、int(-num*10+141);dc.SelectObject(Old_pen);/*/if(a=49)for(count=0;count50;count+) /计算平均值并送上位机显示ave_val+=savecount;ave_val=ave_val/50; char cc10; /定义存储单元 _gcvt(ave_val,10,cc); /把浮点数转换成字符串m_avg=(LPCTSTR)cc; /CString 和 LPCTSTR 可以说通用for(count=0;count50;count+) /计算有效值并送上位机显示 /方均根/ene_val+=savecount*saveco
10、unt; ene_val=ene_val/50;ene_val=sqrt(ene_val); char dd10; _gcvt(ene_val,10,dd); /把浮点数转换成字符串 m_ene=(LPCTSTR)dd;UpdateData(FALSE); char ee10; _gcvt(value,10,ee); m_strEditRXData=(LPCTSTR)ee; UpdateData(FALSE);a+; b=b+8;if(a=50)a=0;b=50;CMSCommTestDlg:OnPaint(); PC读回的数据是十六进制数,要经过一系列的处理,才能得到最终的结果显示在界面上。
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 接口 实验 报告
