51单片机pwm led输出pwm波控制led灯亮度

据counterpoint发布的数据,2017年全球前六大手机芯片企……
2018年才刚过没多久,区块链概念股一片火热。沉寂已久的……
近日三星电子宣布开发出核心电池技术,其研究机构三星先……
近年来汽车电子的发展迅猛,各种LED大灯、辅助驾驶、主动……
前不久,罗德与施瓦茨公司(R&S)召开新品发布会,推出了一……
演讲人:徐济炜时间: 10:00:00
演讲人:沈剑安时间: 10:00:00
演讲人:孙彬时间: 10:00:00
预算:¥30000预算:¥250000
广东省广东省
单片机典型实例:如何用PWM程序控制LED灯?
[导读] 我们知道 51单片机本身是没有pwm接口的,这个程序是通过软件模拟pwm.在一定的频率的方波中,调整高电平和低电平的占空比,即可实现LED灯亮度控制。  要用51产生PWM去控制LED,首先要确定PWM的周期T和占空比D,确
 我们知道 51单片机本身是没有pwm接口的,这个程序是通过软件模拟pwm.在一定的频率的方波中,调整高电平和低电平的占空比,即可实现LED灯亮度控制。本文引用地址:
  要用51产生PWM去控制LED,首先要确定PWM的周期T和占空比D,确定了这些以后,可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D*T=n*t,类似的可以求出PWM低电平时间需要多少个时间基准n&。
  那么就可以编写程序,根据定的时间基准t给定时器赋值初始化,然后开启定时器,定义一个标志位flag,根据flag的状态决定输出高平还是低电平,假设定义flag=1的时候输出高电平,用一个变量去记录定时器中断的次数,每次中断就让记录中断次数的变量+1,在中断程序里面判断这个变量的值是否到了 n,如果到了说明高电平的时间够了,那么就改变flag为0,输出低电平,同时记录中断变量的值清零,每次中断的时候依旧+1,根据flag=0的情况跳去判断记录变量的值是否到了n& 如果到了,说明PWM的低电平时间够了,那么就改flag=1,输出改高电平,同时记录次数变量清零,重新开始,如此循环便可得到想要的PWM波形。
  /******************************************************************************************
  * 文件:PWM.c
  * 备注:51单片机PWM完全注释          *
  ******************************************************************************************/
  #include 《STC89.H》
  unsigned char CYCLE;      /*PWM周期长度*/
  unsigned char count = 0;        /*记录中断次数*/
  unsigned char PWM_ON;      /*PWM高电平时间计数*/
  void delay()          /*延时约78ms*/
  unsigned char i,
  for(j = 100; j--)
  for(i = 255; i--)
  void main()
  bit F       /*变化状态标志,0:渐亮,1:渐暗*/
  TMOD = 0x01;           /*时间基准为1ms*/
  TH0 = (65536 - 100) / 256;      /*右端表达式编译后为0xFF*/
  TL0 = (65536 - 100) % 256;      /*同上*/
  IE = 0x82;       /*开定时器0中断0x82 = */
  TR0 = 1;          /*启动定时器0*/
  CYCLE = 10;           /*十级亮度,即十级PWM*/
  while(!Flag)          /*渐亮,每一次变化亮度增加1*/
  delay();          /*延时*/
  PWM_ON++;       /*高电平脉宽延长,即亮度增加*/
  if(PWM_ON == CYCLE)       /*若高电平脉宽增长到整个周期*/
  Flag = 1;       /*则转为渐暗*/
  while(Flag)       /*渐暗,每一次变化亮度减少1*/
  delay();       /*延时*/
  PWM_ON--;       /*高电平脉宽缩短,即亮度降低*/
  if(PWM_ON == 0)      /*若高电平脉宽缩短到0*/
  Flag = 0;      /*则转为渐亮*/
  void time0_server() interrupt 1 using 1
  TH0 = (65536 - 100) / 256;      /*时间基准为1ms*/
  TL0 = (65536 - 100) % 256;      /*即每1ms触发一次中断*/
  if(count == PWM_ON)      /*若中断次数达到亮度设定值*/
  P2 = 0xFF;        /*则熄灯*/
  count++;        /*每次中断记录+1*/
  if(count == CYCLE)      /*若中断次数达到PWM周期长度*/
  count = 0;       /*则清零中断记录*/
  if(PWM_ON != 0)       /*若此时亮度值非零*/
  P2 = 0;        /*则点灯*/
在哈尔滨工程大学五年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验设备;在这里与众多电子爱好者的交流中,使我学到了更多的专业知识;在学校老师们的教导下,让我学会了如何做一名合格的大学生。......关键字:
中国厂商在LCD面板领域一度是烧钱运营,京东方(BOE)就过了很多年亏损的日子,不过现在京东方等国产LCD面板厂商算是熬出头了,去年Q4季度京东方出货的大尺寸LCD面板一跃成为世界第一,中国大陆公司的LCD产能已经超过台湾地区,逐渐赶超韩国......关键字:
现在想起来,当时的情形还历历在目。当时工作非常艰辛,累得我是满地找牙。记得进厂的第一天,就加班通霄,以后天天晚上加班至12点,早上7点起床。......关键字:
据外媒报道,近些年来OLED屏幕逐渐流行,厂商们都希望将其当作自家机器的新卖点,不过由于产能有限,想用上OLED屏幕必须靠“抢”。......关键字:
我 要 评 论
热门关键词基于51单片机控制LED灯光亮度并报警
利用pwm控制led灯光亮度大小。可以显示许多亮度等级 到最低或者最高亮度等级会发出报警。设计思路: LED一般是恒流操作的,如何改变LED的亮度呢?答案就是PWM控制。在一定的频率的方波中,调整高电平和低电平的占空比,即可实现。比如我们用低电平点亮一个LED灯,我们假设把一个频率周期分为10个时间等份,如果方波中的高低电平占空比是9:1,这是就是一个比较暗的亮度,如果方波中高低电平占空比是10:0,这时,全部是高电平,灯是灭的。如果占空比是5:5,就是一个中间亮度,如果高低比是1:9,是一个比较亮的亮度,如果高低是0:10,这时全部是低电平,就是最亮的。实际上应用中,电视屏幕墙中的几十百万LED象素都是这样控制的,而且每一个象素都有红绿蓝3个LED,每个LED可以变化的亮度是几百到几万或者更多的级别,以实现真彩色的显示。还有在您的手机中,背光灯的亮度如果是可以变化的,也应该是这种工作方式。目前的城市彩灯也有很多都使用了LED,需要控制亮度是也是PWM控制。在程序中,我们将定时器2溢出定为1/1200秒。每10次脉冲输出一个120HZ频率。这每10次脉冲再用来控制高低电平的10个比值。这样,在每个1/120秒的方波周期中,我们都可以改变方波的输出占空比,从而控制LED灯的10个级别的亮度。为什么输出方波的频率要120HZ这么高?因为如果频率太低,人眼就会看到闪烁感觉。一般起码要在60HZ以上才感觉好点,120HZ就基本上看不到闪烁,只能看到亮度的变化了。
电路相关文件(请在PC端查看下载)
电路城电路折扣劵获取途径:
电路城7~10折折扣劵(全场通用):对本电路进行评分获取;
电路城6折折扣劵(限购≤100元电路):申请成为卖家,上传电路,审核成功后获取。
版权声明:电路城所有电路均源于网友上传或网上搜集,供学习和研究使用,其版权归原作者所有,对可以提供充分证据的侵权信息,本站将在确认后24小时内删除。对本电路进行投诉建议,点击反馈给电路城。
使用说明:直接使用附件资料或需要对资料PCB板进行打样的买家,请先核对资料的完整性,如果出现问题,电路城不承担任何经济损失!
大家都在看:
趣味互动的模拟沙粒概述:
这些LED与运动相互作用,看起来像受到重力的影响。 一个Adafruit LED矩阵将LED显示为沙粒的小颗粒,通过采用Adafruit羽毛对加速计进行采样来驱动。
由Phillip Burgess编写的代码通过计算碰撞和终端速度来模拟物理。
我们设计了3D打印机箱,利用传感器的读数,让它摇摇晃晃,还有一个万向节来创造有趣的模拟。
元器件材料:
Adafruit LIS3DH Triple-Axis Accelerometer
Adafruit 15x7 CharliePlex LED Matrix
Adafruit Feather M0 Basic
面包板友好的SPDT滑动开关
6个M2x8mm螺丝
2个M2X4mm螺丝
电路原理图:
该滑动开关将连接到羽毛板和将需要70毫米为GND和50毫米为EN引脚,CharliePlex羽毛连接羽毛。SDA和SCL线的连接长度需要为70mm。 3V和GND连接都可以是80mm长 ,LIS3DH通过3D印刷支架连接到羽毛的顶部,需要40mm长的来连接3V,GND,SDA和SCL。
电路代码:
(代码详情见附件。)
要使用LED Sand素描,您需要确保您使用的是最新版本的Arduino IDE 。
如果您对Arduino完全陌生,请花点时间阅读一些介绍性教程,例如
如何使LED闪烁。这将帮助您了解如何使用IDE,加载草图以及上传代码。
接下来,您需要确保草图使用的库已经安装。使用最新的Arduino IDE,您可以使用其库管理器
来轻松安装库,或查看本指南以了解如何手动安装库。您将需要安装以下库:
Adafruit LIS3DH
Adafruit统一传感器
Adafruit IS31FL3731 Charlieplex LED
搜索库管理器中的库,他们应该很容易找到并安装。如果您已安装了一个或多个这些库,请确保将其更新到最新版本。
下载地址:
http://a360.co/2AD3VJo
组件安装:
来自:时间:
这个电路在家庭电源杂志#69中被推出(C)1998,G. Forrest Cook介绍这是一种低功率电压表电路,可用于运行在12和24伏特电池上的替代能源系统。电压表是扩展型,表示12伏特电池的10至16伏特范围内的小电压阶跃以及24伏特电池的22至32伏特范围。从24V操作时,从12V和160mw操作时,功耗可以低至14mw。可以将电表设置为跨越各种上下电压读取相等的步长。该仪表通过在低功耗周期闪烁模式下工作,通过在LED指示灯亮起并在重复的2秒周期内短暂地消耗电力来节省功率。电路可以切换到高功率模式,其中有源LED始终保持开启状态。电压指示器可以使用不同颜色的LED,这样可以在黑暗中读取电池状态。使用蓝色LED,可以使用红色,琥珀色,黄色,绿色和蓝色LED中的两种来获得漂亮的彩虹色。该电路还可以使用廉价和常见的红色LED。如果电路要在阳光下使用,应该使用超亮LED。典型用途包括监控便携式电池操作系统和室内壁挂式家庭电源系统充电指示器。该电路可以建在20美元以下,所有的零件都是通用的。该电路可以用CMOS ICM7555定时器或更常用的双极555定时器构建。7555定时器将提供更高效的操作,并应用于具有小电池的系统。产品规格
7555timer(12V)555timer(12V)7555timer(24V)555timer(24V)空闲电流:0.34ma 6.1ma 6.3ma 24maLED开启电流:18ma 22ma 12ma 28ma平均电流:1.2ma 6.9ma 6.6ma 24ma平均功率:14mw 83mw 160mw 580mw工作周期:约5%闪烁频率:约0.5hz工作电压:10V
20V(12V型)20V-35V(24V型)理论为12伏操作电路的核心是LM3914N点式电压表IC,U2。该芯片以扩展模式运行,使得电路在10-16V范围内响应。U2从内部参考电压输出引脚7上的稳定电压。这通过分压器VR2和R5馈送到内部参考输入引脚,以设置仪表敏感的范围。测量电压通过由R4和VR1组成的分压器馈入引脚5。该分频器将输入电压降至对IC有用的范围。基本扩展的12伏规LM3914电压表电路发表在“Nuts&Volts”杂志(1)中,类似的电路显示在Home Power#10(2)中。U2正电源连接到标称为12V的引脚3。U2负电源通过晶体管Q1瞬时接通,这种开关动作是使电路效率高的原因,因为U1(ICM7555)消耗仅为0.34ma,而U2消耗大约18ma,其中一个LED亮起。ICM7555定时器U1连接在一个具有窄脉冲宽方波输出的非稳态(自由运行)模式下运行。U1的占空比由R1和R2的比例控制。如果需要更快的闪烁,R2可以调整到更小的值,如果需要速率调整,则可以用电位计代替R2。如果需要较长的接通时间,则R1可能会增加。R1和R2的变化将影响电路消耗的平均电流。振荡频率由C1,R1和R2决定。C1可以是电解电容或多晶硅电容器,如果使用电解部件,请确保将正极端子连接到U1引脚6和2,将负极端子接地。定时器IC的输出通过限流电阻R3馈入晶体管Q1,其将功率控制到U2。电容器C2滤除对U1的控制电压输入,电容C3为整个电路提供直流滤波。当电容器C1两端的锁定开关闭合时,定时器的输出保持导通状态,从而使U2电路和电流消耗增加到18ma。开关不是简单地连接在晶体管上的原因是为了保持U2的负电源与电路脉冲时相同。这两种模式下的LED都保持相同的校准,因为晶体管的电压降始终是电路的一部分。最后但并非最不重要的是,如果电路短路,保险丝F1可以防止火灾的可能性。平均电流通过将U1所需的恒定电流与U2乘以占空比的电流相加来计算,详见规范。为了在12V模式下操作电路,将电路接线以使跳线J2和J5短路,则可能会丢失部件U3,C4,R6和R7。理论为24伏操作当连接24伏电压时,仪表在20-32V范围内响应。R6连接到24V电源而不是R4,R6的较大值将较高的输入电压调整到对U2有用的范围。具有串联电阻R7的电压调节器U3将24V降至12V调节,为IC提供正确的工作电压。电阻R7确保调节器的输入电压保持在IC绝对最大规格的35V以下。由于电压调节器和R7所消耗的额外功耗,在24V模式下的工作效率比12V模式低。为了在24V模式下操作电路,将电路接线,以使跳线J1,J3和J4短路。R4可能在24V模式中被遗漏。施工我在2“x3”镀铜PC板上建立了电路的原型,芯片安装在电路板的一侧粘接在电线套管中。零件焊接到绕线插座针的背面。作为地面飞机,将所有地面连接件直接焊接在板上。将LED以阵列的形式排列在单独的穿孔电路板上,并使用绕线将电线连接回U2。如果焊接到LED,在焊接之前,请确保将散热片夹连接到LED针脚上,否则LED容易被多余的热量破坏。穿孔的LED板使用垫片和机械螺丝安装在主电路板上。7555定时器和蓝色LED是静电敏感的,避免了这些或任何其他半导体部件与静电的切换。初学者应该使用较大的电路板开始,因为接线非常紧。在连接零件之前,请先钻上电路板上的任何安装孔。使用薄型电子焊料,应使用30瓦品种的电子烙铁。电压读数可以打印或绘制在一张纸上并放置在LED的旁边。对准必须有一个可调节的直流电源和一个精确的电压表进行对准。按照12V版本的电路的这些说明。关闭开关S1,使LED保持开启状态。对准的第一步包括设置U2的参考电压。将外部电压表连接到U2引脚6和4上,并调整VR2读数为1.2伏。居中设置VR1和VR3。在这个阶段,你应该决定你希望仪器读取什么尺度。我可以将电路调整为10.5V至15V之间的0.5V步长以及10.5V至13.2V之间的0.3V步长。对于这个例子,电路将被设置为使用10.5到15V刻度。终点之间的距离为4.5V。将电源从9V调整到15V,并看到仪器正在读取的位置,直到电位器接近正确的范围,才可能读取,否则将电源设置为12V,并调整VR3直到其中一个中心LED灯。调整电源,直到第一个LED亮起,测量该电压。调整电源直到最后一个LED亮起,测量该电压并减去第一个电压,这是跨度。调整VR1并重复上一次调整,直到跨度为4.5V。现在将电压设置为10.5V并调整VR3直到最低的LED亮起。VR1和VR3相互作用,因此可能需要进行几次调整才能使其完美。为了对准24伏电路,必须有一个可以调节到30V左右的可变电源。实现更高电压可调电源的良好方法是将带电的12V电池与较低电压的可变电源串联。和往常一样,当处理诸如电池的大电流源时,请在布线中使用保险丝并绝缘暴露的连接。使用在12或24伏电池上连接适当的电压表电路,并观察闪烁的LED指示灯,以显示电池电压指示。激活开关S1显示常数。如果电压高于上一步,则最高的LED将保持亮起。如果电压低于底部电平,则所有LED将熄灭。该电路的原型版本已连续使用7年以上,设计已通过时间考验。元器件清单U1:ICM7555 CMOS定时器IC(Harris / Intersil)U2:LM3914N LED电压表(美国国家半导体)U3:7812 12伏稳压器(美国国家半导体)Q1:2N3904 NPN硅晶体管D1:1N4148硅开关二极管LED1-LED10:红,黄,琥珀,绿,蓝LEDC1:1.0uF电容器,可以使用电解质。C2:0.001uF陶瓷电容C3:10uF电解电容C4:0.1uF陶瓷电容R1:47K 1 / 4W电阻R2:2M 1 / 4W电阻R3:22K 1 / 4W电阻R4:4.7K 1 / 4W电阻R5:1.2K 1 / 4W电阻R6:15K 1 / 4W电阻R7:330欧姆1 / 2W电阻VR1,VR3:5K微调电位器,10转风格VR2:200欧姆微调电位器,10转风格F1:1/2安培直流快熔保险丝S1:微型开关或按钮开关
来自:时间:
硬件设计行业,稳定的STC89C52+蓝牙+NRF24L01无线+继电器控制+流水灯按键+温度无线传输送手机APP,可直接打板焊接使用。可直接连接小车底板做手机蓝牙小车。可做智能家居控制节点,蓝牙,NRF,继电器,蜂鸣器,OLED显示程序都送。蓝牙小车详细教程:http://pan.baidu.com/s/1eSCGEmm牙小车视频资料演示:http://pan.baidu.com/s/1jI9QCOe小板实物购买链接:https://item.taobao.com/item.htm?spm=686.... 智能蓝牙下车购买链接:https://item.taobao.com/item.htm?spm=686....无线温度传输 PCB 焊接好实物图片展示:无线温度传输原理图+PCB截图:蓝牙小车APP截图(重力感应超灵敏哦!):智能家居APP(可自行修改内容和AT指令):
来自:时间:
前言:该【全彩RGB心形流水灯】是由【小奇奇工作室团队】独家开发的产品。奇奇首次将原理图 程序 元件BOM表 焊接制作教程 大公开!喜欢的可以下载自己研究学习送好友、送女友、送亲人、泡妹子,或者家里当装饰品!绝对是最好的电子创意礼物! 本次全彩RGB心形流水灯版本更新至最终版,简约而不简单,【内置可充电电源】再也不怕送妹子的时候还需要带个充电宝给心形灯供电了,正式脱离需要电源的时代洛!DIY焊接制作教程 全彩RGB心形流水灯【免费公开】资料 链接:http://pan.baidu.com/s/1dFkUtkH,或者在“相关文件”自行下载。实物TAO宝购买链接:http://shop.taobao.com 快手ID:
@奇奇爱上单片机 奇奇QQ/微信:
来自:时间:
心形灯产品介绍:
1) 这款心形流水灯采用三原色LED灯,且LED灯为5050(RGB),基于51单片机设计,通过编程可以随意控制每一个花样都可以实现你想要的颜色 2) 这个小作品外加红外接收头,可以实现红外遥控器随意控制 3)如果外加音乐需要另加MCU(可用8脚的mcu 集成后就非常小),因为总共需要32*3个io口,解决掉io口不足的问题后,c52的io口刚好用完外带红外的一个io口,实现插SD卡用红外遥控器控制随意切换音乐大家感兴趣可以联系我额(送人绝对的洋气,秒杀淘宝的心形led)
另外,自己花了点时间做了个视屏,大家撮合着看,因为不是很专业开场是板子的实物成品,用ad软件做的视频,但稍微有点模糊,高清不知道怎么弄,刚学会这个功能,不是特别熟练,大家凑合坐看,后面是成品效果展示,可以定制花样和随意表达你想要的颜色(红、绿、蓝、黄、紫、青、白),但尽量少改花样(颜色随便),因为编程时花样设的定量,颜色是变量,改花样麻烦(由于三原色灯比起普通LED编程有点困难加麻烦)视频演示:需要电路板的可以联系我 Q()三原色七彩心形灯电路原理图部分截图:
来自:时间:
2015 年 10 月 15日
2015 年 10 月 15日
TY1234购买了:
lxhfangzong购买了:
xiaobirds购买了:
TY1234购买了:
TY1234购买了:
xiaobirds购买了:
TY1234购买了:
TY1234购买了:
你尚未购买电路图,点击
进行购买!
您想购买此电路吗?,上传电路,审核成功后获取电路城6折折扣劵。
6折折扣劵只能购买小于100元(含100元)的电路。51单片机脉冲宽度调制(PWM)控制LED灯亮度
介绍一个51系列单片机采用脉冲宽度调制(PWM)方式控制LED灯亮度的一个程序,大家都知道,51单片机本身是没有pwm接口的,这个程序是通过软件模拟pwm.在一定的频率的方波中,调整高电平和低电平的占空比,即可实现LED灯亮度控制,程序中使用定时器0产生2.5ms周期脉冲,使用占空比控制变量scale控制占空比,在低电平期间使LED灯亮,在高电平期间使LED灯灭,改变scale就改变了高电平与低电平的时间,因此也就控制了LED灯的亮度。
#include "AT89X51.H"&
//模拟PWM输出控制灯的10个亮度级&
unsigned int
//占空比控制变量&
main(void)&&&&&&
// 主程序&
{ unsigned int
//延时循环变量&
TMOD=0x02;&
//定时器0,工作模式2(),8位定时模式&
TH0=0x06;&&
//写入预置初值6到定时器0,使250微秒溢出一次(12MHz)&
TL0=0x06;&&
//写入预置值&
//启动定时器&
//允许定时器0中断&
//允许总中断&
while(1)&&
//无限循环,实际应用中,这里是做主要工作&
for(n=0;n&50000;n++);&
//每过一段时间,就自动加一个档次的亮度&
scale++;&&&
//占空比控制变量scale加1&
if(scale==10)&
//如果scale=10,使scale为0&
timer0() interrupt
//定时器0中断服务程序&
static& unsigned
//tt用来保存当前时间在一秒中的比例位置&
//每250微秒增加1&
if(tt==10)&&
//2.5毫秒的时钟周期&
//使tt=0,开始新的PWM周期&
//使LED灯亮&
if(scale==tt)&
//按照当前占空比切换输出为高电平&
P2_0=1;&&&&&&&
//使LED灯灭&
&程序中从tt=0开始到scale为低电平,从scale开始到tt=10为高电平,由于scale是变量,所以改变scale就可以改变占空比。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。查看: 3204|回复: 0
用C52模拟PWM输出控制LED灯的亮度
通过调节一个频率的占空比就可以控制一个输出电流中的大小了,一般用于对LED电机转速的调节,灯光暗淡的调节等。#include&reg52.h&
#define uint unsigned int
#define uchar unsigned char
sbit LED=P0^0;
uchar num,MCE;
uchar flag=1;&&//控制灯由暗到亮!
void delayms(uint z)&&//延时1ms
for(x=z;x&0;x--)
&&for(y=110;y&0;y--);
void main()
TMOD=0x02;
&&delayms(100);
&&if(flag==1)
&&if(flag==0)
&&if(MCE&=10)
&&if(MCE==0)
void Timer0() interrupt 1
if(num==10)
if(num==MCE)
Powered by51单片机学习笔记:定时器产生PWM可调方波,控制led灯亮度
11:44:37来源: eefocus 关键字:&&&&&&&&
使用定时器T0产生PWM方波,用按键调整占空比,20级可调控制led灯的亮度等级.&C代码&&#include&&"my51.h"&&#include&&"timer0.h"&&&&#define&grading&&&&20&&&&&&&&&&//亮度20级变化&&sbit&keyS3=P3^5;&&&&&&&&&&&&&&&//按键调整占空比,PWM_keyChange++&&sbit&keyS4=P3^6;&&&&&&&&&&&&&&&//&&&&&&&&&&&&&&&PWM_keyChange--&&&&u8&PWM_keyChange=10;&&&&&&&&&&&//初值,按键调整在1~20之间变化&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//占空比&&&PWM_keyChange/grading&&&&void&T0_work()&&&&&&&&&&&&&&&&&//本函数由T0定时器中断函数调用&&{&&&&&&&&&if(timeMultiple1Flag)&&&&&&{&&&&&&&&&&&&&&&&&led=off(7);&&&&&&&&&&&&//关闭7号灯&&&&&&&&&&timeMultiple1Flag=0;&&&//清定时器复用置位标志&&&&&&}&&&&&&&&&&&&if(timeMultiple2Flag)&&&&&&{&&&&&&&&&&&&&&&&&led=on(7);&&&&&&&&&&&&&//打开7号灯&&&&&&&&&&timeMultiple2Flag=0;&&&//清定时器复用置位标志&&&&&&}&&&&&&&&&}&&&&void&main()&&&&&&&&&&&&&&&&&&&&&//测试&&{&&&&&&u8&keyFlag=1;&&&&&&&&&&&&&&&//程序中没有消抖处理,只是简易的按键进出自锁标志&&&&&&led0=&&&&&&&&&&&&&&&&&//先打开0号灯,用于和7号灯对比亮度&&&&&&&&&&&initT0(1,10,grading);&&&&&&&//1毫秒的基本定时,亮的时间1*10毫秒,暗1*(grading-10)毫秒&&&&&&while(1)&&&&&&{&&&&&&&&&&if(0==keyS3)&&&&&&&&&&{&&&&&&&&&&&&&&if(keyFlag)&&&&&&&&&&&&&&&&&&&&&&&//防止一次按键中多次执行&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&keyFlag=0;&&&&&&&&&&&&&&&&&&&&//清标志,类似同步锁&&&&&&&&&&&&&&&&&&if(++PWM_keyChange>grading)&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&PWM_keyChange=&&&&//占空比最大100%&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&initT0(1,PWM_keyChange,grading);&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&else&if(0==keyS4)&&&&&&&&&&{&&&&&&&&&&&&&&if(keyFlag)&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&keyFlag=0;&&&&&&&&&&&&&&&&&&if(0==--PWM_keyChange)&&&&&&&&&&&&&&//占空比减小&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&PWM_keyChange=1;&&&&&&&&&&&&&&&&//最小占空比&1/20&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&initT0(1,PWM_keyChange,grading);&&&&//占空比减小&&&&&&&&&&&&&&}&&&&&&&&&&}&&&&&&&&&&else&&&&&&&&&&{&&&&&&&&&&&&&&keyFlag=1;&&//按键锁释放标志,下一次按键时允许调整占空比&&&&&&&&&&}&&&&&&}&&}&&&C代码&&#ifndef&_MY51_H&&#define&_MY51_H&&#include&&&//#include&&&#include&&&#include&&&#include&"mytype.h"&&&&&&#ifndef&_51LED_&&#define&_51LED_&&#define&led&&&&&&&P1&&&&&&&&&&&&&&&&&//P1总线连8个led灯,灯连573锁存器,P1置低电平点亮&&#define&LED&&&&&&&led&&#define&ON(x)&&&&&P1&(~(1<<(x)))&&&//打开某个灯,开多个灯用&ON(m)&&&ON(n)&&#define&OFF(x)&&&&P1|(1<<(x))&&&&&&//关闭某个灯,关多个灯用&OFF(m)|&OFF(n)&&#define&on(x)&&&&&ON(x)&&&&&&&&&&&&&&//包含大小写&&#define&off(x)&&&&OFF(x)&&&&#define&ledon&&&&&0&&&&&&&&&&&&&&&&&&//某个灯,打开&&#define&ledoff&&&&1&&&&&&&&&&&&&&&&&&//某个灯,关闭&&&&sbit&led0=P1^0;&&&&&&&sbit&led1=P1^1;&&sbit&led2=P1^2;&&sbit&led3=P1^3;&&sbit&led4=P1^4;&&sbit&led5=P1^5;&&sbit&led6=P1^6;&&sbit&led7=P1^7;&&&sbit&ledLock=P2^5;&&//锁定当前8个led的状态,0锁定&,1不锁定&&&&#endif&&&&/*************二进制输入宏****************************/&&#ifndef&_LongToBin_&&#define&LongToBin(n)&\&&&&&&&&&&&&&&&(&&&&&&&&&&&&&&&&&&&&\&&&((n&>>&21)&&&0x80)&|&\&&&((n&>>&18)&&&0x40)&|&\&&&((n&>>&15)&&&0x20)&|&\&&&((n&>>&12)&&&0x10)&|&\&&&((n&>>&9)&&&&0x08)&|&\&&&((n&>>&6)&&&&0x04)&|&\&&&((n&>>&3)&&&&0x02)&|&\&&&((n ) & 0x01)
关键字:&&&&&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
热门关键词
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。}

我要回帖

更多关于 单片机pwm控制led亮度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信