MAX7219基本驱动程序

合集下载

点阵屏驱动程序(MAX7219)

点阵屏驱动程序(MAX7219)
Write_Max7219_byte(0);
Write_Max7219_byte(0);
Write_Max7219_byte(0);
Max7219_pinCS=1;
Write_Max7219(0,0); //清除缓冲区数据,消除显示误差
}
}
void Display_4(uchar dat)
{
uchar i;
{0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70},//C16
};
//--------------------------------------------
//功能:向MAX7219(U3)写入字节
//入口参数:DATA
//出口参数:无
//说明:
void Write_Max7219_byte(uchar DATA)
Write_Max7219_byte(0);
Write_Max7219_byte(0);
Write_Max7219_byte(0);
Write_Max7219_byte(0);
Write_Max7219_byte(0);
Max7219_pinCS=1;
Write_Max7219(0,0); //清除缓冲区数据,消除显示误差
Write_Max7219(7,0);//清除缓冲区数据,消除显示误差
Write_Max7219(8,0);//清除缓冲区数据,消除显示误差
}
/***************************************************/
void Display_1(uchar dat)
{
Write_Max7219_byte(0);

MAX7219

MAX7219

多功能LED译码显示驱动IC PS7219 1 引言PS7219是由力源公司自行研制、开发的一款新型多功能8位LED显示驱动IC。

接口采用三线SPI方式,用户只需简单修改内部相关的控制或数字RAM,便可很容易地实现多位LED显示。

在性能上PS7219与MAXIM 公司的MAX7219完全兼容,并增加了位闪等功能。

PS7219具有多个级联特性,为大屏幕LED显示提供了方便。

在理论上,只需三根用户I/O口控制线,便可以实现无穷多的LED级联显示。

在实际应用中,已实现了149片PS7219级联,可以控制1192位LED 显示。

2 PS7219特点与引脚说明PS7219的特点:★ 串行接口(16位控制字);★ 8位共阴级LED显示驱动;★ 显示位数1~8,可数字调节;★ 按位进行BCD译码/不译码数字制;★ 16级亮度数字控制;★ 上电LED全熄;★ 提供位闪功能;★ 多个PS7219级联可实现任意多的LED显示;★ 宽24脚双列直插模块封装。

PS7219引脚图如图1所示。

引脚功能说明见表1。

3 PS7219内部结构如图2 所示,PS7219由六部分组成。

图2 PS7219内部组成框图图1 PS7219引脚排列3.1 串行输入缓冲部分主要功能是与外部控制信号接口,将控制命令串行读入,并进行串并转换,供控制器读取。

3.2 控制器是整个IC的核心部分。

它先将输入缓冲部分的控制字读入处理,根据其地址值送到相应的控制RAM或数字RAM,同时将数据送入串行同步输出部分,以便在下一个控制字输入周期,将其串行输出。

3.3 控制RAM数据RAM这两部分一起控制LED译码显示部分,实现不同功能及字符的显示。

控制RAM包括:空操作寄存器,译码模式控制寄存器,亮度控制寄存器,掉电控制寄存器,闪烁控制寄存器,测试控制寄存器和扫描界线寄存器。

数据RAM包括:数据1—8寄存器。

3.4 LED译码显示根据控制RAM和数据RAM的不同值,来实现相应的显示功能。

MAX7219单片以及级联驱动程序

MAX7219单片以及级联驱动程序

MAX7219单片以及级联驱动程序2011-03-20 09:40说明一下:这个word版式是从百度上下载的,在原版中,作者只是写了驱动一片MAX7219的程序。

本人作为菜鸟,第一次使用MAX7219就用了两片级联来驱动15个数码管,按照原版程序驱动一片MAX7219是没有问题的,但是,驱动两片MAX7219就不行了。

自己先认真看了MAX7219的DataSsheet,因为英语是个二把刀,看的迷迷糊糊,似懂非懂(可见英语还是很重要的),又在网上搜索也没发现有正确的程序(都是有点儿问题,上网贴出来请教各位大虾的),没办法只能自力更生了,终于调出来了。

将原版增删修改,传上来共享,希望对以后某位菜鸟第一次使用MAX7219时有所帮助啦,嘿嘿!/**************************************************************** *常用符号定义******************************************************************/#define uchar unsigned char/**************************************************************** *定义MAX7219寄存器******************************************************************/#define REG_NO_OP 0x00 //定义空操作register#define DIG_1 0x01 // 定义数码管1 register#define DIG_2 0x02 // 定义数码管2 register#define DIG_3 0x03 // 定义数码管3 register#define DIG_4 0x04 // 定义数码管4 register#define DIG_5 0x05 // 定义数码管5 register#define DIG_6 0x06 // 定义数码管6 register#define DIG_7 0x07 // 定义数码管7 register#define DIG_8 0x08 // 定义数码管8 register#define REG_DECODE 0x09 // 定义解码控制register#define REG_INTENSITY 0x0a // 定义显示亮度register#define REG_SCAN_LIMIT 0x0b // 定义扫描限制register#define REG_SHUTDOWN 0x0c // 定义"shutdown"模式register#define REG_DISPLAY_TEST 0x0f // 定义"display test"模式register#define INTENSITY_MIN 0x00 // 定义最低显示亮度#define INTENSITY_MAX 0x0f // 定义最高显示亮度/****************************************************************** * 定义硬件引脚连接******************************************************************/#define DATA P2^3; //定义P3_5连接MAX7219 DATA引脚#define CLK P2^5; //定义P3_4连接MAX7219 CLK 引脚#define CS P2^4; //定义P3_3连接MAX7219 CS 引脚/***************************************************************** * 共阴极七段数码管显示对应段查询表(数字0-9分别对应code_table[0]-[9])***********************************************************/uchar code code_table[10]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b}; /*采用数组*//****************************************************************** * MAX7219_Send()描述: 向MAX7219传送一字节数据Arguments : dataout = data to sendReturns : none******************************************************************/ void send (uchar datain){char I,temp;for (i=8; i>0; i--){CLK=0; // CLK 置低temp=datain&0x80;if (temp==0x80) // 判断并输出一位DATA=1; // 输出"1"else // 或DATA=0; // 输出"0"datain<<=1; //datain左移位,以便再次与0x80按位与CLK=1; // CLK 置高}}/**************************************************************** * MAX7219_Write()/MAX7219_Write_1()描述: 向 MAX7219 写命令Arguments : reg_number = register to write todataout = data to write to MAX7219Returns : none************************************************************** */ void MAX7219_Write (uchar add1, uchar dat1) //向第一片MAX7219写数据{CS=0; // CS置低选通MAX7219send(add1); // 写register number 到MAX7219send(dat1); // 写data 到MAX7219CS=1; // 利用CS上升沿锁存以上移位进输入的16位数据}void MAX7219_Write_1(uchar add2,uchar dat2) //向第二片MAX7219写数据{CS=0;sent(add2);sent(dat2);CLK=1; // 第16.5个时钟周期,数据从第一片MAX7219的DOUT端开始输出sent(REG_NO_OP); //对第一片MAX7219进行空操作,sent(0x00);CS=1;}/******************************************************************** MAX7219_DisplayChar()描述: 使某一位显示一个数字Arguments : digit = digit number (0-7)character = character to display (0-9, A-Z)Returns : none****************************************************************/void MAX7219_DisplayChar (char digit, char character){MAX7219_Write(digit, character);}PS:这个函数可以不要,直接调用写数据函数就可以了(原版)/******************************************************************** MAX7219_Clear()/MAX7219_clear_1()描述: 清除所有位的显示Arguments : noneReturns : none*****************************************************************/ void MAX7219_Clear (){uchar i;for (i=0; i < 8; i++)MAX7219_Write(i, 0x00); // 清除第一片MAX7219所有位的显示}void MAX7219_Clear_1(){uchar i;for(i=1;i<=8;i++)MAX7219_Write_1(i,0x00); //清除第二片MAX7219所有位的显示}PS:可以两片一起清楚数据,但建议分开较好。

MAX7219中文资料-附有程序

MAX7219中文资料-附有程序

MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。

该芯片具有10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。

它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX721 9的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。

此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的数码管显示。

MAX7219的外部引脚分配如图1所示及内部结构如图2所示。

图1 MAX7219的外部引脚分配图2 MAX7219的内部引脚分配各引脚的功能为:DIN:串行数据输入端DOUT:串行数据输出端,用于级连扩展LOAD:装载数据输入CLK:串行时钟输入DIG0~DIG7:8位LED位选线,从共阴极LED中吸入电流SEG A~SEG G DP 7段驱动和小数点驱动ISET:通过一个10k电阻和Vcc相连,设置段电流MAX7219有下列几组寄存器:(如图3)MAX7219内部的寄存器如图3,主要有:译码控制寄存器、亮度控制寄存器、扫描界限寄存器、关断模式寄存器、测试控制寄存器。

编程时只有正确操作这些寄存器,MAX7219才可工作。

图 3 MAX7219内部的相关寄存器分别介绍如下:(1)译码控制寄存器(X9H)如图4所示,MAX7219有两种译码方式:B译码方式和不译码方式。

当选择不译码时,8个数据为分别一一对应7个段和小数点位;B译码方式是BCD译码,直接送数据就可以显示。

实际应用中可以按位设置选择B译码或是不译码方式。

图4 MAX7219的译码控制寄存器(2)扫描界限寄存器(XBH)如图5所示,此寄存器用于设置显示的LED的个数(1~8),比如当设置为0xX4时,LED 0~5显示。

max7219驱动程序。doc

max7219驱动程序。doc

MAX7219驱动程序2007-04-27 10:21/***************************************************************** * 常用符号定义******************************************************************/#define uchar unsigned char/****************************************************************** * 定义MAX7219寄存器*******************************************************************/ #define REG_NO_OP 0x00 // 定义空操作 register #define DIG_1 0x01 // 定义数码管1 register #define DIG_2 0x02 // 定义数码管2 register #define DIG_3 0x03 // 定义数码管3 register #define DIG_4 0x04 // 定义数码管4 register #define DIG_5 0x05 // 定义数码管5 register #define DIG_6 0x06 // 定义数码管6 register #define DIG_7 0x07 // 定义数码管7 register#define DIG_8 0x08 // 定义数码管8 register #define REG_DECODE 0x09 // 定义解码控制 register #define REG_INTENSITY 0x0a // 定义显示亮度register #define REG_SCAN_LIMIT 0x0b // 定义扫描限制 register #define REG_SHUTDOWN 0x0c // 定义"shutdown"模式 register #defineREG_DISPLAY_TEST 0x0f // 定义"display test"模式 register #define INTENSITY_MIN 0x00 // 定义最低显示亮度 #define INTENSITY_MAX 0x0f // 定义最高显示亮度/******************************************************************** * * 定义硬件引脚连接********************************************************************* */ #define DATA P2^3; //定义P3_5连接MAX7219 DATA引脚 #define CLK P2^5; //定义P3_4连接MAX7219 CLK 引脚 #define CS P2^4; //定义P3_3连接MAX7219 CS 引脚(实际按7221设)/******************************************************************** *** * 共阴极七段数码管显示对应段查询表(数字0-9分别对应code_table[0]-[9])********************************************************************* **/ uchar code code_table[10]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b}; /*采用数组*//******************************************************************** *** * MAX7219_SendByte() * * 描述: 向MAX7219传送一字节数据 * Arguments : dataout = data to send * Returns : none********************************************************************* ****/ void MAX7219_SendByte (uchar dataout) { char i; for (i=8; i>0; i--) { uchar mask = 1 << (i - 1); // 设置掩码 CLK=0; // CLK 置低 if (dataout & mask) // 判断并输出一位 DATA=1; // 输出"1" else // 或 DATA=0; // "0" CLK=1; // CLK 置高 } }/******************************************************************** *** * MAX7219_Write() * * 描述: 向 MAX7219 写命令 * Arguments :reg_number = register to write to * dataout = data to write to MAX7219* Returns : none********************************************************************* ****** */ void MAX7219_Write (uchar reg_number, uchar dataout) { CS=0; // CS置低选通 MAX7219 MAX7219_SendByte(reg_number); // 写 register number 到 MAX7219 MAX7219_SendByte(dataout); // 写 data 到 MAX7219 CS=1; // 利用CS上升沿锁存以上移位进输入的16位数据 }/******************************************************************** ****** * MAX7219_DisplayChar() * * 描述: 使某一位显示一个数字 * Arguments : digit = digit number (0-7) * character = character to display (0-9, A-Z) * Returns : none********************************************************************* *****/ void MAX7219_DisplayChar (char digit, char character){ MAX7219_Write(digit, character); }/******************************************************************** ****** * MAX7219_Clear() * * 描述: 清除所有位的显示 * Arguments : none * Returns : none********************************************************************* ******/ void MAX7219_Clear (void) { uchar i; for (i=0; i < 8; i++) MAX7219_Write(i, 0x00); // 清除所有位的显示 }/******************************************************************** ****** * MAX7219_SetBrightness() * * 描述: 设置数码管显示亮度 * Arguments : brightness (0-15) * Returns : none********************************************************************* ******/ void MAX7219_SetBrightness (char brightness) { brightness &= 0x0f; // 屏蔽高位字节 MAX7219_Write(REG_INTENSITY, brightness); // 设置数码管显示亮度 }/******************************************************************** ****** * MAX7219_DisplayTestStart() * * 描述: 进入 test 模式 * Arguments : none * Returns : none********************************************************************* ******/ void MAX7219_DisplayTestStart (void){ MAX7219_Write(REG_DISPLAY_TEST, 1); // 置 MAX7219 为 test 模式 }/******************************************************************** ****** * MAX7219_DisplayTestStop() * * 描述: 退出 test 模式 * Arguments : none * Returns : none********************************************************************* ******/ void MAX7219_DisplayTestStop (void){ MAX7219_Write(REG_DISPLAY_TEST, 0); // 置 MAX7219 为正常显示模式 } /******************************************************************** ****** * MAX7219_ShutdownStart() * * 描述: 进入 shutdown 模式 * Arguments : none * Returns : none********************************************************************* ******/ void MAX7219_ShutdownStart (void) { MAX7219_Write(REG_SHUTDOWN, 0); // 置 MAX7219 为 shutdown 模式 }/******************************************************************** ****** * MAX7219_ShutdownStop() * * 描述: 退出 shutdown 模式 * Arguments : none * Returns : none********************************************************************* ******/ void MAX7219_ShutdownStop (void) { MAX7219_Write(REG_SHUTDOWN, 1); // 置 MAX7219 为正常显示模式 }/******************************************************************** ****** * MAX7219_Init() * * Des cription: MAX7219初始化模块; 应该先于其他MAX7219函数而被调用 * Arguments : none * Returns : none********************************************************************* ******/ void MAX7219_Init (void) { DATA=1; // 置DATA为1 CLK=1; // 置CLK 为1 CS=1; // 置CS 为1 MAX7219_Write(REG_SCAN_LIMIT, 7); // 设置为全显示 MAX7219_Write(REG_DECODE, 0x00); // 所有位设置为非解码方式MAX7219_ShutdownStop(); // 置 MAX7219 为正常显示模式 (非shutdown模式) MAX7219_DisplayTestStop(); // 置 MAX7219 为正常显示模式 (非test模式) MAX7219_Clear(); // 清除所有位的显示MAX7219_SetBrightness(INTENSITY_MAX); // 置最大亮度 }。

MAX7219工作原理简介

MAX7219工作原理简介

MAX7219工作原理简介MAX7219是一个采用3线串行接口的8位共阴极7段LED显示驱动器。

本文分析了MAX7219各个寄存器的功能,并结合MAX7219的工作时序,给出了MAX7219在Motorola MC68HC908单片机系统中的一个应用实例。

关键词: MCU;MAX7219;LED Motorola MC68HC908MAX7219工作时序及其寄存器MAX7219是一个高性能的多位LED显示驱动器,可同时驱动8位共阴极LED或64个独立的LED。

其内部结构框图如图1所示,主要包括移位寄存器、控制寄存器、译码器、数位与段驱动器以及亮度调节和多路扫描电路等。

MAX7219 采用串行接口方式,只需LOAD、DIN、CLK三个管脚便可实现数据传送。

DIN管脚上的16位串行数据包不受LOAD状态的影响,在每个CLK的上升沿被移入到内部16位移位寄存器中。

然后,在LOAD的上升沿数据被锁存到数字或控制寄存器中。

LOAD必须在第16个时钟上降沿或之后,但在下一个时钟上升沿之前变高,否则数据将会丢失。

DIN端的数据通过移位寄存器传送,并在16.5个时钟周期后出现在DOUT端,随CLK 的下降沿输出。

MAX7219的操作时序如图2所示。

MAX7219的串行数据标记为D15~D0,其中低8位表示显示数据本身,最高的4位D15~D12未使用,寻址内部寄存器的地址位占用D11~D8,选择14个内部寄存器,见表1。

图1 MAX7219内部结构框图图2 MAX7219的数据传送时序MAX7219 内部具有14个可寻址数字和控制寄存器。

其中的8个数字寄存器由一个片内8×8双端口SRAM实现。

它们可直接寻址,因此可对单个数进行更新并且通常只要 V+超过2V数据就可保留下去。

除8个数位寄存器之外,还有无操作、译码方式、亮度调整、扫描位数、睡眠模式和显示器测试6个控制寄存器。

无操作寄存器用于多片MAX7219级联,在不改变显示或不影响任意控制寄存器条件下,它允许数据从DIN传送到DOUT。

max7219驱动

max7219驱动
#define byte unsigned char
//#define N_NOP _nop_();//_nop_();_nop_();
///////////////////////////////////////////////////////
//MAX7219
write_one_8279(Limit_addr,Set_Limit); //8位显示方式;
write_one_8279(Shutd_addr,Set_Shutd); //进入正常工作方式
}
void Init_7219(void)
{//MAX7219正常工作时的初始化;
////////////////////////////////////////////////////////////////////
//管脚,变量和常数定义;DEFINE
#define Model_addr 0x09 // X9 H
#define Bright_addr 0x0a // XA H
#define Set_Halt 0x00 //进入停机工作方式?
#define Set_Model 0xff //将BCD码译成B码;
#define Set_Bright 0x04 //占空比为15/32;
#define Set_Limit 0x07 //8位显示方式;
}

{
_nop_();
CLK=0; //-\_
if(addr & 0x80)
DIN=1;
else
DIN=0;
_nop_();
CLK=1; //_/-
addr=addr<<1;

max7219数码管驱动程序库函数

max7219数码管驱动程序库函数
MAX7219初始化函数
函数说明:初始化MAX7219芯片,MAX7219芯片按照顺序级联,
测试模式显示寄存器没有配置,若希望配置,应在max7219.h中将MAX7219_TestModeDisp_EN预定义为1,
并注意配置测试模式显示的时间,
若时间太短,将较难看到显示效果。
输入参数:n-----初始化芯片个数(n>=1,注意:第1个为第0号芯片,显示函数中有具体描述;
for(i=0;i<8;i++);//短延时
MAX7219_LOAD=0;
for(i=0;i<n;i++)//初始化几个MAX7219芯片,做几次设置操作
MAX7219_WriteAddrData (0x09,MAX7219_InitStructure.DecodeMode);//设置译码模式
MAX7219_LOAD=1;//LOAD上升沿锁存数据
*/
//#define DecodeMode0x09 //译码模式寄存器
//#define Intensity0x0a //亮度寄存器
//#define ScanLimit0x0b //扫描位数寄存器
//#define ShutDown0x0c //关机模式寄存器
//#define DisplayTest0x0f //显示测试寄存器
sbit MAX7219_DIN= P0^3; //串行数据输入
sbit MAX7219_CLK= P0^4; //串行时钟
sbit MAX7219_LOAD= P0^5; //显示数据锁存控制
/*****************************************************************
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MAX7219基本驱动程序2015.07.26Q群:沈阳理工大学电子爱好者Note:仅仅是基本驱动程序,那你可以根据自己的需要去修改本程序验证单片机型号:STC15W系列单片机编译软件:Keil3编程语言:C程序组成文件:STC15W.H MAX7219.H MAX7219.CSTC15W.H:把宏晶STC官网烧录软件的15系列头文件更名为STC15WMAX7219.H:/***************************************************文件名称:MAX7219.H功能:MAX7219的驱动四位数码管的函数修改时间:2015.06.28***************************************************/#ifndef_MAX7219_H_#define_MAX7219_H_#include"STC15W.H"#include"intrins.h"//这里的有关单片机的头文件用户可以改成自己的名字#define MAX7219_DIN P10//数据输入,CLK上升沿时数据读入#define MAX7219_CLK P11//时钟信号输入端#define MAX7219_LOAD P12//锁定最近的16位数据为有效数据并载入//用户可以根据自己的需求改变引脚//一条指令的传输:LOAD低-数据-CLK上升沿-数据-CLK上升沿。

LOAD上升沿数据载入#define LOW0#define HIGH1/**************/static void MAX7219_WOnebyte(unsigned char x,unsigned char y); //向MAX7219的X地址写入参数Yvoid MAX7219_Init(unsigned char seg_limit);//MAX7219功能初始化void MAX7219_WData(unsigned long seg_data);//向MAX7219写入需要显示的数据#endifMAX7219.H:/***************************************************文件名称:MAX7219.C功能:MAX7219的驱动四位数码管的函数修改时间:2015.06.28***************************************************/#include"MAX7219.H"unsigned char max7219_segnum=0;//这个参数用来表示当前数码管一共显示几位(1~8)enum MAX7219_ADD{MAX7219_ADD_Nop=0x50,MAX7219_ADD_Digit0,MAX7219_ADD_Digit1,MAX7219_ADD_Digit2,MAX7219_ADD_Digit3,MAX7219_ADD_Digit4,MAX7219_ADD_Digit5,MAX7219_ADD_Digit6,MAX7219_ADD_Digit7,MAX7219_ADD_Mode,MAX7219_ADD_Intensity,MAX7219_ADD_ScanLimit,MAX7219_ADD_ShutDown,MAX7219_ADD_Nouse1,MAX7219_ADD_Nouse2,MAX7219_ADD_DisplayTest,};//这个枚举类型MAX7219_ADD表示MAX7219的寄存器地址/***************************************************函数名称:MAX7219_WOnebyte功能:向MAX7219的X地址写入参数Y输入:X:地址Y:数据输出:无作用范围:局部MAX7219.C***************************************************/ static void MAX7219_WOnebyte(unsigned char x,unsigned char y) {unsigned char i,z=0;for(i=0;i<8;i++){z=(x<<i);if(z&0x80)MAX7219_DIN=HIGH;else MAX7219_DIN=LOW;_nop_();_nop_();MAX7219_CLK=HIGH;_nop_();_nop_();MAX7219_CLK=LOW;}for(i=0;i<8;i++){z=(y<<i);if(z&0x80)MAX7219_DIN=HIGH;else MAX7219_DIN=LOW;_nop_();_nop_();MAX7219_CLK=HIGH;_nop_();_nop_();MAX7219_CLK=LOW;}_nop_();_nop_();MAX7219_LOAD=HIGH;_nop_();_nop_();MAX7219_LOAD=LOW;}/***************************************************函数名称:MAX7219_Init功能:MAX7219功能初始化输入:seg_limit表示显示数码管的位数输出:无作用范围:全局***************************************************/ void MAX7219_Init(unsigned char seg_limit){max7219_segnum=seg_limit;//将设置的显示数码管个数保存MAX7219_LOAD=LOW;_nop_();_nop_();MAX7219_LOAD=HIGH;_nop_();_nop_();MAX7219_LOAD=LOW;MAX7219_WOnebyte(MAX7219_ADD_Mode,0xFF);//MAX7219为译码模式MAX7219_WOnebyte(MAX7219_ADD_Intensity,0x02);//MAX7219的显示亮度为最亮MAX7219_WOnebyte(MAX7219_ADD_ScanLimit,seg_limit);//MAX7219的显示4个数码光(0,1,2,3)MAX7219_WOnebyte(MAX7219_ADD_DisplayTest,0X00);//MAX7219正常工作模式,非测试MAX7219_WOnebyte(MAX7219_ADD_ShutDown,0X01);//MAX7219正常工作模式,非掉电MAX7219_DIN=LOW;MAX7219_CLK=LOW;MAX7219_LOAD=LOW;}/***************************************************函数名称:MAX7219_WData功能:向MAX7219写入需要显示的数据输入:seg_data表示数码管将要显示的数据输出:无作用范围:全局***************************************************/ void MAX7219_WData(unsigned long seg_data){unsigned char x0,x1,x2,x3,x4,x5,x6,x7,a=max7219_segnum;if(seg_data<99999999){x7=(seg_data/10000000);x6=(seg_data/1000000)%10;x5=(seg_data/100000)%10;x4=(seg_data/10000)%10;x3=(seg_data/1000)%10;x2=(seg_data/100)%10;x1=(seg_data/10)%10;x0=(seg_data%10);//将要显示的数据分位MAX7219_WOnebyte(MAX7219_ADD_Digit0,x0);if(a){MAX7219_WOnebyte(MAX7219_ADD_Digit1,x1);a--;}if(a){MAX7219_WOnebyte(MAX7219_ADD_Digit2,x2);a--;}if(a){MAX7219_WOnebyte(MAX7219_ADD_Digit3,x3);a--;}if(a){MAX7219_WOnebyte(MAX7219_ADD_Digit4,x4);a--;}if(a){MAX7219_WOnebyte(MAX7219_ADD_Digit5,x5);a--;}if(a){MAX7219_WOnebyte(MAX7219_ADD_Digit6,x6);a--;}if(a){MAX7219_WOnebyte(MAX7219_ADD_Digit7,x7);}}}验证电路:以上程序本人亲测可用,原版!!更多资讯请加入扣扣群:沈阳理工大学电子爱好者。

相关文档
最新文档