ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:387.26KB ,
资源ID:10285280      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10285280.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(STC单片机实验报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

STC单片机实验报告.docx

1、STC单片机实验报告接口实验报告 题 目: 基于单片机的电压采集系统设计 院 (系): 电子工程与自动化学院 专 业: 仪器仪表工程 学生姓名: 王明飞 学 号: 指导老师: 李 智 职 称: 教 授 2011年 7月10日一 实验目的本实验的功能是利用单片机控制AD7862实现模拟的电压的采集,同时利用串口与PC机进行通信对数据进行处理并显示结果。通过应用Altium Designer 6软件掌握电路板的原理图绘制及PCB板的生成,通过Keil uVision2软件编写并调试单片机的下位机程序,利用Microsoft Visual C+ 6.0编写上位机界面以显示数据处理结果。二 电路的硬件

2、电路设计1、原理框图实验原理结构框图如图1。首先模拟电压信号经过AD7862进行模数转换,单片机按AD7862的时序读取转换结果,然后转换结果送入数据缓冲区通过串口线传送送到PC机,在PC机对接受到的数据进行处理,最终电压数值可以在上位机界面上显示。图1 系统设计原理结构框图2、AD7862简介 AD7862是AD公司推出的12位AD转换芯片,具有以下主要特点:a)4通道模拟输入,2路同时转换;b)4s转换时间,250ksps采样速率;C)选择模拟量输入范围:1OV(AD786210); d)高速12位并行总线输出;e)内部提供+2.5V参考电压或者由外部提供参考电压:f)单一电源+5V 图2

3、 AD7862的引脚图 图3 AD7862采样读取典型工作时序图3是其典型的转换时序图。AD7862通过多路选择控制信号A0可以对输入模拟通道进行选择。当A0=0时,AD7862将对A组两路信号VA1 、VA2同时进行模数转换;当A0=1时,对B组两路信号VB1、VB2同时转换。结合CS和RD信号,AD7862可以有不同的输入和读取模式。在C0NVST下降沿脉冲下,跟踪保持器同时保持两路输入信号,并且开始对2路信号同时进行模数转换,这时,BUSY脚电平抬高表示正在进行转换。在经历4s以后,转换完成,BUSY脚电平变低,数据存放在输出锁存器中。在CS信号选通条件下,向RD引脚提供连续脉冲,就可以

4、访问转换结果。根据信号A0是低或高电平,模数转换后,第一个读脉冲将读取转换结果VAl或VB1,第二个读操作将读取转换结果VA2或VB2 。数据结果将通过12位数据总线一次读出。AD7862可以使用内部或外部参考电压。在参考电压VREF端用0.1uf钽电容接至模拟信号地AGND端,AD7862内部将产生+2.5V的参考电压, 模拟量输入范围:1OV。3、INA129简介 1) INA129是TI公司推出的仪器放大器芯片,通过改变1端与8端之间的电阻值来改变放大器的增益,具有以下主要特点: a)低偏置电压 最大50V b)低温度漂移 c)低输入偏置电流 最大5nA d)高共模抵制 CMR 最小12

5、0dB e)输入保护至40Vf)宽电源电压范围 2.25 至 18V 2) 方框图如下 图4 INA129的结构框图4、电路硬件设计原理图根据实验要求设计了如下所示的电路原理图。单片机采用型号为STC89c52。选用STC系列单片机的好处是,该单片机可以利用STC-ISP V391这个软件通过串口直接向单片机下载程序,而不需要其他的外围电路,使用起来很方便。如图5 所示电路电源为系统中各芯片提供5v的电压。其中在电源和地之间并联了0.1F和10F两个电容,其作用是分别滤除电源的高频与低频杂波,以提供比较稳定的电压。如图6 所示为单片机的复位及晶振电路,复位方式采用上电复位方式,采用晶振频率大小

6、为11.0592MHz 。 图5 供电电路 图6 单片机复位及晶振电路如图7 所示为AD7862引脚连接电路。其中AD7862芯片的CONVST引脚与单片机P3.4脚相连,CS引脚与单片机P3.5脚相连,RD引脚与单片机P3.6引脚相连,BUSY引脚与单片机P3.7脚既外部中断INT0相连。 图7 AD7862引脚连接电路如图 8 所示为单片机各引脚连接电路。其中单片机P0.4P0.7与AD7862的D8D11相连,用于获取模拟信号转换结果的高四位;P2.0P2.7与AD7862的D0D7相连,用于获取模拟信号转换结果的低八位。 图8 单片机连接电路 图9 RS232串行接口电路在PC机和单片

7、机的串口通信电路中加入了电平转换电路MAX232芯片。这种芯片可以实现TTL电平和RS-232C电平之间的转换。采用MAX232接口的硬件接口电路如图9所示。RS-232逻辑电0电平规定为+5+15V之间,逻辑1电平为-5-15V之间,传输速率达到20Kb/s,最大传输距离为15m。三、 系统上位机软件设计 系统上位机设计采用软件为VC+,其设计操作界面如图10所示。 图10 基于单片机的电压采集系统上位机控制界面上位机功能介绍:(1) 通信端口设置。其中端口号下拉框可供选择有COM1、COM2、COM3、COM4等四个端口。打开串口与关闭串口按钮控件分别对应其功能。通信参数设置信息提示编辑框

8、用来显示当前的端口打开或关闭串口的状态,当前选择的端口号以及通信的参数设值。例如“当前通信端口设置为COM1 串口已打开 通信参数为19200,n,8,1”。(2) 数据的处理。对数据的处理,程序设计中是在接收到到100个数据的时候触发OnComm接收事件。因为AD采集的数据一个电压点为12位的,下位机向上位机传送数据的时候分为高四位和低八位,即接受到100个数据相当于采集到的50个电压点。对应的数据处理代码如下: Const int Num=50;double dataNum=0;int CONT=0;int ReceiveData100;int ResultData50; /数据的处理过程

9、 case 2: /comEvReceiv事件,有数据到达 VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata1500; /设置BYTE数组 An 8-bit integerthat is not signed. variant_inp=m_MSCOMM1.GetInput(); /读缓冲区 safearray_inp=variant_inp; /VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); /得到有效数据长度 fo

10、r(k=0;klen;k+) safearray_inp.GetElement(&k, rxdata + k);/转换为BYTE型数组 for(CONT=0;CONT4; ReceiveData2*CONT = rxdata2*CONT;/高四位 ReceiveData2*CONT+1 = rxdata2*CONT+1;/低8位 ResultDataCONT=ReceiveData2*CONT*256+ReceiveData2*CONT+1; if(ResultDataCONT 0x0800) ResultDataCONT = ResultDataCONT - 4096; dataCONT=

11、float(ResultDataCONT) * 20/4096;if(temp=1) dataCONT=dataCONT/20.036; result=dataCONT;/20是放大倍数 else if(temp=2) result=dataCONT; m_result=result; if(resultm_max1) m_max1=(float)result; else if(resultm_min1) m_min1=(float)result; m_pp=m_max1-m_min1; UpdateData(FALSE); UpdateData(FALSE); (3) 通道选择设置。图10所

12、示设置了“VA”,“VB”,2个通道选择按钮。当按下通道选择按钮时,上位机会发送一个已经定义的数据给下位机,当下位机接收到数据后会判断接收到的数据,并根据接收到的数据选择相应的AD转换通道进行数据转换并将数据传送给上位机。例如:当按下“VA”按钮时,上位机会发送数据0X01给下位机,下位机接收到数据后,判断为0X01将选择转换通道VA,并将VA通道转换后的数据传送给上位机进行数据处理,然后界面中图形和电压显示控件将显示VA通道的电压。其对应代码如下:void CMyDlg:OnVa() if(m_MSCOMM1.GetPortOpen() CString VA; VA=0x01; temp=1

13、; flag=1; UpdateData(FALSE);/把变量的值传递给控件。 m_MSCOMM1.SetOutput(COleVariant(VA); UpdateData(FALSE);采样频率的选择设定也是通过类似的方式实现的,例如:当选择5KHZ时,上位机会发送数据0X10给下位机。(4) 电压波形的显示。图10右上角部位为图形显示区域,显示电压的范围为+10V-10V。“开始显示”与“停止显示”两按钮用于控制波形的显示与停止。其中开始显示中参数设置为SetTimer(1,200,NULL);其中用于绘制波形的主要代码对应如下: CClientDC mydc(this);/利用DC绘

14、图 COLORREF color = mydc.GetBkColor(); CRect rect(200,20,760,320);/矩形 CBrush bkBrush(RGB(150,150,150);/灰色画刷 mydc.SetBkColor(color);/背景色 mydc.FillRect(rect,&bkBrush);/显示填充区域的矩形 mydc.SelectObject(&bkBrush); int nwidth=rect.Width();/The width of CRect.560 int nheigh=rect.Height(); /300 CPen pen1(PS_DASH

15、,1,RGB(0,0,255);/蓝色画笔 CPoint aPointNum; for(int i=0;iNum;i+) aPointi.x=(i)*nwidth*flag1)/Num+200;/flag1变快、变慢 aPointi.y=(nheigh/2)-(nheigh*flag/2)*(datai)/10+20+sy+xy;/flag幅度大小 mydc.Polyline(aPoint,Num);/利用折线近似曲线 (5) 频率的计算。主要思想是:先设一阀值(本例采用0.001V)将正弦波变化为方波,在检测上升沿的个数,当个数大于2个时,计算间隔的点数后换算成频率。主要代码如下:for(C

16、ONT=0;CONT 0.001) data1CONT=255; else data1CONT=0; UINT counter = 0 ; /上升沿的个数 UINT data2150 = 0; /上升沿位置 float pp=0; for(CONT=0;CONTNum;CONT+) UINT temp0=data1CONT; UINT temp1=data1CONT+1; if(temp0=0&temp1=255) data2counter=CONT; counter+; pp=(float)(data2counter-1-data20)/(counter-1); m_ff=(float)(1

17、0000/(pp*fsele);/fsels是以0.1ms为基准的倍数,pp是0-50的一个数,计算公式1(点)/0.1ms=pp/x;解得x后倒数就是频率 四、 系统下位机软件设计 下位机的程序流程图如下: 图11 下位机程序流程图下位机程序主要实现代码如下:#define N 100sbit busy=P32;/低电平表示读完,高电平硬件至高,初始应软件至低sbit cs=P36; /选择位sbit rd=P37;/低电平 开始读sbit a0=P03;/AB选择位 就是a0sbit ct=P34;/启动转换位int dataw=0;uchar datalN;uchar i_receive

18、=0x02;uchar datag4,datad8;void init_serialcom( void ) SCON = 0x50 ; /UART为模式1,8位数据,允许接收 TMOD |= 0x22 ; /定时器1/0为模式2,8位自动重装 PCON |= 0x80 ; /SMOD=1; TH1 = 0xFD ; /Baud:19200 fosc=11.0592MHz IE |= 0x92 ; /Enable Serial Interrupt TR1 = 1 ; / timer 1 run /向串口发送一个字符(十六进制)函数 不是ASCII码void send_uart( unsigned

19、 char ch) SBUF=ch; while (TI=0); TI= 0 ; /串口接收中断函数 void serial () interrupt 4 using 3 if (RI) RI = 0 ; i_receive=SBUF; /AD7862初始化void ad7862_init(void) ct=1; /关闭转换 a0=1; /选择VA1通道 cs=1; /关闭单片机 rd=1; /读关闭 void ad() interrupt 1 m=m+1;/*/void main(void) int i=0,k=0; init_serialcom(); /初始化串口 ad7862_init(

20、); cs=0;while(1) /小量程0-0.5V ,VA通道if(i_receive=0x01) a0=0;/满量程0-10V,VB通道else if(i_receive=0x02) a0=1; /*5KHZ,最小100HZ波,0.2ms,方式2*/else if(i_receive=0x10)/ TH0=0X47; TL0=0X47; for(k=0;k4; while(m=0); TR0=0; for(i=0;iN;i+) send_uart(datali);.五、 实验结果与误差分析1)实验结果 如图11 采集信号幅度大小为2V,频率为2.6KHz的正弦波,AD7862输入通道为V

21、B。 图12 采集电压2.6KHz的正弦波 如图13 采集信号幅度大小为2V,频率为10Hz的正弦波,AD7862输入通道为VB。 图13 采集电压10Hz的正弦波 如图14 采集信号幅度大小为0.2v,频率为2.6KHz的正弦波,AD7862输入通道为VA。 图14 采集电压800Hz的正弦波如图15 采集信号幅度大小为0.2v,频率为10Hz的正弦波,AD7862输入通道为VA。 图15 采集电压10Hz的正弦波2)误差分析1、幅度误差:为了将时间连续、幅值连续的模拟量转化为时间离散、幅值离散的数字信号,A/D转换一般要经过采样保持、量化和编码三个过程。将采样电路每次取得的模拟信号转换为数

22、字信号需要一定的时间,为了给量化和编码过程提供一个稳定值,每次取得的模拟信号必须经过保持电路保持一段时间。在量化过程中,由于采样电压不一定被量化单位整除,所以量化前后不可避免的出现误差,称为量化误差。量化误差属于原理误差,是不可避免的。A/D转换器的位数越多,量化误差越小,分辨率也越高。对于AD7862来说,输出位数为12位,输入信号范围为-10V到+10V,则AD7862能区分的输入信号的最小电压为:20V/4096=4.883mV。所以其最大转换误差为2.4415mV,因此实验中得到的测量绝对误差应低于这个值。测小电压时,转换误差可通过INA128放大后,再除以放大倍数(20)来变小,此时

23、理论上最大转换误差0.122mV。然而在实验过程中,检测到的误差要高于这个值,产生误差的主要因素: 电源 直流5V电压的纹波比较大,幅值很不稳定。在电路板的电源接口部分应加上滤波电容,以减少电源波动对电路的影响。 2、频率误差: 在计算频率的算法中,因为CONT是整数,所以变量pp必是1-50中间的一个整数,但实际的波形过Y轴零点时,不一定在1-50的整数刻度上,所以可能的最大相对误差为4%。六、实验总结及体会做接口实验就是一个学习提高自己知识应用的过程,下面是我在本次实验过程中遇到的一些问题以及自己的一些总结体会。(1) Altium Designer 6是电路设计应用软件,用于生成PCB板

24、。首先接口实验能否按要求完成相应的功能,电路原理图的设计正确与否是其前提。电路元器件库里面,并没有所需要的元件,这就需要自己来画该元器件的原理图以及其封装。画元器件原理图和封装可以根据所给的元器件资料来完成,其相应的管脚定义应该正确。原理图的封装必须与封装库内对应的封装器件相对应,否则就会出错,无法生成PCB。在PCB图中,一个很重要的参数设置是焊盘的大小,如果设置太小在打孔焊接的过程中将有可能使焊盘上的铜层弄掉,是焊接困难。在本实验设计中焊盘大小内径设置为0.85mm,外径除特殊的焊盘一般设置为2.37mm。由于原来没有用过串口,所以开始的时候串口没有分清公口与母口,封装与购买的器件没有对应

25、起来造成了错误。焊接元器件完成后,首先测试串口是否正常工作。如果没有正常工作的话,查找电路的错误,我是按从串口再到单片机的这一顺序查找的。发现单片机的一引脚连接错误,导致串口无法正常工作,经过修改串口可以正常工作了。(2) Keil uVision2是下位机的设计软件。在检查电路板没有错误,正常工作后,接下来我进行的是下位机的设计。这时候因为没有做上位机,我是利用串口调试助手V2.2这一个软件来观察从下位机所发送到的数据。下位机在设计中首先进行的是串口初始化,其步骤是首先确定串口工作模式,然后确定定时器初值,再启动定时器。然后根据AD7862的工作时序编写相应的程序。利用STC-ISP V39

26、1下载软件可以将编译生成的HEX文件通过串口烧录到单片机内,然后观察串口调试助手接收到的数据是否正确。(3) Microsoft Visual C+ 6.0是上位机的设计软件。上位机是负责与下位机进行通信,并显示实验数据结果的。首先规划好整体的功能,以及所需要的控件,然后按循序渐进的方法进行设计。首先,设计通信端口的设置,在一部分调试通过后。然后加一个数据显示的编辑框进行数据的处理部分的编写。数据显示完成后进行的是波形显示部分以及相关的控件的编写。(4) 在上位机与下位机编写完成后,接下来进行的是联合调试,以观察具体的实验结果。调试过程中,由于上位机设计有很多不足,所以当下位机发送数据很快的时

27、候,上位机就会出现错误,造成死机现象,而且上位机显示波形频率比较低,较高频率时就会失真。主要的瓶颈在与通信的波特率。通过对下位机程序的不断改进,调试,最终实现频率为最大可达1K的实验结果。在完成这次课程设计及论文的过程中,通过绘制电路原理图及PCB的制作,学习了Altium Designer 6的相关知识和应用,提高了对Altium Designer 6 电路板设计软件的熟练。制作电路板的整个设计过程,提高了理论水平和实际的动手能力;在调试过程中,通过对相关软件的应用提高了分析问题和解决问题的能力。七、谢辞在设计电路、编写程序以及制作调试电路板的过程中,都遇到了很多困难和问题,同学的耐心讲解,给了我很大的帮助。所以此次能顺利完成这次的课程设计,要感谢所有帮助过我的同学和老师。八、 参考文献1 何立民.单片机应用系统设计.北京:北京航空航天大学出版社,2004.2 张洪润等.单片机应用设计200例.北京:北京航空航天大学出版社,2006.3 谭思良等.Visual C串口通信工程开发实例导航M.北京.人民邮电出版社.20034 李现勇.Visual C+ Visual Basic串并口开发技术工程应用实例导航. 北京:人民邮电出版社,20065 雷晓平等.单片计算机及其应用.成都:电子科技大学出版社,2005.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1