PWM控制LED渐亮渐灭的51汇编程序

发布者:美丽花朵最新更新时间:2012-10-16 来源: 21IC 关键字:PWM控制  LED  51汇编程序 手机看文章 扫描二维码
随时随地手机看文章

;设计思路:用定时器中断产生最小时间单位T0,每m个T0组成一个子周期T10,其中前n个T0为LED导通时间,即Ton=n*T0,则Toff=(m-n)*T0
;每X个T10组成一个母周期T20,其中前y个T10为有效控制时间,后续的(x-y)个T10令LED熄灭或者子周期占空比调至最小。
;适当调节n/m和x/y的比例使显示效果达到最佳。
;以下是刚刚调试通过的小段程序,显示效果良好。
;实验过程本人有一种推测,不知是否成立:
;子周期的最小占空比的宽度应大于LED的点亮时间,即点亮LED的时间宽度n/m*T0应足够产生余辉。类似于动态数码管对点亮时间的要求。
;母周期的宽度应小于1/50s,提高刷新频率以令肉眼察觉不出闪烁。
;未经验证的推测,可能是错误的,请大家接着探讨。。。
;芯片: AT89C2051
;晶振:18.9375
;电路描述:输入5V电源,简易RC复位,P3.3对地接KEY(减1),P3.3对地接KEY2(加1),P3.7接三极管C106驱动LED。LED直径5mm,红色。限流电阻471、1/4W.
;功能描述:LED渐亮渐灭。按住KEY可以保持住当前某占空比的亮度(如一开始按住KEY再通电,将看到空度比为1%的亮度)。
;调节子周期和母周期,均可渐亮渐灭。 同时按下“加1”和“减1”按键切换选择调节对象(2004.11.04)
LED BIT P3.7
KEY BIT P3.3
SOV BIT 20H.0 ;子周期显示完毕标志
BOV BIT 20H.1 ;母周期显示完毕标志
SSS EQU 30H   ;子周期占空宽度调节
T10 EQU 31H   ;子周期宽度
AAA EQU 32H   ;子周期占空宽度入口
BBB EQU 33H   ;母周期占空宽度入口
T20 EQU 34H   ;母周期宽度
MMM EQU 35H   ;母周期占空宽度调节
A10 EQU 36H   ;子周期宽度缓冲
B20 EQU 37H   ;母周期宽度缓冲

KEY2 BIT P3.2
COM1 BIT P3.5
COM2 BIT P3.4
COM3 BIT P3.1
COM4 BIT P3.0
NOISE1 EQU 38H
NOISE2 EQU 39H
NOISE3 EQU 3AH

ORG 00H
LJMP MAIN
ORG 0BH
LJMP PWM

PWM:
MOV TH0,#0FFH
MOV TL0,#90H
PUSH ACC
;####################################################
JB  BOV,OUTLOW
;*********************************************
JB  SOV,IFSEND
DEC  T10               ;保持计数同步
DJNZ SSS,LRET          ;占空参数修正
MOV  SSS,AAA           ;复原子周期占空参数
MOV  A,T10
CJNE A,#0,SCTN         ;对占空比为100%时的修正
AJMP T10END
SCTN:
CLR  LED
SETB SOV
AJMP LRET
IFSEND:
DJNZ T10,LRET
T10END:
MOV  T10,A10           ;复原子周期宽度参数
SETB LED
CLR  SOV               ;子周期处理完毕
;**********************************************
DEC  T20
DJNZ MMM,LRET
MOV  MMM,BBB
MOV  A,T20
CJNE A,#0,MCTN         ;对占空比为100%时的修正
AJMP T20END
MCTN:
CLR  LED
SETB BOV
AJMP LRET
OUTLOW:
CLR  LED               ;母周期低电平部分输出0
DJNZ T10,LRET
MOV  T10,A10
DJNZ T20,LRET
T20END:
MOV T20,B20
SETB LED
CLR  BOV               ;母周期处理完毕
;#############################
LRET:
POP ACC
RETI[page]

MAIN:
MOV  P3,#00001100B
MOV TMOD,#01H
MOV A10,#10        ;子周期宽设置
MOV B20,#20        ;母周期宽设置
MOV T10,A10
MOV T20,B20
MOV AAA,#6         ;子周初始占空宽度设置
MOV BBB,#20         ;母周初始占空宽度设置
MOV SSS,AAA
MOV MMM,BBB
SETB ET0
SETB TR0
SETB EA
SETB LED
MOV  20H,#0;所有标志位清零
MOV  R0,#250
MOV  R1,#2 ;每隔0.07*250*2ms调节一次亮度

FREE:    ;KEY BBBBBBBBBBBBBBBBBBBBBBBBBBBB
MOV  PCON,#1
CHANGE2:
JB  KEY,CHOU1
JB  KEY2,CHOU1
DJNZ NOISE1,FREE
JNB KEY,$
JNB KEY2,$
AJMP FREE3
CHOU1:
MOV NOISE1,#0
DOWN1:
JB KEY,UP1
DJNZ NOISE2,FREE
DJNZ BBB,NEXT      ;减1修正
MOV  BBB,#1
NEXT:
JB   KEY,FREE      ;操作完成后待松键再退出
JNB  KEY2,FREE
SJMP NEXT
UP1:
MOV NOISE2,#0
IFUP:
JB KEY2,LCRNOS
DJNZ NOISE3,FREE
INC  BBB            ;加1修正
MOV  A,BBB
CJNE A,#21,NEXT2
MOV  BBB,#20
NEXT2:
JB   KEY2,FREE      ;操作完成后待松键再退出
JNB  KEY,FREE
SJMP NEXT2
LCRNOS:
MOV NOISE3,#0
AJMP FREE ;KEY B


FREE3:    ;KEY
MOV  PCON,#1
CHANGE1:
JB  KEY,CHOU2
JB  KEY2,CHOU2
DJNZ NOISE1,FREE3
JNB KEY,$
JNB KEY2,$
AJMP FREE
CHOU2:
MOV NOISE1,#0
DOWN2:
JB KEY,UP2
DJNZ NOISE2,FREE3
DJNZ AAA,NEXT3      ;减1修正
MOV  AAA,#1
NEXT3:
JB   KEY,FREE3      ;操作完成后待松键再退出
JNB  KEY2,FREE3
SJMP NEXT3
UP2:
MOV NOISE2,#0
IFUP2:
JB KEY2,LCRNOS2
DJNZ NOISE3,FREE3
INC  AAA            ;加1修正
MOV  A,AAA
CJNE A,#11,NEXT4
MOV  AAA,#10
NEXT4:
JB   KEY2,FREE3      ;操作完成后待松键再退出
JNB  KEY,FREE3
SJMP NEXT4
LCRNOS2:
MOV NOISE3,#0
AJMP FREE3 ;
END

关键字:PWM控制  LED  51汇编程序 引用地址:PWM控制LED渐亮渐灭的51汇编程序

上一篇:用AT89C2051设计的PC/AT键盘
下一篇:单片机汇编语言常见错误分析

推荐阅读最新更新时间:2024-03-16 13:10

亮度再创新高,艾迈斯欧司朗推出新款汽车前照LED
亮度再创新高,艾迈斯欧司朗推出新款汽车前照LED • Oslon Black Flat X亮度出众,在驱动电流1 A时一般能达到典型值460流明,是市面上亮度最高的汽车前大灯照明LED颗粒; • 艾迈斯欧司朗持续推动亮度升级,为客户提供单芯片和双芯片型号; • 到2022年年中,该产品系列将进一步扩展,包含多种多芯片型号,使车灯制造商能够实现经济高效的LED大灯设计。 中国,2021年12月9日——全球领先的光学解决方案供应商 艾迈斯欧司朗 ,将推出目前市面上最亮的汽车前照明LED。艾迈斯欧司朗是汽车LED领域的市场领导者,现在通过Oslon Black Flat X系列向该行业发出另一个强有力的信号。
[电源管理]
亮度再创新高,艾迈斯欧司朗推出新款汽车前照<font color='red'>LED</font>
LED电子显示屏真彩显示的几种关键技术分享
自八十年代以来,随着公共场合信息的增多,建立性能优良、价格低廉的大面积信息宣传媒体一直是工程技术人员所关注的问题。根据应用场合的不同,要求的显示性能以及对显示系统成本的要求的不同,人们可以选择不同的显示媒体。考虑到用于户内外的大屏幕显示媒体对显示设备的颜色、亮度、视频效果、可靠性、寿命等性能要求比较苛刻。    它要求显示系统能够显示出接近于自然色彩的真彩画面,并且具有较高的显示亮度,无论是在白天还是在晚上,晴天还是阴天,都能够让观众清楚的看到其内容,并且能够根据外部自然光强度的变化自动地对其显示正在播放的视频节目,具有较高的可靠性和性能价格比,易于维护。综合上述诸多的因素,工程技术人员通过对磁翻版、真空像素管、电视墙、LED显
[电源管理]
基于MEMS的LED芯片封装光学特性分析
  经过几十年的发展,LED性能已经得到了极大的进步,由于它具有发光效率高,体积小,寿命长等优点,将成为新一代照明光源,被人们公认为是继白炽灯之后照明领域的又一次重大革命。目前LED已经在照明、装饰、显示和汽车等诸多领域得到了广泛的应用,而其应用前景和应用领域还在被不断的开发和扩展。在LED的产业链中,封装是十分重要的一个部分,它决定着LED芯片的光、热、寿命和二次配光等特性。LED最初的封装形式主要是如图1的T1和T1—3/4。随着芯片发光功率的提高,以及应用领域的扩大,其原有的封装结构无论是在散热,还是在集成度上都不再挠满足LED不断发展的需要。伴随着电子封装技术的不断发展,表面贴装(SMT)封装技术开始成为LED封装技术的主
[电源管理]
LED路灯与交通灯控制系统结合方案设计分享
  1 研究背景   近年来,我国的路灯建设取得了飞速的发展,道路照明质量不断提高,高强度气体放电灯被广泛使用,对现代化城市的建设起了很大作用,但是随之而来的是能耗的大幅度提高,特别是近年来能源价格大幅度提升,使电力耗费成为负担。在全球都在提倡绿色照明的时代,路灯的节能必然成为一种趋势。   目前,我国照明用电量占总用电量的13%左右,其中道路照明占整个照明用电量的25%~30%,因此道路照明节能具有很大的潜力和空间。目前道路照明使用最多的是高压钠灯,这种光源存在显色性差、启动时间长、耗电量高、发热量大等缺点,需要发展新的更节能的道路照明光源。大功率高 光效 LED是近年来国内外快速发展起来的新光源,它具有光效高(≥90
[电源管理]
<font color='red'>LED</font>路灯与交通灯控制系统结合方案设计分享
创意无限:DIY可编程LED小玩具
最近在学习AVR单片机,到处找实例玩。 水平不够,只能先从简单的点LED灯玩起。让LED按照程序的设计,以不同节奏闪烁。并且加入光敏电阻做传感器,实现更丰富的控制功能。 可别小看这点灯哦,耍起花样来还真有一番风味。 先看看成品吧。 文章结尾附 LED小玩具程序代码 ,欢迎大家下载编程代码并DIY制作哦,亲身体验制作的快感。 精简版: 蜘蛛版: 未来战士版: 有没有动手折腾的冲动?来吧,咱先做个简单版。 电路很简单: 元件更简单:一个Tiny13的单片机,两个1K的电阻,一个光敏电阻,一个LED,一个电池,一个回形针。 制作过程如下,图片足以表达,我就不废话了:
[模拟电子]
创意无限:DIY可编程<font color='red'>LED</font>小玩具
LED路灯雷击主要类型及其防护解析
  路灯安装在户外,雷击是一个非常大的威胁。轻则导致路灯损坏,重则引起火灾或人员伤亡,产生巨大的损失。在此,就向大家介绍一下关于雷电对 LED路灯 的影响以及防范措施。电华星技术研发中心通过多年的研究,总结雷击主要有以下四种类型:    1、直击雷   直击雷蕴含极大的能量,峰值电压可达5000kv的雷电流入地,具有极大的破坏力。会造成以下三种影响:   (1)巨大的富电流在数微秒时间内流下地,使地电位迅速拾高,造成反击事故,危害人身和设备安全。   (2)雷电流产生强大的电磁波,在 电源 线和信号线上感应极高的脉冲电压。   (3)雷电流流经电气设备产生极高的热量,造成火灾或爆炸事故。    2、传导雷
[电源管理]
一种用于白光LED驱动的电荷泵电路设计
0 引 言 目前用于白光驱动的升压型电路主要有电感型DC-DC电路和电荷泵电路。电感型DC-DC电路存在EMI等问题,而电荷泵电路结构简单,EMI较小,得到了广泛的应用。 白光LED驱动的电荷泵主要有两种类型:电压模式和电流模式。相对于电压模式可能造成每个LED亮度不匹配的缺点,电流模式每路单独输出恒定电流,使亮度可以较好地匹配,而且不需要外围平衡电阻,大大节省了空间。 本文设计了一种用于白光LED驱动的电流型电荷泵电路。采用1.5倍压升压,比传统的2倍压升压模式提高了效率,并采用数字调光方式,可提供32级灰度输出,满足不同场合的要求。系统结构如图1所示。主要可分为以下部分:带隙基准电路,软启动电路,振荡器,1.5倍压电荷泵
[应用]
使用STM32寄存器点亮LED
事先声明哦,我也是最近才开始学32的,不过我会尽可能详细的讲解这些小知识点 我们口中常说的LED灯其实是指LED发光二极管,关于这一点涉及到的知识点,我已经在51单片机教程中提及(同点亮LED灯),故而不再详述。 刚开始接触STM32的时候,觉得他的操作明显区别于51,比如我们点亮一个LED灯,直接控制相应的IO口即可;但32不一样,我们需要先设置时钟控制寄存器 RCC_APB2ENR|=1 4; //一共32位 然后设置它的工作方式,输出速度。 GPIOC_CRL&=~(0x0f (4*i)); //控制第i+1个led GPIOC_CRL|=(3 (4*i)); //3可以表示为0011,然后在它的前面补零,凑
[单片机]
使用STM32寄存器点亮<font color='red'>LED</font>灯
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved