单片机c语言ad程序,基于51单片机的ADC0832的C语言程序.pdf

#ifndef __ADC_0832_H

#define __ADC_0832_H

#include

#include

#include "hubj.h"

sbit AD_Cs = P3^2; //ADC0832 chip seclect

sbit AD_Clk = P3^3; //ADC0832 clock signal

sbit AD_Di = P3^6; //ADC0832 data in

sbit AD_Do = P3^6; //ADC0832 data out

static uint AD_Conv ( );

void ADC_Fun ( );

#endif

#include "adc_0832.h"

extern uint Real_Temperature;

extern bit Adc_Flag;

uchar code CH = 0x02;

double MN = M * N;

static uint AD_Conv ( )

{

uchar i=0;

uint data_f = 0, data_c = 0;

AD_Di = 1;

AD_Cs = 1;

_nop_ ( );

AD_Cs = 0;

AD_Di = 1;

AD_Clk = 1;

_nop_ ( );

_nop_ ( );

AD_Clk = 0;

_nop_ ( );

_nop_ ( );

AD_Clk = 1;

AD_Di = (bit)(0x02 & CH);

_nop_ ( );

AD_Clk = 0;

_nop_ ( );

_nop_ ( );

AD_Clk = 1;

AD_Di = (bit)(0x01 & CH);

_nop_ ( );

_nop_ ( );

AD_Clk = 0; // AD 转换

的初始化完成

AD_Di = 1;

AD_Clk = 1;

_nop_ ( );

_nop_ ( );

AD_Clk = 0;

_nop_ ( );

AD_Clk = 1;

for (i = 8; i > 0; i --)

{

data_f |= AD_Do;

data_f <<= 1;

AD_Clk = 1;

_nop_ ( );

_nop_ ( );

AD_Clk = 0;

_nop_ ( );

}

for (i = 8; i > 0; i --)

{

data_c <<= 1;

data_c |= AD_Do;

_nop_ ( );

AD_Clk = 1;

_nop_ ( );

_nop_ ( );

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是STC12C4052AD单片机ADC采样的C语言代码示例: ```c #include <reg52.h> #define ADC_POWER 0x80 //ADC电源控制位 #define ADC_FLAG 0x10 //ADC完成标志位 #define ADC_START 0x08 //ADC开始转换控制位 sbit ADC_CS = P3^4; //模拟量输入通道选择端口 sbit ADC_CLK = P3^5; //ADC时钟端口 sbit ADC_DIN = P3^6; //模拟量输入端口 sbit ADC_DOUT = P3^7; //ADC数据输出端口 //ADC转换函数 int ADC_Convert(unsigned char ch) { unsigned char i; unsigned int dat = 0; ADC_CS = 1; //拉高通道选择端口,准备转换 ADC_CLK = 0; //ADC时钟置低 ADC_DIN = 0; //清零模拟量输入端口 //发送起始转换命令 ADC_CS = 0; ADC_CLK = 0; ADC_DIN = 1; ADC_CLK = 1; ADC_DIN = 1; ADC_CLK = 0; //发送通道选择命令 for (i = 0; i < 3; i++) { ADC_CLK = 0; ADC_DIN = ch & 0x80; ch <<= 1; ADC_CLK = 1; } //接收ADC转换结果 for (i = 0; i < 12; i++) { ADC_CLK = 0; ADC_CLK = 1; dat <<= 1; dat |= ADC_DOUT; } ADC_CS = 1; //转换完成,拉高通道选择端口 return dat; } void main() { unsigned int adc_data; P1 = 0x00; //初始化P1口为输出 P3 = 0xff; //初始化P3口为输入 while (1) { P1 = 0x00; //将P1口清零 adc_data = ADC_Convert(0); //读取ADC转换结果 P1 = adc_data >> 4; //将ADC转换结果输出到P1口 } } ``` 该代码实现了单通道ADC采样,并将转换结果通过P1口输出。其中,ADC_Convert函数用于进行ADC转换,参数ch表示需要采样的模拟量输入通道,返回值为转换结果。在主函数中,首先进行了端口初始化,然后进入循环,不断采样并输出结果。注意,ADC转换过程中需要保证时序的正确性,因此需要仔细按照代码中的时序进行实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值