,将压力传感器输出电压信号用ADC0809进行AD转换,中间需要哪些步骤,本人初学者最好能提供详细步骤或电路

核心提示首先,要将传感器输出的电压信号进行放大,使其落在AD转换器的采样范围之内;其次,要对输出电压信号进行滤波,使其采样电路的采样周期内保证相对稳定;第三,要在AD转换器的输入端加上采样保持电路,这个电路可以保证在AD转换动作期间,输入电压相对稳

首先,要将传感器输出的电压信号进行放大,使其落在AD转换器的采样范围之内;

其次,要对输出电压信号进行滤波,使其采样电路的采样周期内保证相对稳定;

第三,要在AD转换器的输入端加上采样保持电路,这个电路可以保证在AD转换动作期间,输入电压相对稳定,避免转换出现错误。最简单的采样电路可以是一个输入端对地的保持电容,复杂一些的需要加上采样开关;

第四,通过控制信号指令,控制AD转换器进行采样及转换操作,在此过程中,需要查询转换完成状态,待转换完成后,从数字输出端口读出转换结果。

#include "reg52.H" #include "string.h" #include "intrins.h" #define uint unsigned int #define uchar unsigned char //模拟量测量::ADC0809 #define ADC P0 sbit ALE = P2^7; sbit ENABLE = P2^5; sbit START = P2^4; sbit EOC = P3^7; sbit CLK = P3^4; uchar ADC0809(void)//模拟量采集 { uchar adc=0; ALE=1;_nop_();ALE=0;//地址锁存 START=1;_nop_();START=0;//启动转换 wait:if(EOC==0)goto wait;//等待转换结束 _nop_();ENABLE=1;_nop_();//读数据 adc=ADC;_nop_();ENABLE=0; return adc;//返回转换值 } void Time0(void) interrupt 1 using 0//ADC0809时钟信号 { CLK=~CLK; } void Timer0Init(void)//定时器T0初始化 { TMOD = 0x02; TH0 = 0xce; TL0 = 0xce; ET0 = 1; TR0 = 1; } 定时器采用模式2,8位自动重装初值方式。 初值计算方法: 时钟频率设计为500kHz,则定时时间t=1/f=1/500k=50us 采用12M晶振,机器周期为1us 根据公式:定时时间t=(2^8-x)*1us 计算初值x=2^8-50/1=256-50=206=0xce 改程序是已经实现过的,希望可以帮助你。

 
友情链接
鄂ICP备19019357号-22