歡迎您光臨本站 登入註冊首頁

概述

下面是本實例中模塊化程序設計的.h文件 /*****************************74hc595.h***********************************/……

下面是本實例中模塊化程序設計的.h文件
 
/*****************************
74hc595.h
***********************************/
/*74hc595與單片機的引腳連接
/MR(10腳)          VCC   低點平時將移位寄存器的數據清零。通常將它接Vcc
/OE(13腳)          PG4   高電平時禁止輸出(高阻態)。
                         如果單片機的引腳不緊張,用一個引腳控制它,
       可以方便地產生閃爍和熄滅效果。比通過數據端移位控制要省時省力。
ST_CP(12腳)        PG1    上升沿時移位寄存器的數據進入數據存儲寄存器,
                          下降沿時存儲寄存器數據不變。通常將RCK置為低電平,
        當移位結束后,在RCK端產生一個正脈衝(5V時,大於幾十納秒就行了。
        通常都選微秒級),更新顯示數據。
SH_CP(11腳)        PG0     上升沿時數據寄存器的數據移位。QA-->QB-->QC-->...-->QH;
                         下降沿移位寄存器數據不變。(脈衝寬度:5V時,大於幾十納秒就行了。
        通常都選微秒級)
DS(14)           PG2      串列數據輸入端。
*/
#ifndef __HC595_H__
#define __HC595_H__
#include <avr/io.h>        //io埠寄存器配置文件,必須包含
#include <util/delay.h>       //GCC中的延時函數頭文件

#define HC595_latch   (1 << PG1)    //上升沿數據打入8位鎖存器,下降沿鎖存器數據不變
#define HC595_sclk    (1 << PG0)     //上升沿數據移位,下降沿數據不變
#define HC595_oe      (1 << PG4)    //低電平,8位數據鎖存器輸出,高電平輸出高組態
#define HC595_data    (1 << PG2)     //串列數據輸入端

#define SET_HC595_latch   (PORTG |= (1 << PG1))
#define CLR_HC595_latch   (PORTG &= ~(1 << PG1))
#define SET_HC595_sclk    (PORTG |= (1 << PG0))
#define CLR_HC595_sclk    (PORTG &= ~(1 << PG0))
#define SET_HC595_data    (PORTG |= (1 << PG2))
#define CLR_HC595_data    (PORTG &= ~(1 << PG2))
#define SET_HC595_oe      (PORTG |= (1 << PG4))
#define CLR_HC595_oe      (PORTG &= ~(1 << PG4))

void HC595_port_init(void);          //595埠初始化
void HC595_Send_Data(unsigned char byte);        //發送一個位元組
void HC595_Output_Data(unsigned char data);      //發送字元串
#endif
 

 
/********************************
74hc595.c
**************************************/
#include "hc595.h"
//595埠初始化
void HC595_port_init(void)         
{
 PORTG = 0x00;
 DDRG |= (1 << PG0) | (1 << PG1) | (1 << PG2) | (1 << PG4);
}
//發送一個位元組
void HC595_Send_Data(unsigned char byte)
{
 unsigned char i;
 //CLR_HC595_latch;
 for(i = 0;i < 8;i++)
 {
 
  if(byte & 0x80)
  {
   SET_HC595_data;
  }
  else
  {
   CLR_HC595_data;
  }
  byte <<=1;
 
  SET_HC595_sclk;         //上升沿數據移位
  CLR_HC595_sclk;
  
 }
 
 SET_HC595_latch;
 CLR_HC595_latch;
 
}
//發送字元串
void HC595_Output_Data(unsigned char data)
{
 CLR_HC595_latch;         //下降沿鎖存器數據不變
 HC595_Send_Data(data);
 SET_HC595_latch;           //上升沿數據打入8位鎖存器
}
 
在主程序中我們使用預定義語句將.h文件包含到了主程序文件中,那麼我們怎樣實現將.c文件編譯到整個項目程序中呢?在這裡我們只要在makefile文件中將這個.c文件加進去就可以了,如下圖所示,在SRC = $(TARGET).C的後面空一格,然後輸入我們所定義的.c文件的名稱,然後保存makefile文件的更改。最後進行編譯就可以了,編譯的時候如果我們仔細觀察編譯器的輸出信息,會發現不但編譯了main.c文件,同時也編譯了74hc595.c文件。

[admin via 研發互助社區 ] 基於單片機設計的八位數碼管顯示程序已經有2603次圍觀

http://cocdig.com/docs/show-post-400.html