STC12C5410AD學習板---PWM練習
/************ STC12C5410AD學習板 ******************/
/*功能描述:STC5410AD內(nèi)部PWM應用 */
/*作者:鄭 文 */
/*編寫時間:2008.8.13 */
/*功能:PWM輸出,做D/A使用,做RGB三色LED控制用 */
/*接外部晶振22.1184 MHZ */
#include
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit PWM0 = P3^7;//pwm口定義green
sbit PWM1 = P3^5;//pwm口定義blue
sbit PWM2 = P2^0;//pwm口定義
sbit PWM3 = P2^4;//pwm口定義red
void Delay1ms(unsigned int count);
void init_rs232(void); //串口初始化
void STC_PWM(void); //PWM初始化
/***************************1秒延時子程序start***************************/
void Delay1ms(unsigned int count)
{
unsigned int i,j;
for(i=0;i
}
/***************************1秒延時子程序end***************************/
/* 串口通信初始化設置 */
void init_rs232(void)
{
AUXR=74; //設置波特率是普通51的12倍 ,允許AD中斷
SCON=0x50;
PCON=0x00;
TH1=0xFA; //波特率 115200 22.1184MHZ 時候(F4 4800 FA 9600 FDH 9600)*12
TL1=0XFA;
TMOD=0X20;
TR1=1;
}
/**********************************************************************/
/********STC12C5410AD的PWM應用***********************/
/*PWM波頻率=Fosc/2/256 */
void STC_PWM(void)
{
CMOD=0x02; //set PCA timer
CL=0x00;
CH=0x00;
////PWM0配置
CCAP0L=0x10; //設置占空比
CCAP0H=0x10;
CCAPM0=0x42; //設置使用PWM模式
////PWM1配置
CCAP1L=0x20; //設置占空比
CCAP1H=0x20;
CCAPM1=0x42; //設置使用PWM模式
////PWM2配置
CCAP2L=0x30; //設置占空比
CCAP2H=0x30;
CCAPM2=0x42; //設置使用PWM模式
////PWM3配置
CCAP3L=0x50; //設置占空比
CCAP3H=0x50;
CCAPM3=0x42; //設置使用PWM模式
CR=1; //開始PCA 定時器
}
/********************************************/
/*****************主程序************************/
main()
{ //main start
uchar i;
Delay1ms(5000);
STC_PWM(); //PWM波初始化設置
while(1)
{
//PWM當D/A輸出,PWM口經(jīng)過RC電路后 可以從示波器看到輸出波形為:鋸齒波
for (i=0;i<255;i++)
{
CCAP2L=CCAP2L+1;
CCAP2H=CCAP2H+1;
}
Delay1ms(100);
while(1)
{
//RGB_RGB_RGB__RGB__RGB__RGB__RGB__RGB__RGB__RGB_//////
/********************************/
for (i=0;i<255;i++)
{
CCAP1L=0xff; //設置占空比為0
CCAP1H=0xff;
CCAP3L=0xff;
CCAP3H=0xff;
CCAP0L=CCAP0L+1;
CCAP0H=CCAP0H+1; //PWM波控制三色LED發(fā)出彩色的光
Delay1ms(100);
}
/*****************************/
for (i=0;i<255;i++)
{
CCAP0L=0xff; //設置占空比為0
CCAP0H=0xff;
CCAP3L=0xff;
CCAP3H=0xff;
CCAP1L=CCAP1L+1;
CCAP1H=CCAP1H+1;
Delay1ms(100);
}
/******************************/
for (i=0;i<255;i++)
{
CCAP0L=0xff; //設置占空比為0
CCAP0H=0xff;
CCAP1L=0xff;
CCAP1H=0xff;
CCAP3L=CCAP3L+1;
CCAP3H=CCAP3H+1;
Delay1ms(100);
}
//RGB_RGB_RGB__RGB__RGB__RGB__RGB__RGB__RGB__RGB_//////
}
//////////////////////////////////////////////////////
}
} //mian end
評論