STM32F103 驱动32x64双色点阵单元板 (标准HUB08 接口 F3.75)

2023-11-06

MCU:STM32F103C8

点阵屏:32*64 F3.75  单元板  红绿双色 显示    

接口:标准HUB08   OE :高电平有效  ,138译码  , 1/16 扫  

欢迎加QQ群 交流讨论

废话不多说,直接贴代码 

整个keil工程下载 https://download.csdn.net/download/qq_20490553/12918735

#ifndef _LED_H
#define _LED_H

/* 包含的头文件 --------------------------------------------------------------*/
#include "stm32f10x.h"
 
/* 宏定义 --------------------------------------------------------------------*/
#define HUB08_LA                  GPIO_Pin_7
#define HUB08_LB                  GPIO_Pin_8
#define HUB08_LC                  GPIO_Pin_9
#define HUB08_LD                  GPIO_Pin_10

#define HUB08_G1                  GPIO_Pin_11
#define HUB08_G2                  GPIO_Pin_12
#define HUB08_LT                  GPIO_Pin_13
#define HUB08_SK                  GPIO_Pin_14

#define HUB08_EN                  GPIO_Pin_15
#define HUB08_R1                  GPIO_Pin_8
#define HUB08_R2                  GPIO_Pin_9

#define HUB08_GPIO_PORT            GPIOB
#define HUB08_GPIO_CLK             RCC_APB2Periph_GPIOB
#define HUB08_GPIO_PORTA            GPIOA
#define HUB08_GPIO_CLKA             RCC_APB2Periph_GPIOA
 

#define HUB08_LA_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_LA)
#define HUB08_LA_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_LA)
#define HUB08_LB_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_LB)
#define HUB08_LB_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_LB)
#define HUB08_LC_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_LC)
#define HUB08_LC_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_LC)
#define HUB08_LD_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_LD)
#define HUB08_LD_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_LD)

#define HUB08_G1_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_G1)
#define HUB08_G1_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_G1)
#define HUB08_G2_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_G2)
#define HUB08_G2_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_G2)
#define HUB08_R1_1                   GPIO_SetBits(HUB08_GPIO_PORTA, HUB08_R1)
#define HUB08_R1_0                   GPIO_ResetBits(HUB08_GPIO_PORTA, HUB08_R1)
#define HUB08_R2_1                   GPIO_SetBits(HUB08_GPIO_PORTA, HUB08_R2)
#define HUB08_R2_0                   GPIO_ResetBits(HUB08_GPIO_PORTA, HUB08_R2)

 
#define HUB08_EN_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_EN)
#define HUB08_EN_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_EN)
#define HUB08_LT_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_LT)
#define HUB08_LT_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_LT)
#define HUB08_SK_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_SK)
#define HUB08_SK_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_SK)
 
			
void   LED_Show_Update(void) ;
void   write_595(uint8_t DR1,uint8_t DG1,uint8_t DR2,uint8_t DG2);
void   HUB08_GPIO_Init(void);



#endif /* _LED_H */
#include "bsp.h"

					
uint8_t   disp_table[][48]=
{
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0x0F,0xFC,0x0F,0xFC,0x1F,0xFE,0x3F,0xFF,0xFF,0xFF,0x27,0xFF,0x03,0xFC,0x1F,0xF8,0x3F,0xFB,0x3F},
{0xFF,0x3F,0xFE,0x1F,0xFE,0xDF,0xFE,0xEF,0xFC,0xE7,0xFD,0xF3,0xFB,0xF0,0xE3,0xF0,0xF7,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"天",0*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xF3,0xFF,0x37,0xFF,0x6F,0xFF,0x63,0xF7,0xC1,0xE7,0x1F,0xF4,0x1F,0xFF,0xA7,0xFF,0x87,0xFF,0x37,0xE7,0x17,0xF7,0x17},
{0xF7,0x77,0xF7,0x17,0xF7,0x77,0xF7,0x57,0xFB,0x17,0xFB,0x67,0xF1,0xF7,0xC0,0x7F,0xFF,0x9F,0xFF,0xE0,0xFF,0xF0,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"道",1*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xFF,0xF3,0xFF,0xF7,0xFB,0x77,0xC1,0x77,0x83,0x57,0x87,0x57,0xB7,0x57,0xC3,0x57,0x83,0x57,0xAA,0x07},
{0xA9,0x17,0xA1,0x57,0xA3,0x57,0xB2,0xD7,0xBA,0xD7,0x8A,0xD7,0xBA,0xD7,0xA8,0xF7,0x88,0xF7,0xB1,0xF7,0xFB,0xF7,0xFF,0xF7,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"酬",2*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xFF,0xFC,0xFF,0xED,0xFF,0xED,0xFF,0xEC,0xFF,0xE0,0xFF,0xC9,0xFF,0xC3,0xEF,0xE3,0xEF,0xF7,0xEF,0xF0,0xC7,0xE4,0x03,0xD4,0x49},
{0xD1,0xC9,0xC1,0xDB,0xE1,0xDB,0xF1,0x9B,0xE1,0xBB,0xF1,0xB3,0xE3,0x33,0xF1,0x77,0xF2,0x37,0xE6,0xC7,0x8F,0xC7,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"勤",3*/

};

/************************************************
函数名称 : HUB08_GPIO_Init
功    能 : LED端口初始化
参    数 : 无
返 回 值 : 无
作    者 : LXP
*************************************************/
void HUB08_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  /* 使能RCC */
  RCC_APB2PeriphClockCmd(HUB08_GPIO_CLK|HUB08_GPIO_CLKA , ENABLE);

  GPIO_InitStructure.GPIO_Pin =  HUB08_LA|HUB08_LB|HUB08_LC|HUB08_LD|HUB08_G1|HUB08_G2|HUB08_LT|HUB08_SK|HUB08_EN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(HUB08_GPIO_PORT, &GPIO_InitStructure);
	
  GPIO_InitStructure.GPIO_Pin =  HUB08_R1|HUB08_R2;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(HUB08_GPIO_PORTA, &GPIO_InitStructure);
	
	HUB08_EN_0;
	HUB08_G1_0;
	HUB08_G2_0;
	HUB08_R1_0;
	HUB08_R2_0;

}


/*****************************************************
函数名称:void write_595()
功能说明:给595写数据
参数:    DR1、DG1-上半屏 DR2、DG2-下半屏  
返回值:  无
****************************************************/
void write_595(uint8_t DR1,uint8_t DG1,uint8_t DR2,uint8_t DG2)  
{
          uint8_t i;
	
         for(i=0;i<8;i++)
         {
					      if(DR1&0x80) HUB08_R1_1;
					       else        HUB08_R1_0;
					      if(DR2&0x80) HUB08_R2_1;
					       else        HUB08_R2_0;
					      if(DG1&0x80) HUB08_G1_1;
					       else        HUB08_G1_0;
					      if(DG2&0x80) HUB08_G2_1;
					       else        HUB08_G2_0;	
					 
					         HUB08_SK_0; 
                   HUB08_SK_1; 
					 
									 DR1<<=1;
									 DR2<<=1;
									 DG1<<=1;
									 DG2<<=1;
         }
}

/*****************************************************
函数名称:void LED_Show_Update(void)
功能说明:LED 刷新显示
参数:    DR1、DG1-上半屏 DR2、DG2-下半屏  
返回值:  无
****************************************************/
void   LED_Show_Update(void) 
{
           uint8_t num = 0;
	         uint8_t temp = 0;
           uint8_t number = 2;
        for(num=0;num<16;num++)
         {
						temp=0;
						write_595(0xff,disp_table[0+temp][num*number+0],disp_table[1+temp][num*number+0],0xff);
						write_595(0xff,disp_table[0+temp][num*number+1],disp_table[1+temp][num*number+1],0xff);
						write_595(0xff,disp_table[2+temp][num*number+0],disp_table[3+temp][num*number+0],0xff);
						write_595(0xff,disp_table[2+temp][num*number+1],disp_table[3+temp][num*number+1],0xff);
						write_595(disp_table[4+temp][num*number+0],disp_table[4+temp][num*number+0],0xff,disp_table[5+temp][num*number+0]);
						write_595(disp_table[4+temp][num*number+1],disp_table[4+temp][num*number+1],0xff,disp_table[5+temp][num*number+1]);
						write_595(disp_table[6+temp][num*number+0],disp_table[6+temp][num*number+0],0xff,disp_table[7+temp][num*number+0]);
						write_595(disp_table[6+temp][num*number+1],disp_table[6+temp][num*number+1],0xff,disp_table[7+temp][num*number+1]);   
					 
						 GPIOB->ODR =  GPIOB->ODR & 0xF87F;
						 GPIOB->ODR |=  (num<<7)  ;
						 HUB08_LT_1; 
						 HUB08_LT_0; 
							
						 HUB08_EN_0;	 
						 delay_us(100);//调节亮度
						 HUB08_EN_1;    
        }			
}

完事后,直接在main.c 调用 LED_Show_Update();即可

int main(void)
{
    SysInit();
	  delay_init();

    while(1)	  
    {		
      LED_Show_Update();
    }	 
}

来个效果图,及单元板照片

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F103 驱动32x64双色点阵单元板 (标准HUB08 接口 F3.75) 的相关文章

  • DNN结构:CNN、LSTM/RNN中的Attention结构

    前言 attention作为一种机制 有其认知神经或者生物学原理 注意力的认知神经机制是什么 如何从生物学的角度来定义注意力 大多数attention gating 技巧都可以直接加入现有的网络架构 通过合理设计初始化和训练步骤也可以利用现

随机推荐

  • Linux--写时拷贝、内存管理

    目录 1 内存管理 2 写时拷贝技术 1 内存管理 简单分页 逻辑页 物理页 页表 将虚拟内存空间和物理内存空间划分为大小相同的页面 4k 8k 16k等 虚拟内存 在磁盘上划分一块空间 为什么要有逻辑页面和物理页面 物理页面很长 不能确定
  • ubuntu 设置网络代理

    Ubuntu下通过终端设置网络代理 以便apt get等命令可以正常使用 只需在终端里设置http proxy系统变量即可 plain export http proxy http usr name usr password ipaddre
  • 华为云交付项目服务器配置表,云服务器设备配置列表

    云服务器设备配置列表 内容精选 换一换 当您在华为云上部署了弹性云服务器以及其他云服务 想在关联VPC内通过内网域名实现互访 可以为弹性云服务器配置内网域名解析 内网域名可以随意创建 无需注册 只需要保证VPC内唯一 本操作以为弹性云服务器
  • JavaScript设计模式——工厂模式

    在介绍工厂模式之前 首先我们要理解一下什么是设计模式 什么是设计原则 设计模式 通常在我们解决问题的时候 很多时候不是只有一种方式 我们通常有多种方式来解决 但是肯定会有一种通用且高效的解决方案 这种解决方案在软件开发中我们称它为设计模式
  • 字符串的截取

    第二个 开始截取 String orderArr1 order substring order indexOf order indexOf 1 最后一个 开始截取 String orderArr1 order substring order
  • iOS如何提高tableView的性能

    a 重用cell 我们都知道申请内存是需要时间 特别是在一段时间内频繁的申请内存将会造成很大的开销 而且上tebleView中cell大部分情况下布局都是一样的 这个时候我们可以通过回收重用机制来提高性能 b 避免content的重新布局
  • webservice 安全认证请求头信息

    java import java io IOException import java util Enumeration import javax servlet Filter import javax servlet FilterChai
  • 【深度学习

    文章目录 一 前言 二 Computer vision 2 1 Image classification 2 2 Object detection 2 3 Image segmentation 2 4 Depth estimation 三
  • JAVA使用EasyExcel 进行文件的下载

    Spring Boot中使用EasyExcel 进行文件的下载 1 引入依赖
  • Qt中文乱码解决方法

    Qt中文乱码解决方法 一步到位 一 中文乱码解决方法一 1 QString str QStringLiteral 1你好世界 abc 推荐 2 QString str QObject tr 2你好世界 abc 推荐国际化软件使用 其余不推荐
  • Vue3无法用watch监听到通过ref定义的div内容的改变

    源码如下 div设置了contenteditable属性 但是其中的通过ref绑定的数据监听不到变化
  • 【转载】Elasticsearch——QueryBuilder简单查询--模糊搜索

    elasticsearch中存储的全部文档 1 matchAllQuery matchAllQuery 方法用来匹配全部文档 public class QueryTest public static void main String arg
  • 圆的相切相交相离公式_高中数学:直线与圆

    一 直线 1 直线的倾斜角 在平面直角坐标系中 当直线与x轴重合或平行时 规定倾斜角为0 对于与x轴相交的直线 把x轴绕着交点按逆时针方向转到和直线重合时所转的最小正角叫做直线的倾斜角 倾斜角的范围 0 2 直线的斜率 倾斜角不是90 的直
  • 有关eigen库的一些基本使用方法

    矩阵 向量初始化 include
  • hash冲突的4种解决方案

    简介 解决hash冲突 哈希冲突 有以下四种方法 链地址法 再哈希法 建立公共溢出区 开放定址法 法1 链地址法 对于相同的哈希值 使用链表进行连接 HashMap使用此法 优点 处理冲突简单 无堆积现象 即非同义词决不会发生冲突 因此平均
  • 在windows下制作grub2引导的多启动U盘(可启动wepe,安装centos7,debian10等)

    目标 在windows下把一个8GB的u盘制作为grub2引导的多启动U盘 可启动wepe 安装centos7 debian10等 同时支持bios主板和uefi主板 工具准备 a 一个windows 10电脑 b windows 10电脑
  • 要像黑客一样思考,网络安全人员的晋级之道

    学会像黑客一样思考对于任何网络安全专业人士来说都是必要的 这能够让他们更好地理解黑客入侵网络和系统的策略 战术和技术 以及如何保护客户免受此类攻击 为了成为一名有效的安全专业人员 必须能够既具有攻击性又具有防御性的思维 也就是说 必须理解攻
  • QT自定义槽函数

    QT学习 一 QT自定义槽函数 要点 使用举例 一 QT自定义槽函数 要点 槽函数可以是任意的类成员函数 全局函数 静态函数 lambda表达式 隐式函数 槽函数需要与信号相对应 返回值 函数 信号没有返回值 槽函数可以有返回值 举例 vo
  • iMX6ULL学习(一)

    以下部分资料和硬件参考于韦老师的百问网 文章目录 嵌入式linux启动流程 编译流程 链接库的创建使用 一 制作和使用动态链接库 so share object 二 制作和使用静态链接库 a archive 开发前基础库下载 各压缩格式操作
  • STM32F103 驱动32x64双色点阵单元板 (标准HUB08 接口 F3.75)

    MCU STM32F103C8 点阵屏 32 64 F3 75 单元板 红绿双色 显示 接口 标准HUB08 OE 高电平有效 138译码 1 16 扫 欢迎加QQ群 交流讨论 废话不多说 直接贴代码 整个keil工程下载 https do