在色彩时钟的DIY过程中,主要涉及的问题有: 1)RGB_LED的电路搭建 2)RGB_LED的色彩调配 3)串行数据收发 在进行色彩变换测试前,我们先要搭建RGB_LED的电路。处于方便的原因,我是将RGB_LED和3个限流电阻固定在一块硬纸板上,然后配上了一个4引脚的插座以便以单片机连接。 在保证RGB_LED的电路正确情况下,需要确定单片机的I/O口驱动能力,经测试单片机的P1口完全可以驱动RGB_LED。 在测试色彩调配时,可以下面的程序体验色彩的魅力。 - /******************************************************
- * 程序名称:main.c
- * 程序功能:主控程序,实现色彩切换显示,每按一下K1键就换一种色彩。
- * 设计:JINGLIXIXI
- * 编写时间:2016-7-26
- * 程序版本:V1.0
- *****************************************************/
- /* 头文件 */
- #include "reg51.h"
- //#include "delay.h"
- sbit RC = P1^0;
- sbit GC = P1^1;
- sbit BC = P1^2;
- sbit K1 = P3^2;
- sbit K2 = P3^3;
- unsigned int j=0;
- unsigned int rtc=0; //秒计数器
- /******************************************************
- * 函数名称:main()
- * 函数功能:主函数
- * 入口参数:
- * 出口参数:
- *****************************************************/
- int main()
- {
- unsigned int k=0;
- unsigned char hh=0; // 时
- unsigned char mm=0; // 分
- K1 = 1;
- K2 = 1;
- TimeInit();
- RC = 0;
- GC = 0;
- BC = 0;
- // 白色测试
- RC = 1;
- GC = 1;
- BC = 1;
- while(K1);
- RC = 0;
- GC = 0;
- BC = 0;
- k=0;
- while(1)
- {
- if(k==0)
- {
- RC = 1;
- GC = 0;
- BC = 0;
- }
- if(k==1)
- {
- RC = 1;
- GC = 1;
- BC = 0;
- }
- if(k==2)
- {
- RC = 0;
- GC = 1;
- BC = 0;
- }
- if(k==3)
- {
- RC = 0;
- GC = 1;
- BC = 1;
- }
- if(k==4)
- {
- RC = 0;
- GC = 0;
- BC = 1;
- }
- if(k==5)
- {
- RC = 1;
- GC = 0;
- BC = 1;
- }
- while(K1);
- k++;
- if(k==6) k=0;
- }
- return 0;
- }
复制代码 |