搜索
bottom↓
回复: 15

有人需要的LED灯亮度渐变程序

[复制链接]

出0入0汤圆

发表于 2006-6-16 22:41:58 | 显示全部楼层 |阅读模式
半年多来在这里得到很多的帮助和启发.今天将两年前用HT48R06A-1为一家灯饰厂做的一个LED灯光亮度和颜色变化的控制程序的LED灯亮度渐变部分移值到M8供大家参考.

请使用IC内部RC振荡器提供8MHz时钟.

请使用ICC631编译.

附有Proteus仿真,但仿真不出效果.请参照Proteus图用实际电路运行,观察效果.

点击此处下载armok01120731.rar
-----此内容被zpwang于2006-06-16,22:43:25编辑过
头像被屏蔽

出0入0汤圆

发表于 2006-6-17 01:04:17 | 显示全部楼层
谢谢。COOL!

出0入0汤圆

发表于 2006-6-17 16:59:09 | 显示全部楼层
不错 :)

出0入0汤圆

发表于 2006-6-17 18:47:13 | 显示全部楼层
非常感谢!

出0入296汤圆

发表于 2006-6-17 19:30:38 | 显示全部楼层
使用硬件PWM输出应该很容易做到哈?楼主精神可嘉!

出0入50汤圆

发表于 2006-6-17 22:29:57 | 显示全部楼层
我就是用MEGA169V的PWM做了LCD背光的亮度设置,在公司还是创新的哦,让那些一直用51的同事惊诧不已:(我倒。


-----此内容被ilikemcu于2006-06-17,22:30:42编辑过

出0入0汤圆

发表于 2006-6-19 08:22:37 | 显示全部楼层

出0入0汤圆

发表于 2006-10-13 17:23:16 | 显示全部楼层
我想问一下ilikemcu 我爱单片机

PWM做LCD背光有什么效果和好处,我没有做过PWM和LCD,谢谢!!!!

出0入0汤圆

发表于 2006-10-13 18:35:00 | 显示全部楼层
对LCD背光灯的亮度及对比度进行调节嘛。类似于你的手机啦。

出0入0汤圆

发表于 2006-10-13 21:24:56 | 显示全部楼层
#include <iom8v.h>

#include <macros.h>

#include <math.h>



#define Uchar         unsigned char

#define Uint         unsigned int

#define Ulong         unsigned long



Uchar         time_init;

Uchar         CNT1;

Uchar         CNT2;

Uchar        CNT3;

Uchar         LMT1;

Uchar         LMT2;

Uchar        LMT3;



//TIMER1 initialize - prescale:1024

// WGM: 0) Normal, TOP=0xFFFF

// desired value: 1Hz

// actual value:  1.000Hz (0.0%)

void timer1_init(void)

{

        TCCR1B = 0x00; //stop

        TCNT1H = 0xfe; //setup

        TCNT1L = 0x00;

        OCR1AH = 0x0F;

        OCR1AL = 0x42;

        OCR1BH = 0x0F;

        OCR1BL = 0x42;

        ICR1H  = 0x0F;

        ICR1L  = 0x42;

        TCCR1A = 0x00;

        TCCR1B = 0x01; //start Timer

}



#pragma interrupt_handler timer1_ovf_isr:9

void timer1_ovf_isr(void)

{

        TCNT1H = 0xfe; //reload counter high value

        TCNT1L = 0x00; //reload counter low value

    ++CNT1;

        if(CNT1>=LMT1)

        {

                CNT1=0;

                if(++CNT2>=LMT2)

                {

                        CNT2=0;

                        CNT3=~CNT3;

                }

        }

        time_init=1;   

}



/*void flush(UCHAR ios,UCHAR ioc)

{

        UCHAR a;

        if(time_init)

        {

                time_init=0;

                if(CNT1<=CNT2)

                {

                        PORTB=ios;

                }

                else

                PORTB=ioc;

        }

}

*/

void main(void)

{     

        OSCCAL=0X9d;

        CLI(); //disable all interrupts

        timer1_init();

        PORTB = 0x00;

        DDRB = 0xff;

        MCUCR = 0x00;

        GICR  = 0x00;

        TIMSK = 0x04; //timer interrupt sources

        time_init=0;

    LMT1=250;

    LMT2=250;

    LMT3=1;

    CNT1=CNT2=CNT3=0;

    SEI(); //re-enable interrupts



        while(1)

        {

                if (!CNT3)

                {

                        if(time_init)

                        {

                                time_init=0;

                                if(CNT1<=CNT2)

                                {

                                        PORTB=1;

                                }

                                else

                                PORTB=0;

                        }

                }

                else

                if(time_init)

                {

                        time_init=0;

                        if(CNT1<=CNT2)

                        {

                                PORTB=0;

                        }

                        else

                        PORTB=1;

                }

        }

}





文中的Uchar         CNT1;CNT2;CNT3;LMT1;LMT2;LMT3;分别是什么用途?

这是怎么实现LED渐变的?

望高手指点一下。

有谁有PWM方法实现的可以参考下吗?或者传到邮箱:qzrrrr@163.com

谢谢

出0入0汤圆

 楼主| 发表于 2006-10-14 23:33:37 | 显示全部楼层
CNT1;CNT2;CNT3是计数器变量,用来保存定时器中断的次数.LMT1;LMT2;LMT3是计数极限界限.如果你不用定时器去改变CNT1;CNT2;CNT3的值,而是人为修改.则可得到你要的占空比脉冲.

出0入0汤圆

发表于 2006-10-15 00:09:52 | 显示全部楼层
TO 5楼

用51做不出来吗?

出0入0汤圆

 楼主| 发表于 2006-10-15 10:52:28 | 显示全部楼层
用这段程序,是MCU(带定时计数器的)都能做到.

出0入0汤圆

发表于 2006-10-16 09:17:07 | 显示全部楼层
CNT1;CNT2;CNT3实现占空比的变化,从而实现LED渐变?

出0入0汤圆

发表于 2009-8-9 22:25:28 | 显示全部楼层
这段程序经测试过,完全没有反应。不知是哪里出错了。
PS:51可以做出LED背光亮度等级的,不知为何你同事感觉惊奇了。

出0入0汤圆

发表于 2010-11-26 14:04:39 | 显示全部楼层
have a look th you
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 09:07

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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