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

AD2S1200驱动程序

2017-12-28 5页 doc 17KB 31阅读

用户头像

is_769254

暂无简介

举报
AD2S1200驱动程序AD2S1200驱动程序 自己写的AD2S1200控制程序分享给大家,呵呵 /************************************************************ AD2S1200控制程序 单片机为STC89C51/2或AT89S52 所用晶振为11.0592MHz 本程序根据AD2S1200时序图进行编定 ************************************************************/ #include //头文件 #inclu...
AD2S1200驱动程序
AD2S1200驱动程序 自己写的AD2S1200控制程序分享给大家,呵呵 /************************************************************ AD2S1200控制程序 单片机为STC89C51/2或AT89S52 所用晶振为11.0592MHz 本程序根据AD2S1200时序图进行编定 ************************************************************/ #include //头文件 #include //_nop_();延时数用 #include //数学函数 #include #define uchar unsigned char //宏定义 #define uint unsigned int //宏定义 /************************************** 硬件数据定义 **************************************/ sbit sclk = P1^0; //AD2S1200串行时钟信号 sbit so = P1^1; //AD2S1200串行数据信号 sbit rdvel = P1^2; //AD2S1200数据判断信号,高示位置数据,低表示速度数据 sbit sample = P1^3; //AD2S1200采样信号 当sample信号由负跳变时,位置和速度积分器采样并将数据存至位置和速度寄存器 sbit cs = P1^4; //AD2S1200片选信号,在串行通信时可与RD信号相同。 sbit rd = P1^5; //2号AD芯片片选信号 uint ad2s[2]; /************************************** AD2S1200初始化 **************************************/ void init_ad2s1200(void) { sclk=1; so=1; rdvel=1; sample=1; cs=1; rd=1; } /************************************** 读取AD2S1200数据 void rd_ad2s1200(*int ad2s1200) **************************************/ void rd_ad2s1200(uint *ad2s) { uchar i;//局部变量,用于计数 uint j=0;//局部变量,用于暂时存放读到的数据 sample=0;//开始采样 sclk=1; _nop_(); _nop_(); _nop_(); rd=0;//读信号 cs=0;//片选 rdvel=1;//读取位置数据 _nop_(); _nop_(); _nop_(); for(i=0;i<16;i++) { j=j<<1; sclk=0; _nop_(); if(so==1) { j=j|0x0001; } else { j=j|0x0000; } sclk=1; } *(ad2s+0)=j>>4;//将数据通过指针转存指定的数组中 j=0; rdvel=0; //读取速度数据 _nop_(); _nop_(); for(i=0;i<16;i++) { j=j<<1; sclk=0; _nop_(); if(so==1) { j=j|0x0001; } else { j=j|0x0000; } sclk=1; } *(ad2s+1)=j>>4;//将数据通过指针转存指定的数组中 rd=1; cs=1; sclk=1; sample=1; rdvel=1; } /************************************** 主函数 **************************************/ void main() { int pos_ad2s[3],vel_ad2s[3],aver_pos,aver_vel;//前者用存放位置数据,后者用于存放速度数据 uchar i; init_ad2s1200(); for(i=0;i<3;i++) { rd_ad2s1200(ad2s); pos_ad2s[i]=ad2s[0]; vel_ad2s[i]=ad2s[1]; } for(i=0;i<3;i++) { aver_pos=aver_pos+pos_ad2s[i]/3; aver_vel=aver_vel+vel_ad2s[i]/3; } }
/
本文档为【AD2S1200驱动程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索