打印
[DemoCode下载]

51单片机实现MAX517芯片的D/A转换 程序+电路图。按一次KO键...

[复制链接]
1002|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
芙蓉洞|  楼主 | 2015-12-15 20:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*****************************************************************************/
/*功能:实现MAX517芯片的D/A转换。没按一次KO键,数字量加一,******************/
/*显示的模拟量增加一个单位*/
/****************************************************************************/
#include <reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SCL=P1^0;
sbit SDA=P1^1;
sbit K0=P2^0;
void start(void)
{
SDA=1;
SCL=1;
_nop_();
SDA=0;
_nop_();
}
void stop(void)
{
SDA=0;
SCL=1;
_nop_();
SDA=1;
_nop_();
}
void ack(void)
{
SDA=0;
_nop_();
SCL=1;
_nop_();
SCL=0;
}


沙发
芙蓉洞|  楼主 | 2015-12-15 20:41 | 只看该作者
void send(uchar ch)
{
uchar BitCountter =8;
uchar tmp;
do
{
tmp=ch;
SCL=0;
_nop_();
if((tmp&0x80)==0x80)
SDA=1;
else
SDA=0;
SCL=1;
tmp=ch<<1;
ch=tmp;
BitCountter--;
}
while(BitCountter);
SCL=0;
}
void DACout(uchar ch)
{
start();
send(0x58);
ack();
send(0x00);
ack();
send(ch);
ack();//
stop();
}
void main(void)
{
uchar i;
i=0xff;
while(1)
{
if(!K0)
{
i++;
while(!K0);
}
DACout(i);
}
}

使用特权

评论回复
板凳
芙蓉洞|  楼主 | 2015-12-15 20:41 | 只看该作者





使用特权

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

本版积分规则

42

主题

398

帖子

3

粉丝