单片机怎么设计ADC0832两路电压表

如题所述

uchar ADC0832_Read(uchar ch)
{
/*读取ADC的 CH 通道电压值,ADC作为2路单独电压输入*/
uchar i;
uchar ADC_buff=0;
uchar temp=0;
EA = 0;
ADC0832_CS = 1;
ADC0832_DIO = 1; /*启动位*/
ADC0832_CLK = 0;
ADC0832_CS = 0;
nop();
ADC0832_CLK = 1;
nop();
ADC0832_CLK = 0;
ADC0832_DIO = 1; /*送 SGL/DIF 位 */
nop();
ADC0832_CLK = 1;
nop();
ADC0832_CLK = 0;
if(ch==0) ADC0832_DIO = 0; /*送转换通道值*/
else ADC0832_DIO = 1;
ADC0832_CLK = 1;
nop();
ADC0832_CLK = 0;
nop();
ADC0832_DIO = 1; /*释放DIO端口,转由ADC控制*/
nop();
ADC0832_CLK = 1;
nop();
for(i=0;i<8;i++){ /*准备读取8位数据*/
nop();
ADC0832_CLK = 0;
nop();
nop();
ADC_buff=ADC_buff<<1;
if(ADC0832_DIO==1) ADC_buff=ADC_buff+1; /*读取数据*/
ADC0832_CLK = 1;
}
for(i=0;i<8;i++){
temp = temp>>1;
if(ADC0832_DIO==1) temp = temp | 0x80; /*读取校验数据*/
ADC0832_CLK = 1;
nop();
ADC0832_CLK = 0;
nop();
}
ADC0832_CS = 1;
ADC0832_CLK = 1;
//if(temp == ADC_buff) ADC_flag = 1;
//else ADC_flag = 0;
EA = 1;
return ADC_buff; /*返回转换值*/
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-04
看ADC0832芯片资料就可以了。