久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1666|回復: 3
打印 上一主題 下一主題
收起左側

74HC595級聯問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:74687 發表于 2023-11-7 22:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
今天碰到一個奇怪的問題,我用74HC595級聯,有兩塊板子,其中一塊物料是TM74HC595,另一塊物料是74HC595D。
在調試下面程序時,出現了問題,兩塊板子出現01這個數據竟然不是同一個位置,有知道原因的嗎?
  1. #include "stm32f10x.h"

  2. // 定義74HC595芯片引腳連接
  3. #define SER_PIN    GPIO_Pin_0
  4. #define SRCLK_PIN  GPIO_Pin_1
  5. #define RCLK_PIN   GPIO_Pin_2
  6. #define GPIO_PORT  GPIOA

  7. // 字符編碼數據,使用負邏輯(低電平為亮)
  8. const uint8_t font[][8] = {
  9.     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  10.     {0xff 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff},
  11.     // 添加更多數據...
  12. };

  13. // 函數聲明
  14. void delay(uint32_t time);
  15. void sendByte(uint8_t data);
  16. void sendCommand(uint8_t cmd);
  17. void sendData(uint8_t data);
  18. void displayMatrix(const uint8_t matrix[8]);

  19. int main(void) {
  20.     // 初始化GPIO和時鐘配置
  21.     GPIO_InitTypeDef GPIO_InitStructure;
  22.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  23.     GPIO_InitStructure.GPIO_Pin = SER_PIN | SRCLK_PIN | RCLK_PIN;
  24.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  25.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  26.     GPIO_Init(GPIO_PORT, &GPIO_InitStructure);

  27.     while (1)
  28.     {
  29.         // 顯示字符A
  30.         displayMatrix(font[1]);
  31.         delay(1000);  // 延時1秒
  32.     }
  33. }

  34. // 延時函數
  35. void delay(uint32_t time) {
  36.     while (time--);
  37. }

  38. // 發送一個字節到74HC595芯片
  39. void sendByte(uint8_t data) {
  40.     uint8_t i;
  41.     for (i = 0; i < 8; i++) {
  42.         GPIO_ResetBits(GPIO_PORT, SRCLK_PIN);  // 時鐘信號置低
  43.         if ((data & 0x80) == 0x80)
  44.             GPIO_SetBits(GPIO_PORT, SER_PIN);  // 輸出數據為1
  45.         else
  46.             GPIO_ResetBits(GPIO_PORT, SER_PIN);  // 輸出數據為0
  47.         data <<= 1;
  48.         GPIO_SetBits(GPIO_PORT, SRCLK_PIN);  // 時鐘信號置高,數據移位
  49.     }
  50. }

  51. // 發送命令到74HC595芯片(鎖存數據)
  52. void sendCommand(uint8_t cmd) {
  53.     GPIO_ResetBits(GPIO_PORT, RCLK_PIN);  // 時鐘信號置低
  54.     sendByte(cmd);  // 發送數據
  55.     GPIO_SetBits(GPIO_PORT, RCLK_PIN);  // 時鐘信號置高,鎖存數據
  56. }

  57. // 發送數據到74HC595芯片(顯示數據)
  58. void sendData(uint8_t data) {
  59.     GPIO_SetBits(GPIO_PORT, RCLK_PIN);  // 時鐘信號置高
  60.     sendByte(data);  // 發送數據
  61.     GPIO_ResetBits(GPIO_PORT, RCLK_PIN);  // 時鐘信號置低
  62. }

  63. // 顯示一個8x8點陣圖案
  64. void displayMatrix(const uint8_t matrix[8]) {
  65.     uint8_t row;
  66.     for (row = 0; row < 8; row++) {
  67.         sendData(matrix[row]);
  68.     }
  69. }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1112581 發表于 2024-4-20 20:16 | 只看該作者
不是同一家的芯片,很容易出現級聯問題。我用同一家的芯片,級聯到最后一級的時候都會出錯,因線路電容有影響。
回復

使用道具 舉報

板凳
ID:1109793 發表于 2024-4-21 07:14 | 只看該作者
gzdavy 發表于 2024-4-20 20:16
不是同一家的芯片,很容易出現級聯問題。我用同一家的芯片,級聯到最后一級的時候都會出錯,因線路電容有影 ...

你說線路電容的問題,我用兩片,各種手段,結果還是不行,不穩定,只有一個牌子的可以用,而且穩定
回復

使用道具 舉報

地板
ID:69038 發表于 2024-4-21 13:42 | 只看該作者
void sendCommand(uint8_t cmd)
void sendData(uint8_t data)
這兩個函數的時序要認真斟酌一下。
595的本質是D觸發器,在CLK的上升沿把SDA的數據讀入。閑時CLK要保持低電平。
你在void sendByte(uint8_t data)中一開始是低電平,最后時刻是高電平,
所以有可能在sendCommand和sendData的一開始就鎖存了一個不可預知的電平進595了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级做a爰片久久毛片免费看 | 九九精品网 | 亚洲激情在线视频 | 亚洲精品福利在线 | 成人影 | 国产精品久久久久999 | 成人免费视频观看视频 | 五月婷婷激情网 | 欧洲精品视频一区 | a毛片视频网站 | av在线播放网址 | 久久99精品国产 | 在线免费观看黄色 | 99日韩| 国产亚洲精品久久久久动 | 亚洲国产一区二区三区在线观看 | 国产九九av| 成人动漫视频网站 | 国产精品免费在线 | 综合久久久 | 91免费在线 | 一区二区三区四区在线视频 | 亚洲成人中文字幕 | 精品视频在线免费观看 | 亚洲天堂中文字幕 | 天堂久久天堂综合色 | 日韩欧美国产成人一区二区 | 欧美国产中文字幕 | 欧美国产视频 | 亚洲性视频| 亚洲性视频网站 | 一级黄色裸片 | 日本爱爱视频 | 美女在线视频一区二区三区 | 韩国理论电影在线 | 毛片日韩| 欧美日韩三区 | 国产农村妇女毛片精品久久麻豆 | 成人h动漫精品一区二区器材 | 成人在线一级片 | 久久成人免费视频 |