单片机接口实验报告 桂电

上传人:aa****6 文档编号:38741245 上传时间:2018-05-07 格式:DOC 页数:14 大小:328.50KB
返回 下载 相关 举报
单片机接口实验报告 桂电_第1页
第1页 / 共14页
单片机接口实验报告 桂电_第2页
第2页 / 共14页
单片机接口实验报告 桂电_第3页
第3页 / 共14页
单片机接口实验报告 桂电_第4页
第4页 / 共14页
单片机接口实验报告 桂电_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《单片机接口实验报告 桂电》由会员分享,可在线阅读,更多相关《单片机接口实验报告 桂电(14页珍藏版)》请在金锄头文库上搜索。

1、 接口实验报告接口实验报告题题 目目:基于 VC 与单片机数据采集系统设计 院院 (系)(系): 电子工程学院 专专 业业: 测试计量技术及仪器 学生姓名学生姓名: 陈 剑 学学 号号: 指导老师指导老师: 李 智 职职 称称: 教 授 2009 年 6 月 30 日基于 VC 与单片机数据采集系统设计1接口实验报告接口实验报告一、实验目的及意义一、实验目的及意义(1) 用微控制器实现对温度数据的采集;(2) 对采集数据进行控制与显示;(3) 将采集数据发送给 PC 机,学会用 VC 编写相应界面进行数据处理和显示;二、试验内容及方案论证二、试验内容及方案论证在实际应用中,经常会遇到一些突发信

2、号,需要对其进行高速采集,这种情况下采用高速的A/D自然成为首选。AD7862是AD公司推出的一个高速,低功耗,双12位的A/D转换,单+5V供电,功率为60mW。它包含两个4us的延时的ADC,两个锁存器,一个内部的+2.5V参考电压和一个高速并行输出端口。有四个模拟输入通道,分为两组,由A0选择。每一组通道有两个输入(VA1 ;6 6、单一电源工作。本实验采用的微处理器是STC89C52RC单片机。STC89C52RC单片机使用方便,它与AT89S52单片机具有相同的内核,内部有256 Bytes片内RAM、8K Flash ROM,支持串口下载,易于在线编程调试,故采用这种单片机来做处理

3、器。由于A/D的输出位数是12位,单片机的寄存器是8位的,所以要分成两次才能读得A/D转换的结果。本设计中,只需将单片机的两个IO口(P2、P0)分别与AD7862的DB0-DB11相连,即可完成数据采集基本硬件设计。本实验采用串口(RS232)将数据发送给 PC 机,波特率为 9600、无校验;用VC 6.0 编写相应的界面进行控制与显示。实验电路的结构框图设计如下:实验电路的结构框图设计如下:基于 VC 与单片机数据采集系统设计2微处理器 STC89C52 RCAD7862 数据采 集串口 RS232PC 机 显示界 面模拟信 号输入 ( DC|AC )图 1 数据采集系统结构框图 如图,

4、单片机控制 AD 进行数据采集,将采到的其中一路数据(共 8 字节) 存入事先定义的数据缓冲区(共占 8 个字节) ,然后通过 RS232 串口发送到上 位机,由 PC 进行相关数据处理,最后在界面上显示采集结果。本设计可以同 时采集 4 路数据(AC|DC) ,并可以显示电压幅值与相关应波形。三、硬件设计三、硬件设计单片机与 PC 机通过串口进行通信,软件程序的设计和硬件电路的连接都很 简单。对于硬件来说,只需要把单片机的串口发送管脚 TXD 和接收管脚 RXD 经过 232 芯片的电平转换通过 DB9 与 PC 机的 I/O 口直接相连就可以了。单片 机串口为 TTL 电平,PC 机串口为

5、 232 电平,故需要电平转换电路。实验采用 MAX232 进行电平转换,转换的电路如图 2 所示:图 2:RS232 电平与 TTL 电平转换电路AD7862 硬件设计如下。其中 R5 为 0 欧姆电阻 0 欧电阻相当于很窄的电流通路,能够有效地限制环路电流,使噪声得到抑制。电阻在所有频带上都有衰减作用(0 欧电阻也有阻抗),这点比磁珠强。基于 VC 与单片机数据采集系统设计3图 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) /事件值为

7、2表示接受缓冲区内有字符variant_inp=ctrlComm.GetInput(); /读缓冲区safearray_inp=variant_inp; /VARIANT型变量转换为COleSafeArray型基于 VC 与单片机数据采集系统设计4len=safearray_inp.GetOneDimSize();/得到有效数据长度for(k=0;k=128)rxdata0=rxdata0-128;num =(float)(rxdata0*64+rxdata1); elserxdata1=rxdata1-128;num=(float)(rxdata1*64+rxdata0);/*/if(num

8、2048)num=num*10/2048; /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( /将画笔选进设备描述表dc.MoveTo(b,int(-numb*10+141);/113dc.

9、LineTo(b+8,int(-num*10+141);dc.SelectObject(Old_pen);基于 VC 与单片机数据采集系统设计5/*/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+) /计算有效值并送上位机显示 /方

10、均根/ene_val+=savecount*savecount; 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();基于 VC 与单片机数据采集系统设计6P

11、C读回的数据是十六进制数,要经过一系列的处理,才能得到最终的结果显示在界面上。数据的处理过程比较繁琐,现只作一些简要的叙述。设计中,对AD7862D的VB1通道的采回的值进行处理,在下位机中设置一个数组将采集到的50次数据保存起来 然后将这些数据以每次两个字节的数据发送给上位机,在上位机中进一步要判断得到的转换数据对应的电压是正的或负的。若电压是正的,也就是说得到的数据小于2048,则处理公式如下:outa*LSB这里 a 为得到的数字量,out 为显示的电压,LSB 为 AD 最小分辨电压 LSB=20/。若电压为负的,也就是说得到的数据大于等于 2048,则处理公式如下:122out(a-

12、4096)*LSBAD7862的转换结果输出码是以二进制的补码表示的,当其输入电压为负时,数据处理的方法可以采样上面的方法,而不必还原成原码。这种方法大大的简化了程序的编写工作,处理得到的结果和将其直接还原成原码的算法得到的结果完全是一样的。下图就是用下图就是用 VC 制作的数据采集控制与显示界面:制作的数据采集控制与显示界面:图 4:数据采集上位机界面(2)下位机设计下位机软件设计的核心部分包括两个方面,即控制数据采集与 RS232 通信。控制数据采集主要依据 AD7862 工作时序来完成。下图就是 AD7862 的工作时序图。基于 VC 与单片机数据采集系统设计7图 5:数据采集工作时序图

13、如图所示,CONVST、CS、RD、A0 由单片机来控制,让 AD 采哪个通道、何时采集等;BUSY 接入单片机的外部中引脚(以便能快速的接受数据) ,以确定 AD 转换是否完成。当 CONVST 下降沿一来,AD 转换开始,这时两个锁存器同时锁存两个通道的模拟量,在 3.6us 之后,转换完成(单片机的中断检测到 BUSY 由高为低,进入中断) ,AD7862 的输出寄存器的数据是有效的,可以读取数据了。A0 为 0 可以读 A 通道,为 1 可以读 B 通道。当/CS 和/RD 有效时,数据可从 12 位的并行数据总线上读出。读操作由一个/CS 负脉冲和两个/RD 负脉冲组成(当/CS 有

14、效时) ,获得两个 12 位的数据。RS232 通信分为发送和接收两个功能,其中发送流程如下图:基于 VC 与单片机数据采集系统设计8设置串口通信波特 率为 9600b/s串口初始化将一字节数据写入 SUBF等待 TI 为 1将 TI 清 0返回100 个字节传送 完毕?NY图 6:RS232 通信发送功能流程图五、系统调试与误差分析五、系统调试与误差分析为将时间连续、幅值也连续的模拟量转换为时间离散、幅值也离散的数字信号,A/D转换一般要经过取样、保持、量化及编码4个过程。在实际电路中,这些过程有的是合并进行的,例如,取样和保持,量化和编码往往都是在转换过程中同时实现的。取样是将随时间连续变化的模拟量转换为时间离散的模拟量。通过分析可以看出,取样信号的频率愈高,所取得信号经低通滤波器后愈能真实地复现输入信号。合理的取样频率由取样定理确定。取样定理:设取样信号的频率为fs,输入模拟信号的最高频率分量的频率为fimax,则fs与fimax必须满足fs大于等于2fimax的关系。一般取fs大于2fimax。将取样电路每次取得的模拟信号转换为数字信号都需要一定的时间,为了给后续的量化编码过程提供一个稳定值,每次取得的模拟信号必须通过保持电路保持一段时间。在量化过程中,由于取样电压不一定能被量化单位整除,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号