📄 max7219.h
字号:
/*******************************************************************************
* 标题: 7219头文件 *
* 日期: 2007-3-25 *
* 版本: 1.0 *
* 作者: 无名 *
* 邮箱: djrljf@163.com *
* QQ : 403499014 *
********************************************************************************
********************************************************************************
* 【版权】 Copyright(C)无名 All Rights Reserved *
* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
*******************************************************************************/
#ifndef _max7219_H // 防止max7219.h被重复引用
#define _max7219_H
#include "at89x52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
//==============================================================
//默认设置,使用时根据实际布线修改DIN CLK LOAD
sbit DIN=P2^4; //串行数据输入
sbit CLK=P2^5; //串行时钟
sbit LOAD=P2^3; //显示数据锁存控制
//==============================================================
#define DecodeMode 0x09 //译码模式寄存器
#define Intensity 0x0a //亮度寄存器
#define ScanLimit 0x0b //数码管扫描位数寄存器
#define ShotDown 0x0c //低功耗模式寄存器
#define DisplayTest 0x0f //显示测试寄存器
#define ShotdownMode 0x00 //低功耗模式
#define NormalOperation 0x01 //正常操作方式
#define ScanDigit 0x07 //扫描位数设置
#define DecodeDigit 0xff //译码设置
#define IntensityGrade 0x0a //亮度级别设置
#define TestMode 0x01 //显示测试模式
#define TestEnd 0x00 //显示测试结束,恢复正常工作
uchar DisDuffer[8]={0}; //显示缓存区
//==============================================================
//发送单个字节
//==============================================================
void SendChar(uchar ch)
{
uchar i,temp;
_nop_(); //空指令
for(i=0;i<8;i++)
{
temp=ch&0x80; //从高位开始发送
ch=(ch<<1);
if(temp)
{DIN=1;CLK=0;CLK=1;} //发送0
else
{DIN=0;CLK=0;CLK=1;} //发送1
}
}
//==============================================================
//外部接口为:选择数码管显示位+显示数据的bcd码
//写一个完整命令(先发送指令寄存器,后发送数据)
//==============================================================
extern void WriteWord(uchar addr,uchar num)
{
LOAD=0;
_nop_();
SendChar(addr);
_nop_();
SendChar(num);
LOAD=1;
}
//==============================================================
//初始化子程序
//==============================================================
extern void InitDisplay()
{
uchar i;
WriteWord(ScanLimit,ScanDigit); //设置扫描界限
WriteWord(DecodeMode,DecodeDigit); //设置译码模式
WriteWord(Intensity,IntensityGrade); //设置亮度
WriteWord(ShotDown,NormalOperation); //设置为正常工作模式
for(i=0;i<8;i++)
{WriteWord((i+1),0x0f); //把所有数码管清空显示
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -