性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

請教一個(gè)單片機(jī)控制發(fā)光二極管亮度的問題??

各位單片機(jī)高手:請教一個(gè)單片機(jī)控制發(fā)光二極管亮度的問題

我現(xiàn)在所用的芯片是AT89C2051芯片,發(fā)光二極管接在芯片的p1口,P1.0未接,共七個(gè)發(fā)光二極管,我想通過軟件控制二極管的亮度漸變,不知道有沒有辦法實(shí)現(xiàn),怎么樣實(shí)現(xiàn)???

我找過很多關(guān)于PWM的調(diào)節(jié),據(jù)說這個(gè)PWM能夠?qū)崿F(xiàn)我想要的,但本人不懂PWM的原理,所以也未能實(shí)現(xiàn),請各們大哥多多指教!!
全部回復(fù)(15)
正序查看
倒序查看
gnlee
LV.5
2
2005-12-05 17:02
通俗點(diǎn)講就是象交流燈泡一樣,讓它閃亮,當(dāng)頻率高了你就會(huì)覺得燈一直在亮,所謂pwm調(diào)節(jié)也就是在一個(gè)閃亮周期內(nèi)亮的時(shí)間和滅的時(shí)間的分配,一周期內(nèi)亮的時(shí)間越長宏觀上燈就顯得越亮.
0
回復(fù)
gnlee
LV.5
3
2005-12-05 17:06
對于你來講pwm調(diào)節(jié)就是調(diào)節(jié)再一個(gè)周期內(nèi)led亮和滅的時(shí)間比
0
回復(fù)
lanpxr
LV.1
4
2005-12-08 09:40
@gnlee
對于你來講pwm調(diào)節(jié)就是調(diào)節(jié)再一個(gè)周期內(nèi)led亮和滅的時(shí)間比
您好!我也剛學(xué)單片機(jī),這是我用HT的單片機(jī)做的一個(gè)控制LED亮度的程序,由于我目前沒有條件搭線,所以想請高手幫忙指點(diǎn)一下.
看看小弟還有那些不足的地方.呵呵我還是個(gè)學(xué)生呢.
#include ht46r47.inc
;Pb2控制占空比
;Pc1,Pc2輸出PWM
;Pb1選擇Pc1或Pc2
data.section 'data'
t0  db ?;The cycle of PWM pulse
t10 db ?;Open time
aaa db ?;Open time control
bbb db ?;Close time control
sov db ?;Open time end
bov db ?;close time end
code.section 'code'
org  00h
clr  pbc
mov  a,02h
mov  pbc,a
jmp  start
org  08h
jmp  pwm
;+++++++++++++++++++++++++++++++++++++++++++++++
start:
mov  a,3       ;cycle of PWM pulse
mov  t0,a
mov  aaa,a
mov  a,1
set  sov
clr  bbb
clr  t10
;+++++++++++++++++++++++++++++++++++++++++++++
main:
mov  a,05h
mov  intc,a
mov  a,84h
mov  tmrc,a;fsys=32768Hz,rtc,t0=fsys/32=0.5ms
mov  a,0feh;The clock base this time
mov  tmr,a
set  tmrc.4
jmp  $
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++
sz   pb.1           ;判斷鍵是否按下
jmp  loop
call chou
loop:
sz   sov
jmp  next1
sz   bov
jmp  next2
jmp  loop
next1:
inc  t10
mov  a,aaa
sub  a,t10
mov  sov,a
sz   sov
reti
sz   bov
jmp  $1
set  sov
jmp  loop
$1:
cpl  pc
set  bov
reti
next2:
inc  t20
mov  a,bbb
mov  bov,a
sz   bov
reti
sz   sov
jmp  $1
jmp  loop
$1:
cpl  pc
set  sov
reti
;+++++++++++++++++++++++++++++++++++++++++++++++++
chou proc
sdz   aaa
jmp   $1
jmp   start
$1:
mov   a,t0
sub   a,aaa
mov   bbb,a
ret
chou endp
end
0
回復(fù)
dfstar
LV.2
5
2005-12-08 17:37
嘿嘿我做過一會(huì),原理就是跟了3樓的你一樣.控制一個(gè)周期內(nèi)LED亮和滅的時(shí)間比.
0
回復(fù)
zrz2008
LV.1
6
2005-12-09 16:08
@dfstar
嘿嘿我做過一會(huì),原理就是跟了3樓的你一樣.控制一個(gè)周期內(nèi)LED亮和滅的時(shí)間比.
OUTE BIT P1.7           ;單片機(jī)引腳定義
SDAT BIT P1.6
STRB BIT P1.5
SCLK BIT P1.4

ORG 0000H
AJMP MAIN
ORG 0080H
MAIN:
;============================
;============================
MOV P1,#0FFH

REDSHOW:                      ; 紅色漸變
MOV    R4,#80
ACALL  COLOR1
ACALL  LOOP0
ACALL  COLOR1
ACALL  LOOP2          ;將輸入數(shù)據(jù)送入鎖存器
       DJNZ   R4,$-8
ACALL START
ACALL LIGHTOUT
;============================
AJMP MAIN

START:               ;計(jì)數(shù)器亮度控制函數(shù)
        LCALL  DELAY05S
        CLR    TF0
        MOV    R1,#LOW(65535-10000)
        MOV    R2,#HIGH(65535-10000)
        MOV    TL0,R1
        MOV    TH0,R2
        MOV    R3,#LOW(65535-1)
        MOV    R4,#HIGH(65535-1)
        MOV    TL1,R3
        MOV    TH1,R4
RET
LIGHTOUT:                 ;二極管亮度控制
LOOPREDB:                 ;;二極管由暗到暗明
        SETB   TR0
        JNB    TF0,$
        CLR    TR0
        CLR    TF0
        CLR    OUTE           ;TIGER
SETB   TR1
JNB    TF1,$
        CLR    TR1
        CLR    TF1
        SETB   OUTE           ;STOP
        CLR    C
        MOV    A,R1
        ADD    A,#4
        MOV    R1,A
        MOV    A,R2
        ADDC   A,#0
        MOV    R2,A
        MOV    TL0,R1
        MOV    TH0,R2
CLR    C
        MOV    A,R3
        SUBB    A,#4
        MOV    R3,A
        MOV    A,R4
        SUBB   A,#0
        MOV    R4,A
        MOV    TL1,R3
        MOV    TH1,R4
        CJNE   R1,#0FFH,LOOPREDB
        CJNE   R2,#0FFH,LOOPREDB
        CLR    OUTE
        LCALL  DELAY2S
        MOV    TL0,R1
        MOV    TH0,R2
LOOPREDB1:                ;;二極管由明到暗      
        SETB   TR0
        JNB    TF0,$
        CLR    TR0
        CLR    TF0
        CLR    OUTE           ;TIGER
SETB   TR1
JNB    TF1,$
        CLR    TR1
        CLR    TF1
        SETB   OUTE           ;STOP
        CLR    C
        MOV    A,R1
        SUBB   A,#4
        MOV    R1,A
        MOV    A,R2
        SUBB   A,#0
        MOV    R2,A
        MOV    TL0,R1
        MOV    TH0,R2
CLR    C
        MOV    A,R3
        ADD    A,#2
        MOV    R3,A
        MOV    A,R4
        ADDC   A,#0
        MOV    R4,A
        MOV    TL1,R3
        MOV    TH1,R4
        CJNE   R1,#0EFH,LOOPREDB1
        CJNE   R2,#0D8H,LOOPREDB1
SETB   OUTE
RET
;======================================
COLOR0:           ;不亮
ACALL LOOP0
ACALL LOOP0
ACALL LOOP0
RET
COLOR1:              ;紅色
ACALL LOOP0
ACALL LOOP0
ACALL LOOP1
RET
COLOR2:              ;綠色
ACALL LOOP0
ACALL LOOP1
ACALL LOOP0
RET
COLOR3:              ;藍(lán)色
ACALL LOOP1
ACALL LOOP0
ACALL LOOP0
RET
COLOR4:
ACALL LOOP0
ACALL LOOP1
ACALL LOOP1
RET
COLOR5:
ACALL LOOP1
ACALL LOOP0
ACALL LOOP1
RET
COLOR6:
ACALL LOOP1
ACALL LOOP1
ACALL LOOP0
RET
COLOR7:
ACALL LOOP1
ACALL LOOP1
ACALL LOOP1
RET
;================================
LOOP0:                   ;輸入數(shù)據(jù)
        CLR    SDAT
        CLR    SCLK
        SETB   SCLK
RET
LOOP1:
        SETB   SDAT
        CLR    SCLK
        SETB   SCLK
RET
LOOP2:
        CLR    STRB
        SETB   STRB
RET
;==================================
delay:
mov r7,#10
mov r6,#10
mov r5,#10
djnz r5,$
djnz r6,$-2
djnz r7,$-4
ret
;==============================
DELAY05S:
        MOV   R5,#3        ;4
        MOV   R6,#250       ;230
        MOV   R7,#250
        DJNZ  R7,$
        DJNZ  R6,$-4
        DJNZ  R5,$-6
        RET
DELAY1S:
        MOV   R5,#3         ;4
        MOV   R6,#250       ;230
        MOV   R7,#250
        DJNZ  R7,$
        DJNZ  R6,$-4
        DJNZ  R5,$-6
        RET
;===================
DELAY2S:
        MOV   R5,#10         ;4
        MOV   R6,#250       ;230
        MOV   R7,#250
        DJNZ  R7,$
        DJNZ  R6,$-4
        DJNZ  R5,$-6
        RET
;===================

END
;============================
0
回復(fù)
zrz2008
LV.1
7
2005-12-09 16:10
@zrz2008
OUTEBITP1.7          ;單片機(jī)引腳定義SDATBITP1.6STRBBITP1.5SCLKBITP1.4ORG0000HAJMPMAINORG0080HMAIN:;============================;============================MOVP1,#0FFHREDSHOW:                      ;紅色漸變MOV    R4,#80ACALL  COLOR1ACALL  LOOP0ACALL  COLOR1ACALL  LOOP2          ;將輸入數(shù)據(jù)送入鎖存器      DJNZ  R4,$-8ACALLSTARTACALLLIGHTOUT;============================AJMPMAINSTART:              ;計(jì)數(shù)器亮度控制函數(shù)        LCALL  DELAY05S        CLR    TF0        MOV    R1,#LOW(65535-10000)        MOV    R2,#HIGH(65535-10000)        MOV    TL0,R1        MOV    TH0,R2        MOV    R3,#LOW(65535-1)        MOV    R4,#HIGH(65535-1)        MOV    TL1,R3        MOV    TH1,R4RETLIGHTOUT:                ;二極管亮度控制LOOPREDB:                ;;二極管由暗到暗明        SETB  TR0        JNB    TF0,$        CLR    TR0        CLR    TF0        CLR    OUTE          ;TIGERSETB  TR1JNB    TF1,$        CLR    TR1        CLR    TF1        SETB  OUTE          ;STOP        CLR    C        MOV    A,R1        ADD    A,#4        MOV    R1,A        MOV    A,R2        ADDC  A,#0        MOV    R2,A        MOV    TL0,R1        MOV    TH0,R2CLR    C        MOV    A,R3        SUBB    A,#4        MOV    R3,A        MOV    A,R4        SUBB  A,#0        MOV    R4,A        MOV    TL1,R3        MOV    TH1,R4        CJNE  R1,#0FFH,LOOPREDB        CJNE  R2,#0FFH,LOOPREDB        CLR    OUTE        LCALL  DELAY2S        MOV    TL0,R1        MOV    TH0,R2LOOPREDB1:                ;;二極管由明到暗              SETB  TR0        JNB    TF0,$        CLR    TR0        CLR    TF0        CLR    OUTE          ;TIGERSETB  TR1JNB    TF1,$        CLR    TR1        CLR    TF1        SETB  OUTE          ;STOP        CLR    C        MOV    A,R1        SUBB  A,#4        MOV    R1,A        MOV    A,R2        SUBB  A,#0        MOV    R2,A        MOV    TL0,R1        MOV    TH0,R2CLR    C        MOV    A,R3        ADD    A,#2        MOV    R3,A        MOV    A,R4        ADDC  A,#0        MOV    R4,A        MOV    TL1,R3        MOV    TH1,R4        CJNE  R1,#0EFH,LOOPREDB1        CJNE  R2,#0D8H,LOOPREDB1SETB  OUTERET;======================================COLOR0:          ;不亮ACALLLOOP0ACALLLOOP0ACALLLOOP0RETCOLOR1:              ;紅色ACALLLOOP0ACALLLOOP0ACALLLOOP1RETCOLOR2:              ;綠色ACALLLOOP0ACALLLOOP1ACALLLOOP0RETCOLOR3:              ;藍(lán)色ACALLLOOP1ACALLLOOP0ACALLLOOP0RETCOLOR4:ACALLLOOP0ACALLLOOP1ACALLLOOP1RETCOLOR5:ACALLLOOP1ACALLLOOP0ACALLLOOP1RETCOLOR6:ACALLLOOP1ACALLLOOP1ACALLLOOP0RETCOLOR7:ACALLLOOP1ACALLLOOP1ACALLLOOP1RET;================================LOOP0:                  ;輸入數(shù)據(jù)        CLR    SDAT        CLR    SCLK        SETB  SCLKRETLOOP1:        SETB  SDAT        CLR    SCLK        SETB  SCLKRETLOOP2:        CLR    STRB        SETB  STRBRET;==================================delay:movr7,#10movr6,#10movr5,#10djnzr5,$djnzr6,$-2djnzr7,$-4ret;==============================DELAY05S:        MOV  R5,#3        ;4        MOV  R6,#250      ;230        MOV  R7,#250        DJNZ  R7,$        DJNZ  R6,$-4        DJNZ  R5,$-6        RETDELAY1S:        MOV  R5,#3        ;4        MOV  R6,#250      ;230        MOV  R7,#250        DJNZ  R7,$        DJNZ  R6,$-4        DJNZ  R5,$-6        RET;===================DELAY2S:        MOV  R5,#10        ;4        MOV  R6,#250      ;230        MOV  R7,#250        DJNZ  R7,$        DJNZ  R6,$-4        DJNZ  R5,$-6        RET;===================END;============================
以上是我的程序,根據(jù)各位的意思,基本上是實(shí)現(xiàn)了,我十分高興,不過還有一個(gè)小小的問題,二極管很閃,很剌眼,該怎么辦
0
回復(fù)
gnlee
LV.5
8
2005-12-09 17:06
@zrz2008
以上是我的程序,根據(jù)各位的意思,基本上是實(shí)現(xiàn)了,我十分高興,不過還有一個(gè)小小的問題,二極管很閃,很剌眼,該怎么辦
閃?頻率低了吧
怎樣的閃法
0
回復(fù)
zrz2008
LV.1
9
2005-12-09 17:43
@gnlee
閃?頻率低了吧怎樣的閃法
理想的工作的狀態(tài)是由暗到明,再由明到暗的漸變,其中漸變的過程要很協(xié)調(diào),很柔和,我說的閃就有點(diǎn)象日光燈啟動(dòng)時(shí)的那樣,可以有辦法解決嗎
0
回復(fù)
zrz2008
LV.1
10
2005-12-09 17:45
@gnlee
閃?頻率低了吧怎樣的閃法
如果是頻率低,你幫我看看我的程序,什么地方需要改一下,程序比較亂,有什么地方看不明白請及時(shí)回復(fù),謝謝!!!
0
回復(fù)
小雨
LV.5
11
2005-12-14 11:08
@zrz2008
如果是頻率低,你幫我看看我的程序,什么地方需要改一下,程序比較亂,有什么地方看不明白請及時(shí)回復(fù),謝謝!!!
我一直在搞單片機(jī),一般情況下我是這么處理:通過T/C產(chǎn)生PWM波,經(jīng)過低通濾波器以后輸出一個(gè)電壓,這個(gè)電壓的大小可以通過調(diào)節(jié)占空比來實(shí)現(xiàn),非常簡單易于實(shí)現(xiàn),也就是大家常說的利用PWM做D/A轉(zhuǎn)換.希望對你有幫助
0
回復(fù)
gnlee
LV.5
12
2005-12-15 10:05
@小雨
我一直在搞單片機(jī),一般情況下我是這么處理:通過T/C產(chǎn)生PWM波,經(jīng)過低通濾波器以后輸出一個(gè)電壓,這個(gè)電壓的大小可以通過調(diào)節(jié)占空比來實(shí)現(xiàn),非常簡單易于實(shí)現(xiàn),也就是大家常說的利用PWM做D/A轉(zhuǎn)換.希望對你有幫助
這種方法效果會(huì)好,可以試試
0
回復(fù)
xaudream
LV.3
13
2005-12-21 17:11
@lanpxr
您好!我也剛學(xué)單片機(jī),這是我用HT的單片機(jī)做的一個(gè)控制LED亮度的程序,由于我目前沒有條件搭線,所以想請高手幫忙指點(diǎn)一下.看看小弟還有那些不足的地方.呵呵我還是個(gè)學(xué)生呢.#includeht46r47.inc;Pb2控制占空比;Pc1,Pc2輸出PWM;Pb1選擇Pc1或Pc2data.section'data't0  db?;ThecycleofPWMpulset10db?;Opentimeaaadb?;Opentimecontrolbbbdb?;Closetimecontrolsovdb?;Opentimeendbovdb?;closetimeendcode.section'code'org  00hclr  pbcmov  a,02hmov  pbc,ajmp  startorg  08hjmp  pwm;+++++++++++++++++++++++++++++++++++++++++++++++start:mov  a,3      ;cycleofPWMpulsemov  t0,amov  aaa,amov  a,1set  sovclr  bbbclr  t10;+++++++++++++++++++++++++++++++++++++++++++++main:mov  a,05hmov  intc,amov  a,84hmov  tmrc,a;fsys=32768Hz,rtc,t0=fsys/32=0.5msmov  a,0feh;Theclockbasethistimemov  tmr,aset  tmrc.4jmp  $;+++++++++++++++++++++++++++++++++++++++++++++++++++++++sz  pb.1          ;判斷鍵是否按下jmp  loopcallchouloop:sz  sovjmp  next1sz  bovjmp  next2jmp  loopnext1:inc  t10mov  a,aaasub  a,t10mov  sov,asz  sovretisz  bovjmp  $1set  sovjmp  loop$1:cpl  pcset  bovretinext2:inc  t20mov  a,bbbmov  bov,asz  bovretisz  sovjmp  $1jmp  loop$1:cpl  pcset  sovreti;+++++++++++++++++++++++++++++++++++++++++++++++++chouprocsdz  aaajmp  $1jmp  start$1:mov  a,t0sub  a,aaamov  bbb,aretchouendpend
嘿嘿 小弟也做過一樣的東東
原理就是大家所說的  也通過電路實(shí)現(xiàn)了
不過還是想看看大家怎么做的
我看我得程序比較幼稚  像大家學(xué)習(xí)
我copy 了你的程序 回家看看
我也是個(gè)新手 學(xué)生
請大家多多指教
0
回復(fù)
sherlocked
LV.4
14
2014-04-24 21:30
@zrz2008
以上是我的程序,根據(jù)各位的意思,基本上是實(shí)現(xiàn)了,我十分高興,不過還有一個(gè)小小的問題,二極管很閃,很剌眼,該怎么辦
真,,哥們你竟然用的是匯編,,要是c的話我還能稍微幫點(diǎn)忙,,這下我就跪了,,
0
回復(fù)
2017-02-15 09:24
@zrz2008
以上是我的程序,根據(jù)各位的意思,基本上是實(shí)現(xiàn)了,我十分高興,不過還有一個(gè)小小的問題,二極管很閃,很剌眼,該怎么辦
加限流電阻,
0
回復(fù)
2017-02-15 09:25
@紅豆一馬薩
加限流電阻,
你說的閃那是頻率太低看起來在抖動(dòng).在閃快點(diǎn)
0
回復(fù)
發(fā)