单片机检测交流电掉电程序应用(RGB控制)

发布者:GoldenEclipse最新更新时间:2015-04-30 来源: 51hei关键字:单片机  检测交流电  掉电程序  RGB控制 手机看文章 扫描二维码
随时随地手机看文章
RBG软灯带是,等灯饰配件中常见的负载。一般作为背景灯装饰,以及护栏管。程序实现功能,利用墙壁开关,控制RGB灯带,分成4档,第一档:RGB之间实现渐变效果。第二档:R亮,第三档,B亮,第四档:G亮。当然还有其他很多花样。本程序难点,构造简单实用的RGB渐变函数,第二,如何在渐变中检测交流电掉电。实验器材:PIC12F509一片,RGB灯带一条,RGB控制线路板一块。

 
程序如下: 

#include

__CONFIG(0X01A);

#define uchar unsigned char

#define uint unsigned int

#define TIME_MAX 1000

 

uint key2_time_cnt;//按键去抖计数器

uchar num;

uchar key_flag;

uint PWM;

 

uint  a,c;

uchar i,p,num,f,k;

uint r,g,b;

 

void delay(uint x)

{

uint c,d;

 for(c=x;c>0;c--)

   for(d=110;d>0;d--);

 

}

 

void timer1(uint t)

{

uint n;

for(n=0;n

{

 

if(GP5==0)//

{

       key2_time_cnt++;

       if(key2_time_cnt==TIME_MAX)

       {

        

         key_flag=1;

       }

}

 

else

{

       key2_time_cnt=0;

       if(key_flag==1)

       {

       key_flag=0;

       num=1;

       }

 

}

}

}

 

void timer2(uint t)

{

uint n;

for(n=0;n

{

 

if(GP5==0)//

{

       key2_time_cnt++;

       if(key2_time_cnt==TIME_MAX)

       {

        

         key_flag=1;

       }

}

 

else

{

       key2_time_cnt=0;

       if(key_flag==1)

       {

       key_flag=0;

       num=3;

       }

 

}

}

}

[page]

void led1_on()                

{

  GP0=1;

  if(g!=0&&b==5)

       {

              g--;

              r++;

       }

   if(r!=0&&g==5)

         {

              r--;

              b++;

         }

  if(b!=0&&r==5)

       {

       b--;

       g++;

       }

   if(g+r+b!=50)

       {

       g=40;

       r=5;

       b=5;

       }

   for(a=0;a<30;a++)

 {

        if(g!=0) //绿色渐变

        { 

       

               GP1=0;

               timer1(g);

     

               GP1=1;

        }

 

         if(r!=0) //红色渐变

         {

                GP2=0;

                timer1(r);

                GP2=1;

         }

        if(b!=0) //蓝色渐变

        {

              GP4=0;

              timer1(b);

              GP4=1;

        }

 

  }

 

}

 

void key_scan()

{

if(GP5==0)//按键按下

{

       key2_time_cnt++;

       if(key2_time_cnt==TIME_MAX)

       {

        

         key_flag=1;

       }

}

 

else

{

       key2_time_cnt=0;

       if(key_flag==1)

       {

       key_flag=0;

       num++;

       if(num>3)num=0;

       }

 

}

 

}

void main()

{

TRIS=0b00110000;

GP0=1;

GP1=0;

GP2=0;

g=40;

r=5;

b=5;

while(1)

{

key_scan();

if(num==0)

{

  led1_on();

}

 

else if(num==1)

{

GP0=1;//绿色亮

GP1=0;
GP4=0;

}

else if(num==2)

{

GP0=0;

GP1=1;//红色亮
GP4=0;

}

else if(num==3)

{

GP0=0;

GP1=0;
GP4=1;//蓝色亮

}

 

 

}

 

}

RGB函数构造比较巧妙,不知道原创者是谁?不想多费唇舌。交流掉电检测才是要说的重点,
if()
{}
else
{} 
格式,开始时,如果GP5口上有低电平出现,对变量key2_time_cnt进行自加,当数值大于1000,(大概是12MS)左右,认为是交流电掉电了,让断电标志key_flag置1 ,当GP5口变为高电平的时候,把key2_time_cnt清零,同时判断断电标志是否有效,如果有效,让分档变量num加1,如果有4种功能那么从0加到3就要归零。此交流检测函数简单实用,可以放在主程序循环中,检测掉电不会漏档。如何在渐变中响应交流检测,就是利用检测函数作为延时的循环主体。这样既可以延时,又可以检测IO口的变化。

关键字:单片机  检测交流电  掉电程序  RGB控制 引用地址:单片机检测交流电掉电程序应用(RGB控制)

上一篇:PIC16F 8位单片机汇编指令集
下一篇:学习PIC单片机有感

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

51单片机的指令英文全名
MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; (2)算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带
[单片机]
单片机设计动态输入范围的PWMA/D转换器
1 COP820CJ芯片介绍 COP820CJ 是美国国家半导体公司生产的一款8位单片机,它内含64字节RAM和1k字节ROM,并带有24个I/O口,时钟频率为10MHz,工作电压为 2.5~6.0V。 COP820 CJ具有多输入唤醒(MIWU)、低压复位保护、片上模拟比较器和低电磁辐射设计等功能,其I/O口可编程为三态、推挽输出、弱上拉输入等类型。 COP820CJ的端口分为L/I/D/G四类。其中I口为4位输入端口,D口为4位输出端口,G口有6位I/O口和2位输入口,L口为8位I/O 口。同时L口也是芯片的唤醒端口,其中L1和L2又是比较器输入口,L3又是比较器输出口。L口配有数据寄存器(LDATA[0DOH])
[单片机]
用<font color='red'>单片机</font>设计动态输入范围的PWMA/D转换器
STC15F2K60S2单片机数字电压表制作(不用外围A/D换换)
最近做了一个用STC15系列单片机内部A/D转换做的数字电压表,1602显示。就想着实现硬件很少,就做着玩玩。 制作出来的实物图如下: 实物图 /*** 等待液晶准备好***/ void LcdWaitReady() { unsigned char sta; LCD1602_DB = 0xFF; LCD1602_RS = 0; LCD1602_RW = 1; do { LCD1602_E = 1; sta = LCD1602_DB; //读取状态字 LCD1602_E =
[单片机]
STC15F2K60S2<font color='red'>单片机</font>数字电压表制作(不用外围A/D换换)
AVR单片机nRF24L01发送接收驱动程序
#include iom16v.h #include macros.h #include 12864.h //------------------------------------------------------------------------------ //spi标志 #define DDR_SPI DDRB #define DD_MOSI 5 #define DD_MISO 6 #define DD_SCK 7 #define DD_SS 4 #define CE PB3 #define IRQ PB2 //--------------------------------NRF24L01接口定义------
[单片机]
PIC单片机精通_A/D模数转换模块细节补充
1.PIC16F876a结果寄存器 ADCON1状态寄存器的7bit位定义了输出结果是左对齐还是右对齐,比较迷茫,不懂在说什么,查阅了一下DataSheet,如下: 从上面的示意图可以看出,结果寄存器的对齐方式是为了方便我们读取转换后的数据。示意图不是很详细,我们可以看一下AD的结果寄存器。 AD的结果寄存器是16位宽的,但是有六位是不用的,所以实际上读取10位数据。 2.与AD转换相关的寄存器一览 控制AD模块的所有寄存器如下图所示: AD模块基本控制寄存器:ADCON0、ADCON1;主要管理AD模块上电、时钟选择、通道选择、结果寄存格式选择、AD转换启动等。 端口配置寄存器:TRISA、PORTA;主要
[单片机]
PIC<font color='red'>单片机</font>精通_A/D模数转换模块细节补充
一种基于单片机和串行EEPROM的智能密码锁
1. 引言 电子技术的飞速发展,给传统的机械锁带来了巨大的变革,现代的电子技术与机械技术相结合,产生了一大批如声控锁、电子密码锁、遥控锁,指纹锁等先进的锁具。虽然这类产品安全性高,但因其生产成本高,安装使用不方便,在一定程度上限制了这类产品的普及和推广。本文介绍的是一种基于AT89C51单片机和AT24C01串行EEPROM的智能密码锁的硬件设计和软件实现方法,这种电路设计具有防试探按键输入、智能控制上锁、开锁、报警、修改密码等多种功能。密码长度可变,保密性强,灵活性高,外接各种执行机构,可广泛用于车辆、大门、保险柜等各种需上锁的场合。 2. 设计思路 本设计中,智能密码锁工作时分为两种工作状态,分别是正常状态和锁定状态。锁
[单片机]
一种基于<font color='red'>单片机</font>和串行EEPROM的智能密码锁
AT89S51单片机发光二极管多功能闪烁的设计
1.实验任务 如图4.9.1所示,开关SP1接在P3.7/RD管脚上,在AT89S51单片机的P1端口接有四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪烁,当每一次按下开关SP1的时候,L2接在P1.1管脚上的发光二极管在闪烁,再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管在闪烁,再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁,再按下开关SP1的时候,又轮到L1在闪烁了,如此轮流下去。 2.电路原理图 图4.9.1 3.系统板上硬件连线 (1).把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”区域中的SP1端口上; (2).把“单片机系统”区域中的P1.0-P
[单片机]
AT89S51<font color='red'>单片机</font>发光二极管多功能闪烁的设计
Freescale推出两款32位基于闪存的微控制器系列产品
Freescale日前推出两种68K/ColdFire微控制器系列产品MCF5223x和MCF5222x。这种32位基于闪存的微控制器用于工业控制,包括从远端数据收集和增强安全性到家庭自动化和环境监视。 MCF5223x器件系列是首个能在单片内提供快速以太网控制器,以太网PHY和闪存的32位微控制器。为基于以太网的网络提供了业界最小的波形系数解决方案。 MCF5223x还包括密码加速单元,指令级ColdFire协处理器能帮助加速功能,以提高加密算法的性能。 MCF5222x器件系列是集成了USB OTG和闪存的业界首个32位微控制器。它能允许两个USB设备进行通信而不需要主接口,使它非常适合系统到系统的通信应用。这些器件系列由
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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