基于STC89C52RC的七彩RGB3528实验板

前述:
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;
}
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
stc89c52rc是一种51系列单片机,可以用于设计和制作电子钟。基于stc89c52rc的电子钟可以具有多种功能,如显示时间、日期、温度等。 首先,我们需要通过外部晶振或者RTC(实时时钟)芯片来获取当前的时间。然后,利用LCD显示模块来显示时间和日期。stc89c52rc具有的I/O口可以轻松地与LCD模块连接,以便控制显示内容。我们可以使用I2C或SPI协议通过软件来驱动LCD模块。 此外,stc89c52rc还可以与DS18B20温度传感器连接。DS18B20是一种数字温度传感器,可以将当前的环境温度以数字形式输出。通过与stc89c52rc的通信,我们可以实时获取温度数据,并在LCD屏幕上显示出来。 除了时间和温度,电子钟还可以设计其它功能,如闹钟、定时器等。我们可以通过按键来设置闹钟时间,当到达设定时间时,可以发出蜂鸣器的声音作为提醒。同样,我们也可以利用stc89c52rc的计时器功能来实现定时器功能。 另外,stc89c52rc还具有串口通信功能,我们可以利用这个功能实现电子钟与电脑之间的数据交互。通过串口连接,我们可以进行时钟校准、数据备份等操作。 最后,为了保证电子钟的稳定性和精度,我们可以使用电池供电以备份时间和设置参数。同时,还可以设计一些斯利奇(校时)、自动亮度调节等功能来增加电子钟的使用体验。 基于stc89c52rc的电子钟具有强大的功能和灵活性,同时也具备低成本、简单可靠的特点,可以广泛应用于家庭、办公室等场所。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值