LED闪烁彩虹小夜灯带呼吸灯

发布者:sky0001最新更新时间:2015-07-16 来源: 51hei关键字:LED闪烁  彩虹小夜灯  呼吸灯 手机看文章 扫描二维码
随时随地手机看文章
注意实验电路的LED没有加电阻,一定自己加上

按键未去抖,流水灯不能关闭,可把1脚复位接出来,自己用手摸一下,如下面的视频(我承认我很懒)。
按键在P3.4,流水灯在P1,呼吸灯在PWM0接口上,可自行修改。
旁边的白色灯用上次液晶屏拆下来的背光LED两个,用玻璃胶封住,非常亮。
演示视频:http://v.youku.com/v_show/id_XNDI5Mzc0Nzgw.html

/*********************************************************************************************
程序名:多用装饰灯    
编写人: 杨旭冉    
编写时间:2012 年7 月16 日
硬件支持:STC12C4052AD
接口说明:    
修改日志:  
  NO.1-								
/*********************************************************************************************
说明:

/*********************************************************************************************/
#include 
/*********************************************************************************************/

#define DY_PORT		P1 //设置LED连接的I/O组
#define DY_SPEED	110 //设置每一个明亮级的停留时间(值域:0~65535)
sbit KEY1 = P3 ^ 4;
	bit STATUS=0;
	bit exted=0;
/*********************************************************************************************

bit [自定义名] ; //定义一个位(位的值只能是0或1)例:bit LED
#define [代替名]	[原名]  //用代替名代替原名(可以方便修改常改或调试的值)例:#define LED P1
sbit  [自定义名] = [系统位名] ; //自定义系统位名。例:sbit Add_Key = P3 ^ 1;
unsigned char [自定义名] ; //定义一个0~255的整数变量.例:unsigned char a;
unsigned int [自定义名] ; //定义一个0~65535的整数变量

/*********************************************************************************************/
void delay (unsigned int a){ // 1ms延时程序
	unsigned int i;
	while( --a != 0){
		for(i = 0; i < 600; i++);//STC单片机在外部晶振为12MHz时i值上限为600  
	}   				   		 //AT89C51单片机在外部晶振为12MHz时i值上限为125
}
/*********************************************************************************************/
void LSD(void){
	unsigned int i;
	unsigned int temp;
	while(1){
    	temp=0x01;
    	for(i=0;i<8;i++){ //8个流水灯逐个闪动
     		DY_PORT=~temp;
     		delay(DY_SPEED);   //调用延时函数
     		temp<<=1;
    	}
		temp=0x80;
		for(i=0;i<8;i++){ //8个流水灯反向逐个闪动
    		DY_PORT=~temp;
    		delay(DY_SPEED);   //调用延时函数
    		temp>>=1;
   		}
    	temp=0xFE;
		for(i=0;i<8;i++){ //8个流水灯依次全部点亮
     		DY_PORT=temp;
     		delay(DY_SPEED);   //调用延时函数
     		temp<<=1;
    	}
   		temp=0x7F;
   		for(i=0;i<8;i++){ //8个流水灯依次反向全部点亮
     		DY_PORT=temp;
     		delay(DY_SPEED);   //调用延时函数
     		temp>>=1;
    	}
	}
}
/*********************************************************************************************/

/*********************************************************************************************
函数名:PWM初始化函数
调  用:PWM_init();
参  数:无
返回值:无
结  果:将PCA初始化为PWM模式,初始占空比为0
备  注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可
/**********************************************************************************************/
void PWM_init (void){
CMOD=0x02; //设置PCA定时器
 	CL=0x00; 
 	CH=0x00;
	CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)
 	CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同
 	CCAP0H=0x00; // PWM0初始时为0

	//CCAPM1=0x42; //PWM1设置PCA工作方式为PWM方式(使用时删除//)
	//CCAP1L=0x00; //设置PWM1初始值与CCAP0H相同
 	//CCAP1H=0x00; // PWM1初始时为0

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

	//CCAPM3=0x42; //PWM3设置PCA工作方式为PWM方式
	//CCAP3L=0x00; //设置PWM3初始值与CCAP0H相同
 	//CCAP3H=0x00; // PWM3初始时为0

 	CR=1; //启动PCA定时器
}
/**********************************************************************************************/
[page]
/*********************************************************************************************
函数名:PWM0占空比设置函数
调  用:PWM0_set();
参  数:0x00~0xFF(亦可用0~255)
返回值:无
结  果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平
备  注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可
/**********************************************************************************************/
void PWM0_set (unsigned char a){
	CCAP0L= a; //设置值直接写入CCAP0L
 	CCAP0H= a; //设置值直接写入CCAP0H
}
/**********************************************************************************************/

/*********************************************************************************************
函数名:主函数
调  用:无
参  数:无
返回值:无
结  果:程序开始处,无限循环
备  注:
/**********************************************************************************************/
void main (void){
	unsigned char g;
	PWM_init(); //PWM初始化
	KEY1 = 1;
	
while(1)
{
if(STATUS)
{	unsigned int i;
	unsigned int temp;
	while(1){
    	temp=0x01;
    	for(i=0;i<8;i++){ //8个流水灯逐个闪动
     		DY_PORT=~temp;
     		delay(DY_SPEED);   //调用延时函数
     		temp<<=1;
    	}
		temp=0x80;
		for(i=0;i<8;i++){ //8个流水灯反向逐个闪动
    		DY_PORT=~temp;
    		delay(DY_SPEED);   //调用延时函数
    		temp>>=1;
   		}
    	temp=0xFE;
		for(i=0;i<8;i++){ //8个流水灯依次全部点亮
     		DY_PORT=temp;
     		delay(DY_SPEED);   //调用延时函数
     		temp<<=1;
    	}
   		temp=0x7F;
   		for(i=0;i<8;i++){ //8个流水灯依次反向全部点亮
     		DY_PORT=temp;
     		delay(DY_SPEED);   //调用延时函数
     		temp>>=1;
    	}
	}
	}
		
		for(g=0x00;g<0xff;g++){
		PWM0_set(g); //设置PWM占空比
		delay(6);
}

		for(g=0xff;g>0x00;g--){
		PWM0_set(g); //设置PWM占空比
		delay(6);
}
if(!KEY1 && !exted)
{
exted=0;

STATUS=!STATUS;
exted=1;
}
else if(KEY1)
{
exted=0;

} 

}
}
/**********************************************************************************************/
 
关键字:LED闪烁  彩虹小夜灯  呼吸灯 引用地址:LED闪烁彩虹小夜灯带呼吸灯

上一篇:用STC12C5A60S2直驱一个16*16LED点阵显示屏
下一篇:STC12C2052AD之数字电压表0-99V

推荐阅读最新更新时间:2024-03-16 14:25

STM32CubeMX学习笔记3:PWM呼吸灯
MCU:STM32F103ZET6 IDE: MDK-ARM V5 +STM32CubeMX5.0.0 功能描述:将定时器TIM3全映射到外部端口PC6和PC7,设置输出模式为PWM输出,通过改变占空比的值实现LED7/LED8的呼吸灯效果。 需要配置的有:PC6设置为TIM3_CH1,PC7设置为TIM3_CH2,设置预分频系数与自动重载值,设置PWM的输出极性。 一. 在 Pinout&Configuration---System Core中: 1. 首先设置时钟RCC的HSE(外部高速时钟)为晶振模式:Crystal/ceramic Resonator 2. 设置系统SYS的Debug为Serial W
[单片机]
STM32CubeMX学习笔记3:PWM<font color='red'>呼吸灯</font>
基于HAL库的STM32呼吸灯实验
先决条件:装有编译和集成的开发环境,比如: Keil uVision5。 板子硬件要求:设计了 LED 在 定时器 的 接口 上 呼吸灯是一种常见的 电子制作 实验项目,其通过控制 LED 灯的亮度变化,实现了一种 模拟 人类呼吸的效果。 作为一种常见的数字调光技术,呼吸灯广泛应用于 工业控制 、 智能家居 等领域。 而在此过程中,使用 微控制器 如 STM32 ,则可以更加便捷、灵活地实现呼吸灯的控制。 因此,本文将介绍基于 STM32 的呼吸灯实验,通过代码编写、编译 下载 和调试运行,实现了一个简单的呼吸灯 控制系统 。 实验目的 本实验旨在通过 STM32 的呼吸灯实验,掌握 STM32 的 编程 方法和调试技巧,并深入理
[单片机]
基于HAL库的STM32<font color='red'>呼吸灯</font>实验
黑鲨游戏手机2代上手视频曝光:RGB呼吸灯秀到飞起
        新酷产品第一时间免费试玩,还有众多优质达人分享独到生活经验,快来 新浪众测 ,体验各领域最前沿、最有趣、最好玩的产品吧~!下载 客户端 还能获得专享福利哦!   10月12日消息,小米人士@神得强Steven 在微博分享了一段新机上手视频,该机背部是“黑鲨”的S LOGO,似乎是黑鲨游戏手机第二代产品。   从简短的演示可以看到黑鲨全新升级的RGB灯效,背面的LOGO和侧面的灯带可以同步呼吸,相当酷炫。   隐约中,我们也能确认该机配备了竖排两颗摄像头,造型和此前入网的黑鲨新品吻合。   工信部的信息显示,型号AWM-A0的黑鲨新机拥有背部指纹,机身三围160×75.26×8.7mm,屏幕依然是5.
[手机便携]
STM32 PWM简介及呼吸灯实验
1.PWM简介 脉冲宽度调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单来说,就是对脉冲宽度的控制,原理图如下: 当CNT CCRx时,输出0,反之,则输出1。因此可以输出如上的PWM示意图。当CNT达到CCRx时,重新归零,然后再向上计数,依次循环。通过改变CCRx的值,就可以改变PWM的输出占空比,改变ARR的值,就可以改变PWM输出的频率,这就是PWM输出的原理。 这里我们使用STM32F4的TIM14的CH1产生一路PWM输出。 值得一提的是控制PWM的三个寄存器:捕获/比较模式寄存器(TIMx_CCMR1/2),捕获/比较使能寄存器(TIMx_CCER),捕获/比较寄存器(TIMx
[单片机]
一知半解学CubeMX——TIM:定时中断实现LED闪烁
一知半解学习环境: 1、CubeMX 4.23.0 2、uVision 5.14.2 3、MCU 启明 STM32F407 开发板(高配版) V3.1 一知半解学习目标: 1、掌握CubeMX下RCC以及SYS的相关配置; 2、掌握CubeMX下GPIO的相关配置; 3、掌握CubeMX下定时器常规中断的配置; 一知半解实现过程: 1、配置系统调试接口及时基时钟源; 2、配置外部高速时钟源(HSE); 3、配置定时器参数(TIM1); 4、根据原理图配置相应GPIO引脚并修改宏定义名称; 5、配置时钟树,主频168M; 6、配置管脚默认输出状态及速率;
[单片机]
STM32之呼吸灯实验
首先来说,你要使用PWM模式你得先选择用那个定时器来输出PWM吧!除了TIM6、TIM7这两个普通的定时器无法输出PWM外,其余的定时器都可以输出PWM,每个通用定时器可以输出4路PWM,高级定时器TIM1、TIM8每个可输出7路PWM,这里为了方便起见,我们选择与实验相同的TIM3的通道2来说明。选好定时器及通道后,下一步就是要使能定时器的时钟,根据需要看看是否需要重映射IO,然后就是配置输出PWM的IO及定时器,到这里原子的视频及例程都有详细的介绍,这里只需要提一点有些网友疑惑的TIM_TimeBaseStructure.TIM_ClockDivision = 0;这句话是什么作用?其实仔细看过技术手册后发现这句话与PWM输出
[单片机]
MSP4302553呼吸灯
msp4302553实现呼吸灯,在一个周期内,灯的亮度从暗到明再到暗,此即一个周期。以下为ccs代码: #include msp430g2553.h // ************************************************************* // 延时函数,延时n*ms // ************************************************************* void delay_nms(unsigned int n) { unsigned int j; for (j=0;j n;j++) { //delay_1ms();
[单片机]
单片机快速入门实验:控制LED闪烁发光
如果说初学计算机编程,最简单的入门程序是在屏幕上显示“Hello world!”的话,那么学习单片机最简单的入门实验就是控制发光二极管(LED)闪烁发光。 P89LPC900系列单片机是近几年出现的新一代80C51内核单片机,许多人都想学习,并希望应用到自己的产品设计中。下面我就以控制LED闪烁发光这个最简单的实验为例,带领大家入门。 ●LPC900系列单片机简介 LPC900系列单片机是国际著名半导体厂商Philips公司(http://www.scn.semiconductors.philips.com/)推出的新一代80C51内核单片机。LPC900兼容标准80C51的指令系统和特殊功能寄存器(SFR),如果学过
[单片机]
单片机快速入门实验:控制<font color='red'>LED</font><font color='red'>闪烁</font>发光
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved