找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 9969|回復(fù): 8
收起左側(cè)

STC89C52單片機+74HC595擴展IO口原理圖+源程序

  [復(fù)制鏈接]
ID:424598 發(fā)表于 2019-3-28 14:27 | 顯示全部樓層 |閱讀模式
百度了很久, 擴展IO的貼子說的都不是很詳細

現(xiàn)在把我測試出來的程序詳細標注
方便新人理解

電路原理圖如下:
74HC595.png


IMG_20190328_140631.jpg


IMG_20190328_140540.jpg


IMG_20190328_140544.jpg

單片機源程序如下:
  1. /*************************************************
  2. *                單片機: STC89C52
  3.                 芯  片: 74HC595
  4.                 功  能: 擴展單片機IO口
  5.                 實  現(xiàn): 可自由控制74HC595(QA~QH高低電平)
  6. *************************************************/
  7. #include <reg51.h>
  8. #include <intrins.h>
  9. #define  NOP() _nop_()  /* 定義空指令 */

  10. //SPI IO
  11. sbit MOSIO =P3^4;
  12. sbit R_CLK =P3^5;
  13. sbit S_CLK =P3^6;

  14. //0xff 全滅
  15. //0xfe 1111 1110 (二進制八位,從左到右代表QH-QA, 0代表高電平,1代表低電平,所以這一組只亮QA)
  16. //0xfd 1111 1101 (二進制八位,從左到右代表QH-QA, 0代表高電平,1代表低電平,所以這一組只亮QB)
  17. //0xfb 1111 1011 (二進制八位,從左到右代表QH-QA, 0代表高電平,1代表低電平,所以這一組只亮QC)
  18. //0xf7 1111 0111 (二進制八位,從左到右代表QH-QA, 0代表高電平,1代表低電平,所以這一組只亮QD)
  19. //0xef 1110 1111 (二進制八位,從左到右代表QH-QA, 0代表高電平,1代表低電平,所以這一組只亮QE)
  20. //0xdf 1101 1111 (二進制八位,從左到右代表QH-QA, 0代表高電平,1代表低電平,所以這一組只亮QF)
  21. //0xbf 1011 1111 (二進制八位,從左到右代表QH-QA, 0代表高電平,1代表低電平,所以這一組只亮QG)
  22. //0x7f 0111 1111 (二進制八位,從左到右代表QH-QA, 0代表高電平,1代表低電平,所以這一組只亮QH)
  23. unsigned char LED_HL[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  24. unsigned int i1;

  25. void delay(unsigned int i);      //函數(shù)聲名
  26. void HC595SendData(unsigned char SendVal);


  27. main()
  28. {  
  29.    HC595SendData(0xff);            //初始化595使他為高電平 讓LED處于熄滅狀態(tài)

  30.   while(1)
  31.   {
  32.                   //循環(huán)9次,先全滅,在從QA亮到QH
  33.                 for(i1=0;i1<9;i1++) {
  34.                         HC595SendData(LED_HL[i1]);        //調(diào)用595驅(qū)動程序 把LED的數(shù)據(jù)送到595
  35.                         delay(200);
  36.                 }

  37.                 //只亮QC
  38.                 HC595SendData(LED_HL[3]);        //調(diào)用595驅(qū)動程序 把LED的數(shù)據(jù)送到595
  39.                 delay(500);

  40.                 //只亮QD和QH        0x77=01110111
  41.                 HC595SendData(0x77);        //調(diào)用595驅(qū)動程序 把LED的數(shù)據(jù)送到595               
  42.                 delay(500);

  43.                 //循環(huán)8次,讓QF高低電平
  44.                 for(i1=0;i1<8;i1++) {
  45.                         HC595SendData(LED_HL[0]);        //調(diào)用595驅(qū)動程序 把LED的數(shù)據(jù)送到595
  46.                         delay(200);
  47.                         HC595SendData(LED_HL[6]);        //調(diào)用595驅(qū)動程序 把LED的數(shù)據(jù)送到595
  48.                         delay(200);
  49.                 }

  50.                 //需要更多玩法可自行用"進制轉(zhuǎn)換工具"手動輸入想要的二進制自己轉(zhuǎn)換成十六進制
  51.   }   
  52. }

  53. //未完, 請下載附件
復(fù)制代碼

全部資料51hei下載地址:
STC89C52 74HC595擴展IO口.zip (62.36 KB, 下載次數(shù): 184)

評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:314000 發(fā)表于 2019-4-22 00:36 | 顯示全部樓層
13腳不是低電平有效嗎?
回復(fù)

使用道具 舉報

ID:541953 發(fā)表于 2019-5-19 16:14 | 顯示全部樓層
感謝大佬
回復(fù)

使用道具 舉報

ID:425846 發(fā)表于 2019-6-16 14:46 | 顯示全部樓層
很明顯,13引腳是使能引腳,低電平有效,原理圖接錯了
回復(fù)

使用道具 舉報

ID:847721 發(fā)表于 2020-12-1 09:09 | 顯示全部樓層
13腳應(yīng)該直接接低電平
回復(fù)

使用道具 舉報

ID:718523 發(fā)表于 2021-3-7 22:52 | 顯示全部樓層
謝謝,注釋詳細能看懂
回復(fù)

使用道具 舉報

ID:882420 發(fā)表于 2021-3-9 09:08 | 顯示全部樓層
OE為啥不接低電平呢
回復(fù)

使用道具 舉報

ID:145511 發(fā)表于 2024-1-27 16:40 | 顯示全部樓層
電平都接錯,這什么水平
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表