打印

这个程序不知道怎么弄的

[复制链接]
1214|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tc, ck, AD, FOR, tcl
sbit clock_ad = P3^6;//时钟线
sbit  dout_ad = P3^4;//数据输出端
sbit    cs_ad = P3^5;//片选(低电平有效)
sbit   din_da = P2^6;
sbit   sck_da = P2^4;
sbit    cs_da = P2^5;

void DA(uint j)
{
        uchar i;
        uchar temp=j;
        sck_da=0;
        cs_da=0;
        for(i=0;i<12;i++)//为什么这要溢出12次啊 改成8时 仿真输出值不准确
        {
                temp=temp<<1;
                din_da=CY;
                sck_da=1;
                _nop_();
                sck_da=0;
        }
        cs_da=1;
}
uchar read_549()//数据得采集
{
   uchar i;
   uint k=0x00;//定义一个变量k,将在dout上采集的到的数据装进K
   dout_ad=1;//该地方置不置高电平都可以,应为单片机的I/O口默认值为高点平
   for(i=0;i<8;i++)
    {
   if(dout_ad)
    {
      k++;
    }
    k=k<<1;
    clock_ad=1;//高电平期间采集dout线上的数据
    clock_ad=0;
    _nop_();
}
   return k;//返回值
}

uchar shuchu_549()//数据得读取
{
   uint date;
   cs_ad=0;//片选低电平时数据有效
   date=read_549();//将read_549()函数中采集到的数据付给变量date
   cs_ad=1;//片选拉高,表示数据读取完毕
   _nop_();
   return date;//返回值
}

void main()
{
        uint date;
        uint i;
   while(1)
   {
           date=shuchu_549();
                DA(date);
               
        }
}

相关帖子

沙发
胡斯哲|  楼主 | 2013-3-13 22:42 | 只看该作者
电路图

未命名.jpg (207.89 KB )

未命名.jpg

使用特权

评论回复
板凳
51xlf| | 2013-3-14 00:36 | 只看该作者
难不成是12位的AD?

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3
地板
51xlf| | 2013-3-14 00:36 | 只看该作者
要不别的也解释不通的吧

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3
5
胡斯哲|  楼主 | 2013-3-15 09:45 | 只看该作者
51xlf 发表于 2013-3-14 00:36
难不成是12位的AD?

是8位的啊。。。。英文手则的第二排就是8-bit resolution A/d converter。。。
真不知怎么弄

使用特权

评论回复
6
51xlf| | 2013-3-17 00:03 | 只看该作者
10位的DA改成8 不正确的吧!

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3
7
cjhk| | 2013-3-17 17:04 | 只看该作者
不是很了解  楼主   兄弟帮你顶一个  呵呵

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:读书喝茶,不争朝夕

141

主题

1431

帖子

6

粉丝