虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

渐亮渐灭

  • 单通道直流LED调光触摸芯片SGL8022W/SGL8022K/8022WS/8023W假一赔十

    产品型号:SGL8022W 产品品牌:SGL/希格玛 封装形式:DIP8 SOP8 产品年份:新年份 联 系 人:许先生 联 系 QQ:1918885898 联系手机:18898582398 希格玛大陆总代理,原装现货最有优势!工程服务,技术支持,让您的生产高枕无忧。 单通道直流LED 灯光控制触摸芯片  概述    ● SGL8022W 是一款用于LED 灯光亮度调节及开关控制的单通道触摸芯片。使用该芯片可以实现LED 灯光的触摸开关控制和亮度调节。具有如下功能特点和优势:  灯光亮度可根据需要随意调节,选择范围宽,操作简单方便。可在有介质(如玻璃、亚克力、塑料、陶瓷等)隔离保护的情况下实现触摸功能,安全性高。应用电压范围宽,可在2.4~5.5V 之间任意选择。应用电路简单,外围器件少,加工方便,成本低。抗电源干扰及手机干扰特性好。EFT 可以达到±2KV 以上;近距离、多角度手机干扰情况下,触摸响应灵敏度及可靠性不受影响。  特性   ● TI 触摸输入对应SO 灯光控制输出。共有四种功能可选,由OPT1 和OPT2 管脚上电前的输入状态来决定。具体如下: 1)OPT1=1,OPT2=1 对应:不带亮度记忆突明突暗的LED 触摸无级调光功能 2)OPT1=0,OPT2=1 对应:不带亮度记忆渐明渐暗的LED 触摸无级调光功能 3)OPT1=1,OPT2=0 对应:带亮度记忆渐明渐暗的LED 触摸无级调光功能 4)OPT1=0,OPT2=0 对应:LED 三段触摸调光功能 ● 不带亮度记忆突明突暗的LED 触摸无级调光功能如下: 初始上电时,灯为关灭状态。点击触摸(触摸持续时间小于550ms)时,可实现灯光的亮灭控制。一次点击触摸,灯亮;再一次点击触摸,灯灭。如此循环。灯光点亮或关灭时,无亮度缓冲。且灯光点亮的初始亮度固定为全亮度的90%。 长按触摸(触摸持续时间大于550ms)时,可实现灯光无级亮度调节。一次长按触摸,灯光亮度逐渐增加,松开时灯光亮度停在松开时刻对应的亮度,若长按时间超过3 秒钟,则灯光亮度达到最大亮度后不再变化;再一次长按触摸,灯光亮度逐渐降低,松开时灯光亮度停在松开时刻对应的亮度,若长按时间超过3 秒钟,则灯光亮度达到最小亮度后不再变化。如此循环。 点击触摸和长按触摸可以在任何时候随意使用,相互之间功能不受干扰和限制。 不带亮度记忆渐明渐暗的LED 触摸无级调光功能是在不带亮度记忆突明突暗的LED 触摸无级调光功能的基础上,在点击触摸开灯和关灯时,通过使灯光由一个较低亮度缓慢平滑过渡到开灯初始亮度,在点击触摸关灯时,使灯光由当前亮度缓慢平滑降低直至关灭,从而达到亮度缓慢变化的视觉缓冲效果,起到保护眼睛和视力的效果。 带亮度记忆渐明渐暗的LED 触摸无级调光功能是在不带亮度记忆渐明渐暗的LED 触摸无级调光功能的基础上增加了亮度记忆功能。即在AC220V 电源不断电的情况下,每次点击触摸关灯时的亮度会被记忆,下次点击触摸开灯时会以此亮度作为初始亮度。在AC220V 电源掉电的情况下,重新上电后的第一次点击触摸开灯,初始亮度固定为全亮度的50%。LED 三段触摸调光功能, 初始上电时,灯为关灭状态。 每次点击触摸,灯光亮度按低亮度->中两度->高亮度->灭依次循环变化。   ●  此篇产品叙述为产品功能简介,如需要完整产品PDF资料可以联系许先生QQ:1918885898索取! 应用范围 ● 各种消费性产品 ● 取代按钮按键 此资料为产品概述,可能会有错漏。如需完整产品PDF资料可以联系许先生索取QQ:191 888 5898 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●   产品型号:SGL8022K 产品品牌:SGL/希格玛 封装形式:DIP8 SOP8 产品年份:新年份 联 系 人:许先生 联 系 QQ:1918885898  联系手机:18898582398 希格玛大陆总代理,原装现货最有优势!工程服务,技术支持,让您的生产高枕无忧。                         两通道触摸按键控制芯片 概述       SGL8022K是一款两触摸通道带两个逻辑控制输出的电容式触摸芯片。具有如下功能特点和优势:可通过触摸实现各种逻辑功能控制。操作简单、方便实用。可在有介质(如玻璃、亚克力、塑料、陶瓷等)隔离保护的情况下实现触摸功能,安全性高。应用电压范围宽,可在2.4~4.5V之间任意选择。应用电路简单,外围器件少,加工方便,成本低。抗电源干扰及手机干扰特性好。EFT可以达到±2KV以上;近距离、多角度手机干扰情况下,触摸响应灵敏度及可靠性不受影响。 特点  ●  LO1与LO2在上电后的初始输出状态由上电前OSC的输入状态决定。OSC管脚接VDD(高电平)上电,上电后LO1与LO2输出高电平;OSC管脚接GND(低电平)上电,上电后LO1与LO2输出低电平。 ●  TI1触摸输入对应LO1逻辑输出,TI2触摸输入对应LO2逻辑输出。 ● 按住TI1或TI2,对应LO1或LO2的输出状态翻转;松开后回复初始状态。 ●  此篇产品叙述为功能简介,如需要完整产品PDF资料可以联系许先生索取 QQ:191 888 5898 应用范围     ●    各种消费性产品     ●    取代按钮按键 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 产品型号:SGL8022S 产品品牌:SGL/希格玛 封装形式:DIP8 SOP8 产品年份:新年份 联 系 人:许先生 联 系 QQ:1918885898  联系手机:18898582398 希格玛大陆总代理,原装现货最有优势!工程服务,技术支持,让您的生产高枕无忧。 量大价优,保证原装正品。您有量,我有价! 概述 ● SGL8022S是一款两触摸通道带两个逻辑控制输出的电容式触摸芯片。具有如下功能特点和优势:可通过触摸实现各种逻辑开关控制。操作简单、方便实用。可在有介质(如玻璃、亚克力、塑料、陶瓷等)隔离保护的情况下实现触摸功能,安全性高。应用电压范围宽,可在2.4~4.5V之间任意选择。应用电路简单,外围器件少,加工方便,成本低。抗电源干扰及手机干扰特性好。EFT可以达到±2KV以上;近距离、多角度手机干扰情况下,触摸响应灵敏度及可靠性不受影响。 特点 ● LO1与LO2在上电后的初始输出状态由上电前OSC的输入状态决定。OSC管脚接VDD(高电平)上电,上电后LO1与LO2输出高电平;OSC管脚接GND(低电平)上电,上电后LO1与LO2输出低电平。 ●  TI1触摸输入对应LO1逻辑输出,TI2触摸输入对应LO2逻辑输出。 ●  每一次触摸TI1或TI2,对应LO1或LO2的输出状态翻转一次。如此循环。应用范围 各种消费性产品 取代按钮按键 此资料为产品概述,可能会有错漏。如需完整产品PDF资料可以联系许先生索取QQ:191 888 5898  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 产品型号:SGL8022WS 产品品牌:SGL/希格玛 封装形式:DIP8  SOP8 产品年份:新年份 联 系 人:许先生 联 系 QQ:1918885898  联系手机:18898582398 希格玛大陆总代理,原装现货最有优势!工程服务,技术支持,让您的生产高枕无忧。 单通道直流LED调光触摸芯片 概述 ● SGL8022WS 是一款专用于LED 灯光开关控制及亮度调节的单通道触摸芯片。使用该芯片可以方便地实现LED 灯光的触摸开关控制和分档及无级亮度调节。具有如下功能特点和优势: 灯光亮度可根据需要随意调节,选择范围宽,操作简单方便。可在有介质(如玻璃、亚克力、塑料、陶瓷等)隔离保护的情况下实现触摸功能,安全性高。 应用电压范围宽,可在2.4~5.5V之间任意选择。 应用电路简单,外围器件少,加工方便,成本低。抗电源干扰及手机干扰特性好。EFT可以达到±2KV以上;近距离、多角度手机干扰情况下,触摸响应灵敏度及可靠性不受影响。 特点 ● 工作电压:2.4~5.5V ● 工作频率:4MHz ● 触摸输入:一路(TI) 选项输入:两路(OP1/OP2) 控制输出:一路(SO) 控制输出PWM频率:20KHz 功能描述: TI触摸输入对应SO灯光控制输出,通过调制PWM输出信号的占空比控制LED灯的开关和亮度变化,PWM信号的频率固定为20KHz左右。共有四种功能可选,由OPT1/OPT2管脚上电前的输入状态来决定。具体如下: 1)OP1 & OP2全部悬空:不带亮度记忆不带亮度缓冲的LED触摸无级调光2)OP1接地,OP2悬空:带亮度记忆不带亮度缓冲的LED触摸无级调光3)OP1悬空,OP2接地:LED三段触控调光,【高->中->低->灭】循环4)OP1 & OP2全部接地:LED三段触控调光,【低->中->高->灭】循环以下为详细功能说明: ● 不带亮度记忆不带亮度缓冲的LED触摸无级调光功能如下:初始上电时,SO输出全低电平,LED灯不亮。短按触摸(触摸持续时间小于550ms),可实现灯光的开关亮灭控制。一次短按触摸,灯亮;再一次短按触摸,灯灭。多次短按,依此循环。灯光点亮或关灭时,无亮度缓冲。且每次开灯的亮度固定为最高亮度,对应输出PWM信号的高电平占空比为100%。 长按触摸(触摸持续时间大于550ms),可实现灯光无级亮度调节。一次长按触摸,灯光亮度逐渐降低,松开时停在当时的亮度,若长按时间超过3秒钟,则灯光亮度达到最低后不再变化;再一次长按触摸,灯光亮度逐渐升高,松开时停在当时的亮度,若长按时间超过3秒钟,则灯光亮度达到最高后不再变化。多次长按,依此循环。最低亮度的PWM信号占空比为2%,最高亮度为100%。灯不亮的情况下,长按触摸也可开灯。此种情况下,按键按下后首先以最高亮度亮灯,若超过550ms后仍未松开,则开始向下无级调光。点击触摸和长按触摸可在任何时候随意使用,相互之间功能不受干扰和限制。 带亮度记忆不带亮度缓冲的LED触摸无级调光功能是在不带亮度记忆不带亮度缓冲的LED触摸无级调光功能的基础上增加了亮度记忆功能。即在电源不断电的情况下,每次短按触摸关灯时的亮度会被记忆保存,下次触摸开灯时会以此亮度作为初始亮度。开灯后第一次调光的方向由之前记忆的亮度值来决定,若记忆亮度值大于50%,则向下调光;若记忆亮度值小于50%,则向上调光。初始上电或断电后重新上电,第一次开灯的初始亮度固定为100%最高亮度,第一次调光的方向固定为向下调光。 ● LED三段触控调光,【高->中->低->灭】循环 ● 初始上电时,SO输出全低电平,LED灯不亮。 ●  第一次触摸,灯光为高档亮度;第二次触摸,灯光为中档亮度;第三次触摸,灯光为低档亮度;第四次触摸,灯灭。多次按键,依此循环。高中低三档亮度对应的输出PWM信号占空比分别为100%、40%、10%。 ● LED三段触控调光,【低->中->高->灭】循环 ● 初始上电时,SO输出全低电平,LED灯不亮。 ●  第一次触摸,灯光为低档亮度;第二次触摸,灯光为中档亮度;第三次触摸,灯光为高档亮度;第四次触摸,灯灭。多次按键,依此循环。低中高三档亮度对应的输出PWM信号占空比分别为10%、40%、100%。 ●此资料为产品概述,可能会有错漏。如需完整产品PDF资料可以联系许先生索取QQ:191 888 5898    ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 产品型号:SGL8023W 产品品牌:SGL/希格玛 封装形式:DIP8 SOP8 产品年份:新年份产品 联 系 人:许先生 联 系 QQ:1918885898 联系手机:18898582398 希格玛大陆总代理,原装现货最有优势!工程服务,技术支持,让您的生产高枕无忧。 单通道直流 LED 灯光亮度调节及开关控制的单通道触摸芯片 概 述 ● SGL8023W 是一款用于LED 灯光亮度调节及开关控制的单通道触摸芯片。使用该芯片可以实现 LED 灯光的触摸开关控制和亮度调节。具有如下功能特点和优势: 灯光亮度可根据需要随意调节,选择范围宽,操作简单方便。可在有介质(如玻璃、亚克力、塑料、陶瓷等)隔离保护的情况下实现触摸功能,安全性高。应用电压范围宽,可在2.4~5.5V 之间任意选择。应用电路简单,外围器件少,加工方便,成本低。抗电源干扰及手机干扰特性好。EFT 可以达到±2KV 以上;近距离、多角度手机干扰情况下,触摸响应灵敏度及可靠性不受影响。 特 点 ● TI 触摸输入对应SO1 以及SO2 灯光控制输出。SO2/OPT2 为输入输出功能复用管脚,既可以用作调光输出SO2,也可以用作选项输入OPT2。共有六种功能可选,由OPT1/OPT2/OPT3管脚上电前的输入状态来决定。芯片管脚有内部上拉,悬空为1,接GND 为0,具体如下: 1)OPT1=1,OPT2=1,OPT3=1:不带亮度记忆不带亮度缓冲单输出LED 触摸无级调光 2)OPT1=1,OPT2=1,OPT3=0:带亮度记忆不带亮度缓冲单输出LED 触摸无级调光 3)OPT1=1,OPT2=0,OPT3=1:不带亮度记忆不带亮度缓冲双输出LED 触摸无级调光 4)OPT1=1,OPT2=0,OPT3=0:带亮度记忆不带亮度缓冲双输出LED 触摸无级调光 5)OPT1=0,OPT2=0,OPT3=1:LED 三段触控调光,顺序低->中->高->灭 6)OPT1=0,OPT2=0,OPT3=0:LED 三段触控调光,顺序高->中->低->灭 以下为详细功能说明: ●  不带亮度记忆不带亮度缓冲单输出LED 触摸无级调光功能如下: ● TI 触控输入对应SO1 一路LED 输出。初始上电时,灯为关灭状态。 ●  点击触摸(触摸持续时间小于550ms)时,可实现灯光的亮灭控制。一次点击触摸,灯亮;再一次点击触摸,灯灭。如此循环。灯光点亮或关灭时,无亮度缓冲。且灯光点亮的初始亮度固定为最高亮度。 ● 长按触摸(触摸持续时间大于550ms)时,可实现灯光无级亮度调节。一次长按触摸,灯光亮度逐渐增加,松开时灯光亮度停在松开时刻对应的亮度,若长按时间超过3 秒钟,则灯光亮度达到最大亮度后不再变化;再一次长按触摸,灯光亮度逐渐降低,松开时灯光亮度停在松开时刻对应的亮度,若长按时间超过3 秒钟,则灯光亮度达到最小亮度后不再变化。如此循环。 ●  点击触摸和长按触摸可以在任何时候随意使用,相互之间功能不受干扰和限制。 ●  带亮度记忆不带亮度缓冲单输出LED 触摸无级调光功能是在不带亮度记忆不带亮度缓冲单输出LED 触摸无级调光功能的基础上增加了亮度记忆功能。即在电源不断电的情况下,每次点击触摸关灯时的亮度会被记忆,下次点击触摸开灯时会以此亮度作为初始亮度。在电源掉电的情况下,重新上电后的第一次点击触摸开灯,初始亮度固定为最高亮度。 ●  不带亮度记忆不带亮度缓冲双输出LED 触摸无级调光功能是在不带亮度记忆不带亮度缓冲单输出LED 触摸无级调光功能基础上将输出由一路LED 扩展为两路LED。 ●  TI 触摸输入对应SO1、SO2 两路LED 输出。初始上电时,两路灯均为关灭状态。 ●  第一次点击触摸,第一路灯(SO1 输出驱动)亮;第二次点击触摸,第一路灯灭,第二路灯(SO2 输出驱动)亮;第三次点击触摸,两路灯都灭。 当某一路灯亮时,长按触摸可对此灯亮度进行无级调光。调节方式同上。当两路灯都不亮时,长按触摸会首先点亮第一路灯,然后再对此路灯进行无级调光。 ●  带亮度记忆不带亮度缓冲双输出LED 触摸无级调光功能是在不带亮度记忆不带亮度缓冲双输出LED 触摸无级调光功能的基础上增加了亮度记忆功能。即在不掉电的情况下,每次触摸关灯或切换到另外一路灯前的亮度会被记忆保存,下次触摸开灯或切换到此路灯时会以此被记忆的亮度点亮LED。如发生断电的话,则重新上电后第一次触摸开灯或第一次切换到此路灯时亮度,固定为最高亮度。 ●  LED 三段触摸调光功能 ●  初始上电时,灯为关灭状态。 ●  每次点击触摸,依OPTION 选择不同,灯光亮度按[低亮度->中亮度->高亮度->灭]依次循环变化,或按[高亮度->中亮度->低亮度->灭]依次循环变化。应用范围 ● 各种消费性产品 ● 取代按钮按键 此资料为产品概述,可能会有错漏。如需完整产品PDF资料可以联系许先生索取QQ:191 888 5898

    标签: 8022 SGL 8023 LED WS 单通道 直流 调光 芯片

    上传时间: 2020-01-09

    上传用户:szqxw1688

  • Arduino学习笔记4_Arduino软件模拟PWM

    注:1.这篇文章断断续续写了很久,画图技术也不精,难免错漏,大家凑合看.有问题可以留言.      2.论坛排版把我的代码缩进全弄没了,大家将代码粘贴到arduino编译器,然后按ctrl+T重新格式化代码格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脉宽调制波,通过调整输出信号占空比,从而达到改 变输出平均电压的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 个8 位精度PWM 引脚,分别是3, 5, 6, 9, 10, 11 脚。我们可以使用analogWrite()控 制PWM 脚输出频率大概在500Hz 的左右的PWM 调制波。分辨率8 位即2 的8 次方等于 256 级精度。但是有时候我们会觉得6 个PWM 引脚不够用。比如我们做一个10 路灯调光, 就需要有10 个PWM 脚。Arduino Duemilanove 2009 有13 个数字输出脚,如果它们都可以 PWM 的话,就能满足条件了。于是本文介绍用软件模拟PWM。 二、Arduino 软件模拟PWM Arduino PWM 调压原理:PWM 有好几种方法。而Arduino 因为电源和实现难度限制,一般 使用周期恒定,占空比变化的单极性PWM。 通过调整一个周期里面输出脚高/低电平的时间比(即是占空比)去获得给一个用电器不同 的平均功率。 如图所示,假设PWM 波形周期1ms(即1kHz),分辨率1000 级。那么需要一个信号时间 精度1ms/1000=1us 的信号源,即1MHz。所以说,PWM 的实现难点在于需要使用很高频的 信号源,才能获得快速与高精度。下面先由一个简单的PWM 程序开始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 这是一个软件PWM 控制Arduino D13 引脚的例子。只需要一块Arduino 即可测试此代码。 程序解析:由for 循环可以看出,完成一个PWM 周期,共循环255 次。 假设bright=100 时候,在第0~100 次循环中,i 等于1 到99 均小于bright,于是输出PWMPin 高电平; 然后第100 到255 次循环里面,i 等于100~255 大于bright,于是输出PWMPin 低电平。无 论输出高低电平都保持30us。 那么说,如果bright=100 的话,就有100 次循环是高电平,155 次循环是低电平。 如果忽略指令执行时间的话,这次的PWM 波形占空比为100/255,如果调整bright 的值, 就能改变接在D13 的LED 的亮度。 这里设置了每次for 循环之后,将bright 加一,并且当bright 加到255 时归0。所以,我们 看到的最终效果就是LED 慢慢变亮,到顶之后然后突然暗回去重新变亮。 这是最基本的PWM 方法,也应该是大家想的比较多的想法。 然后介绍一个简单一点的。思维风格完全不同。不过对于驱动一个LED 来说,效果与上面 的程序一样。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,这段代码少了一个For 循环。它先输出一个高电平,然后维持(bright*30)us。然 后输出一个低电平,维持时间((255-bright)*30)us。这样两次高低就能完成一个PWM 周期。 分辨率也是255。 三、多引脚PWM Arduino 本身已有PWM 引脚并且运行起来不占CPU 时间,所以软件模拟一个引脚的PWM 完全没有实用意义。我们软件模拟的价值在于:他能将任意的数字IO 口变成PWM 引脚。 当一片Arduino 要同时控制多个PWM,并且没有其他重任务的时候,就要用软件PWM 了。 多引脚PWM 有一种下面的方式: int brights[14] = {0}; //定义14个引脚的初始亮度,可以随意设置 int StartPWMPin = 0, EndPWMPin = 13; //设置D0~D13为PWM 引脚 int PWMResolution = 255; //设置PWM 占空比分辨率 void setup() { //定义所有IO 端输出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //随便定义个初始亮度,便于观察 brights[ i ] = random(0, 255); } } void loop() { //这for 循环是为14盏灯做渐亮的。每次Arduino loop()循环, //brights 自增一次。直到brights=255时候,将brights 置零重新计数。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是计数一个PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每个PWM 周期均遍历所有引脚 { if(i < brights[j])\   所以我们要更改PWM 周期的话,我们将精度(代码里面的变量:PWMResolution)降低就行,比如一般调整LED 亮度的话,我们用64 级精度就行。这样速度就是2x32x64=4ms。就不会闪了。

    标签: Arduino PWM 软件模拟

    上传时间: 2013-10-08

    上传用户:dingdingcandy

  • Arduino学习笔记4_Arduino软件模拟PWM

    注:1.这篇文章断断续续写了很久,画图技术也不精,难免错漏,大家凑合看.有问题可以留言.      2.论坛排版把我的代码缩进全弄没了,大家将代码粘贴到arduino编译器,然后按ctrl+T重新格式化代码格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脉宽调制波,通过调整输出信号占空比,从而达到改 变输出平均电压的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 个8 位精度PWM 引脚,分别是3, 5, 6, 9, 10, 11 脚。我们可以使用analogWrite()控 制PWM 脚输出频率大概在500Hz 的左右的PWM 调制波。分辨率8 位即2 的8 次方等于 256 级精度。但是有时候我们会觉得6 个PWM 引脚不够用。比如我们做一个10 路灯调光, 就需要有10 个PWM 脚。Arduino Duemilanove 2009 有13 个数字输出脚,如果它们都可以 PWM 的话,就能满足条件了。于是本文介绍用软件模拟PWM。 二、Arduino 软件模拟PWM Arduino PWM 调压原理:PWM 有好几种方法。而Arduino 因为电源和实现难度限制,一般 使用周期恒定,占空比变化的单极性PWM。 通过调整一个周期里面输出脚高/低电平的时间比(即是占空比)去获得给一个用电器不同 的平均功率。 如图所示,假设PWM 波形周期1ms(即1kHz),分辨率1000 级。那么需要一个信号时间 精度1ms/1000=1us 的信号源,即1MHz。所以说,PWM 的实现难点在于需要使用很高频的 信号源,才能获得快速与高精度。下面先由一个简单的PWM 程序开始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 这是一个软件PWM 控制Arduino D13 引脚的例子。只需要一块Arduino 即可测试此代码。 程序解析:由for 循环可以看出,完成一个PWM 周期,共循环255 次。 假设bright=100 时候,在第0~100 次循环中,i 等于1 到99 均小于bright,于是输出PWMPin 高电平; 然后第100 到255 次循环里面,i 等于100~255 大于bright,于是输出PWMPin 低电平。无 论输出高低电平都保持30us。 那么说,如果bright=100 的话,就有100 次循环是高电平,155 次循环是低电平。 如果忽略指令执行时间的话,这次的PWM 波形占空比为100/255,如果调整bright 的值, 就能改变接在D13 的LED 的亮度。 这里设置了每次for 循环之后,将bright 加一,并且当bright 加到255 时归0。所以,我们 看到的最终效果就是LED 慢慢变亮,到顶之后然后突然暗回去重新变亮。 这是最基本的PWM 方法,也应该是大家想的比较多的想法。 然后介绍一个简单一点的。思维风格完全不同。不过对于驱动一个LED 来说,效果与上面 的程序一样。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,这段代码少了一个For 循环。它先输出一个高电平,然后维持(bright*30)us。然 后输出一个低电平,维持时间((255-bright)*30)us。这样两次高低就能完成一个PWM 周期。 分辨率也是255。 三、多引脚PWM Arduino 本身已有PWM 引脚并且运行起来不占CPU 时间,所以软件模拟一个引脚的PWM 完全没有实用意义。我们软件模拟的价值在于:他能将任意的数字IO 口变成PWM 引脚。 当一片Arduino 要同时控制多个PWM,并且没有其他重任务的时候,就要用软件PWM 了。 多引脚PWM 有一种下面的方式: int brights[14] = {0}; //定义14个引脚的初始亮度,可以随意设置 int StartPWMPin = 0, EndPWMPin = 13; //设置D0~D13为PWM 引脚 int PWMResolution = 255; //设置PWM 占空比分辨率 void setup() { //定义所有IO 端输出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //随便定义个初始亮度,便于观察 brights[ i ] = random(0, 255); } } void loop() { //这for 循环是为14盏灯做渐亮的。每次Arduino loop()循环, //brights 自增一次。直到brights=255时候,将brights 置零重新计数。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是计数一个PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每个PWM 周期均遍历所有引脚 { if(i < brights[j])\   所以我们要更改PWM 周期的话,我们将精度(代码里面的变量:PWMResolution)降低就行,比如一般调整LED 亮度的话,我们用64 级精度就行。这样速度就是2x32x64=4ms。就不会闪了。

    标签: Arduino PWM 软件模拟

    上传时间: 2013-10-23

    上传用户:mqien

  • 流水灯 (1)第1

    流水灯 (1)第1,3,5,7个灯半亮,其余的全亮。 (2)第1个亮1/8,第2个亮2/8,第3个亮3/8,第4个亮4/8,第5个亮5/8,第6个亮6/8, 第7个亮7/8,第8个全亮。 (3)来点小难的,所有的灯逐渐从暗到全亮,再由全亮到暗。 (4)最难的:8个灯从第一个开始依次渐亮,直到最后一个。再从最后一个起渐暗, 直到第一个。如此循环往复。这才是真正的流水灯

    标签: 流水灯

    上传时间: 2014-06-12

    上传用户:懒龙1988

  • 利用定时器控制产生占空比可变的 PWM 波 按K1

    利用定时器控制产生占空比可变的 PWM 波 按K1,PWM值增加,则占空比减小,LED 灯渐暗。 按K2,PWM值减小,则占空比增加,LED 灯渐亮。 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。

    标签: PWM 定时器 控制

    上传时间: 2014-11-28

    上传用户:jqy_china

  • 利用定时器控制产生占空比可变的 PWM 波 按K1

    利用定时器控制产生占空比可变的 PWM 波 按K1,PWM值增加,则占空比减小,LED 灯渐暗。 按K2,PWM值减小,则占空比增加,LED 灯渐亮。 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。

    标签: PWM 定时器 控制

    上传时间: 2014-01-20

    上传用户:zhuoying119

  • 霓虹灯画面由常亮的灯管及动态发光的扫描管组成

    霓虹灯画面由常亮的灯管及动态发光的扫描管组成,可设置为跳动式扫描,渐变式扫描、混色变色七种颜色扫描。扫描管由装有微电脑芯片编程的扫描机控制,扫描管按编好的程序亮或灭,组成一副副流动的画面,似天上彩虹、象人间银河、更酷似一个梦幻世界,引人入胜,使人难以忘怀。因此、霓虹灯是一种投入较少、效果强烈、经济实用的广告形式。 霓虹灯是一种冷阴极辉光放电管,其辐射光谱具有极强的穿透大气的能力,色彩鲜艳绚丽、多姿,发光效率明显优于普通的白 炽灯,它的线条结构表现力丰富,可以加工弯制成任何几何形状,满足设计要求,通过电子程序控制,可变幻色彩的图案和文字 受到人们的欢迎。 此压缩包包括所以课程设计文档和源代码

    标签: 霓虹灯 画面 灯管 动态

    上传时间: 2014-01-19

    上传用户:cuiyashuo

  • 通过对单片机简单i/o口的设置

    通过对单片机简单i/o口的设置,就可以实现led的渐亮,设计巧妙。。。

    标签: 单片机

    上传时间: 2014-01-15

    上传用户:思琦琦

  • 凌阳单片机应用实验教学大纲

    实验内容: 1.闪烁的LED实验内容:应用凌阳单片机控制一个LED灯不断闪烁。实验目的:熟悉单片机编程,学习通过IO引脚输出数据。 2.由按键控制的LED实验要求:设计电路,完成用按键控制一个LED的亮与灭。实验目的:进一步熟悉单片机编程,学习IO的输入。 3.定时闪烁的LED实验内容:设计程序,分别控制LED以1Hz、2Hz的速度闪烁。实验目的:学习定时器的使用。 4.自制电子时钟实验内容:设计电路及程序,自行自作一个电子钟。以数码管作为显示。(自选:完成调时功能)实验目的:综合应用之前的实验内容,进一步熟悉掌握输入输出以及定时器的应用。5.AD/DA实验实验内容:(1)设计程序,使单片机输出正弦波。(2)从信号源获得一个正弦信号,采样后输出采样值。实验目的:学习AD/DA的使用。 6.音频播放实验实验内容:压缩一个自选音乐文件,编写程序选择一个方式进行播放。实验目的:掌握音频播放的基本技术及其原理。 7.声音录制与播放实验实验内容:编写程序,按键1后录音,按键2后停止,按键3后播放录音内容。实验目的:掌握声音录制技术及其原理。 8.语音识别实验实验内容:编写程序,完成语音识别。实验目的:掌握语音识别技术。

    标签: 凌阳 单片机应用 实验 教学大纲

    上传时间: 2014-12-27

    上传用户:dapangxie

  • Keil C51入门教程

    30Keil C51入门教程本章学习内容:单片机基本原理,如何使用DX516 仿真器,如何编程点亮和灭掉一个LED 灯,如何进入KEILC51u调试环境,如何使用单步,断点,全速,停止的调试方法聂小猛 2006 年6 月单片机现在是越来越普及了,学习单片机的热潮也一阵阵赶来,许多人因为工作需要或者个人兴趣需要学习单片机。可以说,掌握了单片机开发,就多了一个饭碗。51 单片机已经有30 多年的历史了,在中国,高校的单片机课程大多数都是51,而51 经过这么多年的发展,也增长了许多的系列,功能上有了许多改进,也扩展出了不少分支。而国内书店的单片机专架上,也大多数都是51 系列。可以预见,51 单片机在市场上只会越来越多,功能只会越来越丰富,在可以预见的数十年内是不可能会消失的。作为一个初学者,如何单片机入门?需要那些知识和设备呢?知识上,其实不需要多少东西,会简单的C 语言,知道51 单片机的基本结构就可以了。一般的大学毕业生都可以快速入门,自学过这2 门课程的高中生也够条件。就算你没有学过单片机课程,只掌握了 C 语言的皮毛,通过本系列的教程,您也会逐渐的进入单片机的大门。当然在学习的过程中,您还是必须多去研读单片机书籍,了解他们的基本结构及工作方式。

    标签: Keil C51 入门教程

    上传时间: 2013-10-13

    上传用户:hgy9473