为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

AD7705测试程序

2017-09-01 15页 doc 34KB 25阅读

用户头像

is_842972

暂无简介

举报
AD7705测试程序AD7705测试程序 /*************** AD7705 测试程序 000001 ****************/ #include #include #define uchar unsigned char #define uint unsigned int sbit DS=P1^0; //串行数据输入 sbit SH=P1^2; //移位时钟脉冲 sbit ST=P1^1; //输出锁存器控制脉冲 sbit lcden=P1^3; //lcd使能 sbit lcdrs=P1^4; //lcd读...
AD7705测试程序
AD7705测试程序 /*************** AD7705 测试程序 000001 ****************/ #include #include #define uchar unsigned char #define uint unsigned int sbit DS=P1^0; //串行数据输入 sbit SH=P1^2; //移位时钟脉冲 sbit ST=P1^1; //输出锁存器控制脉冲 sbit lcden=P1^3; //lcd使能 sbit lcdrs=P1^4; //lcd读写控制 sbit AdClk = P2^0; /*AD7705时钟脉冲*/ sbit AdDout = P2^2;/*AD7705数据输出的反相脉冲*/ sbit AdDin = P2^1; /*AD7705数据输入脉冲*/ sbit drty = P2^3; uint temp; /********** 1602 显示 程序******/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } uchar code table[]="maichong jiance"; //15 uchar code table1[]=" 00000 us"; //12 void hc_595(uchar date) { uint j; for(j=0;j<8;j++) { SH=0; date=date<<1; DS=CY; SH=1; SH=0; //上升沿发生移位 } ST=0; ST=1; //上升沿将数据送到输出锁存器 ST=0; } void write_com1602(uchar com) /* 写命令*/ { lcdrs=0; lcden=0; hc_595(com); delay(5); lcden=1; delay(5); lcden=0; } void write_date1602(uchar date) /* 写数据*/ { lcdrs=1; lcden=0; hc_595(date); delay(5); lcden= 1; delay(5); lcden=0; } void write_dt1602(uint data2) /* 显示四位数*/ { uint wei_1,wei_2,wei_3,wei_4,wei_5; wei_1=data2/10000; wei_2=data2/1000%10; wei_3=data2/100%10; wei_4=data2/10%10; wei_5=data2%10; write_com1602(0x80+0x40+4); write_date1602(0x30+wei_1); write_date1602(0x30+wei_2); write_date1602(0x30+wei_3); write_date1602(0x30+wei_4); write_date1602(0x30+wei_5); } void init1602() { uint num; lcden=0; write_com1602(0x38); write_com1602(0x0c); write_com1602(0x06); write_com1602(0x01); write_com1602(0x80); for(num=0;num<15;num++) { write_date1602(table[num]); delay(5); } write_com1602(0x80+0x40); for(num=0;num<12;num++) { write_date1602(table1[num]); delay(5); } } /****************************************************************/ /* 向AD7705写入一个字节 */ void WriteByte7705(unsigned char x) { unsigned char i; AdClk = 1; for (i=0; i<8; i++) { AdClk=0; AdDin =(bit) (x & 0x80); AdClk=1; x <<=1; } AdDin =1;//必不可少的。 } /* 从AD7705读一个字 */ unsigned int ReadWord7705(void) { unsigned char i; unsigned int x=0 ; AdClk = 1 ; for (i = 0 ; i < 16 ; i++) { AdClk=0; x<<=1; if (AdDout) x |= 0x01; AdClk=1; } return x; } /* AD7705通信端口复位 */ void Reset7705(void) { unsigned char i; for(i=0;i<35;i++) /* 多于连续32个 DIN=1 使串口复位 */ { AdClk=0; AdDin =1; AdClk=1; } AdDin =1; } /*AD7705初始化*/ void Init7705() { Reset7705(); /* 复位 */ WriteByte7705(0x20); /* 写ch0 clock register */ WriteByte7705(0x04); /* 2.4576MHz时钟,20Hz数据更新速率 */ WriteByte7705(0x10);/*设置寄存器 写 ch0 */ WriteByte7705(0x44); /*0x44自校准模式 增益1 单极性 不缓冲 滤波器同步(0x46 自校准模式 增益1 单极性 缓冲 滤波器同步) */ } /* 读AD7705转换数据 输入通道channel ----1=IN1,2=IN2;*/ unsigned int GetData7705() { WriteByte7705(0x38);/*数据寄存器 读 通道1*/ return ( ReadWord7705() ); } void main() { Init7705(); init1602(); while(1) { while(!drty) { temp=GetData7705(); write_dt1602(temp); } } } /*************** AD7705 测试程序000002****************/ #include #include #define uchar unsigned char #define uint unsigned int #define AD_CLK_WIDTH 1 /*AD7705串口时钟脉冲宽度*/ sbit DS=P1^4; //串行数据输入 sbit SH=P1^2; //移位时钟脉冲 sbit ST=P1^3; //输出锁存器控制脉冲 sbit lcden=P1^1; //lcd使能 sbit lcdrs=P1^0; //lcd读写控制 sbit AdClk = P2^0; /*AD7705时钟脉冲*/ sbit AdDout = P2^2;/*AD7705数据输出的反相脉冲*/ sbit AdDin = P2^1; /*AD7705数据输入脉冲*/ sbit drty = P2^3; uint temp; **** hc595 驱动1602程序 ******/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } uchar code table[]="maichong jiance"; //15 uchar code table1[]=" 00000 us"; //12 void hc_595(uchar date) { uint j; for(j=0;j<8;j++) { SH=0; date=date<<1; DS=CY; SH=1; SH=0; //上升沿发生移位 } ST=0; ST=1; //上升沿将数据送到输出锁存器 ST=0; } void write_com1602(uchar com) /* 写命令*/ { lcdrs=0; lcden=0; hc_595(com); delay(5); lcden=1; delay(5); lcden=0; } void write_date1602(uchar date) /* 写数据*/ { lcdrs=1; lcden=0; hc_595(date); delay(5); lcden= 1; delay(5); lcden=0; } void write_dt1602(uint data2) /* 显示四位数*/ { uint wei_1,wei_2,wei_3,wei_4,wei_5; wei_1=data2/10000; wei_2=data2/1000%10; wei_3=data2/100%10; wei_4=data2/10%10; wei_5=data2%10; write_com1602(0x80+0x40+4); write_date1602(0x30+wei_1); write_date1602(0x30+wei_2); write_date1602(0x30+wei_3); write_date1602(0x30+wei_4); write_date1602(0x30+wei_5); } void init1602() { uint num; lcden=0; write_com1602(0x38); write_com1602(0x0c); write_com1602(0x06); write_com1602(0x01); write_com1602(0x80); for(num=0;num<15;num++) { write_date1602(table[num]); delay(5); } write_com1602(0x80+0x40); for(num=0;num<12;num++) { write_date1602(table1[num]); delay(5); } } /****************************************************************/ /* AD7705软件延时 */ void Wait7705(unsigned int t) { for( ;t>0 ;t-- ); } /* 向AD7705写入一个字节 */ void WriteByte7705(unsigned char x) { unsigned char i; AdClk = 1; for (i=0; i<8; i++) { AdClk=0; Wait7705(AD_CLK_WIDTH); AdDin =(bit) (x & 0x80); Wait7705(AD_CLK_WIDTH); AdClk=1; Wait7705(AD_CLK_WIDTH); x <<=1; } AdDin =1; } /* 从AD7705读一个字 */ unsigned int ReadWord7705(void) { unsigned char i; unsigned int x=0 ; AdClk = 1 ; for (i = 0 ; i < 16 ; i++) { AdClk=0; Wait7705(AD_CLK_WIDTH); x<<=1; if (AdDout) x |= 0x01; AdClk=1; Wait7705(AD_CLK_WIDTH); } return x; } /* AD7705通信端口复位 */ void Reset7705(void) { unsigned char i; for(i=0;i<35;i++) /* 多于连续32个 DIN=1 使串口复位 */ { AdClk=0; Wait7705(AD_CLK_WIDTH); AdDin =1; Wait7705(AD_CLK_WIDTH); AdClk=1; Wait7705(AD_CLK_WIDTH); } AdDin =1; } /*初始化*/ void Init7705(unsigned char channel , bit polarity ,unsigned char gain) { unsigned char x; Reset7705(); /* 复位 */ WriteByte7705(0x20); /* 写ch0 clock register */ WriteByte7705(0x04); /* 2.4576MHz时钟,20Hz数据更新速率 */ //WriteByte7705(0x21); /* 写CH1 clock register */ //WriteByte7705(0x00); /* 2.4576MHz时钟,20Hz数据更新速率 */ if(channel==1) /* com register ,选择下步操作 setup register */ WriteByte7705(0x10);/*设置寄存器 写 ch0 */ else WriteByte7705(0x11); /*设置寄存器 写 ch1 */ if(polarity) /* setup register */ x=0x04; /*0x04正常模式 增益1 单极性 不缓冲 滤波器同步(0x46自校准模式 增益1 单极性 缓冲 滤波器同步) */ else x=0x42; /*0x00正常模式 增益1 双极性 不缓冲 滤波器同步(0x42) */ switch(gain) /*增益设置*/ { case 1 : x|=0x40;break; case 2 : x|=0x48;break; case 4 : x|=0x50;break; case 8 : x|=0x58;break; case 16 : x|=0x60;break; case 32 : x|=0x68;break; case 64 : x|=0x70;break; case 128 : x|=0x78;break; default : x|=0x40;break; } WriteByte7705(x); } /* 读AD7705转换数据 输入通道channel ----1=IN1,2=IN2;*/ unsigned int GetData7705(unsigned char channel) { if(channel==1) WriteByte7705(0x38);/*数据寄存器 读 通道1*/ else WriteByte7705(0x39); /*数据寄存器 读 通道2*/ return ( ReadWord7705() ); } void main() { Init7705(1,1,1); init1602(); while(1) { while(!drty) { temp=GetData7705(1); write_dt1602(temp); delay(5); } } }
/
本文档为【AD7705测试程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索