#include<msp430x24x.h> #include"ad7705.h" #define uchar unsigned char #define uint unsigned int uint T_Voltage; char buffle[20]; void AD7705_Write_1_BYTE(uchar Data_byte); /////////////////////////////////////////// //delay // /////////////////////////////////////////// void Delayms(uchar ms) { uchar i; while(ms--) { for(i = 0; i < 120; i++); } } //////////////////////////////////////// //初始化 // //////////////////////////////////////// void AD7705_INIT() { char i; AD7705_Write_1_BYTE(0xff);/*复位AD7705 32个周期*/ AD7705_Write_1_BYTE(0xff); AD7705_Write_1_BYTE(0xff); AD7705_Write_1_BYTE(0xff); AD7705_Write_1_BYTE(0xff); for(i=0;i<=10;i++) {_NOP();} AD7705_Write_1_BYTE(0x20);/* 选择时钟寄存器 */ for(i=0;i<=10;i++) {_NOP();} AD7705_Write_1_BYTE(0x04);/* master clock, 2.4576MHz, 50Hz*/ for(i=0;i<=10;i++) {_NOP();} AD7705_Write_1_BYTE(0x10);/* 一通道,选择setup寄存器 */ for(i=0;i<=10;i++) {_NOP();} AD7705_Write_1_BYTE(0x44);/*增益1,单极性 */ for(i=0;i<=10;i++) {_NOP();} drdy_in; //MCU 相应IO 口方向改为输入,以便检测drdy 的状态 _NOP(); while(drdy_get){}; //等待drdy 变低,变低表明数据寄存器有新的有效数据 drdy_out; //MCU 相应IO 口方向改为输出 } ///////////////////////////////////////// //写函数 // ///////////////////////////////////////// void AD7705_Write_1_BYTE(uchar Data_byte)/*8位,从高到低*/ { uchar i; AD7705_CS_LOW(); _NOP();_NOP();_NOP(); AD7705_CLK_HIGH(); _NOP();_NOP();_NOP(); for(i = 0; i < 8; i++) { if(Data_byte & 0x80 == 1) AD7705_IN_HIGH(); else AD7705_IN_LOW(); AD7705_CLK_LOW(); _NOP();_NOP();_NOP(); AD7705_CLK_HIGH(); _NOP();_NOP();_NOP(); Data_byte <<= 1; _NOP();_NOP();_NOP(); } _NOP(); _NOP(); AD7705_CS_HIGH(); } ///////////////////////////////////// //读函数 // ///////////////////////////////////// uchar AD7705_Read_1_BYTE() { uchar i,Data_read; AD7705_CS_LOW(); _NOP();_NOP();_NOP(); drdy_in; while(drdy_get){}; drdy_out; AD7705_CLK_HIGH(); _NOP();_NOP();_NOP(); for(i = 0; i < 8; i++) { AD7705_CLK_LOW(); _NOP();_NOP();_NOP();_NOP();_NOP();_NOP(); Data_read <<= 1; if(AD7705_DOUT) Data_read |= 0x01; else Data_read &= 0xfe; _NOP();_NOP();_NOP(); AD7705_CLK_HIGH(); _NOP();_NOP();_NOP(); } _NOP();_NOP();_NOP(); AD7705_CS_HIGH(); _NOP();_NOP();_NOP(); //AD7705_DRDY_HIGH(); return(Data_read); } //////////////////////////////////// //电压 // //////////////////////////////////// void AD7705_Data_Process() { uchar MSB_Data,LSB_Data; AD7705_Write_1_BYTE(0x38);/*选择数据寄存器 */ MSB_Data = AD7705_Read_1_BYTE(); LSB_Data = AD7705_Read_1_BYTE(); T_Voltage = (uint)MSB_Data*256 + (uint)LSB_Data; } /////////////////////////////////////////// //main // /////////////////////////////////////////// void main() { WDTCTL = WDTPW + WDTHOLD; //P2DIR |= BIT0; /*AD7705_DRDY*/ P4DIR = 0x07; /*AD7705_DOUT=0、AD7705_IN=1、AD7705_CS=1、AD7705_CLK=1*/ AD7705_INIT(); while(1) { AD7705_Data_Process(); Delayms(50); } }
您需要 登录 才可以下载或查看,没有账号?注册
收藏0 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
时间类勋章
55
176
2
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号