PWM调整2个LED的亮度00--FF,255级亮度自动调节 【原创】

把STC12C5A60S2.H 、STC12C2052AD.H头文件放到 C:\Keil\C51\INC\

STC单片机头文件【51CTO-->单片机-->STC单片机官方头文件】

下载链接 链接:http://pan.baidu.com/s/1pJKK4w7 密码:a0re

测量2个LED的端的电压 0 ~ 4.8V 逐渐增减变化

/*
工程创建MCU选取,Atmel 89C55
单片机: STC12C5A60S2  
晶振:12M
功能:PWM调整2个LED的亮度00--FF,255级亮度调节
连接说明:LED1正极串接1K 电阻到VCC,负极接 STC12C5A60S2 的4脚 P1.3 PWM0
        LED2正极串接1K 电阻到VCC,负极接 STC12C5A60S2 的4脚 P1.3 PWM1

        
如果是STC12C2052AD,STC12C4052AD单片机
#include <STC12C2052AD.H> 
LED1正极串接1K 电阻到VCC,负极接 STC12C4052AD  的11脚 P3.7 PWM0
LED2正极串接1K 电阻到VCC,负极接 STC12C4052AD  的 9脚 P3.5 PWM1
*/

#include <STC12C5A60S2.H> 

void PWM_init (void){
CMOD=0x02;//设置PCA定时器
	CL=0x00;
	CH=0x00;
	CCAPM0=0x42;   //PWM0设置PCA工作方式为PWM方式
	CCAP0L=0x00;   //设置PWM3初始值与CCAP0H 相同
	CCAP0H=0x00;   //PWM3初始值为0

	CCAPM1=0x42;  //PWM1设置PCA工作方式为PWM方式
	CCAP1L=0x00;  //设置PWM3初始值与CCAP0H 相同
	CCAP1H=0x00;  //PWM3初始值为0

	//CCAPM2=0x42; //PWM2设置PCA工作方式为PWM方式
	//CCAP2L=0x00; //设置PWM3初始值与CCAP0H 相同
	//CCAP2H=0x00; //PWM3初始值为0

	//CCAPM3=0x42; //PWM3设置PCA工作方式为PWM方式
	//CCAP3L=0x00; //设置PWM3初始值与CCAP0H 相同
	//CCAP3H=0x00; //PWM3初始值为0
CR=1;    //启动PCA定时器
}

//占空比设置函数
void PWM0_set (unsigned char a) {
	CCAP0L= a; // 设置直接写入CCAP0L
	CCAP0H= a; // 设置直接写入CCAP0H
}

void PWM1_set (unsigned char a) {
	CCAP1L= a; // 设置直接写入CCAP0L
	CCAP1H= a; // 设置直接写入CCAP0H
}

//延时函数
void DELAY_MS (unsigned int a)
{
    unsigned int i;
    while ( --a != 0 )
    {
        for (i=0;i<=600;i++);
    }
}

void main(void){
PWM_init(); //PWM初始化

 unsigned char i;
     
// LED1慢慢变亮, LED2慢慢变暗
// unsigned char i 的类型 0xff 的取反就是0x00
for(i=0x00;i<0xff;i++){
    PWM0_set(i); // 设置占空比
    PWM1_set(~i); // 设置占空比  
    DELAY_MS (150);//调整速度
    }

// LED1慢慢变暗, LED2慢慢变亮
for(i=0xff;i>0;i--){
    PWM0_set(i); // 设置占空比
    PWM1_set(~i); // 设置占空比  
    DELAY_MS (150);//调整速度
    }
  }

}
时间: 2024-10-12 16:13:10

PWM调整2个LED的亮度00--FF,255级亮度自动调节 【原创】的相关文章

解决ubuntu每次重启屏幕亮度都重置为最高亮度问题

很多朋友都会碰到这个问题,Ubuntu系统,每次通过系统设置修改了屏幕亮度,重启系统都会将屏幕亮度调成最大值,很是苦恼. 上网搜索一番发现,修改屏幕亮度的文件是:/sys/class/backlight/intel_backlight/brightness 我们可以通过手动修改此文件,来设置屏幕亮度,并添加到开机启动. 具体步骤: 1.查看当前亮度值 $ cat /sys/class/backlight/intel_backlight/brightness4437   #此亮度值是我笔记本的最高

PWM(脉宽调制)——LED特效呼吸灯设计

简述PWM PWM--脉宽调制信号(Pulse Width Modulation),它利用微处理器的数字输出来实现,是对模拟电路控制的一种非常有效的技术,广泛应用于测量.通信.功率控制与变化等许多领域. LED特效呼吸灯原理 采用pwm的方式,在固定的频率下,采用占空比的方式来实现LED亮度的变化.占空比为0,LED灯不亮,占空比为100%,则LED灯最亮.所以将占空比从0到100%,再从100%到0不断变化,就可以实现LED灯实现特效呼吸. 设计思路.框图 变亮:当cnt2 < cnt3时为高

9.调整图像的对比度和亮度

//调整对比度和亮度 int g_nContrastValue; int g_nBrightValue; Mat g_srcImage_Contrast; Mat g_dstImage_Contrast; //滑动条事件处理函数 void on_ContrastAndBright(int,void*) { for(int x=0;x<g_srcImage_Contrast.rows;x++) { for(int y=0;y<g_srcImage_Contrast.cols;y++) { for

学习 opencv---(5) 创建Trackbar(活动条) &amp;图像对比度,亮度值调整

学习如何在opencv 中用trackbar 函数创建和使用 轨迹条,以及图像对比度,亮度值的动态调整 一.OpenCV中轨迹条(Trackbar)的创建和使用 [1]创建轨迹条-----createTrackbar 函数详解 createTrackbar这个函数我们以后会经常用到,它创建一个可以调整的轨迹条,并将轨迹条附加到指定的窗口上,使用起来方便,首先,它往往会和一个回调函数 配合起来使用,先看它的函数原型: 1 int createTrackbar(conststring &tracke

轻松选购LED投影机-亮度篇

LED投影机当初上市由于低流明瓶颈,并没有让人觉得其有多大的实用性,所以一度被"封杀".由于上市的机器亮度均在几十流明之间,其投影的画面效果非常暗,就算在关灯下,画面效果依旧一般.所以导致无法满足多数的人需求,只能当着玩具.而在投影厂商的共同努力下,11年LED投影机终于突破了低流明瓶颈,其实用性时代也已来临. 如今,LED投影机产品亮度选择范围主要分为300流明.500流明及500流明以上三个可选择段,对于低于300流明段的LED投影机可以说,其使用性并不强,尤其是低于100流明微型

fedora 调整屏幕亮度

完全可以通过一行命令解决. 屏幕亮度的配置文件位于/sys/class/backlight/下,可能是acpi_video0文件夹下 也可能是intel_backlight文件,本人的笔记本是后者.通过如下脚本语言可调节屏幕亮度: echo 150 > /sys/class/backlight/intel_backlight/brightness 或echo 13 > /sys/class/backlight/acpi_video0/brightness 其中“150”是想要的屏幕亮度值,一般

单片机学习之PWM原理与控制程序

PWM 在单片机中的应用是非常广泛的,它的基本原理很简单,但往往应用于不同场合上意义也不完全一样,这里我先把基本概念和基本原理给大家介绍一下,后边遇到用的时候起码知道是个什么东西. PWM 是 Pulse Width Modulation 的缩写,它的中文名字是脉冲宽度调制,一种说法是它利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术,其实就是使用数字信号达到一个模拟信号的效果.这是个什么概念呢?我们一步步来介绍. 首先从它的名字来看,脉冲宽度调制,就是改变脉冲宽度来实现不同的效果.我

STM32学习笔记6(TIM通用模块生成PWM)

1.     TIMER输出PWM基本概念   脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术.简单一点,就是对脉冲宽度的控制.一般用来控制步进电机的速度等等. STM32的定时器除了TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出,其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出,而通用定时器也能同时产生4路的PWM输出. 1.1   PWM输出模式 S

[S5PV210] PWM

概述 PWM:Pulse Width Modulation, 脉冲宽度调制. 通过PWM调整高低电平的占空比,我们可以实现调节如LCD的背光亮度.蜂鸣器的音调等,本文采用蜂鸣器作为实例. 在S5PV210中,PWM定时器的特点如下: 拥有5个PWM定时器,其中,Timer0-Timer3各拥有一个PWM输出Pin. 时钟输入源为APB-PCLK,我在时钟初始化时将PCLK配为66.7MHz,通过一系列的分频,实现预期的tick周期. PWM的每次tick结束都会产生一个内部中断,我们可以在中断处