#include "rgb_led.h"
/*---------------------------------------------------------------------*/
/* --- STC15W4K56S4单片机驱动RGB_LED ----------------------------------*/
/* --- RGB_LED模块采用P9813芯片驱动------------------------------------*/
/* --- 作者: 隔壁家的老婆饼 -------------------------------------------*/
/* --- 微信: sl18660951126 --------------------------------------------*/
/* --- QQ: 204564708-------------------------------------------------*/
/* --- 如果您想要交流或分享学习经验,可以添加QQ或微信------------------*/
/*---------------------------------------------------------------------*/
//发送前32位'0'起始帧
void RGBLED_Send32Zero(void)
{
u8 i;
SDA = 0;
for(i=0;i<32;i++)
{
SCL = 0;
Delay200us();
SCL = 1;
Delay200us();
}
}
//反转前两位的灰度值
u8 RGBLED_TakeAntiCode(u8 dat)
{
u8 tmp = 0;
tmp = ((~dat) & 0xC0) >> 6;
return tmp;
}
//发送灰度数据
void RGBLED_DatSend(u32 dx)
{
u8 i;
for(i=0;i<32;i++)
{
if((dx & 0x80000000) !=0)
SDA=1;
else
SDA=0;
dx<<=1;
SCL=0;Delay200us();
SCL=1;Delay200us();
}
}
//数据处理与发送
//r;红色值 0~255
//g:绿色值 0~255
//b:蓝色值 0~255
void RGBLED_DataDealWithAndSend(u8 r,u8 g,u8 b)
{
u32 dx=0;
dx |= (u32)0x03 << 30; //前两位'1'位标志位
dx |= (u32)RGBLED_TakeAntiCode(b) << 28;
dx |= (u32)RGBLED_TakeAntiCode(g) << 26;
dx |= (u32)RGBLED_TakeAntiCode(r) << 24;
dx |= (u32)b << 16;
dx |= (u32)g << 8;
dx |= r;
RGBLED_DatSend(dx);//发送数据
}
//RGB灯控制函数
//r;红色值 0~255
//g:绿色值 0~255
//b:蓝色值 0~255
void RGBLED_Show(u8 r,u8 g,u8 b)
{
RGBLED_Send32Zero();//发送前32位'0'起始帧
RGBLED_DataDealWithAndSend(r, g, b);//发送32bit灰度数据
RGBLED_DataDealWithAndSend(r, g, b);
}
//RGB灯初始化函数
void RGBLED_Init(void)
{
// RCC->APB2ENR|=1<<2; //使能PORTA口时钟
// RCC->APB2ENR|=1<<4; //使能PORTC口时钟
// P3->CRL&=0XFFF0FFFF;//PA4输出
// P3->CRL|=0X00030000;
// GPIOC->CRL&=0XFFF0FFFF;//PC4输出
// GPIOC->CRL|=0X00030000;
RGBLED_Show(0,0,0);//关闭RGB灯
}
隔壁家的老婆饼
- 粉丝: 50
- 资源: 10
最新资源
- 使用 LZW 算法压缩 2D 图像Matlab代码.rar
- 使用 Lipschitz 常数学习 Lyapunov 函数Matlab代码.rar
- 使用 LevelSet 算法进行肝脏分割Matlab代码.rar
- 使用 Total Vairation 正则化进行图像去模糊Matlab代码.rar
- 使用 Student 的 t 混合模型对点集进行稳健的分组配准Matlab代码.rar
- 使用 optical flow block 迭代启用刚性和非刚性图像配准Matlab代码.rar
- 使用DCT、量化、锯齿形重新排序和JPEG标准的运行级编码进行图像编码_解码MATLAAB代码.rar
- 使用 Wiener Filter 过滤声音信号Matlab代码.rar
- 使用不规则放置的变换矢量执行 3D 非刚性变形Matlab代码.rar
- 使用调色板对灰度图像进行自动着色Matlab代码.rar
- 使用多类 SVM 分类器检测和分类植物叶片病害的 Matlab 代码.rar
- 使用尺度空间算法追踪微血管系统的中心线Matlab代码.rar
- 使用傅里叶切片定理(而不是过滤的反向投影)进行重建的Matlab实验。.rar
- 使用改进的 MI 内核自动 2D 刚性配准Matlab代码.rar
- 使用恶魔(流体)算法进行非刚性 2D 和 3D 图像配准Matlab代码.rar
- 使用互相关查找图像之间的位移Matlab代码.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈