单片机c语言程序ad,求助 利用C写的单片机控制AD芯片的程序

本文介绍了如何使用C语言编写ADC0832模数转换器的驱动程序,并提供了完整的调试代码。在Proteus环境下已经通过仿真验证,该驱动程序能够实现对ADC0832的控制,读取转换结果。代码中详细解释了每个步骤,包括设置控制信号、发送通道选择命令以及接收转换数据的过程。
摘要由CSDN通过智能技术生成

模数转换(adc0832)C驱动

adc0832的C代码驱动模块为:unsigned int Adc0832(unsigned char channel)

下面为完整的调试程序,proteus仿真通过:

#include 

#include 

#define ulong unsigned long

#define uint unsigned int

#define uchar unsigned char

sbit ADCS =P1^3; //ADC0832 chip seclect

sbit ADDI =P1^1; //ADC0832 data in

sbit ADDO =P1^1; //ADC0832 data out

sbit ADCLK =P1^0; //ADC0832 clock signal

unsigned int Adc0832(unsigned char channel);

/************

读ADC0832函数

************/

//采集并返回

unsigned int Adc0832(unsigned char channel)

{

uchar i=0;

uchar j;

uint dat=0;

uchar ndat=0;

if(channel==0)channel=2;

if(channel==1)channel=3;

ADDI=1;

_nop_();

_nop_();

ADCS=0;//拉低CS端

_nop_();

_nop_();

ADCLK=1;//拉高CLK端

_nop_();

_nop_();

ADCLK=0;//拉低CLK端,形成下降沿1

_nop_();

_nop_();

ADCLK=1;//拉高CLK端

ADDI=channel&0x1;

_nop_();

_nop_();

ADCLK=0;//拉低CLK端,形成下降沿2

_nop_();

_nop_();

ADCLK=1;//拉高CLK端

ADDI=(channel>>1)&0x1;

_nop_();

_nop_();

ADCLK=0;//拉低CLK端,形成下降沿3

ADDI=1;//控制命令结束

_nop_();

_nop_();

dat=0;

for(i=0;i<8;i++)

{

dat|=ADDO;//收数据

ADCLK=1;

_nop_();

_nop_();

ADCLK=0;//形成一次时钟脉冲

_nop_();

_nop_();

dat<<=1;

if(i==7)dat|=ADDO;

}

for(i=0;i<8;i++)

{

j=0;

j=j|ADDO;//收数据

ADCLK=1;

_nop_();

_nop_();

ADCLK=0;//形成一次时钟脉冲

_nop_();

_nop_();

j=j<<7;

ndat=ndat|j;

if(i<7)ndat>>=1;

}

ADCS=1;//拉低CS端

ADCLK=0;//拉低CLK端

ADDO=1;//拉高数据端,回到初始状态

dat<<=8;

dat|=ndat;

return(dat);            //return ad data

}int main(void)

{

while(1)

P3=Adc0832(0);

}

欢迎访问我的博客: http://hi.baidu.com/jgh110/blog/item/cfa4880afe71983ab1351db7.html

以前做过,简单,(*^__^*) 嘻嘻……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值