找回密码
 立即注册
查看: 224|回复: 0

AT89C52实现的DA输出

[复制链接]
发表于 2023-2-21 19:12 | 显示全部楼层 |阅读模式
AT89C52控制DAC0808实现的DA输出
下面是其Proteus实现图:




下面是其C51代码:
#include<reg52.h>
int d1,d2,d3,d4;
float d;
int dis[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void init()
{
P3=0xfe; //使 P3 输出高电平
P1=dis[0]; //初始化,使其输出全 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[d1]|0x80;
P2=0x0e;
Delay5();  //显示第二位
P2=0xff;
P1=dis[d2];
P2=0x0d;
Delay5();  //显示第三位
P2=0xff;
P1=dis[d3];
P2=0x0b;
Delay5();  //显示第四位
P2=0xff;
P1=dis[d4];
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();
}
}
}
}
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 06:55 , Processed in 1.754801 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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