完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
采用的是STC12C5A60S2单片机:
/********************************************************************** *名称 : WriteData() *功能 : 写数据到AD7190 *输入 : 无 *输出 : 无 ***********************************************************************/ void WriteData(uchar Data) { uchar i=0; Sclk=1; /*时序*/ _nop_(); /*延时*/ Cs=1; _nop_(); Cs=0; /*片选*/ for(i=0;i<8;i++) /*24位数据分三个8位写入*/ { Sclk=0; if((Data&0x80)==0x80) Din=1; /*写1*/ else Din=0; /*写0*/ _nop_();_nop_();_nop_();_nop_(); Sclk=1; /*一个时钟的上升沿送走一位数据*/ _nop_();_nop_();_nop_();_nop_(); Data<<=1; /*左移一位,进行第二位的写入*/ } Cs=1; /*关片选*/ } /********************************************************************** *名称 : ReadAdcData() *功能 : 从AD7190读数据 *输入 : 无 *输出 : 无 ***********************************************************************/ uchar ReadAdcData() { uchar i=0; uchar Data=0x00; Sclk=1; /*时序*/ _nop_(); /*延时*/ Cs=1; _nop_(); Cs=0; /*片选*/ for(i=0;i<8;i++) { Sclk=0; Data=Data<<1; _nop_();_nop_(); Sclk=1; if(Dout==1) Data=Data+0x01; /*存1*/ } Cs=1; /*关片选*/ return(Data); } /********************************************************************** *名称 : RstAd7190() *功能 : AD7190软件复位程序程序 *输入 : 无 *输出 : 无 ***********************************************************************/ void RstAd7190() { uchar i; for(i=0;i<5;i++) { WriteData(0xff); /*连续写40个1*/ } } /********************************************************************** *名称 : InitAdc() *功能 : AD转换初始化程序 *输入 : 无 *输出 : 无 ***********************************************************************/ void InitAdc() { //(一).设置配置寄存器 WriteData(0x10); /*通信寄存器R/W(Bit) 0-写 1-读 .Rs2 Rs1 Rs0(Bit5-Bit3) 0 1 0-配置寄存器*/ WriteData(0x80); /*Chop=1.斩波使能.*/ WriteData(0x01); /*CH0=1.AIN1+.AIN1-*/ WriteData(0x10); /*B/U=0.双极性 1.单极性*/ while(Rdy); //(二).设置模式寄存器(内部零点校准) WriteData(0x08); /*通信寄存器R/W(Bit) 0-写 1-读 .Rs2 Rs1 Rs0(Bit5-Bit3) 0 0 1-模式寄存器*/ WriteData(0x80); WriteData(0x00); WriteData(0x60); while(Rdy); //(三).设置模式寄存器(内部满量程校准) WriteData(0x08); /*通信寄存器R/W(Bit) 0-写 1-读 .Rs2 Rs1 Rs0(Bit5-Bit3) 0 0 1-模式寄存器*/ WriteData(0xa0); WriteData(0x00); WriteData(0x60); while(Rdy); //(四).设置模式寄存器 WriteData(0x08); /*通信寄存器R/W(Bit) 0-写 1-读 .Rs2 Rs1 Rs0(Bit5-Bit3) 0 0 1-模式寄存器*/ WriteData(0x00); /*Md2 Md0=0 0 0.连续转换模式.Clk1 Clk0= 0 0.外部时钟*/ WriteData(0x00); /*Sinc3=1.Sin4斩波使能*/ WriteData(0x60); /*Fs9-Fs0=96.Fout=12.5Hz*/ while(Rdy); } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
寻求ADF5355类似的微波源,在DC-15GHz内,锁频时间在1ms内
1815 浏览 0 评论
1668 浏览 0 评论
1031 浏览 0 评论
1129 浏览 0 评论
ADF5355失锁: 在用ADF5355进行多次扫频时,延时给了500ms还是经常会失锁
1217 浏览 0 评论
2123浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
2151浏览 2评论
1203浏览 2评论
使用ADI官方提供的no-OS來接收GPS L1(1575.42MHz)的資料
1428浏览 1评论
2005浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 18:39 , Processed in 0.754943 second(s), Total 73, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
508