⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 max7219.c

📁 max7219源程序 
💻 C
字号:
#include "Mainc.h"
/**************************************************************************
1.数据定义:
    | D15 D14 D13 D12 | D11 D10 D09 D08 | D07 D06 D05 D04 D03 D02 D01 D00 |
       *   *   *   *        [地址]                   [数据]
2. 时序图:
           CP0        CP1       ...      ...      CP14       CP15
           ____      ____      ____      ____      ____      ____     
CLK:  ____|    |____|    |____|    |____|    |____|    |____|    |_________

          D15        D14      .....     .....     D01        D00
DIN:  __=======____=======___=======___=======___=======___======__________
    
   ____                                                          __________ 
LOAD: |__________________________________________________________|

3. 寄存器地址定义:
	寄存器:                地址:        16进制    
       REGISTER          D15-D12  D11  D10  D09  D08      HEX
	NO-OP 非操作         * * * *   0    0    0    0       0x0
   	DIGIT0 数码管0       * * * *   0    0    0    1       0x1
   	DIGIT1 数码管1       * * * *   0    0    1    0       0x2
   	DIGIT2 数码管2       * * * *   0    0    1    1       0x3
   	DIGIT3 数码管3       * * * *   0    1    0    0       0x4
   	DIGIT4 数码管4       * * * *   0    1    0    1       0x5
   	DIGIT5 数码管5       * * * *   0    1    1    0       0x6
   	DIGIT6 数码管6       * * * *   0    1    1    1       0x7
   	DIGIT7 数码管7       * * * *   1    0    0    0       0x8
   	译码方式       		 * * * *   1    0    0    1       0x9
   	亮度控制             * * * *   1    0    1    0       0xA
   	扫描范围             * * * *   1    0    1    1       0xB
   	停机方式             * * * *   1    1    0    0       0xC
   	显示测试             * * * *   1    1    0    1       0xF

****************************************************************************/

/* 定义显示数字0-9数组 */
unint code LED_code_09[10]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B};
//                            0    1    2    3	  4	   5	6	 7	  8    9		
/* 定义显示位置L0-L7数组 */
unint code LED_code_L07[8]={0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700,0x0800};
//                             L1     L2     L3     L4     L5     L6     L7     L8
/* 向 MAX7219 发送命令(16 bit) */
void    sent_LED(unint n) 
{
	unint     i;
	
    CLK  = 0;
    LOAD = 0;                                 //7219有效
    DIN  = 0;

    for ( i=0x8000; i>=0x0001; i=i>>1 )       //从L8开始到L1,右移一位
    {
     	if (( n & i ) == 0) DIN = 0; 
     		else 			DIN = 1;    
	     CLK = 1;                             //CLK上升沿
	     CLK = 0;
    }
    LOAD = 1;                                 //7219无效
}

/*清除显示*/
void    cls()
{
	unint    i;
    for (i=0x0100; i<=0x0800; i+=0x0100 ) sent_LED( i ); /* DIGIT0-7 = 0*/
}

/*初始化 MAX7219*/
void    csh_MAX7219()
{
    sent_LED( 0x0F00 );/* 置LED为正常显示状态 */
    sent_LED( 0x0C01 ); /* 置LED为正常状态 */
    sent_LED( 0x0A0f ); /* 置LED亮度为9/32 */
    sent_LED( 0x0B07 ); /* 置LED扫描范围DIGIT0-7 */
    sent_LED( 0x0900 ); /* 置LED显示为不译码方式 */
    cls();
}

/******************************************************************************
显示数字0-9: 
void    disp_09( uchar H, uchar n )
输入:   H 显示位置0-7 [7][6][5][4][3][2][1][0]
    	n 显示数值0-9
    	DP 显示小数点 1xxxxxxx :ON/0xxxxxxx:OFF
******************************************************************************/
void    disp_09( unchar H, unchar n )
{
unint i;
    if(( n & 0x80 ) == 0)  
    {
    	i=LED_code_L07[ H ] | LED_code_09[ n ];
    	sent_LED(i);   			  //无小数点
    }
    else
    {
    	i=LED_code_L07[ H ] | LED_code_09[ n & 0x7F ] | 0x80 ;
    	sent_LED(i);//有小数点
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -