单片机控制发光二极管DAC0832输出电流,发光二极管D12由灭均匀变亮再由亮均匀熄灭,重复三次,时间约9秒

查看: 505|回复: 2
分享个单片机控制DAC0832芯片输出电流实验
STC89C52面包板实测可用
发光二极管D12由灭均匀变到最亮,再由最亮均匀熄灭。在最亮和最暗时使用蜂鸣器分别警报一声,完成整个周期时间控制在5s左右,循环变化。
(15.92 KB, 下载次数: 3)
11:07 上传
点击文件名下载附件
整个uvproj工程
源程序:
#include&reg52.h&
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit dawr=P3^6;
sbit dacs=P3^2;
sbit beep=P2^3;
void delayms(uint xms)
{
& & & & uint i,j;
& & & & for(i=i&0;i--)
& & & & & & & & for(j=110;j&0;j--);
}
void main()
{
& & & & uchar val,
& & & & dula=0;
& & & & wela=0;
& & & & dacs=0;
& & & & dawr=0;
& & & & P0=0;
& & & & while(1)
& & & & {
& & & & & & & & if(flag==0)
& & & & & & & & {
& & & & & & & & & & & & val+=5;
& & & & & & & & & & & & P0=
& & & & & & & & & & & & if(val==255)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & flag=1;
& & & & & & & & & & & & & & & & beep=0;
& & & & & & & & & & & & & & & & delayms(100);
& & & & & & & & & & & & & & & & beep=1;
& & & & & & & & & & & & }
& & & & & & & & & & & & delayms(50);
& & & & & & & & }
& & & & & & & & else
& & & & & & & & {
& & & & & & & & & & & & val-=5;
& & & & & & & & & & & & P0=
& & & & & & & & & & & & if(val==0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & flag=0;
& & & & & & & & & & & & & & & & beep=0;
& & & & & & & & & & & & & & & & delayms(100);
& & & & & & & & & & & & & & & & beep=1;
& & & & & & & & & & & & }
& & & & & & & & & & & & delayms(50);
& & & & & & & & }
& & & & }
}复制代码
 郭天祥的源代码
骗子,居然没有仿真原理图
Powered byproteus仿真DAC0832控制发光二极管,但发光二极管不亮 - proteus论坛|仿真论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
Hot [精品]
proteus仿真DAC0832控制发光二极管,但发光二极管不亮
11:25:42  
本帖最后由 gaoyuanyu 于
11:30 编辑
下面是proteus的电路图,用proteus仿真DAC0832控制发光二极管由暗到最亮再到灭,但发光二极管就不亮,哪位高手帮下忙怎么回事,谢谢您!
(37.12 KB, 下载次数: 9)
11:28 上传
15:05:59  
呵呵,你加个电压探针看看电压是正还是负。二极管发光是有方向的!懂没!
17:36:44  
PCB在线计价下单
板子大小:
板子数量:
PCB 在线计价
发光二极管方向没接错,真找不出为什么?能不能帮看看电路图有没有错?谢谢!
22:50:44  
发光二极管方向没接错,真找不出为什么?能不能帮看看电路图有没有错?谢谢! ...
你这是反比例对不,输出电压是负对不!
22:51:57  
发光二极管方向没接错,真找不出为什么?能不能帮看看电路图有没有错?谢谢! ...
要不你就上传仿真和编译文件。我试试!
09:31:38  
本帖最后由 gaoyuanyu 于
09:42 编辑
好的,谢谢你们的热心回答,上传Keil工程您看看怎么回事(Keil工程中还有对蜂鸣器的操作,不过电路还没加它,看二极管效果应该不受影响的)?
09:42 上传
点击文件名下载附件
下载积分: 积分 -1 分
7.93 KB, 下载次数: 17, 下载积分: 积分 -1 分
09:35:16  
怎么仿真电路文件不能一起上传?再传下吧。非常感谢高手帮解决难题,本来都没信心再仿真它了。
09:34 上传
点击文件名下载附件
下载积分: 积分 -1 分
91.42 KB, 下载次数: 21, 下载积分: 积分 -1 分
09:46:27  
有知道怎么回事的吗?
23:01:28  
有知道怎么回事的吗?
现在下载要积分啊!真的我没说错!那个是反比例!
10:25:52  
有知道怎么回事的吗?
没解决? 运放输出是负电压&&你用电压表一测就知道,反着接二极管
15:26:33  
怎么仿真电路文件不能一起上传?再传下吧。非常感谢高手帮解决难题,本来都没信心再仿真它了。
你那个二极管和地根本就没接上
等待验证会员
18:34:20  
DAC0832输出的是电流,经过反方向放大器之后电压是负的,所以你二极管应该反过来接,这样就会亮起来!
等待验证会员
13:13:57  
发光二极管反过来就对了
14:37:37  
看看 学习学习
工程师职场
Powered by
供应链服务
商务及广告合作
Jeffery Guo
关注我们的微信
供应链服务 PCB/IC/PCBA
版权所有 (C) 深圳华强聚丰电子科技有限公司21ic官方微信-->
后使用快捷导航没有帐号?
请完成以下验证码
查看: 4679|回复: 11
DAC0832直通方式怎么能驱动发光二极管呢?
&&已结帖(10)
主题帖子积分
初级技术员, 积分 54, 距离下一级还需 46 积分
初级技术员, 积分 54, 距离下一级还需 46 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
初级技术员, 积分 54, 距离下一级还需 46 积分
初级技术员, 积分 54, 距离下一级还需 46 积分
本帖最后由 zhoukouguren 于
20:02 编辑
DAC0832芯片在直通方式转换时,VREF接+5V,WR1 WR2&&XFER 全接地,ILE VCC接+5V,由IOUT1接个发光二极管,发光二极管怎么会亮呢?DAC0832芯片输出IOUT1 IOUT2不是才200na的电流么?
我在proteus里仿真,发光二极管不亮,但是同样的程序,同样的接法,为什么开发板上的就能由暗到亮发光?
#include&reg52.h&
#define uchar unsigned char
#define uint unsigned int
sbit cs=P3^0;
sbit wr=P3^1;
void delayms(uint x)
for(y=x;y&0;y--)
&&for(z=110;z&0;z--);
void main()
&&delayms(1);
满意回复+10
谁告诉你IOUT1 IOUT2才200na的电流?
IOUT1的输出电流是IOUT1=Vref/15K*(DATA/256)。
你的图VREF那有接地?真接地的话肯定是亮不了的。 ...
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子积分
主题帖子积分
专家等级:结帖率:46%打赏:135.80受赏:158.50
主题帖子积分
这年代.天才特别多
←← +→→←←
主题帖子积分
初级技术员, 积分 54, 距离下一级还需 46 积分
初级技术员, 积分 54, 距离下一级还需 46 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
初级技术员, 积分 54, 距离下一级还需 46 积分
初级技术员, 积分 54, 距离下一级还需 46 积分
楼上的,是不是正在设计一款新型MCU带动国内技术水平大进步,所以忙的只能说句风凉话了呢
主题帖子积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
谁告诉你IOUT1 IOUT2才200na的电流?
IOUT1的输出电流是IOUT1=Vref/15K*(DATA/256)。
你的图VREF那有接地?真接地的话肯定是亮不了的。
主题帖子积分
初级技术员, 积分 54, 距离下一级还需 46 积分
初级技术员, 积分 54, 距离下一级还需 46 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
初级技术员, 积分 54, 距离下一级还需 46 积分
初级技术员, 积分 54, 距离下一级还需 46 积分
请问怎么在不加运放的情况下驱动二极管呢?
另外,同样的接法,开发板上的二极管就能亮,也没有运放,是不是开发板上的发光二极管不是普通的?发光二极管的工作电流不都是毫安级别的5mA-20mA吗?
主题帖子积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
上面的图就是在不加运放的情况下驱动二极管
发光二极管只要有电流通过就会发亮
高亮度的LED电流0.1mA已经可以很亮了
主题帖子积分
初级技术员, 积分 54, 距离下一级还需 46 积分
初级技术员, 积分 54, 距离下一级还需 46 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
初级技术员, 积分 54, 距离下一级还需 46 积分
初级技术员, 积分 54, 距离下一级还需 46 积分
那么开发板上的发光二极管能够发亮,是因为是个高亮度LED?我在proteus上仿真,DAC0832 IOUT1 最大输出电流才220uA。
主题帖子积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
仿真220uA可能看不出LED发光,但实际中220uA的话,LED已经可以看出发光了
仿真和实际是两回事
主题帖子积分
初级技术员, 积分 54, 距离下一级还需 46 积分
初级技术员, 积分 54, 距离下一级还需 46 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
初级技术员, 积分 54, 距离下一级还需 46 积分
初级技术员, 积分 54, 距离下一级还需 46 积分
谢谢您,我刚才仔细看了下,电流最大时,LED有那么一点点点亮,太不容易发现了,非常感谢您
主题帖子积分
实习生, 积分 36, 距离下一级还需 14 积分
实习生, 积分 36, 距离下一级还需 14 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 36, 距离下一级还需 14 积分
实习生, 积分 36, 距离下一级还需 14 积分
粗略分析下,我觉得电路从原理上有问题:
& &1.DAC0832输出的电流是负向的(看图,VREF = +5V),电流理应地流向LED,图中LED接法有误。故仿真是不会亮的。
& &2.为什么板子上的LED会亮,而且是很亮? 我想电路图应该是这样的: 高电压加在LED输入端,输出端接0832(当然加有限流电阻),所以,从电源端流过的电流就不止个200uA,具体电流,可以实测。
---理论2纯属感性推测。
综上,简单的实验需要一个很是合理的分析,结果不是平白无故是那样的
有问题,动动手,边学边做边思考,才能进步!
主题帖子积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
技术总监, 积分 21148, 距离下一级还需 28852 积分
楼上太高见了
主题帖子积分
实习生, 积分 12, 距离下一级还需 38 积分
实习生, 积分 12, 距离下一级还需 38 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 12, 距离下一级还需 38 积分
实习生, 积分 12, 距离下一级还需 38 积分
专业集成电路供应商:& & 有什么技术问题,可以咨询我公司技术。
技术领袖奖章
人才类勋章
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
核心会员奖章
等级类勋章
热门推荐 /3基于DAC0832的LED亮度控制系统设计_发光二极管_中国百科网
基于DAC0832的LED亮度控制系统设计
      引言
  LED在城市化的过程中功不可没,各种夜景灯牌和广告显示屏,都在日益充斥人们新奇的眼球。以往霓虹灯的发光体只有亮和灭两种状态,亮度都是突然变化的,往往给人一种图案变化生硬的感觉;而现在很多霓虹灯已经实现了发光体亮度逐渐变化,这样形成的各种变化的霓虹灯图案更加柔和、流畅。控制发光体亮度变化总体上可以分为模拟方法和数字方法,其中通过单片机控制D/A转换器实现发光体亮度控制的方法具有电路简单、维护和调整方便的特点,是当前霓虹灯控制的发展方向。霓虹灯的发光体以气体放电灯管为主,现在随着高亮度发光二极管的产生,寿命长、能耗低的LED灯牌应用越来越广泛。这里讨论应用DAC0832在单片机控制下如何控制多个发光二极管的亮度变化。
  1 硬件电路设计
  通过单片机和D/A转换芯片DAC0832控制三个发光二极管亮度按顺序逐渐变化,实现一种灯管旋转的效果。设计中主要考虑下面三个问题:
  (1) DAC0832与单片机的接口电路设计。
  (2) 基准电压源的设计。
  (3) 同时控制多个LED按不同规律改变亮度的电路设计。
  1.1 DAC0832与单片机的接口电路
  启动ADC0832实现模数转换有单缓冲和双缓冲两种方式。多缓冲方式是在多片ADC0832配合时采用;本设计中只须一片ADC0832就可完成工作,所以采用单缓冲方式,向其8位数据输入口输入数据,然后在其写触发管脚WR1发送一低电平脉冲,该芯片就会将收到的数字量转换成模拟量输出。其输出为电流输信号,而控制发光二极管亮度需要用电压实现,所以需要外接由运算放大器构成的电流电压转换电路, ADC0832与单片机的接口电路如图1:
  图中,由于选片端CS接到了P217,所以启动DAC0832开始转换时,需要将单片机的P217 脚设置为低电平。
  输出的电流经过运算放大器转换成电压,如果需转换的数字量为B, 则对应输出电压值为:
  其中VREF是外接的基准电压,输出电压最高为0 V,最低为- VREF ,如果基准电压取5 V,则最低输出电压为- 5 V,为了满足负电压输出的要求,运算放大器的电源电压VCC要高于5 V,VEE要低于- 5 V,本设计中运算放大器采用LM324芯片,电源电压VCC取10 V,VEE取- 10 V。
  1.2 基准电压的设计
  要保证DAC0832数模转换的精度和准确度,必须提供一个高度稳定的基准电压。在数模转换器中一般选用带隙基准电压源或隐埋式齐纳稳压管。
  设计中选用了LM336&5型隐埋式齐纳二极管,它具有价格低、使用方便的特点,其接线如图2:
  1.3 如何同时控制多个LED的亮度
  设计中需要控制三个发光二极管,每个发光二极管的亮度和变化规律都不一样,而ADC0832只有一路模拟量输出,为了控制三个发光二极管的亮度,需要加一个多路电子开关,本例中选用的是CD4051,该芯片的引脚图如下:
  该芯片是一个常用的8路到1路的多路电子开关,工作电压最高为32 V,通过ABC三个地址管脚确定选通哪个通道。
  因为前面转换出的电压为负值最低为- 5 V,所以CD4051 的工作电压取VDD = 10 V, VEE =- 10 V, 地址控制端A、B、C分解接到单片机的P210、P211、P212 口,用来选通某个通道通, D/A转换后的模拟量接到多路开关的电压输入端3引脚,输出引脚13、14、15分别控制发光二极管D1、D2、D3。
  DAC0832只有1路模拟输出,必须采用分时控制的方式循环控制三个发光二极管的亮度,实现接通某一个LED 时,其它LED 保持要原有亮度不能熄灭,为了达到这个目的,这里采用了运算放大器接成电压跟随器的形式控制LED的亮度,即多路电子开关的每个输出与发光二极管间都接一个电压跟随器,而且在运算放大器的正向输入端接了一个保持电容,使输入电压能够保持一段时间,其接线如下:
  由于运算放大器的输入阻抗很大,所以Ch2上的电压能够保持一段时间,在数模转换器输出电压控制其它发光二极管期间,该运算放大器的输出电压能够保持不变。
  装置硬件原理图如图5。
  2 软件设计
  软件主要完成两个功能, 第一, 完成各个LED的循环点亮; 第二,通过程序控制各个LED亮度的变化。本例中要实现灯光旋转的效果,所以每个LED都按三角波的型式亮度变化,先逐渐变亮,达到最亮时再由最亮逐渐变暗,如此反复进行;三个LED的亮度变化要有一个时差,如果一个LED从暗到亮再到暗作为一个周期的话,则D2比D1 滞后1/3 周期, D3 比D2 滞后1/3 个周期。
  2.1 主程序设计
  使各个LED循环点亮通过主程序循环实现,将表示三个LED亮度的三个数据放到连续的三个RAM单元30H、31H、32H中,主程序中循环读取这三个单元的数据送到DAC0832 转换,根据30H、31H、32H中数值的不同,转换输出的模拟电压也不同,单片机控制多路电子开关将不同的模拟电压送给不同的LED,从而实现各个LED具有不同的亮度。由于本例中用P2口控制ADC0832的选通和电子开关的选通,根据原理图接线可知,点亮发光二极管D0、D1、D2对应的P2口数据分别为00H、01H、02H。
  2.2 中断程序设计
  控制LED亮度变化通过定时器T0定时中断程序实现, T0中断改变30H、31H和32H的数值就可以改变LED 亮度了,若实现灯光旋转的效果,则三个LED的亮度应按图6曲线变化。
  图中横坐标表示时间,在一个周期内发光二极管的亮度会按三角形规律变化,设每个变化周期为T,第二个发光二极管D1的变化滞后第一个发光二极管D0三分之一周期,同样D2滞后D1三分之一周期。
  图6中的横坐标表示亮度,也就是对应的要转换成模拟量的数字量的数值。在主程序中三个字节30H、31H、32H中数值对应三个发光二极管的亮度,设定三个字节33H、34H和35H 的值控制三个二极管亮度增加还是减弱( 1 增强, 0 减弱) 。假设开始时D1对应亮度为0,D0、D2对应亮度均为170,则三个二极管的亮度变化应该是D0和D2亮度增加,D2亮度减弱,则三个亮度控制字节的值分别为33H、35H中为1, 35H中为0。
  采用T0中断实现三个发光二极管亮度的改变,则每到一次定时中断将完成如下功能:
  1) 根据三个字节33H、34H和35H的值,分别对30H、31H和32H的值进行增1或减1操作。
  2) 当亮度字节的数值增加到255时对应控制字节数值清零,亮度字节数值减到0时,对应控制字节数值置1。
  由于在主程序中和中断子程序同时使用工作寄存器R0,所以在中断程序的开始和结束有一个保存和恢复R0中数值的过程。
  中断程序的程序框图为:
  即: TH0 = F0H, TL0 =BEH3
  3 结语
  文中设计了基于DAC0832实现对LED控制的系统,在单片机的控制下,利用多路开关和电压保持电路实现了对多个发光二极管亮度的变化控制,实现了LED灯的灯光旋转的效果。如果将此电路扩展,接更多的模数转换器和多路开关,就可以实现各种复杂图案的变化。采用电压保持电路的办法也可以应用到其它领域的模拟控制中。
收录时间:日 04:37:40 来源:中国测控网 作者:匿名
上一篇: &(&&)
创建分享人
喜欢此文章的还喜欢
Copyright by ;All rights reserved. 联系:QQ:

我要回帖

更多关于 adc0832单片机程序 的文章

 

随机推荐