用Proteus学习51单片机之AD转换.doc_第1页
用Proteus学习51单片机之AD转换.doc_第2页
用Proteus学习51单片机之AD转换.doc_第3页
用Proteus学习51单片机之AD转换.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用Proteus学习51单片机之AD转换现实中的很多量,都是模拟量,如温度,压力等,单片机要去了解它们,首先就要把这些量进行数字化,AD转换即把模拟量转变为数字量。这次书上介绍的AD芯片为ADC0804,8位并行AD转换芯片。ADC0804的使用,比前面用过的锁存器74LS573难用得多,主要是读写数据都要根据时序图,进行电位的变化,而且芯片的接法也相对麻烦一点。下面记录一下引脚定义:VIN(+),VIN(-):待测量的模拟信号输入DB0DB7:测量结果输出AGND:模拟信号地DGND:数字信号地CLK:时钟信号输入端CLKR:内部时钟发生器的外接电阻端,与CLK端配合可由芯片自身产生时钟脉冲,其频率为1/(1.1RC)CS:片选信号,低电平有效WR:写信号输入,低电平启动A/D转换RD:读信号输入,低电平有效INTR:A/D转换结束信号,低电平表示本次转换已经完成VREF/2:参考电平输入,决定量化单位(可以调节该电平,调节最终准确度)VCC:电源输入 关于时钟:如果使用内部时钟的话,官方的建议是用10K电阻和150pF电容,如上图;模拟地和数字地一般直接接地即可。参考电平在2.5V左右,我试了一下,调到2.55的时候比较准确。关于待测量的模拟信号,如电压,可以向上图一样连接,负直接接地即可。这里没有用到INTR,即没用中断,而是直接用延时的方法,等待A/D转换完成后,读取DB0DB7的值。-读写芯片都要根据芯片的时序来,其写时序如下:可以看到,首先要使片选信号置低电平,然后写信号下降,上升后,芯片开始A/D转换,转换完成后INTR置低电平通知已经完成。 读时序如下:可以看到,转换完成后,选使片选有效,然后使读引脚下降,再上升,即可读取数据。由于不管读写,都要使片选有效,即CS脚置低,所以CS脚置一次低就可以了。 view sourceprint?1voidmain() uchar val = 0; /允许AD芯片 ad_cs = 0; while(1) ad_write = 0;/WR脚置低 _nop_(); ad_write = 1;/WR脚置高,完成时序,转换开始 delay(50);/稍等后转换会完成,由于没用中断,所以采用延时50毫秒 P1 = 0xff;/先把数据端口全部置1,避免原先数据影响 ad_read = 0;/RD脚置高 _nop_(); val = P1;/把数据存入临时变量 ad_read = 1;/RD脚置低 show(val4)*0.32 + (val&0x0f)*0.02);/根据换算规则,把数据换算成实际电压 换算的规则是,8位数据的高四位,相当于每单位0.32V,低四位,相当于每单位0.02V,所以总电压就是:(val4)*0.32 + (val&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论