发布一个优信74HC595的 8X8的的驱动模块DEMO

2019-07-20 01:28发布

本帖最后由 lidezhong 于 2018-7-7 15:20 编辑

刚学STM32,原来粗略懂一些51,在网上买了很多模块,现在想用STM32驱动起来。但在网上找了很多74HC595的驱动好像都不太好用,这次我就参考了他们的代码。自己修改了一个。效果还不错。因为经验不足,有一些地方可以改进的,希望大家提出。以下是部份代码
[mw_shl_code=c,true]/****************************************Copyright (c)**************************************************
**                                
**        项目名称:                        74HC595驱动电路
**        文件名称:                        74HC595.c
**        模块功能:                        驱动程序
**
**------------------------------------------------------------------------------------------------------

**         创 建 者:                        李德忠
**        E-mail  :                        lidezhong@163.com
**        QQ                :                        13151999
**        Mobile        :                        15870966330
**        创建时间:                        2018-07-02
**        版    本:                        v1.0.0
**        描    述:                        基础程序
**
********************************************************************************************************/

#include "74HC595.h"

//以下为74HC595_N376RIX2_DIP显示位表
//unsigned char  wei[8]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
//以下为优信2X8数码管显示位表
unsigned char wei[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};


/********************************************************************************************************
**         函数名称:                        void HC595Init(void)
**        功能描述:                        初始化74HC595
**        入口参数:                        void
**        创 建 者:                        李德忠
**        创建时间:                        2014-07-3 0:10
**        版    本:                        v1.0.0
********************************************************************************************************/

void HC595Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        
        RCC_APB2PeriphClockCmd(HC595_CLK_GPIO_CLK | HC595_DATA_GPIO_CLK | HC595_CS_GPIO_CLK, ENABLE);
        
        GPIO_InitStructure.GPIO_Pin = HC595_CLK_PIN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(HC595_CLK_GPIO, &GPIO_InitStructure);
        
        GPIO_InitStructure.GPIO_Pin = HC595_DATA_PIN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(HC595_DATA_GPIO, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = HC595_CS_PIN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(HC595_CS_GPIO, &GPIO_InitStructure);
        
        HC595_CLK_H();
        HC595_DATA_H();
        HC595_CS_H();
        
}
void HC595Send(u8 data)
{
        u8 i;
         for(i=0;i<8;i++)
         {
                         HC595_CLK_L();
                  if((data & 0x80)== 0x80)                                                
                  {
                          HC595_DATA_H(); //串行数据输出
                  }
                  else
                  {
                          HC595_DATA_L();
                  }
                 data<<=1;
                 HC595_CLK_H(); //移位输入时钟,上升沿输入
                HC595_CLK_L();
         }
}

/********************************************************************************************************
**         函数名称:                        bit         DispNum(uchar * N)
**        功能描述:                        刷新优信74HC595 8X8显示数字
**        入口参数:                        *N:                显示的字符数组
**        出口参数:                        void
**        创 建 者:                        李德忠
**        创建时间:                        2018-07-05 22:38
**        版    本:                        v1.0.0
**  -----------------------------------------------------------------------------------------------------
********************************************************************************************************/
void         DispNum(unsigned char * N)
{
        unsigned char i,Nnow[8];

        for(i=0;i<8;i++)
        {
                switch(*(N+i))
                {
                                //以下为74HC595_N376RIX2_DIP显示码表
//                        case        '0':        Nnow        =        0x3F;        break;
//                        case        '1':        Nnow        =        0x06;        break;
//                        case        '2':        Nnow        =        0x5B;        break;
//                        case        '3':        Nnow        =        0x4F;        break;
//                        case        '4':        Nnow        =        0x66;        break;
//                        case        '5':        Nnow        =        0x6D;        break;
//                        case        '6':        Nnow        =        0x7D;        break;
//                        case        '7':        Nnow        =        0x07;        break;
//                        case        '8':        Nnow        =        0x7F;        break;
//                        case        '9':        Nnow        =        0x6F;        break;
//                        case        'a':        Nnow        =        0x77;        break;
//                        case        'f':        Nnow        =        0x71;        break;
//                        case        'c':        Nnow        =        0x39;        break;
//                        case        'h':        Nnow        =        0x76;        break;
//                        case        '-':        Nnow        =        0x40;        break;
//                        case        ' ':        Nnow        =        0x00;        break;
//                        default:                Nnow        =        0xFF;
                                
                        //以下为优信8位数码管显示码表                        
                        case        '0':        Nnow        =        0xC0;        break;
                        case        '1':        Nnow        =        0xF9;        break;
                        case        '2':        Nnow        =        0xA4;        break;
                        case        '3':        Nnow        =        0xB0;        break;
                        case        '4':        Nnow        =        0x99;        break;
                        case        '5':        Nnow        =        0x92;        break;
                        case        '6':        Nnow        =        0x82;        break;
                        case        '7':        Nnow        =        0xF8;        break;
                        case        '8':        Nnow        =        0x80;        break;
                        case        '9':        Nnow        =        0x90;        break;
                        case        'a':        Nnow        =        0x8C;        break;
                        case        'b':        Nnow        =        0xBF;        break;
                        case        'c':        Nnow        =        0xC6;        break;
                        case        'd':        Nnow        =        0xA1;        break;
                        case        'e':        Nnow        =        0x86;        break;
                        case        'f':        Nnow        =        0xFF;        break;
                        case        '-':        Nnow        =        0xbf;        break;
                        case        ' ':        Nnow        =        0x00;        break;
                        default:                Nnow        =        0xFF;                        
                }
                /*74HC595_N376RIX2_DIP驱动顺序*/
//                 HC595Send(0x00);  //先传段表
//                 HC595Send(Nnow);
//                 HC595Send(wei);  //位表
               
                /*优信8位LED数码管驱动顺序*/        
                 HC595Send(wei);  //位表
                 HC595Send(Nnow);

                 HC595_CS_L();
                 HC595_CS_H();
                 HC595_CS_L();

        }
                        
}
         

[/mw_shl_code]

上效果。
IMG_20180706_232632.jpg

ALIENTEK MINISTM32_74HC595.zip (2.87 MB, 下载次数: 132) 2018-7-7 00:00 上传 点击文件名下载附件

595驱动LED模块.pdf (16.31 KB, 下载次数: 89) 2018-7-7 15:20 上传 点击文件名下载附件
电路图,优信的。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。