搜索
bottom↓
回复: 1

哪位大神用过AD420这个芯片啊,求指导

[复制链接]

出0入0汤圆

发表于 2012-5-16 22:30:53 | 显示全部楼层 |阅读模式
自己用AD420做的4~20mA输出模块一直没有电流输出,自己感觉软硬件都有问题,硬件就没法放上来啦。这是我写的一个AD420的程序,求各位大神指正

/****************************************************
高精度数模转换器AD420C51程序
功能:输入0x0 ~ 0xffff,输出相对应的电流值
晶振频率:12MHz
****************************************************/
#include <reg52.h>
#include <intrins.h>

/*函数:延时1us*/
void delay1us(void)
{
        _nop_ ();
}

/*函数:延时若干微秒*/
void delaynus (unsigned char n)
{
        unsigned char i;
       
        for (i = 0; i < n; i ++)
                delay1us ();
}

/*函数:延时若干毫秒*/
void delaynms(unsigned char n)
{
        unsigned char i;
       
        while (n --)
        {
                for (i = 0; i < 115; i ++)
                        ;

        }
}


unsigned int ad420_output[] = {0xffff, 0xbfff, 0x7fff, 0x3fff, 0x0000}; //五个测试数据

sbit AD420_LAT = P1^0;     //锁存
sbit AD420_CLK = P1^1;     //时钟
sbit AD420_DI = P1^2;      //数据输入

/*函数:把数据写入AD420*/
void write_AD420 (unsigned int ad420_data)
{
        unsigned char i;

        AD420_LAT = 1;      //锁存置1
        for (i = 0; i < 16; i ++)
        {
                AD420_CLK = 0;     //时钟置0,然后写入数据
                if (ad420_data & 0x8000)  //写入数据
                        AD420_DI = 1;
                else
                        AD420_DI = 0;
                delaynus (10);
                AD420_CLK = 1;     //时钟置1,上升沿写入数据
                delaynus (10);
                ad420_data <<= 1;  //数据移位

        }
        AD420_CLK = 0;
        delaynus (5);
        AD420_LAT = 0;
        delaynus (5);
        AD420_LAT = 1;    //把16位数据写完,再在锁存端的上升沿把数据写到DAC
        delaynus (5);


}

void main (void)
{
        unsigned char i;
        while (1)
        {
                for (i = 0; i < 5; i ++)
                {
                        write_AD420 (ad420_output[i]);  //分别把五个数据写到AD420
                       
                        delaynms (200);  //延时,便于观察测试
                        delaynms (200);
                        delaynms (200);
                        delaynms (200);
                        delaynms (200);
                        delaynms (200);
                        delaynms (200);
                        delaynms (200);
                        delaynms (200);
                        delaynms (200);
                       
                }
        delaynms (200);
        delaynms (200);
        }

}

另外,还有几个问题:
1.AD420AR-32和AD420AN-32有什么区别?
2.如何检测芯片的好坏?
谢谢各位!!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-5-16 23:59:54 | 显示全部楼层
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 02:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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