AT89C52实现的DA输出
AT89C52控制DAC0808实现的DA输出下面是其Proteus实现图:
http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif
下面是其C51代码:
#include<reg52.h>
int d1,d2,d3,d4;
float d;
int dis={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void init()
{
P3=0xfe; //使 P3 输出高电平
P1=dis; //初始化,使其输出全 O
P2=0x00;
ET0=0;// 禁用T0中断
ET1=0;//禁用T1中断
EX0=0; //禁止外0中断
EX1=0; //禁止外1中断
EA=0;// 中断禁止
}
void Delay5() //延时 5ms
{
int i;
for(i=5;i>0;i--)
;
}
void Display()
{
P2=0xff;//显示第一位
P1=dis|0x80;
P2=0x0e;
Delay5();//显示第二位
P2=0xff;
P1=dis;
P2=0x0d;
Delay5();//显示第三位
P2=0xff;
P1=dis;
P2=0x0b;
Delay5();//显示第四位
P2=0xff;
P1=dis;
P2=0x07;
Delay5();
}
void main()
{
int i,j,k;
init();
for(i=0;i<=255;i++)
{
P0=i;
d=((1.99/255))*i;
d1=(int)d;
d2=(int)(d*10);
d3=(int)(d*100);
d4=(int)(d*1000);
for(j=200;j>0;j--)
{
for(k=20;k>0;k--)
{
P0=i;
Display();
}
}
}
}
页:
[1]