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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验报告1.docx

1、实验报告1重庆邮电大学综合实验报告工程实训 实验姓 名: 学 号: 班 级: 学 院: 专 业: 指导老师: 自动化学院检测与控制实验中心2014实验一、数据采集_A/D转换一、实验目的掌握A/D转换与单片机接口的方法;了解A/D芯片0809转换性能及编程方法;通过实验了解单片机如何进行数据采集。 二、实验原理A/D转换器大致分有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D转换器,精度、速度、价格适中;三是并联比较型A/D转换器,速度快,价格也昂贵。实验用ADC0809属第二类,是8位A/D转换器。每采集一次一般需100s。由于ADC0809

2、 A/D转换器转换结束后会自动产生EOC信号(高电平有效),取反后将其与8031的INT0相连,可以用中断方式读取A/D转换结果。ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。(1) ADC0809的内部逻辑结构由图1.1可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据

3、。图1.1 ADC0809 内部结构框图(2) ADC0809引脚结构ADC0809各脚功能如下: D7 D0:8位数字量输出引脚。IN0 IN7:8位模拟量输入引脚。VCC:+5V工作电压。GND:地。REF(+):参考电压正端。REF(-):参考电压负端。START:A/D转换启动信号输入端。ALE:地址锁存允许信号输入端。(以上两种信号用于启动A/D转换). EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。OE:输出允许控制端,用以打开三态数据输出锁存器。CLK:时钟信号输入端(一般为500KHz)。A、B、C:地址输入线。(3) ADC0809对输入模拟量要求:

4、信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。地址输入和控制线:4条ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。通道选择表如下表所示。CBA选择模拟通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7数字量输出及控制线:11条ST为转换启动信号。当ST上跳沿时,所有内

5、部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0为数字量输出线。CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(),VREF()为参考电压输入。(4) ADC0809应用说明(1) ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。(2) 初始化时,使S

6、T和OE信号全为低电平。(3) 送要转换的哪一通道的地址到A,B,C端口上。(4) 在ST端给出一个至少有100ns宽的正脉冲信号。(5) 是否转换完毕,我们根据EOC信号来判断。(6) 当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了三、实验内容1.硬件电路设计: 设计基于单片机控制的AD转换应用电路。AD转换芯片采用ADC0809。ADC0809的通道IN3输入05V之间的模拟量,通过ADC0809转换成数字量在数码管上以十进制形成显示出来。ADC0809的VREF接5V电压。2. 软件设计: 程序设计内容(1) 进行A/D转换时,采用查询EOC的标志信号来检测A/D转

7、换是否完毕,经过数据处理之后在数码管上显示。(2) 进行A/D转换之前,要启动转换的方法:ABC110选择第三通道。ST0,ST1,ST0产生启动转换的正脉冲信号图1.2 ADC0809时序图四、实验步骤及结果用keil软件编写相应的程序,并把程序导入到仿真电路图中,结果如下图所示 最大:中间的任意数:五、实验总结 本次实验课了解了模拟量转换为数字量的原理,也了解了ADC0809芯片的内部结构、工作原理、以及其使用方法。用protus画出了仿真电路原理图,通过仿真可以发现代码的逻辑性错误,也加强了对软件运用程度。但是在做实验的时候也遇到了一些问题,由于第一次接触单片机实验,刚开始有点不熟悉单片

8、机,学着有点吃力,尤其在编写程序的时候,查阅相关资料最终解决了问题。所以,我对AD转换也理解的更加深刻了。六、源程序#include#define uint unsigned int#define uchar unsigned charuchar code duan10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; uchar num;uint getdata;uchar qian,bai,shi,ge;sbit OE=P10; sbit EOC=P11; sbit ST=P12; sbit CLK=P13;sbit a=P14;sbit

9、 b=P15;sbit c=P16;void init() TMOD=0X01; TH0=(65535-5)/256; TL0=(65535-5)%256; EA=1; ET0=1; TR0=1;void delayms(uint m) uint i,j; for(i=m;i0;i-) for(j=110;j0;j-); void display() P0=duanqian; P2=0xfe; delayms(3); P0=0x00; P0=duanbai; P2=0xfd; delayms(3); P0=0x00; P0=duanshi; P2=0xfb; delayms(3); P0=0x

10、00; P0=duange; P2=0xf7; delayms(3); P0=0x00;void main() init(); while(1) ST=0; ST=1; ST=0; OE=0; a=1; b=1; c=0; while(EOC=0); OE=1; num=P3; OE=0; getdata=num; qian=getdata/1000; bai=getdata/100%10; shi=getdata/10%10; ge=getdata%10; display(); void time0() interrupt 1 TH0=(65535-5)/256; TL0=(65535-5)

11、%256; CLK=CLK; 实验二、D/A转换及数字式波形发生器一、实验目的1、熟悉DAC0832 内部结构及引脚。2、掌握D/A转换与接口电路的方法。3、通过实验了解单片机如何进行波形输出。二、实验原理1. 引脚和逻辑结构20个引脚、双列直插式V cc 芯片电源电压, +5V+15VVREF 参考电压, -10V+10V RFB 反馈电阻引出端, 此端可接运算放大器输出端AGND 模拟信号地DGND 数字信号地DI7 DI0数字量输入信号。其中: DI0为最低位,DI7为最高位ILE 输入锁存允许信号, 高电平有效CS 片选信号, 低电平有效WR1 写信号1,低电平有效当 ILE、CS、W

12、R1同时有效时, LE=1,输入寄存器的输出随输入而变化WR1, LE=0,将输入数据锁存到输入寄存器XFER 转移控制信号,低电平有效WR2 写信号2,低电平有效当XFER、WR2同时有效时, LE2=1,DAC寄存器输出随输入而变化;WR1, LE=0,将输入数据锁存到DAC寄存器,数据进入D/A转换器,开始D/A转换IOUT1 模拟电流输出端1当输入数字为全”1”时, 输出电流最大,约为:。全”0”时, 输出电流为0IOUT2 模拟电流输出端2 ,IOUT1 + I OUT2 = 常数2. DAC0832与单片机系统的连接1) 直通方式:两个寄存器的工作于直通状态,不受控制器的控制。2)

13、 单缓冲工作方式:一个寄存器工作于直通状态,另一个工作于受控锁存器状态在不要求多相D/A同时输出时,可以采用单缓冲方式,此时只需一次写操作,就开始转换,可以提高D/A的数据吞吐量。3) 双缓冲工作方式:两个寄存器均工作于受控锁存器状态,三、实验内容1. AT89C51控制DAC0832实现数/模转换(D/A)转换。从单片机输出数据到DAC0832,经其转换成模拟量输出。2. 设计一个由单片机控制的信号发生器。运用单片机系统控制产生多种波形,这些波形包括方波、三角波、锯齿波、正弦波等。信号发生器所产生的波形的频率、幅度均可调节。并可通过软件任意改变信号的波形。基本要求:产生三种以上波形。如正弦波

14、、三角波、矩形波等。最大频率不低于500Hz。并且频率可按一定规律调节。幅度可调,峰峰值在0 5V之间变化。扩展要求:产生更多的频率和波形。四、实验步骤及结果(1)在proteus ISIS界面D/A转换电路原理图,把该电路保存。(2)在keil中建立c程序文件并生成hex文件。(3)添加仿真文件。双击单片机AT89C51,打开其属性编辑框,在“program file”栏中,单击打开按钮,选取后缀名为*.HEX的目标代码文件。在“clock frequency”栏中设置时钟频率为11.0592MHZ。(4)在proteus仿真界面中单击运行按钮,全速启动仿真。正弦波三角波锯齿波方波五、实验总

15、结此次实验,主要熟悉了基本的编程过程,了解了对单片机端口的控制。用protus画出了DA转换的电路仿真图,在整个过程中也碰见了一些小障碍,通过看书、网上查阅、请教同学,最终还是完成了,其间也学到了很多知识和思考问题的方法,最终对DA转换的原理也理解的更加深刻。六、源程序#include #include #define uint unsigned int#define uchar unsigned charfloat Pi=3.1415926;void delay(uint ms) /延时100us; uint i,j; for(i=ms;i0;i-) for(j=11;j0;j-);void

16、 fb(uint f1) /方波P2=0xff;delay(5000/f1);P2=0x00;delay(5000/f1);void sjb(uint f2) /三角波 uint i; for(i=0;i10000/f2;i+) P2=256*i/(10000/f2); delay(1); void zxb(uint f3)/正弦波uint i;for(i=0;i10000/f3;i+)P2=128+127*(sin(2*Pi*i*f3/10000);delay(1); void main() while(1)if(P1!=0xff) delay(100); if(P1!=0xff) whil

17、e(P1!=0xff) switch(P1) case 0xfd:fb(25) ;break; case 0xf7:sjb(50);break; case 0xbf:zxb(200); 实验三、基于旋转编码器的转速测量一、实验目的1. 了解编码器工作原理2. 掌握编码器速度检测的方法;二、实验内容1. 根据旋转编码器的工作原理,设计基于旋转编码器的速度检测原理图;2. 利于实验室提供的单片机最小系统,设计位置检测、速度检测系统的应用电路;画出系统框图;3. 编写相关程序, 实现对位置及转速的测量,并显示;三、实验原理1. 编码器编码式数字传感器是测量转轴角位移的最常用的检测元件,它具有很高的分

18、辨率、测量精度和可靠性。在一个圆形玻璃盘的边缘开有相等角距的缝隙,成为透明和不透明的码盘,在此码盘开缝的两边,分别安装光源及光电元件。当码盘随被测物体的工作轴转动时,每转过一个缝隙,光电元件所获得的光强就发生一次明暗的转换,光电转换电路就产生一定幅值和功率的电脉冲输出信号。将这一脉冲信号送加法计数器进行记数,则所计数码就等于码盘转过的缝隙数目,在缝隙之间的角度已知时,码盘(被测物体)所转过的角度也就确定了。旋转编码器E6C2-CWZ6C参数表编码器参数电源电压DC5V24V消耗电流70mA以下分辨率(脉冲/旋转)100、200、300、360、400、500、600、720、800、1000、

19、1024、1200、1500、1800、2000输出相A 、B、Z相输出方式NPN集电极开路输出输出容量外加电压:DC30V以下;同步电流35mA以下;残留电压:0.4V以下(同步电流35mA)最高响应频率100kHz2.测量方法:2.1编码器鉴相电路设计:2.3测量原理:检测光电式旋转编码器与转速成正比的脉冲,然后计算转速,有三种数字测速方法:即M法、T法和M/T法。光电式旋转编码器是转速或转角的检测元件,旋转编码器与电机相连,当电机转动时,带动码盘旋转,便发出转速或转角信号。如图所示。M法测速测取 Tc时间内旋转编码器输出的脉冲个数 ,用以计算这段时间内的平均转速,称作法测速,如图所示。M

20、法测速的分辨率: 电机的转速为 : M法测速的分辨率:M法测速误差率:M法测速适用于高速段T法测速记录编码器两个相邻输出脉冲的间的高频脉冲个数M2,f0为高频脉冲频率,如图所示。电机转速T法测速的分辨率:法测速误差率:T法测速适用于低速段。M/T法测速把M法和T法结合起来,既检测TC时间内旋转编码器输出的脉冲个数M1,又检测同一时间间隔的高频时钟脉冲个数M2,用来计算转速,称作M/T法测速。采用M/T法测速时,应保证高频时钟脉冲计数器与旋转编码器输出脉冲计数器同时开启与关闭以减小误差。电机转速四、实验步骤及结果(1)在proteus ISIS界面绘制并保存电路原理图。 (2)在keil中编写程

21、序文件并生成hex文件。 (3)添加仿真文件并仿真。五、实验总结本次实验同时用到了外部中断和定时器中断,总体来说有一点难度,过程中也遇到了好几次错误,比如开始就无法正常显示,中断程序无法运行等情况,通过单独对显示程序,中断程序的调试,最终终于解决了问题。六、源程序# #include#define uchar unsigned charsbit led=P10;char num;char n;char xx,ss;sbit dula=P26;sbit xxx=P34;sbit wela=P27;long miao,miao1;char qian,bai,shii,ge;uchar code t

22、able=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code table_point= 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef ;void delay(int z);void display_time();void exe();void main() TCON=0x01; IE=0x81; TMOD=0x01; TH0=(65536-45872)/256; /50ms TL0=(65536-45872)%256; /50ms EA=1; ET0=1; TR0=1;

23、while(1) exe(); display_time(); void delay(int z) int x,y; for(x=z;x0;x-) for(y=110;y0;y-);void display_time() P0=0x00; dula=1; P0=0x3e; dula=0; wela=1; P0=0xfe; /0111 1111 wela=0; delay(1); P0=0x00; dula=1; P0=0x48; dula=0; wela=1; P0=0xfd; wela=0; delay(1); P0=0x00; dula=1; P0=tabless; dula=0; P0=

24、0xff; wela=1; P0=0x7f; wela=0; delay(1); P0=0x00; dula=1; P0=table_pointmiao%10; dula=0; P0=0xff; wela=1; P0=0xbf; wela=0; delay(1); P0=0x00; dula=1; P0=tableshii; dula=0; wela=1; P0=0xdf; wela=0; delay(1); P0=0x00; dula=1; P0=tablebai; dula=0; wela=1; P0=0xef; wela=0; delay(1); P0=0x00; dula=1; P0=

25、tableqian; dula=0; wela=1; P0=0xf7; wela=0; delay(1); P0=0x00; dula=1; P0=xx; dula=0; wela=1; P0=0xfb; wela=0; delay(1); void exe() if(xxx=1) xx=0x40; if(xxx=0) xx=0x00; miao=(miao1)*533/196; miao=miao*2; qian=miao/1000; bai=(miao-qian*1000)/100; shii=(miao-qian*1000-bai*100)/10; ss=(int)(ge+shii)/2

26、); void T0_time()interrupt 1 TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; num+; if(num=10) miao1=n; n=0; num=0; void waibu_time()interrupt 0 n+;实验四、基于51系列单片机控制的直流电机PWM调速一、实验目的1掌握脉宽调制 (PWM) 的方法。2用程序实现脉宽调制,并对直流电机进行调速控制。二、实验原理1PWM (Pulse Width Modulation) 简称脉宽调制。即,通过改变输出脉冲的占空比,实现对直流电机进行调压调速

27、控制。2实验线路图:三、实验内容1. 利用实验室提供的单片机应用系统及直流电机驱动电路板,编制控制程序,实现直流电机PWM调速控制。四、实验步骤及结果(1)用平台protus绘制仿真电路,并如下图所示(2)编写程序,并把程序导入到protus绘制的文件中,结果如图所示加速后:减速后:反向:五、实验总结本次实验通过调节脉宽来进行直流电机调速,用到了定时器中断,对按键的检测可以用扫描法,也可以用外部中断,考虑到实际运用,用外部中断能减少CPU占用。对PWM调速的理解和运用也更加深刻了。自己在以后遇到此类问题的时候也能个熟练运用了。六、源程序:#include #include #define uchar unsigned char#define uint unsigned int sbit dula=P20; sbit wela=P21; sbit P10=P10;sbit P11=P11;

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

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