RGBLed_Test.rar

  • PUDN用户
    了解作者
  • C/C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 4
    下载次数
  • 2009-11-25 23:17
    上传日期
Code to control an RGBLed.... enjoy!!
RGBLed_Test.rar
  • pruebaLED_RGB.c
    5.9KB
内容介绍
//============================================================================// //=========================== PRUEBA DE LED RGB ==============================// //============================================================================// #include <16f877A.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) #define PWM1_OUT PIN_B0 // RED #define PWM2_OUT PIN_B1 // GREEN #define PWM3_OUT PIN_B2 // BLUE #define clock 350 // tiempo en ms int temp_duty_cycle1; int temp_periodo1; int duty_cycle1; int periodo1; int temp_duty_cycle2; int temp_periodo2; int duty_cycle2; int periodo2; int temp_duty_cycle3; int temp_periodo3; int duty_cycle3; int periodo3; char i; int R_100; int G_100; int B_100; //============================================================================= //============================================================================= void rgb_test() { OUTPUT_BIT(PWM1_OUT,1); Delay_ms(350); OUTPUT_BIT(PWM1_OUT,0); OUTPUT_BIT(PWM2_OUT,1); Delay_ms(350); OUTPUT_BIT(PWM2_OUT,0); OUTPUT_BIT(PWM3_OUT,1); Delay_ms(350); OUTPUT_BIT(PWM3_OUT,0); } //============================================================================= //============================================================================= void config_init() { R_100 = FALSE; G_100 = FALSE; B_100 = FALSE; temp_periodo1=100; temp_periodo2=100; temp_periodo3=100; temp_duty_cycle1=0; temp_duty_cycle2=0; temp_duty_cycle3=0; output_b(0x00); set_tris_b(0x00); } //============================================================================= //============================================================================= void main() { config_init(); rgb_test(); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); set_timer0(156); enable_interrupts(INT_RTCC); enable_interrupts(GLOBAL); do{ if ((R_100==FALSE)&&(G_100==FALSE)&&(B_100==FALSE))//OK { for (i=0;i<100;i++) { ++temp_duty_cycle1; Delay_ms(clock); } i=0; R_100 = TRUE; G_100 = FALSE; B_100 = FALSE; } if ((R_100==TRUE)&&(G_100==FALSE)&&(B_100==FALSE))//OK { for (i=0;i<100;i++) { ++temp_duty_cycle2; Delay_ms(clock); } i=0; R_100 = TRUE; G_100 = TRUE; B_100 = FALSE; } if ((R_100==TRUE)&&(G_100==TRUE)&&(B_100==FALSE))//OK { for (i=0;i<100;i++) { --temp_duty_cycle1; Delay_ms(clock); } i=0; R_100 = FALSE; G_100 = TRUE; B_100 = FALSE; } if ((R_100==FALSE)&&(G_100==TRUE)&&(B_100==FALSE))//OK { for (i=0;i<100;i++) { ++temp_duty_cycle3; Delay_ms(clock); } i=0; R_100 = FALSE; G_100 = TRUE; B_100 = TRUE; } if ((R_100==FALSE)&&(G_100==TRUE)&&(B_100==TRUE))//OK { for (i=0;i<100;i++) { --temp_duty_cycle2; Delay_ms(clock); } i=0; R_100 = FALSE; G_100 = FALSE; B_100 = TRUE; } if ((R_100==FALSE)&&(G_100==FALSE)&&(B_100==TRUE))//OK { for (i=0;i<100;i++) { ++temp_duty_cycle1; Delay_ms(clock); } i=0; R_100 = TRUE; G_100 = FALSE; B_100 = TRUE; } if ((R_100==TRUE)&&(G_100==FALSE)&&(B_100==TRUE))//OK { for (i=0;i<100;i++) { --temp_duty_cycle3; Delay_ms(clock); } i=0; R_100 = TRUE; G_100 = FALSE; B_100 = FALSE; } }while (TRUE); } //fin del main //============================================================================= //============================================================================= //============================================================================= //============================================================================= #int_RTCC void RTCC_isr(void) { set_timer0(156); //============================================== if(duty_cycle1==0) { OUTPUT_BIT(PWM1_OUT,0); goto aqui; } else { OUTPUT_BIT(PWM1_OUT,1); --duty_cycle1; } aqui: if(periodo1==0) { duty_cycle1=temp_duty_cycle1; periodo1=temp_periodo1; } else { --periodo1; } //============================================== if(duty_cycle2==0) { OUTPUT_BIT(PWM2_OUT,0); goto aqui2; } else { OUTPUT_BIT(PWM2_OUT,1); --duty_cycle2; } aqui2: if(periodo2==0) { duty_cycle2=temp_duty_cycle2; periodo2=temp_periodo2; } else { --periodo2; } //============================================= if(duty_cycle3==0) { OUTPUT_BIT(PWM3_OUT,0); goto aqui3; } else { OUTPUT_BIT(PWM3_OUT,1); --duty_cycle3; } aqui3: if(periodo3==0) { duty_cycle3=temp_duty_cycle3; periodo3=temp_periodo3; } else { --periodo3; } } //============================================================================= //=============================================================================
评论
    相关推荐
    • Smart-mirror-project:有关由MagicMirror2驱动的智能镜的详细项目信息
      后置RGB,可单独寻址的LED,用于心情灯和效果 内置Raspotify服务的扬声器 室内温度和湿度等环境测量 运动传感器 系统从SSD在Raspberry pi 4上运行 由Docker中的MagicMirrorOS驱动 NodeRED用于控制GPIO和逻辑 集成到...
    • splitFlapClockRadio
      32 x RGB LED阵列灯 语音天气预报(openWeatherMap + TTS) 音量和媒体控制旋转编码器轮 由Raspberry Pi 3A +驱动 该项目分为四个主要部分:3D设计,电子硬件设计,裂口控制器MCU固件(C ++)和主要软件(Python...
    • matrix:矩阵(基于网络的绿色代码雨,用爱制造)
      矩阵(基于网络的绿色代码雨,用爱制造) TL; DR 关于 该项目是Matrix Trilogy中所见的下雨绿色代码的WebGL实现。 目前,它是在功能性WebGL包装器之上构建的; 其以前的Three.js版本在一个单独的分支中维护。...
    • AustinHodgin.github.io:投资组合网站
      AustinHodgin.github.io:投资组合网站
    • Aspnet-Huxley.zip
      Aspnet-Huxley.zip,英国国家铁路实时发车委员会的json代理soap apihuxley,asp.net是一个开源的web框架,用于使用.net构建现代web应用和服务。asp.net创建基于html5、css和javascript的网站,这些网站简单、快速,...
    • 福克斯顾问-项目开发
      Smart Box可提高餐厅客户的满意度,使客户能够通过Sigfox和ThingSpeak IoT平台对服务进行评分
    • 5x5x5 LED立方体-项目开发
      一个易于构建且具有出色动画效果的LED立方体,值得您为之付出努力。
    • uPixels:用于启用 MicroPython 的微控制器的 WS2812 RGB LED 灯条控制器
      用于启用 MicroPython 的微控制器的可寻址 RGB LED 灯条控制器 内容 特别感谢 特征 只需三行代码即可启动并运行! 由微控制器本身托管的用户友好界面! 从延迟时间、颜色、亮度完全控制动画 完全可定制的动画和...
    • 蛇形LED 16x16矩阵游戏-项目开发
      这是经典的街机蛇游戏。 它是在16x16 led矩阵上制成的。
    • 迷宫求解问题.zip
      一次软件作业,迷宫的求解问题,有需要的可以直接下载,(c语言版)