切换到宽版
  • 8083阅读
  • 20回复

[STM]通用74HC595驱动,支持N片级联……移植方便! [复制链接]

上一主题 下一主题
 

发帖
1034
M币
24
专家
11
粉丝
30
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2014-08-28
        发个自用的74HC595通用驱动,支持N片级联,只要在头文件里声明级联个数即可,同样的,只要把头文件里的端口定义修改一下即可方便移植到任意平台。。。。。C文件不用作任何修改!!!


// driver_595.c




#include "driver_595.h"


unsigned char sys_595Buffer[Total595] = {0};


/* 74HC595控制端口初始化 */
void Driver_595Init(void)
{
  SER_Init();
  SER = 1;

  SRCLK_Init();
  SRCLK = 1;

  RCLK_Init();
  RCLK = 1;
}


/* 74HC595发送n个字节:先发送属于最末端595的那个字节的高位,依此类推 */
void Driver_595SendBytes(void)
{
  unsigned char i, j;

  RCLK = 0; // 存储寄存器的时钟输入。

  for (i = 0; i < Total595; i ++)
  {
    for (j = 0; j < 8; j ++)
    {
      SRCLK = 0; // 移位寄存器的时钟输入。

      if (sys_595Buffer[Total595 - 1 - i] & 0x80) // 先发送数组的最后一个字节的最高位,依此往前类推
        SER = 1;
      else
        SER = 0;

      SRCLK = 1; // 上升沿时移位寄存器中的数据依次移动一位,即Q0中的数据移到Q1中,Q1中的数据移到Q2中,依次类推;下降沿时移位寄存器中的数据保持不变。

      sys_595Buffer[Total595 - 1 - i] <<= 1;
    }
  }

  RCLK = 1; // 上升沿时移位寄存器中的数据进入存储寄存器,下降沿时存储寄存器中的数据保持不变。应用时通常将其置为低电平,移位结束后再产生一个正脉冲更新显示数据。
}



// driver_595.h




#ifndef DRIVER_595_H
#define DRIVER_595_H


#include "config.h"


/* 宏定义 */
#define Total595            (2)         // 根据具体情况配置,其值等于实际电路中级联的74HC595的个数

// 74HC595控制端口,pin10(/SRCLK)接VCC,pin13(/OE)接GND
#define SER                 PA_ODR_ODR4 // 74HC595pin12,串行数据输入
#define SRCLK               PA_ODR_ODR6 // 74HC595pin11,移位寄存器时钟输入
#define RCLK                PA_ODR_ODR5 // 74HC595pin14,存储寄存器时钟输入
#define SER_Init()          do{PA_DDR_DDR4 = 1;PA_CR1_C14 = 1;PA_CR2_C24 = 0;}while(0)
#define SRCLK_Init()        do{PA_DDR_DDR6 = 1;PA_CR1_C16 = 1;PA_CR2_C26 = 0;}while(0)
#define RCLK_Init()         do{PA_DDR_DDR5 = 1;PA_CR1_C15 = 1;PA_CR2_C25 = 0;}while(0)


/* 全局变量 */
extern unsigned char sys_595Buffer[Total595]; // sys_595Buffer[0]对应级联电路中第一个595,sys_595Buffer[Total595 - 1]对应级联电路中最后一个595,给数组赋值时注意不要混淆。


/* 外部函数 */
extern void Driver_595Init(void);
extern void Driver_595SendBytes(void);

#endif /* end of HeadFile */







本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共6条打赏M币+22
离线微风过境

发帖
216
M币
520
专家
-1
粉丝
8
只看该作者 1楼 发表于: 2014-08-28
请登录后查看

发帖
1034
M币
24
专家
11
粉丝
30
只看该作者 2楼 发表于: 2014-08-28
回 微风过境 的帖子
请登录后查看
离线zjs423315

发帖
324
M币
25
专家
2
粉丝
8
只看该作者 3楼 发表于: 2014-08-29
请登录后查看
离线温州啊武

发帖
1099
M币
402
专家
3
粉丝
28
只看该作者 4楼 发表于: 2014-08-29
请登录后查看
离线coolstar

发帖
133
M币
-112
专家
0
粉丝
8
只看该作者 5楼 发表于: 2014-08-29
请登录后查看
离线llplsq

发帖
365
M币
874
专家
4
粉丝
13
只看该作者 6楼 发表于: 2014-08-31
请登录后查看
离线zfp783789
发帖
43
M币
904
专家
0
粉丝
2
只看该作者 7楼 发表于: 2014-09-04
请登录后查看
离线yuanr

发帖
44
M币
393
专家
0
粉丝
5
只看该作者 8楼 发表于: 2014-09-05
请登录后查看
离线yuneus

发帖
72
M币
1285
专家
0
粉丝
6
只看该作者 9楼 发表于: 2014-09-08
请登录后查看
快速回复
限80 字节
温馨提示:欢迎交流讨论,请勿发布纯表情、纯引用等灌水帖子;以免被删除
 
上一个 下一个