微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 基于DAC0832的LED亮度控制系统设计

基于DAC0832的LED亮度控制系统设计

时间:06-03 来源:华北科技学院 李永 李芙玲 点击:

电子开关将不同的模拟电压送给不同的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灯的灯光旋转的效果。如果将此电路扩展,接更多的模数转换器和多路开关,就可以实现各种复杂图案的变化。采用电压保持电路的办法也可以应用到其它领域的模拟控制中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top