C51模拟量接口编程

C51模拟量接口编程

ID:45033382

大小:385.50 KB

页数:26页

时间:2019-11-08

C51模拟量接口编程_第1页
C51模拟量接口编程_第2页
C51模拟量接口编程_第3页
C51模拟量接口编程_第4页
C51模拟量接口编程_第5页
资源描述:

《C51模拟量接口编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章MCS-51系列单片机模拟量接口的C51编程7.18位并行D/A转换器DAC0832的C51编程7.212位并行DAC1208和串行D/AMAX517的C51编程7.38位A/D转换器ADC0808/0809的C51编程7.412位串行A/D转换器TLC2543的C51编程7.18位并行D/A转换器DAC0832的C51编程7.1.1DAC0832基础知识【例7-1】DAC082单缓冲工作方式示例【例7-2】DAC0832双缓冲器工作方式示例【例7-3】多路DAC0832输出示例7.1.3DAC0832输出各种波形的C51编程1.阶梯波设定一8位的变量,该变量从0开始循环增量

2、,每增量一次向DAC0832写入一个数据,得到一个输出电压,这样可以得到一个阶梯波。DAC0832的分辨率是8位,如其满刻度是5V,则一个阶梯波的幅度为:V=5V/256=19.5mVvoidmain(){uchari=0;while(1){for(i=0;i<256;i++){DAC0832=i;}}}2.三角波voidmain(){uchari=0;while(1){for(i=0;i<0xff;i++){DAC0832=i;}for(i=0xff;i>0;i--){DAC0832=i;}}}3.方波voidmain(){uchari=0;while(1){DAC0832=0x

3、ff;delay1();DAC0832=0;delay2();}}4.正弦波利用DAC0832接口实现正弦波输出时,先要对正弦波形模拟电压矩形离散化。对于一个正弦波形取N个等分离散点,按定义计算出对应1、2、3。。。。。。N各离散点的数据值D1、D2、D3、……DN制成一个正弦波表。因为正弦波在半周期内是以极值点位中心对称,而且正弦波形为互补关系,故在制正弦表时只需要1/4周期,即取0~π/2之间的数值,步骤如下:(1)计算0~π/2区间N/4个离散的正弦值;(2)根据对称关系复制π/2~π区间的值;(3)将0~π区间的各点根据求补即可得到π~2π区间各值。将得到的这些数据根据所用

4、的DAC0832的位数进行量化,得到相应的数字量,依次存入RAM或固化于EPROM中,从而得到一个全周期的正弦编码表。codeucharsintab[]={0x7f,0x89,0x94,0x9f,0xaa,0xb4,0xbe,0xc8,0xd1,0xd9,0xe0,0xe7,0xed,0xf2,0xf7,0xfa,0xfc,0xfe,0xff};voidmain(){uchardatai=0,k;while(1){for(i=0;i<18;i++){DAC0832=sintab[i];}for(i=18;i>0;i--){DAC0832=sintab[i];}for(i=0;i<1

5、8;i++){DAC0832=~sintab[i];}for(i=18;i>0;i--){DAC0832=~sintab[i];}}}【例7-4】采用DAC0832实现的波形发生器7.212位并行D/A芯片DAC1208的C51编程【例7-5】利用DAC1208驱动直流电机7.38位A/D转换器ADC0809的C51作用:完成模拟量到数字量的转换分辨率:转换时间:1.主要功能特点分辨率为8位;总的不可调误差在±(1/2)LSB和±1LSB之间;典型转换时间为100μs;具有锁存控制的8路多路开关;具有三态缓冲输出控制;单一+5V供电,此时输入范围为0~5V;输出与TT

6、L兼容;工作温度范围—40℃~+85℃。2.结构与外部引脚3.ADC0809的操作时序【例7-6】1路模拟输入A/D转换示例(1)无条件方式:#include#include#defineucharunsignedchar#defineADC08090XBYTE[0x78ff]voiddelay(){ucharj;for(j=0;j<250;j++);}voidmain(){while(1){ADC08090=0;//启动A/Ddelay();P1=ADC08090;//读取数据}}(2)查询方式#include#incl

7、ude#defineucharunsignedchar#defineADC08090XBYTE[0x78ff]sbitP33=P3^3;Voidmain(){while(1){ADC08090=0;//启动A/Dl1:P33=1;if(P33==0){P1=ADC08090;}//读取数据elsegotol1;}}(3)中断方式#include#include#defineucharunsignedchar#de

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。