K_A01_002 基于单片机驱动RGB模块颜色渐变显示
目录
一、程序功能说明
二、基本参数
1、参数
2、模块引脚说明
三、PWM驱动说明
时序:
代码:
STC89C52RC
STM32F103C8T6
四、部分代码说明
接线说明
1.1、STC89C52RC+RGB模块
1.2、STM32F103C8T6+RGB模块
五、相关资料链接
六、视频效果展示与程序资料获取
七、项目所有材料清单
八、注意事项
九、接线表格
一、程序功能说明
单片机型号 |
测试条件 |
模块名称 |
代码功能 |
STC89C52RC |
1.晶振11.0592M |
RGB模块 |
1、RGB模块彩灯渐变 |
STM32F103C8T6 |
1、晶振8M 2、系统时钟72M |
RGB模块 |
二、基本参数
1、参数
2、模块引脚说明
RGB模块引脚 |
引脚说明 |
GND |
GND引脚接开发板GND |
R |
红灯引脚 高电平亮 单片机引脚电流不够建议上拉 |
G |
绿灯引脚 高电平亮 单片机引脚电流不够建议上拉 |
B |
蓝灯引脚 高电平亮 单片机引脚电流不够建议上拉 |
三、PWM驱动说明
时序:
PWM信号占空比0-100% 周期可根据需要调整
代码:
STC89C52RC
用定时器产生3路PWM信号
void tim0() interrupt 1
{TL0 = 0xD2; //设置定时初始值TH0 = 0xFF; //设置定时初始值times++;if(times<=Duty_R){Pwm_R=1;}else{Pwm_R=0;} if(times<=Duty_G){Pwm_G=1;}else{Pwm_G=0;} if(times<=Duty_B){Pwm_B=1;}else{Pwm_B=0;} }
STM32F103C8T6
使用硬件PWM信号发生 4路PWM输出可选任意三路
/* ---------------- PWM信号 周期和占空比的计算--------------- */
// ARR :自动重装载寄存器的值
// CLK_cnt:计数器的时钟,等于 Fck_int / (psc+1) = 72M/(psc+1)
// PWM 信号的周期 T = ARR * (1/CLK_cnt) = ARR*(PSC+1) / 72M
// 占空比P=CCR/(ARR+1)static void GENERAL_TIM_Mode_Config(void)
{// 开启定时器时钟,即内部时钟CK_INT=72MGENERAL_TIM_APBxClock_FUN(GENERAL_TIM_CLK,ENABLE);/*--------------------时基结构体初始化-------------------------*/// 配置周期,这里配置为100KTIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;// 自动重装载寄存器的值,累计TIM_Period+1个频率后产生一个更新或者中断TIM_TimeBaseStructure.TIM_Period=GENERAL_TIM_Period; // 驱动CNT计数器的时钟 = Fck_int/(psc+1)TIM_TimeBaseStructure.TIM_Prescaler= GENERAL_TIM_Prescaler; // 时钟分频因子 ,配置死区时间时需要用到TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; // 计数器计数模式,设置为向上计数TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; // 重复计数器的值,没用到不用管TIM_TimeBaseStructure.TIM_RepetitionCounter=0; // 初始化定时器TIM_TimeBaseInit(GENERAL_TIM, &TIM_TimeBaseStructure);/*--------------------输出比较结构体初始化-------------------*/ // 占空比配置uint16_t CCR1_Val = 0;uint16_t CCR2_Val = 0;uint16_t CCR3_Val = 0;uint16_t CCR4_Val = 0;TIM_OCInitTypeDef TIM_OCInitStructure;// 配置为PWM模式1TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;// 输出使能TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;// 输出通道电平极性配置 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;// 输出比较通道 1TIM_OCInitStructure.TIM_Pulse = CCR1_Val;TIM_OC1Init(GENERAL_TIM, &TIM_OCInitStructure);TIM_OC1PreloadConfig(GENERAL_TIM, TIM_OCPreload_Enable);// 输出比较通道 2TIM_OCInitStructure.TIM_Pulse = CCR2_Val;TIM_OC2Init(GENERAL_TIM, &TIM_OCInitStructure);TIM_OC2PreloadConfig(GENERAL_TIM, TIM_OCPreload_Enable);// 输出比较通道 3TIM_OCInitStructure.TIM_Pulse = CCR3_Val;TIM_OC3Init(GENERAL_TIM, &TIM_OCInitStructure);TIM_OC3PreloadConfig(GENERAL_TIM, TIM_OCPreload_Enable);// 输出比较通道 4TIM_OCInitStructure.TIM_Pulse = CCR4_Val;TIM_OC4Init(GENERAL_TIM, &TIM_OCInitStructure);TIM_OC4PreloadConfig(GENERAL_TIM, TIM_OCPreload_Enable);// 使能计数器TIM_Cmd(GENERAL_TIM, ENABLE);
}
四、部分代码说明
接线说明
需要自定义引脚可在此处更改,STM32要自定义引脚的话也要注意引脚时钟使能的更改
1.1、STC89C52RC+RGB模块
sbit Pwm_R=P1^0;
sbit Pwm_G=P1^1;
sbit Pwm_B=P1^2;
1.2、STM32F103C8T6+RGB模块
/************通用定时器TIM参数定义,只限TIM2、3、4、5************/
// 当使用不同的定时器的时候,对应的GPIO是不一样的,这点要注意
// 我们这里默认使用TIM3#define GENERAL_TIM TIM3
#define GENERAL_TIM_APBxClock_FUN RCC_APB1PeriphClockCmd
#define GENERAL_TIM_CLK RCC_APB1Periph_TIM3
#define GENERAL_TIM_Period 254//254US
#define GENERAL_TIM_Prescaler 71
// TIM3 输出比较通道1
#define GENERAL_TIM_CH1_GPIO_CLK RCC_APB2Periph_GPIOA
#define GENERAL_TIM_CH1_PORT GPIOA
#define GENERAL_TIM_CH1_PIN GPIO_Pin_6// TIM3 输出比较通道2
#define GENERAL_TIM_CH2_GPIO_CLK RCC_APB2Periph_GPIOA
#define GENERAL_TIM_CH2_PORT GPIOA
#define GENERAL_TIM_CH2_PIN GPIO_Pin_7// TIM3 输出比较通道3
#define GENERAL_TIM_CH3_GPIO_CLK RCC_APB2Periph_GPIOB
#define GENERAL_TIM_CH3_PORT GPIOB
#define GENERAL_TIM_CH3_PIN GPIO_Pin_0// TIM3 输出比较通道4
#define GENERAL_TIM_CH4_GPIO_CLK RCC_APB2Periph_GPIOB
#define GENERAL_TIM_CH4_PORT GPIOB
#define GENERAL_TIM_CH4_PIN GPIO_Pin_1
五、相关资料链接
- STC89C52RC程序下载 直戳跳转
- STM32F103C8T6程序下载
- 串口下载 直戳跳转
- ST-LINK下载 直戳跳转
- J-LINK下载 直戳跳转
- DAP-LINK下载 直戳跳转
六、视频效果展示与程序资料获取
视频连接 直戳跳转
资料获取 ( 滑到最后添加群号看公告免费获取)
七、项目所有材料清单
STC89C52RC驱动方案 |
图片 |
STM32F103C8T6驱动方案 |
图片 |
备注 K_A01_002 |
STC89C52RC系统板X1 |
![]() |
STM32F103C8T6系统板X1 |
![]() |
1、STM32系统板两根Micro USB线一根用于J-LINK下载器,另一根用于给系统板供电 2、杜邦线建议不用太长的 |
RGB模块X1 |
![]() |
RGB模块X1 |
![]() |
|
Micro USB线X1 |
![]() |
Micro USB线X2 |
![]() |
|
母母杜邦线X4 |
![]() |
母母杜邦线X4 |
![]() |
|
J-LINK下载器 |
![]() |
八、注意事项
- VCC GND请勿接反,接反易烧
- 显示异常时,排除接线接触不良
九、接线表格
单片机型号 |
模块 |
对应引脚(上:模块引脚 下:单片机引脚) |
|||
STM32F103 C8T6 |
RGB模块 |
GND |
R |
G |
B |
GND |
PA6 |
PA7 |
PB0 |
||
STC89C52RC |
RGB模块 |
GND |
R |
G |
B |
GND |
P1.0 |
P1.1 |
P1.2 |
K_A01_002 基于单片机驱动RGB模块颜色渐变显示相关推荐
- K_A12_022 基于STM32等单片机驱动VL53L0X模块 串口与OLED0.96双显示
K_A12_022 基于STM32等单片机驱动VL53L0X模块 串口与OLED0.96双显示 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 UART对应程序: IIC对应程序: 四.部分 ...
- K_A14_001 基于STM32等单片机驱动MPU6050模块 串口与OLED0.96双显示
K_A14_001 基于STM32等单片机驱动MPU6050模块 串口与OLED0.96双显示 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 时序 对应程序: 四.部分代码说明 1.接线引 ...
- K_A08_004 基于 STM32等单片机驱动MX1919模块按键控制直流电机正反转加减速启停
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 1.MX1919模块驱动时序 2.对应程序: 3.PWM信号 四.部分代码说明 接线说明 1.STC89C52RC+MX1919 ...
- K_A07_003 基于 STM32等单片机驱动DRV8825模块按键控制步进电机正反转
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 SETP时序 对应程序: 细分说明 程序 四.部分代码说明 1.接线说明 1.1.STC89C52RC+DRV8825模块 1. ...
- K_A08_009 基于 STM32等单片机驱动TB6612模块按键控制直流电机正反转加减速启停
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 TB6612模块驱动说明 对应程序: ENA ENB输出PWM 四.部分代码说明 接线说明 1.STC89C52RC+TB661 ...
- K_A07_001 基于 STM32等单片机驱动A4988模块按键控制步进电机正反转
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 SETP时序 对应程序: 细分说明 程序 四.部分代码说明 1.接线说明 1.1.STC89C52RC+A4988模块 1.2. ...
- K_A08_003 基于 STM32等单片机驱动L9110模块按键控制直流电机正反转加减速启停
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 L9110模块驱动时序 对应程序: PWM信号 四.部分代码说明 接线说明 1.STC89C52RC+L9110模块 2.STM ...
- K_A07_005 基于 STM32等单片机驱动 DRV8833 模块按键控制步进电机正反转
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 步进电机驱动时序 对应程序: 四.部分代码说明 1.接线说明 1.1.STC89C52RC+DRV8833模块 1.2.STM3 ...
- K_A08_012 基于 STM32等单片机驱动 DRV8833 模块按键控制直流电机正反转
目录 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 驱动时序 对应程序: 四.部分代码说明 接线说明 STC89C52RC+DRV8833模块 STM32F103C8T6+DRV8833模 ...
最新文章
- 海思3536:交叉编译Qt4.8.4
- 网络营销推广软件浅析网络优化时该如何更好的判断友链的质量?
- MATLAB爬虫爬取股票数据
- STM32中IO口的8中工作模式
- 简单的session共享的封装
- Caffe官方教程翻译(5):Classification: Instant Recognition with Caffe
- 海贼王热血航线正在连接服务器,航海王热血航线连接服务器失败?解决方法一览...
- C++中实现Singleton的正确方法
- C/C++ 踩过的坑和防御式编程
- jmeter聚个报告怎么看qps_Jmeter 使用笔记之 html 报告扩展(一)
- 程序员的算法课(19)-常用的图算法:最短路径(Shortest Path)
- 集合框架之ArrayList集合
- C#字典类型转URL参数字符串
- ffmpeg 将拆分的数据合成一帧_FFMPEG 视频分割和合并
- 深信服vmp云桌面安装测试小结
- 星舆科技北斗高精度定位网启动北斗三号服务
- win10系统卡顿怎么解决?从这几方面入手准没错
- IP地址、网络号、主机号、网络地址、子网掩码、网关、192.168.0.1/24是什么意思
- denoise_timedomain 时域降噪
- 全解 Google(谷歌)基础设施架构安全设计