MAX7219驱动程序( LED显示芯片)

发布者:小九分析仪最新更新时间:2016-11-09 来源: eefocus关键字:MAX7219  驱动程序  LED显示 手机看文章 扫描二维码
随时随地手机看文章
MAX7219驱动程序( LED显示芯片) 
/***************************************************************** 
* 常用符号定义 
******************************************************************/ 
#define uchar unsigned char 
/****************************************************************** 
* 定义MAX7219寄存器 
*******************************************************************/ 
#define REG_NO_OP 0x00 // 定义空操作 
#define DIG_1 0x01 // 定义数码管1 
#define DIG_2 0x02 // 定义数码管2 
#define DIG_3 0x03 // 定义数码管3 
#define DIG_4 0x04 // 定义数码管4 
#define DIG_5 0x05 // 定义数码管5 
#define DIG_6 0x06 // 定义数码管6 
#define DIG_7 0x07 // 定义数码管7 
#define DIG_8 0x08 // 定义数码管8 
#define REG_DECODE 0x09 // 定义解码控制 
#define REG_INTENSITY 0x0a // 定义显示亮度 
#define REG_SCAN_LIMIT 0x0b // 定义扫描限制 
#define REG_SHUTDOWN 0x0c // 定义"shutdown"模式 
#define REG_DISPLAY_TEST 0x0f // 定义"display test"模式 
#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 M 
AX7219_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  驱动程序  LED显示 引用地址:MAX7219驱动程序( LED显示芯片)

上一篇:时钟程序(LED+DS1302+AT89S52)
下一篇:模数转换IC ADC0809的使用制做之一……基础知识

推荐阅读最新更新时间:2024-03-16 15:20

户外LED显示屏项目预算报告
  我们在确定要做 LED显示屏 项目之前,都是做一份详尽的预算报告的,在这份报告中得写明是户外还是户内的,因在不同的位置,项目造价是完全不同的。像 户外LED显示屏 项目的预算,则基本上是由以下这四类工程造价组成的。 一、基础工程造价 所谓基础工程,就是把LED显示屏固定土建基础工程。其工程的价格构成有:土方开挖回填、混凝土、钢筋等材料和机械、人工费用。这部分的报价是以土方、混凝土的体积为报价单位,即元/方,钢筋以重量为报价单位,即元/吨,施工的人工以天数为报价单位,即元/工日。一般估价可统一为钢筋混凝土的体积计价,可以估价在700-1000元之间,体积大则价格走低。土建基础的体积按经验一般是和上部的屏体面积大致相
[电源管理]
DS1302时钟芯片C51驱动程序
/********************************************** 程序名称:DS1302时钟芯片C51驱动程序 简要说明:read_clockS函数为读取时钟数据 调用Set_time即可调整时间并写入DS1302 sel为调整标志,可通过外部按键来更改其值 **********************************************/ //定义头文件 #include AT89X52.h /******************************************************************/ //定义DS1302时钟接口 sbit clock
[单片机]
详解LED灯珠封装如何影响LED显示屏品质?
对于全彩LED显示屏,LED灯珠作为其最关键的部件,LED灯珠的品质对LED显示屏的品质起着很重要的决定作用。   首先,LED灯珠在整个全彩LED显示屏中使用数量最多,每平方米可能就有几千甚至到几万个LED灯珠。   最后,LED灯珠直接决定了全彩LED显示屏显示的性能和色彩的饱和度和清晰度。   LED灯珠品质的重要指标主要有:   一、全彩LED显示屏亮度   LED灯珠的亮度决定了全彩LED显示屏的亮度,LED灯珠亮度越高,使用电流的余量越大,对节省耗电、保持LED灯珠稳定有好处。LED灯珠有不同的角度值,在芯片亮度已定的情况下,角度越小,LED则越亮,但显示屏的视角则越小。一般应选择100度-11
[电源管理]
利用80C31单片机串行口实现多个LED显示的一种简单方法
在单片机系统中,常常用数码管(LED)做显示器。一般的显示器为4位或8位,即需要4个或8个LED。实现这种显示的方法比较多,也比较简单。但是,对于多个LED显示,就必须采取必要的措施才能实现。本文介绍一种设计方法,利用该方法设计的多路LED显示系统具有硬件结构简单,软件编程方便,价格低廉的特点,经在储蓄所大屏幕利率显示屏中应用,效果很好。 1 硬件电路 80C31单片机是MCS-51系列单片机的一种,它广泛应用于各种小型控制系统中。我们知道,80C31单片机有一个串行口可用于串行通讯,笔者发现它在方式0状态下,还可以扩展并行I/O口,从而实现多个LED显示,其硬件原理如图1所示。其中,74HC164为串行输入、并行输出移位
[单片机]
利用80C31单片机串行口实现多个<font color='red'>LED显示</font>的一种简单方法
《智派体验版S1能用iPad控制多大面积的LED显示屏?》
很多用户都已经知道科鑫光电出品的智派系统有分四个型号的产品,分别是体验版S1、标准版S2、加强版S3、旗舰版S4;其实还是有其他定制版的型号的产品,这里就不做过多介绍了。 第一次接触智派系统的用户,除了产品功能外,大部分都比较关注用IPAD到底能控制多大面积的显示屏?这里我们还是用市场上应用得最为广泛的大屏幕产品:LED显示屏来作为对象,给大家简单的介绍一下。 从智派S1型号的产品参数我们可以看到,主板VGA/HDMI视频信号输出最大分辨率是:1920点X1080点。那下面我们来计算下LED显示屏常用的P2.5\P3\P4型号的产品,用ipad无线控制分别可以控制多大面积的屏体。 PH2.5型号产品 (1920点X
[电源管理]
《智派体验版S1能用iPad控制多大面积的<font color='red'>LED显示</font>屏?》
MSP432P401R+TOFLuna激光雷达测距+OLED显示
前言 前段时间弄到了一个TOF的Luna迷你激光雷达,一直想弄来着,正好昨天看到了于是花一天写了一个驱动协议,电赛需要的小伙伴可以参考一下。 一、TOFLuna激光雷达 这个是官方的说明书资料:链接:https://pan.baidu.com/s/13CejQEn5fjeshuhveFg9ig 提取码:cg2x 可以看到这个雷达还是很小巧的,就是有点小贵。。。。。。 TF-Luna有两种工作模式,一个是串口通信模式,一个是I2C通信模式,我这里写的协议是串口通信的,I2C通信协议之后有时间补上吧。(挖坑+1) 1、工作原理 测距原理 TF-Luna基于TOF (Time ofFlight)即飞行时间原理。具体为产
[单片机]
MSP432P401R+TOFLuna激光雷达测距+O<font color='red'>LED显示</font>
典型的Linux设备驱动程序的代码
为了增跟内核的灵活性和为了方便,设各驱动程序应被设计为一个可动态安装的内核模块。 于是,一个典型的Linux设备驱动程序应包含如下几部分代码: ·驱动程序模块的注册与注销函数; ·设各的打开、关闭、读、写及需要的其他操作函数; ·设备的中断服务程序。 下面用伪代码给出一个从键盘上输入一个字符的例子,以使读者对设备驱动程序的构成有一个基本的概念。 (1)定义读操作函数 ssize mydev_read(……) { 获取本设备的信号量以确倮没有其他进程访闷本设备; 申请中断标志,允许中断; 对设备发出读命令; 将进EH于等待队列,等待中断到来: } (2)定义中断服务程序
[单片机]
LED显示的时钟程控浇花机
    摘要: 给出了一种利用PTC6432制作的带LED显示的时钟程控浇花机的应用电路,介绍了该浇花机电路中各按键的作用。举例说明了浇花时钟控制操作,并给出了部分程序设置例证。     关键词: 程控 时钟 浇花机 PTC6432 城市家庭普遍都养有花草。当人们出差或外出旅游时,花草便可能干枯。文中介绍的这种浇花机不仅能实现浇花的自动控制,还具有数码显示的时钟功能。 1 电路原理 PTC6432是4路(可扩展为16路)可编程时间控制器。具有定时精度高、功耗小、24小时自动循环、编程简单、工作可靠性高等特点。 本电路采用4位共阳LED来显示时间和编程。PTC6432的5脚为电磁阀驱动器。用户编好程
[传感技术]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved