找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

stc12单片机+AD7091R无法正常显示输入

查看数: 3887 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-7-12 09:45

正文摘要:

各位大佬,我想用AD读取下电压,通过LCD显示,单片机用的STC12C5A60S2,20M外接晶振,1T的工作模式,AD用的AD7091R,这个AD是SPI的方式通信,但是写完程序调试不出结果,有没有输入都是显示4.99V,感觉是AD的DO引脚 ...

回复

ID:708541 发表于 2021-7-16 15:49
单片机自带AD操作容易,有范例程序直接可以用,自带AD现在随便都10位和12位精度一般应用够用了,你自己用AD芯片程序和时序搞不对,就无法AD转换。
ID:947166 发表于 2021-7-16 09:48
glinfei 发表于 2021-7-15 11:12
我那天就想问,你手册上给的最大读取时间好短啊,比如T4 只有3ns,都不够if用的,能否先把ad_do赋值个中 ...

放弃了,杠了几天没办法了,就用自带的AD吧,谢谢啦
ID:844772 发表于 2021-7-15 11:12
Capta1nY 发表于 2021-7-15 10:46
问一下各位大佬,有没有可能是51的时钟频率不够,我查到的用这个AD的都是FPGA和32的

我那天就想问,你手册上给的最大读取时间好短啊,比如T4 只有3ns,都不够if用的,能否先把ad_do赋值个中间变量,再去判断?另外那些我看延时也用不着了。
ID:947166 发表于 2021-7-15 10:46
问一下各位大佬,有没有可能是51的时钟频率不够,我查到的用这个AD的都是FPGA和32的
ID:947166 发表于 2021-7-14 09:56
glinfei 发表于 2021-7-13 16:09
看你发的手册应该在CLK下沿读DO,但你程序写的是上沿读啊。
就这段  ad_clk = 1;
           dat

你说的有道理,我改成了
  1.   for(i=0; i<12; i++){
  2.                 ad_clk = 1;Delay1us();
  3.                 ad_clk = 0;
  4.                 dat <<= 1;
  5.                 if(ad_do) dat |= 0x0001;
  6.                 Delay1us();               
  7.   }
复制代码

结果还是没效果
ID:844772 发表于 2021-7-13 16:09
看你发的手册应该在CLK下沿读DO,但你程序写的是上沿读啊。
就这段  ad_clk = 1;
           dat <<= 1;Delay1us();
           if(ad_do) dat |= 0x0001;
           Delay1us();
           ad_clk = 0; Delay1us();
ID:947166 发表于 2021-7-13 14:10
本帖最后由 Capta1nY 于 2021-7-13 14:20 编辑
5191 发表于 2021-7-13 11:36
stc不是有自带ad吗

是,但是目前电路已经设计好了,就想着能用就用吧,之前用过0832没啥问题,换了个结果调不出来了,您有什么建议吗
ID:500971 发表于 2021-7-13 11:36
stc不是有自带ad吗
ID:123289 发表于 2021-7-12 17:26
以上你做到了吗?
ID:123289 发表于 2021-7-12 17:24
仔细读手册:
1、数据是串行工作的,每位数据的切换是需要时间的,切换位数(CLK)不要超过允许的时间。
2、数据切换后,要等数据稳定了再读取,要防止读到数据的边沿上。
3、AD转换需要时间,当下达开始转换之后,要确保转换已结束了,这时再读数据。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表