專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

基于51 單片機(jī)之PWM(LED漸變)實(shí)驗(yàn)測(cè)試

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年08月28日   【字體:

 **************************  Copyright(C) CaKe  ****************************************

========================================================================================
==============**版權(quán)信息   : CaKen工作室                            ==============
==============**文件名     : main.c              ==============
==============**作者       : CaKen             ==============
==============**版本號(hào)     : V1.0              ==============
==============**時(shí)間       : 2014.08.24               ==============
==============**功能描述   : LED漸變實(shí)驗(yàn)測(cè)試            ==============
========STC12C5A60S2.H頭文件下載:http://www.torrancerestoration.com/mcu/2564.html  =========================
========================================================================================
****************************************************************************************
 
 
#include "STC12C5A60S2.H"//頭文件
 
*********************************************************************************************
函數(shù)名:PWM初始化函數(shù)
調(diào)  用:PWM_Init();
參  數(shù):無(wú)
返回值:無(wú)
結(jié)  果:將PCA初始化為PWM模式,初始占空比為0
備  注:需要更多路PWM輸出直接插入CCAPnH和CCAPnL即可
/**********************************************************************************************
void PWM_Init (void)
{
    CMOD=0x02; //設(shè)置PCA定時(shí)器
  CL=0x00;
  CH=0x00;
 
 CCAPM0=0x42; //PWM0設(shè)置PCA工作方式為PWM方式(0100 0010)
  CCAP0L=0x00; //設(shè)置PWM0初始值與CCAP0H相同
  CCAP0H=0x00; // PWM0初始時(shí)為0
 
 CCAPM1=0x42; //PWM1設(shè)置PCA工作方式為PWM方式
 CCAP1L=0x00; //設(shè)置PWM1初始值與CCAP0H相同
  CCAP1H=0x00; // PWM1初始時(shí)為0
 
 CCAPM2=0x42; //PWM2設(shè)置PCA工作方式為PWM方式
 CCAP2L=0x00; //設(shè)置PWM2初始值與CCAP0H相同
  CCAP2H=0x00; // PWM2初始時(shí)為0
 
 CCAPM3=0x42; //PWM3設(shè)置PCA工作方式為PWM方式
 CCAP3L=0x00; //設(shè)置PWM3初始值與CCAP0H相同
  CCAP3H=0x00; // PWM3初始時(shí)為0
 
  CR=1; //啟動(dòng)PCA定時(shí)器
}
**********************************************************************************************
 
*********************************************************************************************
函數(shù)名:PWM0占空比設(shè)置函數(shù)
調(diào)  用:PWM0_Set();
參  數(shù):0x00~0xFF(亦可用0~255)
返回值:無(wú)
結(jié)  果:設(shè)置PWM模式占空比,為0時(shí)全部高電平,為1時(shí)全部低電平
備  注:如果需要PWM1的設(shè)置函數(shù),只要把CCAP0L和CCAP0H中的0改為1即可
**********************************************************************************************
void PWM0_Set (unsigned char a){
 CCAP0L= a; //設(shè)置值直接寫(xiě)入CCAP0L
  CCAP0H= a; //設(shè)置值直接寫(xiě)入CCAP0H
}
void PWM1_Set (unsigned char a){
 CCAP1L= a; //設(shè)置值直接寫(xiě)入CCAP1L
  CCAP1H= a; //設(shè)置值直接寫(xiě)入CCAP1H
}
void PWM2_Set (unsigned char a){
 CCAP2L= a; //設(shè)置值直接寫(xiě)入CCAP2L
  CCAP2H= a; //設(shè)置值直接寫(xiě)入CCAP2H
}
void PWM3_Set (unsigned char a){
 CCAP3L= a; //設(shè)置值直接寫(xiě)入CCAP3L
  CCAP3H= a; //設(shè)置值直接寫(xiě)入CCAP3H
}
**********************************************************************************************
 
*********************************************************************************************
函數(shù)名:主函數(shù)
調(diào)  用:無(wú)
參  數(shù):無(wú)
返回值:無(wú)
結(jié)  果:程序開(kāi)始處,無(wú)限循環(huán)
備  注:
/**********************************************************************************************
 
void main (void)
 
{
 
 PWM_Init(); //PWM初始化
 
 PWM0_Set(0x10); //設(shè)置PWM占空比
 PWM1_Set(0x60); //設(shè)置PWM占空比
 PWM2_Set(0xA0); //設(shè)置PWM占空比
 PWM3_Set(0xF0); //設(shè)置PWM占空比
 
 while(1)
 {
 
 }
}
=======================================================================================
 
 -------------------      CaKen工作室  原創(chuàng)作品     --------------------
 -------------------            CaKen工作室  版權(quán)所有       --------------------
===================================================================
關(guān)閉窗口