打印

渐变程序请教 已解决

[复制链接]
1881|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kxc2008|  楼主 | 2009-7-18 15:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ov, vr, AI, HC, AD
本帖最后由 kxc2008 于 2009-8-2 15:32 编辑

;控制P1口LED灯渐亮和渐暗程序<br />ORG 00H<br />JMP MAIN<br />ORG 30H<br />MAIN:<br /><br />CALL LOOP2 ;<br />CALL DELAY1<br />JMP MAIN<br />;以下一段为由暗变亮的子程序,变化程度共255级,由两段程序组<br />;成,一段点亮,时间值由A中的数决定<br /><br /><br /><br />;以下为由亮变暗子程序,原理与上面一样.<br />LOOP2:<br />MOV ;P1,#0FFH <br />INC A  ;程序运行到此,A的值为0,经这一步后为1<br />CJNE A,#02H,W2<br />W1:<br />JMP OVER2<br />W2:<br />MOV R7,A<br />D11:MOV R6,#30<br />DJNZ R6,$<br />DJNZ R7,D11<br />MOV ;P1,#0<br />CPL A<br />MOV R7,A<br />D22:MOV R6,#30<br />DJNZ R6,$<br />DJNZ R7,D22<br />CPL A<br />JMP LOOP2<br />OVER2:RET<br />LOOP3:MOV  ;P1,#0FFH<br />      CALL  DELAY1<br />      MOV  ;P1,#00H<br />      CALL  DELAY1<br /><br />DELAY1:MOV  R3,#100<br />YS1:   MOV  R4,#100<br />YS2:   MOV  R5,#248<br />       DJNZ R5,$<br />       DJNZ  R4,YS2<br />       DJNZ R3,YS1<br />       RET<br />END<br /><br /><br /><br />请教各位高手如何由亮到暗的时候,不要全灭下去,要有一点微亮,然后在从暗到亮这样循环

相关帖子

沙发
小李志| | 2009-7-18 16:58 | 只看该作者

好像PWM可以做

先确定思想再写程序,

使用特权

评论回复
板凳
lzw120051| | 2009-7-18 16:58 | 只看该作者

可以这样

先确定周期,比如10MS
再把周期分成100份,来确定你输出。
50%的亮,通5MS断5MS实现,

使用特权

评论回复
地板
gzrjxsf| | 2009-7-21 15:30 | 只看该作者

哥们我来帮你实现

;控制P1口LED灯渐亮和渐暗程序 LED低电平点亮
COUNT0        EQU        31H
COUNT1        EQU        32H
SPEED_DATA    EQU        33H
COUNT2        EQU        34H
COUNT_DATA    EQU        35H
    ORG 00H
    JMP MAIN
    ORG 30H
MAIN:
    MOV       COUNT0,#00
    MOV       COUNT1,#00
    MOV       COUNT2,#00
    MOV       SPEED_DATA,#20    ;调速度
    MOV       COUNT_DATA,#250    ;250级
;====================================    
;由亮到暗2%    
LED_DISP1:
    MOV       COUNT0,#00H
    INC       COUNT2
    MOV       A,COUNT2
    CJNE       A,SPEED_DATA,DEL_1
    MOV       COUNT2,#00H
    INC       COUNT1
    MOV       A,COUNT1
    CJNE       A,#245,DEL_1    
    JMP       LED_DISP2
DEL_1: 
    CALL       LOOP1
    JMP       LED_DISP1
;=================================== 
;由暗2%到亮100%       
LED_DISP2:        
    MOV       COUNT0,#00H    
    INC       COUNT2
    MOV       A,COUNT2
    CJNE       A,SPEED_DATA,DEL_2
    MOV       COUNT2,#00H    
    DJNZ       COUNT1,DEL_2
    INC       COUNT1    
    JMP       LED_DISP1
DEL_2:  
    CALL       LOOP1
    JMP       LED_DISP2        
;=======================================    
LOOP1:      
    MOV         P1,#0FFH
    NOP
    NOP
    NOP
    NOP
    INC        COUNT0
    MOV        A,COUNT0
    CJNE       A,COUNT1,LOOP1     
LOOP2:  
    MOV        A,COUNT0
    CJNE       A,COUNT_DATA,NEXT    
    RET
NEXT:   
    MOV         P1,#00H   
    NOP
    NOP
    NOP
    NOP
    INC        COUNT0
    JMP        LOOP2
      
    END
 

使用特权

评论回复
5
gzrjxsf| | 2009-7-21 15:47 | 只看该作者

看完我写的方法后 在去想想用其它的方法来实现  写程序发散自己思想很重要

使用特权

评论回复
6
戒指320| | 2009-7-22 19:07 | 只看该作者

我以前写过这个东西,就是把你的时间分成很小的段,在每一个时间段里,高电平和低电平的时间分配不相同。
另外用pwm也是可以的

“如何由亮到暗的时候,不要全灭下去,要有一点微亮,然后在从暗到亮这样循环”
你都能写出来暗和亮,这个问题难道你还解决不了吗?你再想想。

使用特权

评论回复
7
czghn1| | 2009-7-23 17:20 | 只看该作者

00

使用特权

评论回复
8
kxc2008|  楼主 | 2009-8-2 15:29 | 只看该作者
多谢各位了,问题已解决

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

239

帖子

0

粉丝