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

📄 max7219驱动led.c

📁 led驱动芯片Max7219驱动程序原代码
💻 C
字号:
#include <REGX51.H>
#include<intrins.h>//标准库文件,程序中使用到了"_nop_()"
//管脚定义

sbit LOAD=P1^2;          //MAX7219片选           12脚

sbit DIN=P1^1;           //MAX7219串行数据       1脚

sbit CLK=P1^0;           //MAX7219串行时钟        13脚

//寄存器宏定义

#define DECODE_MODE  0x09   //译码控制寄存器

#define INTENSITY    0x0A   //亮度控制寄存器

#define SCAN_LIMIT   0x0B   //扫描界限寄存器

#define SHUT_DOWN    0x0C   //关断模式寄存器

#define DISPLAY_TEST 0x0F   //测试控制寄存器        

//函数声明

void Write7219(unsigned char address,unsigned char dat);

void Initial(void);
void delay(unsigned int t);
//地址、数据发送子程序

void Write7219(unsigned char address,unsigned char dat)

{  

    unsigned char i;

    LOAD=0;    //拉低片选线,选中器件

    //发送地址

    for (i=0;i<8;i++)        //移位循环8次             

    {  

       CLK=0;        //清零时钟总线

       DIN=(bit)(address&0x80); //每次取高字节     

       address<<=1;             //左移一位

       CLK=1;        //时钟上升沿,发送地址

    }

    //发送数据

    for (i=0;i<8;i++)              

    {  

       CLK=0;

       DIN=(bit)(dat&0x80);    

       dat<<=1; 

       CLK=1;        //时钟上升沿,发送数据

    }

    LOAD=1;    //发送结束,上升沿锁存数据                      

}

//MAX7219初始化,设置MAX7219内部的控制寄存器

void Initial(void)                

{

    Write7219(SHUT_DOWN,0x01);         //开启正常工作模式(0xX1)

    Write7219(DISPLAY_TEST,0x00);      //选择工作模式(0xX0)

    Write7219(DECODE_MODE,0xff);       //选用全译码模式

    Write7219(SCAN_LIMIT,0x07);        //8只LED全用

    Write7219(INTENSITY,0x0F);          //设置初始亮度     

}

//测试程序

void main(void)

{

    unsigned char i;

    Initial();               //MAX7219初始化

    while(1)

    { 

       for(i=1;i<9;i++)

       {
		 
        Write7219(i,i);      //数码管显示1~8

       }

    }

}

⌨️ 快捷键说明

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