×
嵌入式 > 技术百科 > 详情

STC12C5410AD学习板---PWM练习

发布时间:2020-06-16 发布时间:
|

/************ STC12C5410AD学习板 ******************/
/*功能描述:STC5410AD内部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  for(j=0;j<120;j++);
}

/***************************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口经过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发出彩色的光
     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

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
FPGA及CPLD应用领域不断拓展