標題: STC89C52單片機+74HC595擴展IO口原理圖+源程序 [打印本頁]

作者: ssk7793    時間: 2019-3-28 14:27
標題: STC89C52單片機+74HC595擴展IO口原理圖+源程序
百度了很久, 擴展IO的貼子說的都不是很詳細

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

電路原理圖如下:











單片機源程序如下:
  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. //未完, 請下載附件
復制代碼

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


作者: 55955156    時間: 2019-4-22 00:36
13腳不是低電平有效嗎?
作者: 曉白白    時間: 2019-5-19 16:14
感謝大佬
作者: wqwqw111    時間: 2019-6-16 14:46
很明顯,13引腳是使能引腳,低電平有效,原理圖接錯了
作者: 7087286    時間: 2020-12-1 09:09
13腳應該直接接低電平
作者: forest415    時間: 2021-3-7 22:52
謝謝,注釋詳細能看懂
作者: 幸福人生    時間: 2021-3-9 09:08
OE為啥不接低電平呢
作者: yangchun    時間: 2024-1-27 16:40
電平都接錯,這什么水平





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1