基于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)
2017-7-28 10:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|