MAX7219基本驱动程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MAX7219基本驱动程序
2015.07.26
Q群:沈阳理工大学电子爱好者
Note:
仅仅是基本驱动程序,那你可以根据自己的需要去修改
本程序验证单片机型号:STC15W系列单片机
编译软件:Keil3
编程语言:C
程序组成文件:STC15W.H MAX7219.H MAX7219.C
STC15W.H:把宏晶STC官网烧录软件的15系列头文件更名为STC15W
MAX7219.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地址写入参数Y
void MAX7219_Init(unsigned char seg_limit);
//MAX7219功能初始化
void MAX7219_WData(unsigned long seg_data);
//向MAX7219写入需要显示的数据
#endif
MAX7219.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<
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<
if(z&0x80)MAX7219_DIN=HIGH;
else MAX7219_DIN=LOW;
_nop_();_nop_();
MAX7219_CLK=HIGH;
_nop_();_nop_();
MAX7219_CLK=LOW;