PWM控制led燈漸亮漸滅程序
適用ME500開發系統
短接JP41-2選用8個LED燈
PWM—PulseWidthModulation(脈沖寬度調制)
PWM足?種周期?走而高低電平的rV空比可以調制的方波信兮.
按K2—下,PWM值減小,則占空比增加。
兗度逐漸增加,直到8個LED燈達到高亮,蜂鳴器響。
按K1—下,PWM值增加,則占空比減小。
立度逐漸減弱,直到8個LED燈達到最峭,蜂鳴器響。
單片機匯編語言源程序如下:
- ; PWM 控制 LED 燈漸亮漸滅程序
- ; 適用 ME500 開發系統
- ; 晶振為11.0592M
- ; 利用定時器控制產生占空比可變的 PWM 波
- ; 按K1,PWM值增加,則占空比減小,LED 燈漸暗。
- ; 按K2,PWM值減小,則占空比增加,LED 燈漸亮。
- ; 當PWM值增加到最大值或減小到最小值時,蜂鳴器將報警。
- ;----------------------------
- PWM EQU 7FH ;PWM賦初始值
- OUT EQU P0 ;8個LED燈的接口
- INCKEY EQU P1.4 ;K1,PWM值增加鍵。
- DECKEY EQU P1.5 ;K2,PWM值減小鍵。
- BEEP EQU P3.7
- ;----------------------------
- ORG 0000H
- SJMP START
- ORG 000BH
- SJMP INTT0
- ORG 001BH
- SJMP INTT1
- ORG 0030H
- ;----------------------------
- ;主程序
- ;定時器0工作在模式1,定時器1工作在模式2。
- ;----------------------------
- START:
- MOV SP,#30H
- MOV TMOD,#21H
- MOV TH1,PWM ;脈寬調節
- MOV TL1,#00H
- MOV TH0,#0FCH ;1ms延時常數
- MOV TL0,#066H ;頻率調節
- SETB EA
- SETB ET0
- SETB ET1
- SETB TR0
- LOOP: MOV A,PWM ;
- JB INCKEY,LOOP1 ;增加鍵是否按下?
- CALL DELAY ;延時去抖動
- JB INCKEY,LOOP1
- CJNE A,#0FFH,PWMINC ;是否到最大值?
- CALL BEEP_BL ;是,蜂鳴器報警。
- SJMP LOOP
- PWMINC:
- INC PWM ;調節脈寬(脈寬減。
- SJMP LOOP
- LOOP1: JB DECKEY,LOOP2 ;減小鍵是否按下?
- CALL DELAY ;延時去抖動
- JB DECKEY,LOOP2
- CJNE A,#02H,PWMDEC ;是否到最小值?
- CALL BEEP_BL ;是,蜂鳴器報警。
- SJMP LOOP
- PWMDEC:
- DEC PWM ;調節脈寬(脈寬增加)
- LOOP2: SJMP LOOP
- ;------------------------------
- ;T0中斷服務子程序 (頻率)
- ;控制定時器1中斷
- ;------------------------------
- INTT0:
- CLR TR1
- MOV TH0,#0FCH ;1ms延時常數
- MOV TL0,#066H ;頻率調節
- MOV TH1,PWM
- SETB TR1
- MOV OUT,#00H ;啟動輸出
- RETI
- ;------------------------------
- ;T1中斷服務子程序 (脈寬)
- ;控制PWM脈沖寬度
- ;------------------------------
- INTT1:
- CLR TR1 ;脈寬調節結束
- MOV OUT,#0FFH ;結束輸出
- RETI
- ;------------------------------
- ;10ms延時子程序
- ;------------------------------
- DELAY:
- MOV R6,#50
- DELAY1:
- MOV R7,#100
- DJNZ R7,$
- DJNZ R6,DELAY1
- RET
- ;-----------------------------------------------
- ;蜂鳴器響一聲子程序
- ;-----------------------------------------------
- BEEP_BL:
- MOV R6,#100
- BL1: CALL BL2
- CPL BEEP
- DJNZ R6,BL1
- MOV R5,#25
- CALL DELAY2
- RET
- BL2: MOV R7,#180
- BL3: NOP
- DJNZ R7,BL3
- RET
- DELAY2: ;延時R5×10MS
- MOV R6,#50
- BL4: MOV R7,#100
- BL5: DJNZ R7,BL5
- DJNZ R6,BL4
- DJNZ R5,DELAY2
- RET
- ;---------------------------------------------------
- END
復制代碼
C語言版本:
所有資料51hei提供下載:
LED 漸亮漸滅.zip
(475.07 KB, 下載次數: 206)
2018-9-21 09:10 上傳
點擊文件名下載附件
|