适用于STC89系列单片机的MAX7219驱动程序

介绍

MAX7219使用代码

软件架构

适用于STC89系列单片机的,使用MAX7219驱动的led点阵代码。

使用环境

  1. 单片机晶振:11.0592MHz;
  2. 传感器数据接口: LOAD=P1^1; DIN=P1^0; CLK=P1^2;

使用说明

        1.void max7219SendData(uchar address,uchar dat);

        //向MAX7219指定地址(即哪一位)发送数据

        //参数:

        //address: 范围 0x00~0x07

        //dat:要显示的内容

        2.void max7219Init();

        //MAX7219初始化

MAX7219简要说明

引脚功能

DIN:串行数据输入端

DOUT:串行数据输出端,用于级联扩展

LOAD(CS):装载数据输入

CLK:串行时钟输入

寄存器地址
No-Op无操作0xX0
Digit 0数据00xX1
Digit 10xX2
Digit 20xX3
Digit 30xX4
Digit 40xX5
Digit 50xX6
Digit 60xX7
Digit 70xX8
Decode Mode译码控制寄存器0xX9
Intensity亮度控制器寄存器0xXA
Scan Limit扫描界限寄存器0xXB
Shutdown关断模式寄存器0xXC
Display Test测试控制寄存器0xXF

Decode Mode:

有效值:0x00,0x01,0x0f,0xff

0x00:无译码模式。数码管7--0有效

0x01:译码数码管0,7-1为无译码模式

0x0f:译码数码管3--0,7--4为无译码模式

0xff:译码模式。数码管7--0有效

Scan Limit:

有效值:0x00~0x07

0x00~0x07分别对应扫描几个数码管。0x00只扫描第0个数码管,以此类推。

Shutdown:

有效值:0x00,0x01。

主要功能是为了在不需要数码管显示时进入省电模式。

0x00:进入关断模式

0x01:正常显示模式

Intensity:

有效值:0xX0~0xXF

主要用于设置亮度

Display Test:

有效值:0xX0,0xX1

0xX0:正常工作状态

0xXF:测试状态,各位显示全亮

 MAX7219.C

#include "max7219.h"
#include "INTRINS.H"
void Delay1ms()		//@11.0592MHz
{
	unsigned char i, j;

	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
}

void max7219SendData(uchar address,uchar dat){
    uchar i;
    LOAD=0;//拉低片选线,选中器件
    //发送地址
    for (i = 0; i < 8; i++)
    {
        CLK=0;      //清零时钟总线
        DIN=(bit)(address&0x80);//每次取高字节
        address<<=1;//左移一位
        // Delay1ms();
        CLK=1;      //时钟上升沿,发送地址
    }
    //发送数据
    for (i = 0; i < 8; i++)
    {
        CLK=0;
        DIN=(bit)(dat&0x80);
        dat<<=1;
        // Delay1ms();
        CLK=1;
    }
    LOAD=1;
}

void max7219Init(){
    max7219SendData(SHUTDOWN,0x01);//正常工作模式,非关断模式
    max7219SendData(DISPLAYTEST,0x00);//选择正常工作模式
    max7219SendData(DECODEMODE,0x00);//选用无译码模式
    max7219SendData(SCANLIMIT,0x07);//8位全用模式
    max7219SendData(INTENSITY,0x04);//设置初始亮度
}

MAX7219.H

#ifndef __MAX7219_H__
#define __MAX7219_H__

#include "stc89c5xrc.h"

#define uchar unsigned char

#define DECODEMODE 0x09
#define INTENSITY  0x0A
#define SCANLIMIT  0x0B
#define SHUTDOWN   0x0C
#define DISPLAYTEST 0x0F

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

void max7219SendData(uchar address,uchar dat);
void max7219Init();

#endif // !__MAX7219_H__

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值