访问电脑版页面

导航:老古开发网手机版电子设计与应用

MAX7219用法

导读:
关键字:
/******************************************************************************
MAX7219:

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       0xD

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


/* 向 MAX7219 发送命令(16 bit) */
void    sent_LED( uint n )
{
uint     i;
    
    i = (uchar)( n );

    CLK = 0;
    LOAD = 0;
    DIN = 0;

    for ( i=0x8000; i>=0x0001; i=i>>1 )
    {
     if ( ( n & i ) == 0 ) DIN = 0; else DIN = 1;    
     CLK = 1;
     CLK = 0;
    }
    LOAD = 1;    
    
}

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

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

/* 定义显示数字0-9数组 */
uint code LED_code_09[10]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B};
/* 定义显示位置L0-L3数组 */
uint code LED_code_L07[8]=
{0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700,0x0800};
/******************************************************************************
显示数字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( uchar H, uchar n )
{
    if ( ( n & 0x80 ) == 0 )
    {
    sent_LED( LED_code_L07[ H ] | LED_code_09[ n ] );
    }
    else
    {
    sent_LED( LED_code_L07[ H ] | LED_code_09[ n & 0x7F ] | 0x80 );
    }
}

来源:   作者:  2001/9/7 0:00:00
栏目: [ 电子设计与应用]

相关阅读

带编、译码的无线电遥控器(10m)

ADE7755 电能测量集成电路

自动电平控制(ALC)在扬声器中的应用

锁 相 环 CD4046 应 用 介 绍

AD7714的工作原理及其应用

精密的单电源光检测电路设计方案

高精度CMOS运算放大器LMC6062/6082及其应用

有源功率因数校正技术及发展趋势

CS5460A及其在电子式电能表中的应用

MAX7219用法

单/多踪示波器转换电路的设计

基于多相滤波的数字信道化阵列接收机

改善双极电流吸收器的误差补偿方法

基于虚拟仪器的同步伺服系统PID模糊控制器设计

基于LED光源的植物生长动态补光控制系统设计

一种结构新颖的数模结合三相正弦波发生器设计

一种独特的脑电信号放大检测电路设计

用于应变仪的程控精密激励源设计

显示译码器的应用

红外线冰面温度测控装置