pmw调光c语言程序,51单片机led灯渐变PWM调光(渐亮渐灭)C语言和汇编源程序
; 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
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的pmw调光c语言程序,51单片机led灯渐变PWM调光(渐亮渐灭)C语言和汇编源程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: huffman算法c语言实验报告,huf
- 下一篇: Linux vi 行尾 ctrl,lin