基于51单片机AD7705模数转换器使用C程序(自编)
单片机源程序如下:
- #include<reg52.h>
- sbit ADC_DOUT=P3^0;
- sbit ADC_CLK=P3^1;
- sbit ADC_DIN=P3^2;
- sbit ADC_CS=P3^3;
- sbit ADC_DRDY=P3^4;
- /****************1毫秒延时函数***********************/
- void Delay_1ms(unsigned int x)
- {
- unsigned char y,z;
- for(;x>0;x--)
- {
- for(z=199;z>0;z--)
- {
- for(y=1;y>0;y--);
- }
- }
- }
- /****************ADC7705控制命令写入函数**********************/
- void Write_ToReg_ADC7705(unsigned int byteword)
- {
- unsigned int ADC16bit,Token;
- unsigned char i;
- ADC_CLK = 1; ADC_CS = 0;
- Token = 0x08; ADC16bit = byteword;
- for(i=0;i<8;i++) //数据位写入
- {
- if(ADC16bit & Token)
- ADC_DIN = 1;
- else
- ADC_DIN = 0;
- ADC_CLK = 1; ADC_CLK = 0; ADC_CLK = 1;
- Token = Token >> 1;
- }
- ADC_CLK = 1; ADC_DIN = 1;
-
- }
- /*****************ADC7705初始化************************/
- void Init_AD7705(vid)
- {
- unsigned char i;
- ADC_CLK=1;ADC_DIN=1;
- for(i=0;i<40;i++)//防止接口迷失,通信寄存器回到等待写的状态
- {
- ADC_CLK=0;ADC_CLK=1;
- }
- Write_ToReg_ADC7705(0x20); ///选择通道1,进行下一次写时钟寄存器
- Write_ToReg_ADC7705(0x06); ////写时钟寄存器,并设定更新速率
- Write_ToReg_ADC7705(0x10); //选择通道1,进行下一次写设置寄存器
- Write_ToReg_ADC7705(0x5c);//写设置寄存器,设置AD7705的极性、缓冲、增益、滤波、校准
- Delay_1ms(50);
- }
- /*****读数据寄存器函数*********/
- unsigned int ADC7705_Read_16bit_Value(unsigned char channel)
- {
- unsigned int ADC16bit;
- unsigned char i;
- Write_ToReg_ADC7705(0x38|channel);
- while(ADC_DRDY == 1);
- ADC_CLK = 1; ADC_CS = 0;
- ADC16bit = 0x00;
- for(i=0;i<16;i++)
- {
- ADC16bit = ADC16bit << 1;
- ADC_CLK = 0;
- if(ADC_DOUT == 1)
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
AD7705使用程序.zip
(20.16 KB, 下载次数: 206)
|