?? 7219.h
字號:
#include <reg51.h>
/*********************** 定義MAX7219 內部寄存器 **********************/
#define REG_DECODE 0x09 // 譯碼方式寄存器
#define REG_INTENSITY 0x0a // 亮度寄存器
#define REG_SCAN_LIMIT 0x0b // 掃描界限寄存器
#define REG_SHUTDOWN 0x0c // 停機寄存器
#define REG_DISPLAY_TEST 0x0f // 顯示測試寄存器
#define INTENSITY_MIN 0x00 // 最小顯示亮度
#define INTENSITY_MAX 0x0f // 最大顯示亮度
/*********************** 定義MAX7219 端口信號 ************************/
sbit DATA=P1^0;
sbit LOAD=P1^1;
sbit CLK=P1^2;
/************************** 函數原型說明 *****************************/
static void Write (unsigned char reg_number, unsigned char dataout);
static void SendByte (unsigned char dataout);
void Init (void);
void ShutdownStart (void);
void ShutdownStop (void);
void DisplayTestStart (void);
void DisplayTestStop (void);
void SetBrightness (char brightness);
void Clear (void);
/************************************************************************
* 函數原型:void Init()
* 功 能: 對MAX7219進行初始化,調用任何其他函數之前必需先調用此函數
*************************************************************************/
void Init (void) {
DATA=1;LOAD=1;CLK=1;
Write(REG_SCAN_LIMIT, 7); // 掃描8位數字
Write(REG_DECODE, 0x00); // 設置不譯碼方式
ShutdownStop(); // 結束停機方式,正常工作
DisplayTestStop(); // 結束顯示測試,正常工作
Clear(); // 清零全部顯示器
SetBrightness(INTENSITY_MAX); // 設置最大亮度
}
/*************************************************************************
* 函數原型:void ShutdownStart()
* 功 能: 進入停機方式
**************************************************************************/
void ShutdownStart (void) {
Write(REG_SHUTDOWN, 0);
}
/*************************************************************************
* 函數原型:void ShutdownStop()
* 功 能:結束停機方式
**************************************************************************/
void ShutdownStop (void) {
Write(REG_SHUTDOWN, 1);
}
/*************************************************************************
* 函數原型:void DisplayTestStart()
* 功 能:啟動顯示測試
**************************************************************************/
void DisplayTestStart (void) {
Write(REG_DISPLAY_TEST, 1);
}
/*************************************************************************
* 函數原型:void DisplayTestStop()
* 功 能:結束顯示測試
**************************************************************************/
void DisplayTestStop (void) {
Write(REG_DISPLAY_TEST, 0);
}
/*************************************************************************
* 函數原型:void SetBrightness(char brightness)
* 功 能:設置LED顯示亮度
* 參 數:亮度值(brightness = 0-15)
*************************************************************************/
void SetBrightness (char brightness) {
brightness &= 0x0f; // 屏蔽參數中的多余位
Write(REG_INTENSITY, brightness); // 設置亮度
}
/*************************************************************************
* 函數原型:void Clear()
* 功 能:關閉全部顯示器
**************************************************************************/
void Clear (void) {
char i;
for (i=1; i <= 8; i++)
Write(i, 0x00); // 關閉全部顯示器
}
/*************************************************************************
* 函數原型:static void Write (unsigned char reg_number, unsigned char dataout)
* 功 能:向指定的MAX7219內部寄存器寫入數據
* 參 數: reg_number = MAX7219內部寄存器地址
dataout = 待寫入的數據
**************************************************************************/
static void Write (unsigned char reg_number, unsigned char dataout) {
LOAD=1; // 使LOAD變高,啟動串行數據發送
SendByte(reg_number); // 發送MAX7219內部寄存器地址
SendByte(dataout); // 發送待寫入的數據
LOAD=0; // 使LOAD變低,鎖存數據
LOAD=1; // 使LOAD變高,串行數據結束
}
/*************************************************************************
* 函數原型:static void SendByte (unsigned char dataout)
* 功 能:向MAX7219發送一個字節串行數據
* 參 數:dataout = 待發送的數據
**************************************************************************/
static void SendByte (unsigned char dataout) {
char i;
for (i=8; i>0; i--) {
unsigned char mask = 1 << (i - 1);
CLK=0; // 使CLK變低
if (dataout & mask) // 發送一位數據"1"或"0"
DATA=1;
else
DATA=0;
CLK=1; // 使CLK變高
}
}
void init7219()
{
Init (); // 初始化MAX7219
ShutdownStart (); // 停機
ShutdownStop (); // 結束停機
DisplayTestStart (); // 顯示測試
DisplayTestStop (); // 結束顯示測試
SetBrightness (0x06); // 設置顯示亮度
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -