找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5815|回復(fù): 6
收起左側(cè)

74HC595驅(qū)動(dòng)靜態(tài)數(shù)碼管

[復(fù)制鏈接]
ID:63924 發(fā)表于 2014-8-17 21:29 | 顯示全部樓層 |閱讀模式
********************************************************************************
* 通過本例程了解 74HC595(串入并出)基本原理和使用                                     *
*                                                                                                                               *
* 請(qǐng)學(xué)員認(rèn)真消化本例程,懂74C595在C語言中的操作                                *
********************************************************************************/


#include <reg51.h>
#include <intrins.h>
#define  NOP() _nop_()  /* 定義空指令 */

//SPI IO
sbit MOSIO =P3^4;  //串行數(shù)據(jù)線
sbit R_CLK =P3^5;  //數(shù)據(jù)并行輸出控制
sbit S_CLK =P3^6;  //串行時(shí)鐘線


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

// 此表為 LED 的字模            // 0    1    2    3    4    5    6   7    8    9    A    b    c    d    E    -    L   P    U    Hidden  _ (20)
unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};

main()
{  unsigned char  HC595SendVal;
   unsigned int LedNumVal;

  while(1)
  {         
                 LedNumVal++;
                HC595SendVal = LED7Code[LedNumVal%16];     //LED7;顯示0-F  LedNumVal%10 顯示0-9
            HC595SendData(HC595SendVal); //調(diào)用595驅(qū)動(dòng)函數(shù)       
                  delay(200);
         
  }   
}       
/*******************延時(shí)函數(shù)************/
void delay(unsigned int i)
{
    unsigned int j;
    for(i; i > 0; i--)         //CPU循環(huán)執(zhí)行i*300次
        for(j = 300; j > 0; j--);
}


/*********************************************************************************************************
** 函數(shù)名稱: HC595SendData
** 功能描述: 向SPI總線發(fā)送數(shù)據(jù)
*********************************************************************************************************/
void HC595SendData(unsigned char SendVal)
{  
  unsigned char i;
               
  for(i=0;i<8;i++)
   {
        if((SendVal<<i)&0x80) MOSIO=1; //set dataline high  0X80  最高位與SendVal左移的最高位 進(jìn)行邏輯運(yùn)算
        else MOSIO=0;                                   // 如果為真 MOSIO = 1  

        S_CLK=0;  
        NOP();         //短暫延時(shí)產(chǎn)生一定寬度的脈沖信號(hào)
        NOP();         //短暫延時(shí)
        S_CLK=1;
               
   }


  R_CLK=0; //set dataline low
  NOP();  //短暫延時(shí)
  NOP();  //短暫延時(shí)
  R_CLK=1;         //
       

}


回復(fù)

使用道具 舉報(bào)

ID:47760 發(fā)表于 2014-9-13 07:46 | 顯示全部樓層
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:67573 發(fā)表于 2014-10-22 14:07 | 顯示全部樓層
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:70847 發(fā)表于 2014-12-22 10:21 | 顯示全部樓層
感謝樓主無私奉獻(xiàn)。。
回復(fù)

使用道具 舉報(bào)

ID:67573 發(fā)表于 2014-12-24 15:32 | 顯示全部樓層
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:107116 發(fā)表于 2016-3-4 16:21 | 顯示全部樓層
如何用一個(gè)74HC595驅(qū)動(dòng)多個(gè)數(shù)碼管,Q0-Q7 接A-Dp
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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