打印

求助!求助了一星期,依然没解决,求高手帮忙解决!

[复制链接]
4013|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jxlyyr3|  楼主 | 2011-8-28 11:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我的程序功能是输入模拟信号经ad1674转换成数字信号;89s52通过锁存器与ad1674连接,读取数字信号,在通过串行口输出到计算机。程序如下:
#include <absacc.h>
#include <reg52.h>
#define uint unsigned int
#define ADCOM4 XBYTE[0XBFFC]
#define ADL4  XBYTE[0XBFFF]
#define ADH4  XBYTE[0XBFFE]
sbit adbusy4=P3^3;
sbit r=P3^7;
uint result3,result4,ad;
int i;
char ad1;
uint read4(void)   /*读取U4即AD1674的转换值*/
{
ADCOM4=0;
while(adbusy4==1);
return((uint)(ADH4<<4)+(ADL4&0X0F));
}
void adtxd(tx_data)   /*串行口输出程序*/
{
ad=tx_data;
SCON= 0x40;                /*串口方式1*/
PCON=0;                     /*SMOD=0*/
/*REN=1;                     /*允许接收*/
TMOD=0X20;
TH1=0XE6;
TL1=0XE6;
TR1=1;        /*高八位*/
ad1=ad/256;
SBUF=ad1;
while(!TI);TI=0;
SBUF=ad%256;      /*低八位*/
while(!TI);TI=0;            /*等待发送完毕 */
}
void timer0(void)interrupt 1 using 1
{
i++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(i==1)
{
  result3=read3();

  adtxd(result3);
}
}
main()
{
i=0;
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
do{}while(1);
}   
当我给他输入500mv的模拟信号,通过串行口助手输出数字信号,发现输出的是0f ef 0f ef,很明显转换出问题了。可是不知道到底是什么原因呢,我个人觉得程序没有错误啊。另外我发现电路板上ad1674很热,其他芯片都没啥感觉的。ad转换结束的信号sts好像一直没出来,不知道什么原因。

ad674.png (9.96 KB )

用示波器测量3、4、5脚时都是偶尔一条竖线指向低电平

用示波器测量3、4、5脚时都是偶尔一条竖线指向低电平

74ls373.png (27.78 KB )

2、5引脚信号状态也是偶尔忽然指向低电平,只是一根竖线

2、5引脚信号状态也是偶尔忽然指向低电平,只是一根竖线

89s52.png (13.04 KB )

89s52.png

max232.png (20.74 KB )

max232.png

相关帖子

沙发
NE5532| | 2011-8-28 11:53 | 只看该作者
你再这样求助1年也没人来帮你,找问题要学会把问题分模块,一个模块一个模块的找。如果我*想象都可以把你的问题找出来,请叫我“神”。

楼主先给我们分个模块来看看呢。

使用特权

评论回复
板凳
wangjun403| | 2011-8-28 12:16 | 只看该作者
时序,最可能的问题

使用特权

评论回复
地板
jxlyyr3|  楼主 | 2011-8-28 15:55 | 只看该作者
不好意思啊,我是新手,能否给我点建议,不大明白分成几个模块的意思,谢了!
我想单独问问,ad1674发热比其他芯片厉害正常吗,谢谢! 2# NE5532

使用特权

评论回复
5
jxlyyr3|  楼主 | 2011-8-28 15:57 | 只看该作者
谢谢你的帮助!可否给我讲的详细一些呢?谢谢了! 3# wangjun403

使用特权

评论回复
6
dqyubsh| | 2011-8-28 17:55 | 只看该作者
第一感觉,373这样接很奇怪,不认识。

AD的第一脚是不接了5V?

这个要一个一个地查。发热,首先查电源和地。供电过程有没有出错过。再看焊接有没有连的。片子是否坏了。很热是一定不对的。

解决了发热再查功能。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
jxlyyr3 + 1
7
virtualtryon| | 2011-8-28 19:43 | 只看该作者
我觉得应该是AD1674输出电平和74LS373的输入电平不兼容导致的。没有看到AD1674的数字电源,难道内部自带REGULATOR?如果是这样,有可能是电平不兼容,AD1674的输出与74LS373的输入端口之间加限流电阻试试。

使用特权

评论回复
8
729144646| | 2011-8-28 19:47 | 只看该作者
感觉芯片的接法都不是常规的

使用特权

评论回复
9
xyz769| | 2011-8-28 21:41 | 只看该作者
1674你这样接,不发热才怪。。

 你对AD的理解可能有问题。。

使用特权

评论回复
10
哲哲55| | 2011-8-29 07:25 | 只看该作者
AD正負十五伏供電,第一次見到、、、、、好片子呀

使用特权

评论回复
11
huihuangfiler| | 2011-8-29 09:26 | 只看该作者
首先确定是硬件还是软件的问题,硬件问题就不说了。然后再把软件逐个分开,增加一些小的测试程序验证各个功能,到哪一步出现和预想的设计不正常,问题就出现在哪里了。排除法就可以找到问题的所在,

使用特权

评论回复
12
Ryanhsiung| | 2011-8-29 10:06 | 只看该作者
我没有看LZ的程序,没有分析,以下意见仅为个人意见
并口的AD芯片,好浪费引脚哦!
12位的AD,用单独芯片没有意义。
    直接换个单片机,片内直接内置AD外设的!

使用特权

评论回复
13
jxlyyr3|  楼主 | 2011-8-29 10:10 | 只看该作者
非常感谢你的指点!确实是忘记一脚接+5V了,接上电源后,能够正常工作了。谢谢了! 6# dqyubsh

使用特权

评论回复
14
jxlyyr3|  楼主 | 2011-8-29 10:12 | 只看该作者
谢谢你能够帮助我!六楼指出了我ad1674接法的一个错误,改正了之后就可以了,谢谢! 7# virtualtryon

使用特权

评论回复
15
jxlyyr3|  楼主 | 2011-8-29 10:13 | 只看该作者
谢谢你的指导!我是新手,刚开始用这些芯片,也是参考别人的一些成果,所以不是很懂。谢谢了! 8# 729144646

使用特权

评论回复
16
jxlyyr3|  楼主 | 2011-8-29 10:14 | 只看该作者
看到你的指点,我凉了....非常感谢你的指点,能否说的详细一点,把我的问题都指出来,让我能够进步,非常感谢! 9# xyz769

使用特权

评论回复
17
jxlyyr3|  楼主 | 2011-8-29 10:16 | 只看该作者
我是从介绍芯片的**里看到的,貌似可以吧?我也不是很清楚,谢谢指导了! 10# 哲哲55

使用特权

评论回复
18
NE5532| | 2011-8-29 12:41 | 只看该作者
所谓模块,就是自己做事的顺序,把一个浩大的事情分成若干个步骤来实现。就不会感觉无从下口了。

使用特权

评论回复
19
jxlyyr3|  楼主 | 2011-8-29 19:29 | 只看该作者
您好,我还有一个参考电压refout不准确的问题,您能否指点一下呢?谢了! 6# dqyubsh

使用特权

评论回复
20
jxlyyr3|  楼主 | 2011-8-29 19:30 | 只看该作者
您好!我还有一个refout参考电压不准的问题,麻烦你也帮我解释一下吧,谢谢了! 7# virtualtryon

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

45

帖子

1

粉丝