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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5139|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

入門第一個(gè)74HC595驅(qū)動(dòng) C語(yǔ)言

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:374522 發(fā)表于 2018-7-19 08:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
/********   實(shí)驗(yàn)驅(qū)動(dòng)74HC595 芯片********
     單片機(jī)型號(hào):ATMEGA48PA

   /********** 74HC595電平邏輯*********************
   SI   SCK   SCLR   RCK     OE   輸出管腳
   X     X      X     X      H    QA--QH 輸出高阻
   X     X      X     X      L    QA--QH 輸出有效值
   X     X      L     X      X    稱位寄存器清零
   L   上沿     H     X      X    稱位寄存器存儲(chǔ) L
   H   上沿     H     X      X    稱位寄存器存儲(chǔ) H
   x   下沿     H     X      X    稱位寄存器壯態(tài)保持
   X     X      X    上沿    X    輸出存儲(chǔ)器鎖存(移位寄存器中的壯態(tài)值)
   X     X      X    下沿    X    輸出存儲(chǔ)器壯態(tài) 保持
   **************分析******************
   實(shí)計(jì)使用:
    SI   數(shù)據(jù)       (14腳)
        RCK  鎖存       (12腳)
        SCK  時(shí)鐘       (11腳)
       OE 與 RCK 相連  (13腳)
           SCLR 接高電平   (10腳)
   ***************************************/
//ICC-AVR application builder : 2017-12-5 17:22:41
// Target : m48
// Crystal: 1.0000Mh
/***************************************************/
#include <iom48v.h>
#include <macros.h>
#define uchar unsigned char
#define uint  unsigned int
extern unsigned int a  =  10;    //延時(shí)基數(shù)
extern unsigned int b  =  1;      //并行數(shù)據(jù) 初使參數(shù)
extern unsigned int c  =  0;
// int temp=0b00000001;   //  移位數(shù)據(jù) 初使參數(shù)
/**************分析******************
    實(shí)計(jì)使用:
    SI   數(shù)據(jù)   (14腳)
        RCK  鎖存   (12腳)
        SCK  時(shí)鐘   (11時(shí)鐘)
   注意:第調(diào)用一次 腳位電平反轉(zhuǎn) ^=
***************************************/
#define   SI_1    PORTB  |=  (1<<0)  
#define   SI_0    PORTB  &= ~(1<<0)

#define   SCK_1   PORTB  |= (1<<1)  
#define   SCK_0   PORTB  &=~(1<<1)  

#define   RCK_1   PORTB  |= (1<<2)
#define   RCK_0   PORTB  &=~(1<<2)


/************端口初使化******************************/
void port_init(void)
{
  PORTB = 0x00;
  DDRB  = 0xFF;
  PORTC = 0x00;
  DDRC  = 0xFF;
  PORTD = 0B00000011;
  DDRD  = 0xFF;

}
/***************mS延時(shí)***********************/
void Delay_ms(unsigned int Time)
{
  unsigned char n=0;
    while(Time>0)
    {   
        for (n=1;n<187;n++)
        {
            NOP();
        }
        Time--;
    }
}
/***********顯示/字**************************/
const unsigned char DisTab[]=  
{ 0b00000000,  // 0
  0b00000001,  // 1
  0b00000011,  // 2
  0b00000111,  // 3
  0b00001111,  // 4
  0b00011111,  // 5
  0b00111111,  // 6
  0b01111111,  // 7
  0b11111111,  // 8
// 0b00000000,  // 9
};
/********將顯示數(shù)據(jù)裝入74HC595內(nèi)部移位奇存器*****/
void WR_595(char c)
{
     char  unm,j,i,x; //定義3個(gè)(16位)常量
         unm=DisTab[c];        // 顯示數(shù)據(jù)存入 unm 中
         for (j=0;j<7;j++)
         {  
                SCK_1;             //上沿 移位寄存器(存儲(chǔ))
          //  x = unm&0x80;      //數(shù)據(jù) (unm 與 0X80)與運(yùn)算后存入X
                 x = unm&0b1000000;
                if(x==0)           // 數(shù)據(jù)寫到 SI 端口
                  {
                   SI_0;  //如果X==0,SI_1 數(shù)據(jù)寫1,
                  }
                  else             //如果X==0,SI_1 數(shù)據(jù)寫0,
                     {
                       SI_1;
                     }
             SCK_0;             //下沿 移位寄存器(壯態(tài)保持)
                 unm = unm<<1;      //數(shù)據(jù)移位
      }
  }                       
/**********鎖存并顯示**************/
void OUT_595(void)
    {
             RCK_1;             //上沿,壯態(tài)鎖存
                 RCK_0;             //下沿,保持74HC595輸出壯態(tài)
                 Delay_ms(500);    //延時(shí) 74HC顯示一段時(shí)間
    }
/**********************************/



/***************開(kāi)始***********************/
void main(void)
{  
    port_init();            //端口初使化
  while(1)                  //超極循環(huán)
   {
        char i;
                for(i=0;i<8;i++)
                    {   
                            WR_595(2);   //顯示數(shù)據(jù)裝入并顯示
                                OUT_595();
                    }               
                 
   }  

}


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-7-19 15:58 | 只看該作者
樓主能分享下原理圖嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:374522 發(fā)表于 2018-7-20 20:32 | 只看該作者
不好意思,還不會(huì)傳圖片
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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