前述:
QQ:3177227373
V X:F9986858
这个是一个自己随便做的玩玩的作品。
其实这个RGB灯在去年还是前年的时候在实验室就翻出来的。后来问学姐是她的上一届学长买的,然后一直在实验室吃灰。
我其实对这个灯挺有兴趣的,想玩玩,然后一直拖到了现在。
此RGB灯有四个引脚,相当于是三个LED集成,采用共阳连接,对其余三个引脚置低电平,便可点亮对应的LED,由于三个灯的颜色是红蓝绿,就是三原色,理论上对三个引脚给予不同的电压,便可以使它变换出任何颜色。
废话不多说,直接上图。
单个LED灯实物图片:
原理图模型:
实物电路图:
LED驱动电路
单片机电路
高清电路图(PDF)百度网盘 点击蓝色字体即可跳转
3维PCB
演示视频:
基于RGB3258的全彩LED实验演示
实物照片:
驱动代码:
#include "reg52.h"
#include "intrins.h"
#define u8 unsigned char
#define u16 unsigned int
//--定义使用的IO口--//
sbit SRCLK_1 = P1^2;
sbit RCLK_1 = P1^1;
sbit SER_1 = P1^0;
sbit SRCLK_2 = P1^5;
sbit RCLK_2 = P1^4;
sbit SER_2 = P1^3;
#define Flower_1_time 300
#define Flower_2_time 20
#define Flower_3_time 200
#define Flower_4_time 200
#define Flower_5_time 200
#define Flower_6_time 200
/********************************************** 红 绿 蓝 0x01 0x02 0x04 (74HC595_1) 红 绿 蓝 0x08 0x10 0x20 (74HC595_1) 红 绿 蓝 0x40 0x80 0x01 (74HC595_1) (74HC595_1) (74HC595_2) 红 绿 蓝 0x02 0x04 0x08 (74HC595_2) 红 绿 蓝 0x10 0x20 0x40 (74HC595_2) **********************************************/
u8 code LED1[8]={
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 code LED2[7]={
0x01,0x02,0x04,0x08,0x10,0x20,0x40};
u8 GPIO_Dat;
void delay_ms(u16 ms);
void HC595_1_SendByte(u8 dat);
void HC595_2_SendByte(u8 dat);
void LED_All_OFF();
void LED_Flower_1();
void LED_Flower_2();
void LED_Flower_3();
void LED_Flower_4();
void LED_Flower_5();
void LED_Flower_6();
void LED_Flower_7();
void main()
{
LED_All_OFF();
while(1)
{
LED_Flower_1();
LED_Flower_2();
LED_Flower_3();
LED_Flower_4();
LED_Flower_5();
LED_Flower_6();
}
}
void LED_Flower_1()
{
u8 i;
for(i=0;i<8;i++)
{
HC595_1_SendByte(LED1[i]);
delay_ms(Flower_1_time);
}
LED_All_OFF();
for(i=0;i<7;i++)
{
HC595_2_SendByte(LED1[i]);
delay_ms(Flower_1_time);
}
LED_All_OFF();
}
、、、
、、、
、、、
void LED_Flower_6()
{
u8 i;
for(i=0;i<4;i++)
{
HC595_1_SendByte(0x01);
delay_ms(Flower_6_time);
HC595_1_SendByte(0x08|0x02);
delay_ms(Flower_6_time);
HC595_1_SendByte(0x40|0x10|0x04);
delay_ms(Flower_6_time);
HC595_2_SendByte(0x02);HC595_1_SendByte(0x80|0x20|0x01);
delay_ms(Flower_6_time);
HC595_1_SendByte(0x08|0x02);HC595_2_SendByte(0x10|0x04|0x01);
delay_ms(Flower_6_time);
LED_All_OFF();
HC595_2_SendByte(0x10);
delay_ms(Flower_6_time);
HC595_2_SendByte(0x02|0x20);
delay_ms(Flower_6_time);
HC595_1_SendByte(0x40); HC595_2_SendByte(0x04|0x40);
delay_ms(Flower_6_time);
HC595_1_SendByte(0x08|0x80); HC595_2_SendByte(0x08|0x10);
delay_ms(Flower_6_time);
HC595_1_SendByte(0x01|0x10); HC595_2_SendByte(0x01|0x02|0x20);
delay_ms(Flower_6_time);
LED_All_OFF();
}
}
void LED_All_OFF()
{
HC595_1_SendByte(0x00);
HC595_2_SendByte(0x00);
}
void delay_ms(u16 ms)
{
u16 i,j;
for(j=0;j<ms;j++)
{
for(i=0;i<110;i++);
}
}
/******************************************************************************* * 函 数 名 : Hc595SendByte(u8 dat) * 函数功能 : 向74H595发送一个字节的数据 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/
void HC595_1_SendByte(u8 dat)
{
u8 a;
SRCLK_1 = 1;
RCLK_1 = 1;
for(a=0;a<8;a++) //发送8位数
{
SER_1 = dat >> 7; //从最高位开始发送
dat <<= 1;
SRCLK_1 = 0; //发送时序
_nop_();
_nop_();
SRCLK_1 = 1;
}
RCLK_1 = 0;
_nop_();
_nop_();
RCLK_1 = 1;
}
void HC595_2_SendByte(u8 dat)
{
u8 a;
SRCLK_2 = 1;
RCLK_2 = 1;
for(a=0;a<8;a++) //发送8位数
{
SER_2 = dat >> 7; //从最高位开始发送
dat <<= 1;
SRCLK_2 = 0; //发送时序
_nop_();
_nop_();
SRCLK_2 = 1;
}
RCLK_2 = 0;
_nop_();
_nop_();
RCLK_2 = 1;
}
今天的文章基于STC89C52RC的七彩RGB3528实验板分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/63707.html