在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于STM32的74HC595 IO擴展板卡設計

CHANBAEK ? 來源:一名靠譜的EE ? 作者:Microjia ? 2023-04-17 14:48 ? 次閱讀

自己做了一塊74HC595的IO擴展板卡,出于靈活考慮,沒有都采用級聯的方式,而是2組多芯片級聯的結構。基于STM32平臺設計。
image.png

結構示意圖

image.png

74HV595內部結構圖

頭文件:

#ifndef __74HC595_H__
#define __74HC595_H__


#include "main.h"


typedef struct{
  GPIO_TypeDef* GPIOx;
  uint16_t GPIO_Pin;
}strHC595_Port;


//非級聯74HC595芯片組數
#define HC595_GROUP_NUMBER  2


/* 第一組芯片 */
//使能
#define HC595_OE1_RCC_GPIOX_EN      __HAL_RCC_GPIOA_CLK_ENABLE()
#define HC595_OE1_GPIO          GPIOA
#define HC595_OE1_PIN          GPIO_PIN_4
//鎖存
#define HC595_RCLK1_RCC_GPIOX_EN    __HAL_RCC_GPIOA_CLK_ENABLE()
#define HC595_RCLK1_GPIO        GPIOA
#define HC595_RCLK1_PIN          GPIO_PIN_6
//時鐘
#define HC595_SRCLK1_RCC_GPIOX_EN    __HAL_RCC_GPIOA_CLK_ENABLE()
#define HC595_SRCLK1_GPIO        GPIOA
#define HC595_SRCLK1_PIN        GPIO_PIN_7
//清除
#define HC595_SRCLR1_RCC_GPIOX_EN    __HAL_RCC_GPIOA_CLK_ENABLE()
#define HC595_SRCLR1_GPIO        GPIOA
#define HC595_SRCLR1_PIN        GPIO_PIN_5
//數據
#define HC595_DATA1_RCC_GPIOX_EN    __HAL_RCC_GPIOC_CLK_ENABLE()
#define HC595_DATA1_GPIO        GPIOC
#define HC595_DATA1_PIN          GPIO_PIN_4




/* 第二組芯片 */
//使能
#define HC595_OE2_RCC_GPIOX_EN      __HAL_RCC_GPIOA_CLK_ENABLE()
#define HC595_OE2_GPIO          GPIOB
#define HC595_OE2_PIN          GPIO_PIN_3
//鎖存
#define HC595_RCLK2_RCC_GPIOX_EN    __HAL_RCC_GPIOB_CLK_ENABLE()
#define HC595_RCLK2_GPIO        GPIOB
#define HC595_RCLK2_PIN          GPIO_PIN_5
//時鐘
#define HC595_SRCLK2_RCC_GPIOX_EN    __HAL_RCC_GPIOB_CLK_ENABLE()
#define HC595_SRCLK2_GPIO        GPIOB
#define HC595_SRCLK2_PIN        GPIO_PIN_6
//清除
#define HC595_SRCLR2_RCC_GPIOX_EN    __HAL_RCC_GPIOB_CLK_ENABLE()
#define HC595_SRCLR2_GPIO        GPIOB
#define HC595_SRCLR2_PIN        GPIO_PIN_4
//數據
#define HC595_DATA2_RCC_GPIOX_EN    __HAL_RCC_GPIOB_CLK_ENABLE()
#define HC595_DATA2_GPIO        GPIOB
#define HC595_DATA2_PIN          GPIO_PIN_7


extern void HC595_Init(void);
extern uint8_t HC595_write(uint8_t group,uint8_t nbit,uint32_t datas);


#endif /*__74HC595_H__*/

源文件:

#include "74HC595.h"


strHC595_Port HC595_OE_Port[HC595_GROUP_NUMBER]=
{        
  {HC595_OE1_GPIO,HC595_OE1_PIN},
  {HC595_OE2_GPIO,HC595_OE2_PIN},
  //元素個數與HC595_GROUP_NUMBER對應
};


strHC595_Port HC595_RCLK_Port[HC595_GROUP_NUMBER]=
{        
  {HC595_RCLK1_GPIO,HC595_RCLK1_PIN},
  {HC595_RCLK2_GPIO,HC595_RCLK2_PIN},
  //元素個數與HC595_GROUP_NUMBER對應
};


strHC595_Port HC595_SRCLK_Port[HC595_GROUP_NUMBER]=
{        
  {HC595_SRCLK1_GPIO,HC595_SRCLK1_PIN},
  {HC595_SRCLK2_GPIO,HC595_SRCLK2_PIN},
  //元素個數與HC595_GROUP_NUMBER對應
};


strHC595_Port HC595_SRCLR_Port[HC595_GROUP_NUMBER]=
{        
  {HC595_SRCLR1_GPIO,HC595_SRCLR1_PIN},
  {HC595_SRCLR2_GPIO,HC595_SRCLR2_PIN},
  //元素個數與HC595_GROUP_NUMBER對應
};


strHC595_Port HC595_DATA_Port[HC595_GROUP_NUMBER]=
{        
  {HC595_DATA1_GPIO,HC595_DATA1_PIN},
  {HC595_DATA2_GPIO,HC595_DATA2_PIN},
 //元素個數與HC595_GROUP_NUMBER對應
};
//操作接口宏定義
#define HC595_OE_PIN(X)      HC595_OE_Port[X].GPIO_Pin
#define HC595_OE_GPIO(X)    HC595_OE_Port[X].GPIOx  
#define HC595_OE_H(X)      HAL_GPIO_WritePin(HC595_OE_GPIO(X), HC595_OE_PIN(X), GPIO_PIN_SET)
#define HC595_OE_L(X)      HAL_GPIO_WritePin(HC595_OE_GPIO(X), HC595_OE_PIN(X), GPIO_PIN_RESET)


#define HC595_RCLK_PIN(X)    HC595_RCLK_Port[X].GPIO_Pin
#define HC595_RCLK_GPIO(X)    HC595_RCLK_Port[X].GPIOx  
#define HC595_RCLK_H(X)      HAL_GPIO_WritePin(HC595_RCLK_GPIO(X), HC595_RCLK_PIN(X), GPIO_PIN_SET)
#define HC595_RCLK_L(X)      HAL_GPIO_WritePin(HC595_RCLK_GPIO(X), HC595_RCLK_PIN(X), GPIO_PIN_RESET)


#define HC595_SRCLK_PIN(X)    HC595_SRCLK_Port[X].GPIO_Pin
#define HC595_SRCLK_GPIO(X)    HC595_SRCLK_Port[X].GPIOx  
#define HC595_SRCLK_H(X)    HAL_GPIO_WritePin(HC595_SRCLK_GPIO(X), HC595_SRCLK_PIN(X), GPIO_PIN_SET)
#define HC595_SRCLK_L(X)    HAL_GPIO_WritePin(HC595_SRCLK_GPIO(X), HC595_SRCLK_PIN(X), GPIO_PIN_RESET)


#define HC595_SRCLR_PIN(X)    HC595_SRCLR_Port[X].GPIO_Pin
#define HC595_SRCLR_GPIO(X)    HC595_SRCLR_Port[X].GPIOx  
#define HC595_SRCLR_H(X)    HAL_GPIO_WritePin(HC595_SRCLR_GPIO(X), HC595_SRCLR_PIN(X), GPIO_PIN_SET)
#define HC595_SRCLR_L(X)    HAL_GPIO_WritePin(HC595_SRCLR_GPIO(X), HC595_SRCLR_PIN(X), GPIO_PIN_RESET)


#define HC595_DATA_PIN(X)    HC595_DATA_Port[X].GPIO_Pin
#define HC595_DATA_GPIO(X)    HC595_DATA_Port[X].GPIOx  
#define HC595_DATA_H(X)      HAL_GPIO_WritePin(HC595_DATA_GPIO(X), HC595_DATA_PIN(X), GPIO_PIN_SET)
#define HC595_DATA_L(X)      HAL_GPIO_WritePin(HC595_DATA_GPIO(X), HC595_DATA_PIN(X), GPIO_PIN_RESET)


void HC595_delay_us(uint8_t t_us)
{
  //修改為系統中對應的微秒級延時函數,根據實際需求可以換成更小的ns級延時
  delay_us(t_us);
}
/*
*描述:初始化HC595_GROUP_NUMBER組芯片對應的控制引腳
*/
void HC595_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  uint8_t i = 0;

  /* GPIO Ports Clock Enable */
  //第一組芯片引腳時鐘
  HC595_OE1_RCC_GPIOX_EN;
  HC595_RCLK1_RCC_GPIOX_EN;
  HC595_SRCLK1_RCC_GPIOX_EN;
  HC595_SRCLR1_RCC_GPIOX_EN;
  HC595_DATA1_RCC_GPIOX_EN;
  //第二組芯片引腳時鐘
  HC595_OE2_RCC_GPIOX_EN;
  HC595_RCLK2_RCC_GPIOX_EN;
  HC595_SRCLK2_RCC_GPIOX_EN;
  HC595_SRCLR2_RCC_GPIOX_EN;
  HC595_DATA2_RCC_GPIOX_EN;
  /*Configure GPIO pin */
  for(i=0; i
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2273

    文章

    10926

    瀏覽量

    357772
  • 時鐘
    +關注

    關注

    11

    文章

    1747

    瀏覽量

    131854
  • GPIO
    +關注

    關注

    16

    文章

    1217

    瀏覽量

    52436
  • 74HC595
    +關注

    關注

    7

    文章

    193

    瀏覽量

    30956
  • 擴展板卡
    +關注

    關注

    0

    文章

    2

    瀏覽量

    1222
收藏 人收藏

    評論

    相關推薦

    74HC595IO擴展

    74HC595IO擴展能用作控制矩陣鍵盤嗎
    發表于 12-09 12:13

    74HC595芯片的作用是什么

    74HC595是在單片機系統中常用的芯片之一他的作用就是把串行的信號轉為并行的信號,常用在各種數碼管以及點陣屏的驅動芯片, 使用74HC595可以節約單片機mcu的io口資源,用3個io
    發表于 07-22 07:05

    使用74HC595芯片真的能節省STM32IO口嗎

    使用74HC595芯片真的能節省STM32IO口嗎?為什么要使用74HC595芯片呢?
    發表于 11-25 06:36

    單片機IO直連控制74HC595

    最近在調74HC595,單片機IO直連控制74HC595,單片機輸出3.3v, 而74HC595是5v供電。發現74HC595輸出時好時壞,
    發表于 12-02 07:20

    74HC595怎么使用

    一、74HC595使用方法74HC595的數據端Q0--Q7:八位并行輸出端,可以直接控制數碼管的8個段。Q7:級聯輸出端。將它接下一個595的DS端。DS:串行數據輸入端,級聯的話接上一級的Q7
    發表于 12-07 06:46

    如何實現74HC595驅動數碼管顯示

    ?4、數碼管顯示數碼管驅動電路采用2片74HC595芯片進行IO擴展,僅僅只需3Pin即可驅動需要16位引腳的數碼管。74HC595是一個8位串行輸入、并行輸出的位移緩存器。只有對
    發表于 12-07 07:29

    74HC595多組芯片多組級聯代碼分享

    ?自己做了一塊74HC595IO擴展板卡,出于靈活考慮,沒有都采用級聯的方式,而是2組多芯片級聯的結構?。基于STM32平臺設計?。?結構示意圖7
    發表于 12-07 06:43

    MCU驅動74hc595的方法

    MCU驅動74hc595下圖關于595數據手冊上的介紹,使用比較簡單兩片級聯控制擴展IO輸出端口,可以用最少三個GPIO控制16路輸出單片機驅動59
    發表于 02-08 06:04

    基于單片機的74HC595驅動靜態數碼管(IO端口輸出擴展)【匯編】

    基于單片機的74HC595驅動靜態數碼管(IO端口輸出擴展)【匯編】
    發表于 12-31 10:35 ?42次下載

    基于單片機的74HC595驅動靜態數碼管(IO端口輸出擴展)【C語言】

    基于單片機的74HC595驅動靜態數碼管(IO端口輸出擴展)【C語言】
    發表于 12-31 10:35 ?34次下載

    基于單片機的74HC595驅動靜態數碼管(IO端口輸出擴展

    基于單片機的74HC595驅動靜態數碼管(IO端口輸出擴展)【C語言+匯編】
    發表于 01-06 11:08 ?28次下載

    IO擴展芯片74HC165和74HC595的使用實例代碼免費下載

     IO擴展芯片,主要是解決單片機IO口太少。 74HC165:數據從并轉串 74HC595:數據從串轉并兩種芯片,都是通過時序電路,加上移
    發表于 09-19 17:20 ?51次下載
    <b class='flag-5'>IO</b>口<b class='flag-5'>擴展</b>芯片<b class='flag-5'>74HC</b>165和<b class='flag-5'>74HC595</b>的使用實例代碼免費下載

    74HC595 3.3V 單片機 驅動繼電器

    最近在調74HC595,單片機IO直連控制74HC595,單片機輸出3.3v, 而74HC595是5v供電。將 74HC595改成3.3V供
    發表于 11-23 17:36 ?33次下載
    <b class='flag-5'>74HC595</b> 3.3V 單片機 驅動繼電器

    74HC595多組芯片多組級聯代碼

    ?自己做了一塊74HC595IO擴展板卡,出于靈活考慮,沒有都采用級聯的方式,而是2組多芯片級聯的結構?。基于STM32平臺設計?。?結構示意圖7
    發表于 11-24 10:51 ?58次下載
    <b class='flag-5'>74HC595</b>多組芯片多組級聯代碼

    MCU驅動74hc595

    MCU驅動74hc595下圖關于595數據手冊上的介紹,使用比較簡單兩片級聯控制擴展IO輸出端口,可以用最少三個GPIO控制16路輸出單片機驅動59
    發表于 12-05 10:36 ?61次下載
    MCU驅動<b class='flag-5'>74hc595</b>
    主站蜘蛛池模板: 很黄很暴力 很污秽的小说 很黄很黄叫声床戏免费视频 | 日本大片免费播放网站 | 国产美女精品在线 | 黄色小视频免费看 | 日韩欧美印度一级毛片 | 香港三级理论在线影院 | 色婷婷狠狠 | 亚洲成a人片在线观看88 | 午夜观看 | 免费看国产一级特黄aa大片 | 毛片在线播放网址 | 午夜看片在线观看 | 1024视频色版在线网站 | 狠狠色噜噜狠狠狠狠2018 | 欧美黄一片| 亚洲乱论 | 好紧好湿好黄的视频 | 天天插天天狠 | 免费日本黄色片 | 神马影视午夜 | 免费看欧美一级特黄a大片一 | 久久综合香蕉久久久久久久 | 网站黄色在线观看 | 午夜痒痒网 | 四虎免费永久观看 | 国产欧美日韩在线人成aaaa | 呦交小u女国产秘密入口 | 欧美日韩在线成人免费 | 中国一级特黄高清免费的大片 | 激情婷婷在线 | 日本黄色片段 | 夜夜春夜夜爽 | 性色网站 | 色性网 | 一区二区在线免费视频 | 日本操穴 | 日日夜夜天天干干 | 最新精品| 爱爱网站免费 | 免费拍拍视频 | 欧美成人天天综合在线视色 |