51单片机用汇编语言如何编写LED灯逐渐变亮在逐渐变暗啊

想控制一个灯,让这个灯渐渐的变亮,然后渐渐变暗,最好是源程序啊... 想控制一个灯,让这个灯渐渐的变亮,然后渐渐变暗,最好是源程序啊 展开
 我来答
niushengqi
推荐于2017-09-09 · TA获得超过681个赞
知道小有建树答主
回答量:729
采纳率:0%
帮助的人:611万
展开全部
这个要用到软件的pwm,因为51的没有硬件的pwm所以只好自己写软件的了。首先,要做一个软件三角波发生器子程序,频率自己定,就是变亮变暗的周期。此函数的返回值作为pwm的输入值。再做一个pwm的模拟程序,占空比(0-100)是三角波发生器的输出,pwm模拟程序控制某个端口输出1和0的占空比来控制灯 的明暗。pwm的思路是:检查设置值是否不等于0,是则端口置1,程序开始加1计数,计数后检查计数值是否等于设置值,如果等于则跳转,不等则继续加一,如果到100或者计数值等于设置值则使端口置0,一个pwm周期结束,如此重复就可以了。pwm周期自己看实际情况定义。如果要控制电灯泡的话,频率不用太高,50hz可以了。关键是要做隔离,用光电隔离加双向可控硅来控制。
呵呵,声明两点:1 源程序网上应该有的,或者自己买本书就什么也有了。2 不鼓励直接给别人源程序,给你思路再动手就应该很好弄了,总看别人的,不自己思考永远都是别人的。
http://www.programsalon.com/downloads88/sourcecode/embed/detail337156.html
zhxiufan
推荐于2017-09-27 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38387
国家科技进步奖

向TA提问 私信TA
展开全部
使LED灯亮度发生变化可以采用PWM控制或者通断延时时间发生变化来实现,举例如下:
LED EQU P1.0
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV R7,#1

LOOP1: ;渐亮
CLR P1.0

LCALL DELAY ;PWML

SETB P1.0

LCALL DELAY1 ;PWMH

INC R7

CJNE R7,#250,LOOP1

LOOP2: ;渐暗
CLR P1.0

LCALL DELAY

SETB P1.0

LCALL DELAY1

DJNZ R7,LOOP2

SJMP MAIN

DELAY:
MOV R2,#10

DJNZ R2,$

DJNZ R7,DELAY

RET

DELAY1:
MOV A,#250

SUBB A,R7

D1:
MOV R2,#10

DJNZ R2,$

DJNZ R7,D1

RET

END
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
562738047
2008-11-09 · TA获得超过1290个赞
知道大有可为答主
回答量:1526
采纳率:100%
帮助的人:986万
展开全部
niushengqi - 经理 四级 你的说法介于概念介绍与具体程序实现之间,他看不懂。
我说两句:利用PWM,即输出50或者25Hz的脉冲串,这个脉冲串的脉冲宽度在不断变化,就是niushengqi说的占空比在不断变化。这就是PWM。从小到大不断变化,到最大值以后再返回,就能实现你的亮度渐变。
可是niushengqi,我们两个说的恐怕都不能满足要求,你得有源程序呀。呵呵。

niushengqi -大拇指给你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hgrrggp
2008-11-06 · TA获得超过2014个赞
知道小有建树答主
回答量:456
采纳率:0%
帮助的人:198万
展开全部
饿
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jushizhijia
2008-11-06 · TA获得超过599个赞
知道答主
回答量:154
采纳率:0%
帮助的人:104万
展开全部
一楼给出了软件思路
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式