单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 328|回复: 1
收起左侧

STC15W2K16单片机自带PCA模块的PWM按键调光程序。简单粗暴

[复制链接]
kissme 发表于 2019-4-8 19:43 | 显示全部楼层 |阅读模式
//单片机STC15W2K16.
//晶振11.0592.
//LED红绿蓝三色共阳。
//PWM输出在第四脚(P1.0)
#include<intrins.h>
#include "stch15.h"//这个头文件是STC15.H
#define uchar unsigned char
  sbit k1=P2^0;
  sbit k2=P2^1;
  sbit k3=P2^2;
  sbit bled=P2^3;//蓝色LED.
  sbit rled=P2^4;//红色LED
  sbit gled=P2^5;//绿色LED
   uchar u;
   uchar zhanko=0xff;//占空比

        void pwmint()//这是PCA初始化函数
        {
                CMOD=0X02;
                CL=0X00;
                CH=0X00;
                CCAPM0=0X42;
                CCAP0H=0Xff;
                CCAP0L=0Xff;
                CR=1;
        }
        
        void pwmshe(uchar t)//这是占空比调节函数
        {
                CCAP0H=t;
                CCAP0L=t;
        }
        
        void yan(int q)//延时函数
        {
                char a,b;
                for(a=100;a>0;a--)
                for(b=q;b>0;b--);
        }

  void anjian()//按键扫描
        {
                if(k1==0)//占空比增加按键
                {
                        yan(100);
                        if(k1==0)
                         yan(100);
                          if(k1==1)
                                  yan(100);
                            if(zhanko<255)
                                        {
                                         zhanko=zhanko+1;
                                        pwmshe(zhanko);//占空比设置函数
                                        }
                                
                }
                if(k2==0)//占空比减小按键
                {
                        yan(100);
                         if(k2==0)
                         {
                         yan(100);
                         }
                           if(k2==1)
                                  yan(100);
                                                if(zhanko>0)
                                                 {
                                                  zhanko=zhanko-1;
                                                   pwmshe(zhanko);
                                                 }
                                 
                 }
          if(k3==0)//红绿蓝三色LED选择按键
                  {
                         yan(1000);
               
                    if(k3==0)
                          {
                                    yan(1000);
                                  if(k3==1)
                                 {
                                           yan(1000);
                                          u++;
                                 }
                                   if(u==1)
                                                 yan(500);
                                    {
                                           bled=1;//蓝色LED
                                     rled=1;//红色LED
                                      gled=0;//绿色LED
                                     }
                                      if(u==2)
                                      {
                                              bled=0;
                                          rled=1;
                                         gled=1;
                                      }
                                        if(u==3)
                                {
                                        bled=1;
                                        rled=0;
                                         gled=1;
                                }
                      if(u==4)
                           {
                                  u=1;
                           }
                         }
          }
        }
        
void main()
{
        pwmint();
        while(1)
        {
        anjian();        
  }
}
                        

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

春风十里吹死你 发表于 2019-5-16 15:51 | 显示全部楼层
一看就是来骗分的,其实就一摆设
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

快速回复 返回顶部 返回列表