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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验十 ADC0832数模转换的显示.docx

1、实验十实验十 ADC0832 数模转换的显示数模转换的显示 实验报告十 实验名称:ADC0832 数模转换的显示 目的:ADC0832 是 8脚双列直插式双通道 A/D转换器,能分别对两路模拟信号实现模数转换,可以用在单端输入方式和差分方式下工作。ADC0832 采用串行通信方式,通过 DI 数据输入端进行通道选择、数据采集及数据传送。8位的分辨率(最高分辨可达 256级),可以适应一般的模拟量转换要求。其部电源输入与参考电压的复用,使得芯片的模拟电压输入在 05V之间。具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方

2、便。ADC0832 的工作原理:正常情况下 ADC0832 与单片机的接口应为 4条数据线,分别是 CS、CLK、DO、DI。但由于 DO 端与 DI端在通信时并未同时使用并与单片机的接口是双向的,所以在 I/O口资源紧时可以将 DO和 DI并联在一根数据线上使用。当 ADC0832 未工作时其 CS 输入端应为高电平,此时芯片禁用,CLK 和 DO/DI 的电平可任意。当要进行A/D转换时,须先将 CS 使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟(CLK)输入端输入时钟脉冲,DO/DI端则使用 DI端输入通道功能选择的数据信号。在第一个时钟脉

3、冲的下沉之前 DI端必须是高电平,表示启始信号。在第二、三个脉冲下沉之前 DI端应输入两位数据用于选择通道功能。通道地址 通道 工作方式说明 SGL/DIF ODD/SIGN 0 1 0 0+-差分方式 0 1-+1 0+单端输入方式 1 1 +表 1:通道地址设置表 如表 1所示,当此两位数据为“1”、“0”时,只对 CH0 进行单通道转换。当 2位数据为“1”、“1”时,只对 CH1进行单通道转换。当两位数据为“0”、“0”时,将 CH0作为正输入端 IN+,CH1 作为负输入端 IN-进行输入。当两位数据为“0”、“1”时,将 CH0作为负输入端 IN-,CH1 作为正输入端 IN+进行

4、输入。到第三个脉冲的下降之后 DI端的输入电平就失去输入作用,此后 DO/DI端则开始利用数据输出 DO 进行转换数据的读取。从第 4个脉冲下降沿开始由 DO端输出转换数据最高位 Data7,随后每一个脉冲的下降沿 DO端输出下一位数据。直到第 11 个脉冲时发出最低位数据 Data0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第 11 个字节的下降沿输出 Data0。随后输出 8 位数据,到第 19 个脉冲时数据输出完成,也标志着一次 A/D转换的结束。最后将 CS 置高电平禁用芯片,直接将转换后的数据进行处理就可以了。时序说明请参照图 4。作为单通道模拟信号输入

5、时 ADC0832 的输入电压是 05V且 8位分辨率时的电压精度为 19.53mV,即(5/256)V。如果作为由 IN+与 IN-输入的输入时,可是将电压值设定在某一个较大围之,从而提高转换的宽度。但值得注意的是,在进行 IN+与 IN-的输入时,如果 IN-的电压大于 IN+的电压则转换后的数据结果始终为 00H。硬件原理图:仿真图:程序如下所示:/*包含头文件*/#include#include /*端口定义*/sbit CS=P35;sbit Clk=P33;sbit DATI=P34;sbit DATO=P34;sbit P20=P20;/*定义全局变量*/unsigned cha

6、r dat=0 x00;/AD 值 unsigned char count=0 x00;/定时器计数 unsigned char CH;/通道变量 unsigned char dis=0 x00,0 x00,0 x00;/显示数值/*共阳 LED 段码表*/unsigned char code tab=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;char code tablewe=0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xfe;/*函数功能:AD转换子程序 入口参数:CH 出口参数:dat*/u

7、nsigned char adc0832(unsigned char CH)unsigned char i,test,adval;adval=0 x00;test=0 x00;Clk=0;/初始化 DATI=1;_nop_();CS=0;_nop_();Clk=1;_nop_();if(CH=0 x00)/通道选择 Clk=0;DATI=1;/通道 0 的第一位 _nop_();Clk=1;_nop_();Clk=0;DATI=0;/通道 0 的第二位 _nop_();Clk=1;_nop_();else Clk=0;DATI=1;/通道 1 的第一位 _nop_();Clk=1;_nop_(

8、);Clk=0;DATI=1;/通道 1 的第二位 _nop_();Clk=1;_nop_();Clk=0;DATI=1;for(i=0;i 8;i+)/读取前 8位的值 _nop_();adval=1;Clk=1;_nop_();Clk=0;if(DATO)adval|=0 x01;else adval|=0 x00;for(i=0;i=1;if(DATO)test|=0 x80;else test|=0 x00;_nop_();Clk=1;_nop_();Clk=0;if(adval=test)/比较前 8位与后 8 位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉 dat=tes

9、t;_nop_();CS=1;/释放 ADC0832 DATO=1;Clk=1;return dat;/*函数功能:延时子程序 入口参数:出口参数:*/void delay(void)int k;for(k=10;k500;k+);/*函数功能:将 0-255 级换算成 0.00-5.00的电压数值 入口参数:i 出口参数:*/void convdata(unsigned char i)dis0=i/51;/个位 dis1=(i%51)*10/51*2;/小数点后第一位 dis2=(i%51)*10%51)*10/51*2;/小数点后第二位 /*函数功能:数码管显示子程序 入口参数:出口参数:

10、*/void display(void)P2=0 xff;P0=tabdis0&0 x7f;/显示个位和小数点 delay();P2=0 xfd;P2=0 xff;P0=tabdis1;/显示小数点后第一位 delay();P2=0 xfb;P2=0 xff;P0=tabdis2;/显示小数点后第二位 delay();P2=0 xf7;P2=0 xff;P0=0 xff;/显示小数点后第二位 delay();P2=0 xfe;/*函数功能:主程序 入口参数:出口参数:*/void main(void)P2=0 xff;/端口初始化 P0=0 xff;delay();CH=0 x00;/在这里选

11、择通道 0 x00 或 0 x01 TMOD=0 x01;/设置中断 TH0=(65536-50000)/256;/定时器 1初值定时 50ms TL0=(65536-50000)%256;IE=0 x82;TR0=1;while(1)/主循环 dat=adc0832(CH);convdata(dat);/数据转换 display();/显示数值 /*函数功能:定时器中断延时程序 这一段的作用时隔一段时间抽样一次 否侧显示的最后一位会不稳定 入口参数:出口参数:*/void timer0(void)interrupt 1 TMOD=0 x01;TH0=(65536-50000)/256;/定时器 1初值定时 50ms TL0=(65536-50000)%256;IE=0 x82;TR0=1;count+;if(count=0 x01)count=0 x00;dat=adc0832(CH);程序流程图:现象:调节 AD1,使 AD1顺时针转动,LED1 上的电压不断减小;调节 AD0,使 ADO 顺时针转动,LED2 上的电压不断减小。

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

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