找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3167|回复: 1
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
MCU:STM32F103C8
点阵屏:32*64 F3.75  单元板  红绿双色 显示   
接口:标准HUB08   OE :高电平有效  ,138译码  , 1/16 扫  
废话不多说,直接贴代码
整个keil工程下载 https://download.csdn.net/download/qq_20490553/12918735
  1.     #ifndef _LED_H
  2.     #define _LED_H

  3.     /* 包含的头文件 --------------------------------------------------------------*/
  4.     #include "stm32f10x.h"

  5.     /* 宏定义 --------------------------------------------------------------------*/
  6.     #define HUB08_LA                  GPIO_Pin_7
  7.     #define HUB08_LB                  GPIO_Pin_8
  8.     #define HUB08_LC                  GPIO_Pin_9
  9.     #define HUB08_LD                  GPIO_Pin_10

  10.     #define HUB08_G1                  GPIO_Pin_11
  11.     #define HUB08_G2                  GPIO_Pin_12
  12.     #define HUB08_LT                  GPIO_Pin_13
  13.     #define HUB08_SK                  GPIO_Pin_14

  14.     #define HUB08_EN                  GPIO_Pin_15
  15.     #define HUB08_R1                  GPIO_Pin_8
  16.     #define HUB08_R2                  GPIO_Pin_9

  17.     #define HUB08_GPIO_PORT            GPIOB
  18.     #define HUB08_GPIO_CLK             RCC_APB2Periph_GPIOB
  19.     #define HUB08_GPIO_PORTA            GPIOA
  20.     #define HUB08_GPIO_CLKA             RCC_APB2Periph_GPIOA


  21.     #define HUB08_LA_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_LA)
  22.     #define HUB08_LA_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_LA)
  23.     #define HUB08_LB_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_LB)
  24.     #define HUB08_LB_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_LB)
  25.     #define HUB08_LC_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_LC)
  26.     #define HUB08_LC_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_LC)
  27.     #define HUB08_LD_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_LD)
  28.     #define HUB08_LD_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_LD)

  29.     #define HUB08_G1_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_G1)
  30.     #define HUB08_G1_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_G1)
  31.     #define HUB08_G2_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_G2)
  32.     #define HUB08_G2_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_G2)
  33.     #define HUB08_R1_1                   GPIO_SetBits(HUB08_GPIO_PORTA, HUB08_R1)
  34.     #define HUB08_R1_0                   GPIO_ResetBits(HUB08_GPIO_PORTA, HUB08_R1)
  35.     #define HUB08_R2_1                   GPIO_SetBits(HUB08_GPIO_PORTA, HUB08_R2)
  36.     #define HUB08_R2_0                   GPIO_ResetBits(HUB08_GPIO_PORTA, HUB08_R2)


  37.     #define HUB08_EN_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_EN)
  38.     #define HUB08_EN_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_EN)
  39.     #define HUB08_LT_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_LT)
  40.     #define HUB08_LT_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_LT)
  41.     #define HUB08_SK_1                   GPIO_SetBits(HUB08_GPIO_PORT, HUB08_SK)
  42.     #define HUB08_SK_0                   GPIO_ResetBits(HUB08_GPIO_PORT, HUB08_SK)


  43.     void   LED_Show_Update(void) ;
  44.     void   write_595(uint8_t DR1,uint8_t DG1,uint8_t DR2,uint8_t DG2);
  45.     void   HUB08_GPIO_Init(void);



  46.     #endif /* _LED_H */

  47.     #include "bsp.h"


  48.     uint8_t   disp_table[][48]=
  49.     {
  50.     {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},
  51.     {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*/
  52.     {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},
  53.     {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*/
  54.     {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},
  55.     {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*/
  56.     {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},
  57.     {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*/

  58.     };

  59.     /************************************************
  60.     函数名称 : HUB08_GPIO_Init
  61.     功    能 : LED端口初始化
  62.     参    数 : 无
  63.     返 回 值 : 无
  64.     作    者 : LXP
  65.     *************************************************/
  66.     void HUB08_GPIO_Init(void)
  67.     {
  68.       GPIO_InitTypeDef GPIO_InitStructure;

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

  71.       GPIO_InitStructure.GPIO_Pin =  HUB08_LA|HUB08_LB|HUB08_LC|HUB08_LD|HUB08_G1|HUB08_G2|HUB08_LT|HUB08_SK|HUB08_EN;
  72.       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  73.       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  74.       GPIO_Init(HUB08_GPIO_PORT, &GPIO_InitStructure);

  75.       GPIO_InitStructure.GPIO_Pin =  HUB08_R1|HUB08_R2;
  76.       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  77.       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  78.       GPIO_Init(HUB08_GPIO_PORTA, &GPIO_InitStructure);

  79.             HUB08_EN_0;
  80.             HUB08_G1_0;
  81.             HUB08_G2_0;
  82.             HUB08_R1_0;
  83.             HUB08_R2_0;

  84.     }


  85.     /*****************************************************
  86.     函数名称:void write_595()
  87.     功能说明:给595写数据
  88.     参数:    DR1、DG1-上半屏 DR2、DG2-下半屏  
  89.     返回值:  无
  90.     ****************************************************/
  91.     void write_595(uint8_t DR1,uint8_t DG1,uint8_t DR2,uint8_t DG2)  
  92.     {
  93.               uint8_t i;

  94.              for(i=0;i<8;i++)
  95.              {
  96.                                                   if(DR1&0x80) HUB08_R1_1;
  97.                                                    else        HUB08_R1_0;
  98.                                                   if(DR2&0x80) HUB08_R2_1;
  99.                                                    else        HUB08_R2_0;
  100.                                                   if(DG1&0x80) HUB08_G1_1;
  101.                                                    else        HUB08_G1_0;
  102.                                                   if(DG2&0x80) HUB08_G2_1;
  103.                                                    else        HUB08_G2_0;      

  104.                                                      HUB08_SK_0;
  105.                        HUB08_SK_1;

  106.                                                                              DR1<<=1;
  107.                                                                              DR2<<=1;
  108.                                                                              DG1<<=1;
  109.                                                                              DG2<<=1;
  110.              }
  111.     }

  112.     /*****************************************************
  113.     函数名称:void LED_Show_Update(void)
  114.     功能说明:LED 刷新显示
  115.     参数:    DR1、DG1-上半屏 DR2、DG2-下半屏  
  116.     返回值:  无
  117.     ****************************************************/
  118.     void   LED_Show_Update(void)
  119.     {
  120.                uint8_t num = 0;
  121.                      uint8_t temp = 0;
  122.                uint8_t number = 2;
  123.             for(num=0;num<16;num++)
  124.              {
  125.                                                     temp=0;
  126.                                                     write_595(0xff,disp_table[0+temp][num*number+0],disp_table[1+temp][num*number+0],0xff);
  127.                                                     write_595(0xff,disp_table[0+temp][num*number+1],disp_table[1+temp][num*number+1],0xff);
  128.                                                     write_595(0xff,disp_table[2+temp][num*number+0],disp_table[3+temp][num*number+0],0xff);
  129.                                                     write_595(0xff,disp_table[2+temp][num*number+1],disp_table[3+temp][num*number+1],0xff);
  130.                                                     write_595(disp_table[4+temp][num*number+0],disp_table[4+temp][num*number+0],0xff,disp_table[5+temp][num*number+0]);
  131.                                                     write_595(disp_table[4+temp][num*number+1],disp_table[4+temp][num*number+1],0xff,disp_table[5+temp][num*number+1]);
  132.                                                     write_595(disp_table[6+temp][num*number+0],disp_table[6+temp][num*number+0],0xff,disp_table[7+temp][num*number+0]);
  133.                                                     write_595(disp_table[6+temp][num*number+1],disp_table[6+temp][num*number+1],0xff,disp_table[7+temp][num*number+1]);   

  134.                                                      GPIOB->ODR =  GPIOB->ODR & 0xF87F;
  135.                                                      GPIOB->ODR |=  (num<<7)  ;
  136.                                                      HUB08_LT_1;
  137.                                                      HUB08_LT_0;

  138.                                                      HUB08_EN_0;         
  139.                                                      delay_us(100);//调节亮度
  140.                                                      HUB08_EN_1;   
  141.             }                       
  142.     }

  143. 完事后,直接在main.c 调用 LED_Show_Update();即可
  144.     int main(void)
  145.     {
  146.         SysInit();
  147.               delay_init();

  148.         while(1)         
  149.         {               
  150.           LED_Show_Update();
  151.         }         
  152.     }
复制代码



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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:334749 发表于 2020-10-12 14:50 | 只看该作者
群文件也可下载工程文件源码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表