23456484746454443424140393837PD7PD6PD5PD4PB4PB5PB6PB7PC0PC1PC2PC3
CSWCLK/TCK/PC00-//PSWDIO/TCMSPBC41C1-/PB5TRST/PB7C0+PB6SWO/TDO/PC3J162FCa0ulot/PD76CCP2/PD5CCP0/PD4TDI/PC2PC5/C1o/C1+PC4/CCP5PA0/U0RxPA2/SSIClkPA1/U0TxVADDP3/SSIFssGNDPA4/SSIRxPA5/SSITxVDDGND基于AD5933的阻抗测量仪
5VD23V3R2470K504RSTC2105C3103D1LED470R3R43V33V3LDOBY1OSC0R110KS12KEY3ENCAT811RRSNGNDOUT附图9 Luminary615 最小系统图
C4103C5103C6103C7104C8475C9475C10104C11105CRYSTALC1218pFC1318pFATitleSizeBDate:File:234519-Jun-2009Sheet of F:\\备战2009\\硬件原理图\\Luminary615\\615.ddbDrawn By:6NumberRevisionOSC1BC11475IN131415161718192021222324
DU16364PE51PE42PE33PE24LDO53V36GND7OSC08OSC19PC710PC6115V121234567891011126151615261546153131415161718192021222324ADC0ADC1PE3/CCP1PE2/CCP4RSTLDOVDDGNDOSC0OSC1PC7/C2-PC6/CCP3/C2+PWM5/PE1PWM4/PE0I2CSDA/PB3I2CSCL/PB2VDDGNDPWM3/PB1PWM2/PB0U1Tx/PD3U1Rx/PD2PWM1/PD1PWM0/PD0373839404142434445464748252627282930313233343536PC5PC43V3GNDPA0PA1PA2PA3PA4PA53V3GND131415161718192021222324PE51PE42PE33PE24RST5LDO63V37GND8OSC09OSC110PC711PC612363534333231302928272625PE1PE0PB3PB23V3GNDPB1PB0PD3PD2PD1PD0PE0PE1PB2PB3GND3V3PB0PB1PD2PD3PD0PD1373839404142434445464748PD6PD7PD4PD5PB5PB4PB7PB6PC1PC0PC3PC2252627282930313233343536CLM3S615GND3V3PA5PA4PA3PA2PA1PA0GND3V3PC4PC51D
A
1 基于AD5933的阻抗测量仪
附录三 程序清单
/******************************************************************************************************
**文件名:xiangwei.c
**功能:通过LM3S615实现对AD5933的控制,实现阻抗测量
**说明:AD5933是I2C接口的,LM3S通过模拟I2C接口实现对AD5933的控制。 ********************************************************************************************************/
#include \#include \#include \#include \#include \#include \#include \#include \#include \#include \#include \
#ifndef uchar
#define uchar unsigned char #endif
// I2C引脚的定义。
#define SDA GPIO_PIN_3 // 模拟I2C数据传送位
#define SCL GPIO_PIN_2 // 模拟I2C时钟控制位
#define SDAA GPIO_PIN_5 //模拟I2C数据传送位 #define SCLL GPIO_PIN_4 //模拟I2C时钟控制位
#define AD5933_addr 0x1A //从机地址
#define SET_POINT 0xB0 //0xB0命令表示写入地址
unsigned char j=0;
//---------------------------------------------------------------------------------------------------------------------
// 函数原形:void delays(unsigned int n) // 功能描述:延时数量为n个指令周期。
基于AD5933的阻抗测量仪
// 参数说明:unsigned int n,将要延时的时间数。 // 返回值:无
//---------------------------------------------------------------------------------------------------------------------
void delays(unsigned int n) // 软件延迟函数
{
volatile int i; for(;n>0;n--) {
for(i=0;i<10;i++); } }
//---------------------------------------------------------------------------------------------------------------------
// 函数原形:InitAD5933(void)
// 功能描述:AD5933初始化函数。
// 参数说明:无。 // 返回值:无
//---------------------------------------------------------------------------------------------------------------------
void InitAD5933(void)
{
ISend(AD5933_addr,0x82,0x00); //start frequency delays(5);
ISend(AD5933_addr,0x83,0xFA); //1kHz delays(5);
ISend(AD5933_addr,0x84,0x05); delays(5);
ISend(AD5933_addr,0x85,0x00); //increment frequency delays(5);
ISend(AD5933_addr,0x86,0x31); //500Hz delays(5);
ISend(AD5933_addr,0x87,0x81); delays(5);
ISend(AD5933_addr,0x88,0x01); //测量点数 delays(5);
ISend(AD5933_addr,0x89,0xFF);
delays(5);
ISend(AD5933_addr,0x80,0xB1); //标准模式 delays(5);
基于AD5933的阻抗测量仪
ISend(AD5933_addr,0x81,0x00); //选着内部时钟 delays(5);
ISend(AD5933_addr,0x81,0x10); //复位AD5933 delays(5);
ISend(AD5933_addr,0x81,0x00); delays(5);
ISend(AD5933_addr,0x80,0x11); //初始化频率 delays(5);
ISend(AD5933_addr,0x8A,0x03); //等待建立周期数 delays(5);
ISend(AD5933_addr,0x8B,0xFF); delays(5);
ISend(AD5933_addr,0x80,0x21); //启动频率扫描 delays(5); }
//---------------------------------------------------------------------------------------------------------------------
// // // //
函数原形:void display(unsigned int re,unsigned int im) 功能描述:显示函数。
参数说明:unsigned int re,unsigned int im ,实部和虚部 返回值:无
//---------------------------------------------------------------------------------------------------------------------
void display(signed int re,signed int im) {
unsigned char a[11],y=0,x=0,i=0; signed int revalu=0,imvalu=0; float valu=0; double xishu=0,regist; long int ll;
revalu=re;
imvalu=im;
if(revalu&0x8000) //把带符号的换算成无符号整数 {
revalu=(revalu-0x10000)*(-1); x=1;
}
if(imvalu&0x8000) //把带符号的换算成无符号整数 {
基于AD5933的阻抗测量仪
imvalu=(imvalu-0x10000)*(-1);
y=1; }
valu=sqrt(imvalu*imvalu+revalu*revalu); //计算幅值 switch(j) { case 0:
if((valu<13000)&&(valu>8000)) {
xishu=(1/(96.86810)); //计算系数 xishu=(1/(xishu*valu))*100000+0.5; //计算阻值 ll=xishu-250; i=1; } break; case 1:
if((valu<13000)&&(valu>1350)) {
xishu=(1/(13.33726)); //计算系数 xishu=(1/(xishu*valu))*1000000+0.5; //计算阻值 ll=xishu-100; i=1; }
break; case 3:
if((valu<12000)&&(valu>1050)) {
xishu=(1/(10.398994)); //计算系数 xishu=(1/(xishu*valu))*10000000+0.5; //计算阻值 ll=xishu; i=1; } break; case 4:
if((valu<12000)&&(valu>1000)) {
xishu=(1/(96.736596)); //计算系数 xishu=(1/(xishu*valu))*10000000+0.5; //计算阻值 ll=xishu; i=1; }
break; case 5:
if((valu<2130)&&(valu>1060))