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

📄 m7219drv.c

📁 压缩包中包括多个常用的汇编
💻 C
字号:
/****************************************************************************/
/*                                                                          */
/*                Copyright (c) 2005, 老树工作室                            */
/*                     All rights reserved.                                 */
/*                                                                          */
/*      Email:laoshu0902@163.com                                            */
/*      www.laoshu0902.bokee.com                                            */
/*                                                                          */
/****************************************************************************/
/****************************************************************************/
/* 文件名:m7219drv.c                                                       */
/* 版  本:Version 1.0                                                      */
/* 描  述:max7219驱动代码                                                  */
/* 作  者:spot                                                             */
/* 函  数:                                                                 */
/*         send_led                                                         */
/*         init_max7219                                                     */
/*         disp_09                                                          */ 
/*                                                                          */
/* 参考资料:老古开发网                                                     */
/* 历史记录:                                                               */
/*  spot          2005-06-20     Creat Inital version. (Version 1.0)        */
/****************************************************************************/
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>

typedef unsigned char u_char;
typedef unsigned int  u_int;

sbit DIN  = P0^0;
sbit LOAD = P0^1;
sbit CLK  = P0^2;

/* 定义显示数字数组 */
u_int led_code_n09[10]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B};

/* 定义显示位置数组 */
u_int led_code_p07[8]={0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700,0x0800};


void send_led(u_int n);                     /* 向MAX7219发送命令 */
void init_max7219(void);                    /* 初始化MAX7219     */
void disp_09(u_char position, u_char num);  /* MAX7219显示子程序 */

/****************************************************************************/
/* 函数名:send_led                                                         */
/* 功  能:向MAX7219发送命令                                                */
/* 作  者:spot                                                             */
/* 输  入:n   向MAX7219发送的命令16bit                                     */
/* 输  出:无                                                               */
/*                                                                          */
/* 历史记录:                                                               */
/*  spot          2005-06-20     Creat Inital version. (Version 1.0)        */
/****************************************************************************/
void send_led(u_int n)
{
    u_int i;    
        
    LOAD = 0;
    CLK  = 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;    
}

/****************************************************************************/
/* 函数名:init_max7219                                                     */
/* 功  能:初始化MAX7219                                                    */
/* 作  者:spot                                                             */
/* 输  入:无                                                               */
/* 输  出:无                                                               */
/*                                                                          */
/* 历史记录:                                                               */
/*  spot          2005-06-20     Creat Inital version. (Version 1.0)        */
/****************************************************************************/
void init_max7219(void)
{
    send_led( 0x0C00 ); /* shutdown              */    
    send_led( 0x0A0F ); /* 置LED亮度为31/32      */
    send_led( 0x0B07 ); /* 置LED扫描范围DIGIT0-7 */
    send_led( 0x0900 ); /* 置LED显示为不译码方式 */
    send_led( 0x0C01 ); /* 置LED为正常状态       */    
}

/****************************************************************************/
/* 函数名:disp_09                                                          */
/* 功  能:在指定位置显示数据                                               */
/* 作  者:spot                                                             */
/* 输  入:                                                                 */
/*         position         显示位置0-7 [7][6][5][4][3][2][1][0]            */
/*         numn             显示数值0-9                                     */
/*                                                                          */
/* 输  出:无                                                               */
/*                                                                          */
/* 历史记录:                                                               */
/*  spot          2005-06-20     Creat Inital version. (Version 1.0)        */
/****************************************************************************/
void disp_09(u_char position, u_char num)
{
    if ( ( num & 0x80 ) == 0 )
    {
        send_led( led_code_p07[ position ] | led_code_n09[ num ] );
    }
    else
    {
        send_led( led_code_p07[ position ] | led_code_n09[ num & 0x7F ] | 0x80 );
    }
}

main()
{
    u_int i;

    init_max7219();
    for (i=0; i<8; i++)
    {
        disp_09(i,0);
    }

    disp_09(0,0);
    disp_09(1,1);
    disp_09(2,2);
    disp_09(3,3);
    disp_09(4,4);
    disp_09(5,5);
    disp_09(6,6);
    disp_09(7,7);
}

⌨️ 快捷键说明

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