?? pwm.c
字號:
/*
名詞解釋:1、PWM(Pulse Width Modulation,脈寬調制)
2、占空比(Duty Cycle)
即: 在一串理想的脈沖序列中(如方波),
正脈沖的持續時間與脈沖總周期的比值。
例如:脈沖寬度為1s,信號周期為4s的脈沖序
列的占空比為0.25。
程序說明:通過調整單位時間內I/O口輸出高電平持續的時間,
即可達到對占空比的調節,也即PWM,本程序即是
PWM的一個應用。
應用說明:圖示僅畫標出了占空比的幾個特殊值可以適當調
整各個變量的初值,從而控制LED對應輸出幾個不
同的亮度級別。通過把周期設置的更小--頻率
提高就可以達到0%--100%之間任意的亮度級別。
并且由于人眼的視覺暫留,看到的不是亮、滅的
跳變,而是明暗的均勻過渡。
(C)西安電子科技大學 測控技術與儀器 編寫:郭世忠 日期:2008-04-04
*/
///////////////////////////////////////////////////////////////////////////
// 脈沖寬度 //
// | | //
// 0% 25% 50% |75% | 100% --->占空比 //
// __ ____ _____ ________ ___1 (高電平) //
// | | | | | | | | | //
// |________| |_______| |___| |__| | ___0 (低電平) //
// //
// | 500 | 500 | 500 | 500 | 500 | //
/* 500是一次高低電平變化的周期,可根據需要自定 */ //
// //
// 注意: 我們的學習板中,P1口的LED是低電平有效。因此, //
// 占空比為0%時最亮,占空比為100%時熄滅,注意區別。 //
///////////////////////////////////////////////////////////////////////////
/**************************************************************************
功能:使P1口的八個LED發的光由暗到亮均勻過渡
說明:程序只會執行一個變化過程,要重復觀察效果
可按 RST 鍵復位單片機,即可從頭執行程序
/**************************************************************************/
#include<reg52.h> /*51寄存器頭文件*/
void main(void) /*主程序*/
{
unsigned int i,t; /*變量定義*/
while(1) /*主循環(死循環),單片機必須是死循環*/
{
//---------------------------------------------------------------------------
P1=0x00; //P1口輸出低電平 即P1.7-----P1.0依次對應 0000 0000
for(i=0;i<t;i++); //延時,保持低電平,LED為熄滅狀態
//----------------------------------------------------------------------------
P1=0xff; //P1口輸出高電平 即P1.7-----P1.0依次對應 1111 1111
for(i=0;i<500-t;i++); //延時,保持高電平,LED為發光狀態
//----------------------------------------------------------------------------
t++; //累加,脈寬步進,可適當調整,以改變明暗變化速度。
//----------------------------------------------------------------------------
if(t>500) //域值判斷,如果為真,則表明一次完整的變化過程結束。
{
P1=0x00; //強制將P1口置低,如果沒有這句,LED會出現亮暗跳變(試驗并思考原因)
while(1); //進入死循環,程序掛起,使程序執行到這就停止,方便看效果
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -