51综合程序04-ADC0808与DAC0808的应用

一、ADC0808调温报警器

1. 简单介绍

ADC0808 是一款 8 位模数转换器(Analog-to-Digital Converter,简称 ADC),由National Semiconductor(现在是 TI,Texas Instruments)生产。该芯片是一种单通道、逐次逼近型 ADC,用于将模拟信号转换为相应的 8 位数字信号。以下是 ADC0808 的一些基本特性:

  • 位数: 8 位
  • 通道数: 单通道
  • 转换方式: 逐次逼近型(Successive Approximation Type)
  • 输入范围: 0 到 5V
  • 输入电流: 1 μA
  • 转换时间: 大约 100 μs(微秒)
  • 数据输出: 二进制编码
  • 供电电压: 5V(通常)

ADC0808主要用于将模拟传感器输出的电压信号(0-5V)转换为数字信号,以便微控制器或数字系统进行控制。其工作原理是通过逐次逼近法,逐渐逼近输入模拟信号的值,直至找到相应的数字编码。

2. 电路连接图

在这里插入图片描述

3. 源代码
#include <reg51.h>

sbit h_alm=P3^0; 
sbit l_alm=P3^1;
sbit sound=P3^7;

sbit CLOCK=P2^4;
sbit START=P2^5;  //START为0时开始转换
sbit ECO=P2^6; //为1 时表明数据转换完成
sbit OE=P2^7;  //为1时读可以取数据

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};	//代表显示0-9
unsigned char adc;


void delay()	 //延时
{
	unsigned char i,j;
	for(i=0;i<100;i++)
	for(j=0;j<15;j++);
}

void main()
{	
	TMOD=0x12;  //方式2即常数自动装入八位定时或计数器,受外部引脚控制
	TH0=245;
	TL0=0;
	TH1=(65536-1000)/256;
	TL1=(65536-1000)%256;	//给定时器赋初值
	IE=0x8a;   //允许定时器0和定时器1外部中段
	TR0=1;	 //定时器0开始计数
	
	while(1) 
	{
		h_alm=1; //灯灭
		l_alm=1; //灯灭
		START=0;  
		START=1;  //产生一个时钟脉冲
		START=0;
		while(ECO==0); //ECO为1表明数据转换完成
		OE=1;	  //OE为1开始读取数据
		adc=P1;
		OE=0;

		if(adc<60)	  //当读取数据小于60时灯亮并且蜂鸣器报警
		{ 
			l_alm=0;
			TR1=1;			
		}
		else if((adc>160))	   //当读取数据大于160时灯亮并且蜂鸣器报警
		{
			h_alm=0;
			TR1=1;
		}
		else
			TR1=0;	
		
		P2=0xf7;            //数码管显示
		P0=table[adc%10];
		delay();
		P2=0xfb;
		P0=table[adc/10%10];
		delay();
		P2=0xfd;
		P0=table[adc/100];
		delay();
	}
}

void  T0_srv(void) interrupt 1 		 //灯闪
{
 CLOCK=!CLOCK;

}

void T1_srv(void) interrupt 3 
{												//蜂鸣器报警
	TH1=(65536-1000)/256;
	TL1=(65536-1000)%256;
	
	sound=!sound;
}
4. 实验效果

二、DAC0808直流电机调速器

1. 简单介绍

DAC0808 是一款 8 位数字模拟转换器(Digital-to-Analog Converter,缩写为 DAC),由National Semiconductor(现在是 TI,Texas Instruments)生产。这款芯片用于将数字信号转换为模拟电压输出。以下是 DAC0808 的一些基本特性:

  • 位数: 8 位
  • 通道数: 单通道
  • 转换方式: 逐次逼近型(Successive Approximation Type)
  • 输出范围: 0 到 Vref(参考电压)
  • 分辨率: 8 位,即 256 个输出级别
  • 更新速率: 可高达 1 MHz(取决于时钟频率)
  • 供电电压: 通常为 +5V

DAC0808主要用于将数字信号(通常是微控制器或数字系统的输出)转换为相应的模拟电压。通过调整输入的数字值,可以在输出引脚获得相应的模拟电压。

2. 电路连接图

在这里插入图片描述

3. 源代码
#include <reg51.h>

sbit  k1=P3^0;//共8挡
sbit  k2=P3^1;
sbit  k3=P3^2;
sbit  k4=P3^3;
sbit  k5=P3^4;
sbit  k6=P3^5;
sbit  k7=P3^6;
sbit  k8=P3^7;


void delayms(unsigned int ms)  /*延时*/
{
	unsigned char  t;
	while (ms--) for(t=0;t<120;t++);
}

void  main()  /*主程序*/
{
	P0=0x00;
	while(1)
	{
		if (k1==0)	P0=0;
		if (k2==0)	P0=40;
		if (k3==0)	P0=80;
		if (k4==0)	P0=120;
		if (k5==0)	P0=160;
		if (k6==0)	P0=180;
		if (k7==0)	P0=220;
		if (k8==0)	P0=240;
		delayms(2);
	}
}
4. 实验效果

  • 19
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值