基于STM32F103ZET6单片机驱动SM16306SJ控制8个LED灯的系统设计

这篇具有很好参考价值的文章主要介绍了基于STM32F103ZET6单片机驱动SM16306SJ控制8个LED灯的系统设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.设计要求:使用stm32f103zet6精英开发板  采用SM16306SJ驱动8个LED灯。

2.原理图

sm16306,单片机,stm32,嵌入式硬件

3.代码

.H文件

#ifndef __MBI5020_H
#define __MBI5020_H	 
#include "sys.h"

#define OE_H     GPIO_SetBits(GPIOD, GPIO_Pin_2)  
#define OE_L     GPIO_ResetBits(GPIOD,GPIO_Pin_2) 

#define LE_H     GPIO_SetBits(GPIOB, GPIO_Pin_5)  
#define LE_L     GPIO_ResetBits(GPIOB,GPIO_Pin_5) 

#define CLK_H    GPIO_SetBits(GPIOB, GPIO_Pin_4)  
#define CLK_L    GPIO_ResetBits(GPIOB,GPIO_Pin_4)

#define SDI_H    GPIO_SetBits(GPIOB, GPIO_Pin_3) 
#define SDI_L    GPIO_ResetBits(GPIOB,GPIO_Pin_3) 

void MBI5020_Init(void);//初始化
void MBI5020_Driver(uint16_t data);
		 				    
#endif

.C文件

#include "MBI5020.h"  
void MBI5020_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD,ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);    //
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE );

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;				 //CLK 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);					 //根据设定参数初始化GPIOB.4
 GPIO_ResetBits(GPIOB,GPIO_Pin_4);				

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;	    		 //SDI 端口配置, 推挽输出
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);	  				 //推挽输出 ,IO口速度为50MHz
 GPIO_ResetBits(GPIOB,GPIO_Pin_3);

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;	    		 //LE
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);	  				 //推挽输出 ,IO口速度为50MHz
 GPIO_ResetBits(GPIOB,GPIO_Pin_5);
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;	    		 //OE
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOD, &GPIO_InitStructure);	  				 //推挽输出 ,IO口速度为50MHz	
 GPIO_SetBits(GPIOD,GPIO_Pin_2);
}

void MBI5020_Driver(uint16_t data)
	
{
	uint8_t  j;	
	
	//第一组
	 SDI_L;//第一路数据
	
   CLK_L;//时钟
	 LE_L;
	 OE_H;//使能
		
			for (j = 0; j < 16; j++) 
			{
					//先准备好数据
								
				if (data &0x8000) 
				{
					SDI_H;			//数据1
				} 
				else 
				{
					SDI_L;			//数据0
				}
				CLK_H;
		  	data  = (data << 1);//数据左移一位				
		  	CLK_L;
			}
		
		LE_H;//开始移位
		LE_L;//拉低移位	
		OE_L;//使能输出
}

main函数
int main(void)
{
    MBI5020_Init();
    whlie(1)
    {
       MBI5020_Driver(0x00FF);  
    }
}

4.实物效果图

sm16306,单片机,stm32,嵌入式硬件

备注:1 硬件上有一个LED灯坏了,所以才亮了7个LED灯

           2 一个SM16306SJ最多可以驱动16个LED灯

           3 SM16306SJ跟MBI5020程序通用文章来源地址https://www.toymoban.com/news/detail-854730.html

到了这里,关于基于STM32F103ZET6单片机驱动SM16306SJ控制8个LED灯的系统设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 矩阵键盘之门锁小项目(stm32f103zet6)

    今天,给大家分享的是自己弄着玩的一个矩阵键盘控制控制舵机模拟一个智能门锁的功能。 用到的硬件: 开发板我用的是原子哥的精英板(杀鸡用宰牛刀了)。 矩阵键盘(宝上十几块买的): 外加一个舵机和一个0.96的oled显示屏。 矩阵键盘: 有VCC,GND,SCL,SDO四条线,这个矩阵键

    2024年02月10日
    浏览(16)
  • AD7606与STM32F103ZET6的串行通信

      本文是AD7606与STM32的串行通信的学习心得,可帮助你快速入门AD7606。   图一   图二   图三   图四   根据图一,一些引脚在置高或置低时的上升或下降沿会受时间影响,因此在编写代码时,一些对引脚的操作需要放在一起,且延时函数不能随意使用。   图

    2024年02月08日
    浏览(35)
  • 【单片机】STM32单片机,定时器的输入捕获,基于捕获的频率计,STM32F103

    下面的定时器都具有输入捕获能力: 查看另一篇文章:https://qq742971636.blog.csdn.net/article/details/131471539 外部计数频率计的缺点:需要两个定时器配合,最高能测量的频率是否有限制我没具体尝试。 基于捕获的频率计的缺点:最高能测量的频率有限制。 TIM3_CH1 PWM PA6 10KHZ。 输入

    2024年02月14日
    浏览(21)
  • 【单片机】STM32单片机频率计程序,外部脉冲计数程序,基于脉冲计数的频率计程序,STM32F103

    两种方法用于在单片机中实现频率计的功能。 第一种方法是通过定时器来衡量信号的周期,然后将周期转换为频率。在这种方法中,你可以使用单片机的定时器模块来测量输入信号的周期,定时器会产生一个计数值,你可以根据这个计数值来推算出输入信号的周期,并通过简

    2024年02月11日
    浏览(21)
  • 基于STM32F103ZET6的(单/三)路HC-SR04超声波测距+TFTLCD实时显示+距离报警

    一、成果图 说明:本程序的源码地址: https://github.com/Lfy-YF/Campus-Project            CSDN下载连接:https://download.csdn.net/download/weixin_58849239/87829470 源码包含四个版本,涉及单路测距、三路测距、增加外部中断(用来版本记录的~) 运行效果: 本程序实现脱机测距,共左中右

    2024年02月11日
    浏览(15)
  • STM32F103ZET6【标准库函数开发】------04五个串口的详细配置

    正点原子战舰开发板 STM32F103ZET6有5个串口,查看引脚图可以找到对应的IO口分别如下 串口 USART1 USART2 USART3 UART4 UART5 输入/输出方式 USARTx_TX PA9 PA2 PB10 PC10 PC12 复用推挽输出 USARTx_RX PA10 PA3 PB11 PC11 PD2 浮空输入 USART1挂在APB2下 USART2,USART3,USART4,USART5挂在APB1下 串口调试助手设置波特率

    2024年02月03日
    浏览(80)
  • 用正点原子STM32F103ZET6精英板控制舵机转动实验保姆教程

    正点原子精英板一块 Jlink4线SWD下载线一根 精英板usb供电/下载线一根(负责给开发板供电) SG90舵机一个(三线:其中红线接5V电压,棕线接GED,橙黄色为信号线接开发板PB5引脚,舵机所给为3pin杜邦线母头,可用单根杜邦线(一头子一头母)将舵机线飞开接到精英板上)。 以

    2023年04月15日
    浏览(25)
  • STM32---stm32f103c8t6与stm32f103zet6之间的代码移植转换

    目录 一、将c8t6转换为zet6 1、修改启动文件 2、修改芯片 3、将MD修改为HD  4、下载器的修改 5、修改完成,编译成功  二、将zet6转换为c8t6 最终结果如下:   将STM32F103C8改为STM32F103ZE   基本相同,反向即可。    

    2024年02月06日
    浏览(17)
  • MDK Keil5 创建Stm32工程-理论篇(这里以Stm32F103Zet6为例)

    整个工程可以粗略的划分为几个文件夹: BSP 底层驱动比如GPIOTimer等驱动文件 CMSIS 内核相关的文件 Firmware 生成的固件下载文件 Mycode 用户编写的相关文件,主要编写的文件都在这个文件夹里 Project 工程文件 startup 芯片启动文件 STM32F10x_FWLib 标准库文件 USER 主函数等文件 readm

    2023年04月24日
    浏览(47)
  • 【LVGL】STM32F103ZET6——LVGL_GUI_GUIDER移植过程成功

    STM32F103ZET6——LVGL_GUI_GUIDER移植过程 STM32F103ZET6——LVGL_GUI_GUIDER移植过程 使用工具: 1.LVGL库8.02 2.GUI_GUIDER 3.keil5 设计出来的总体是这样 提示:以下是本篇文章正文内容,下面案例可供参考 这部分有很多大佬已经写的很成熟了,我就不赘述了 安装包在这里硬件资源 右上角可将

    2024年02月12日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包