MAX7219点阵屏驱动程序(ching2221详细解说)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=8;i>=1;i--) //从高位递减
{
Max7219_pinCLK=0; //时钟开
Max7219_pinDIN=DATA&0x80; //取出DATA的最高位(实参数据位与0X80即10000000相与)
}
}
}
//程序编制:ching2221@
{
for(i=t;i<t+9;i++)
{
Write_Max7219(j,disp1[i]);
j++;
if(j==9) j=0;
Delay_xms(35);
}
if(t==15) t=0;
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<112;j++);
}
void Write_Max7219_byte(uchar DATA)
{
Write_Max7219(0x0b, 0x07); //0X0b为扫描界限寄存器地址 //0x07为八位模式数据
Write_Max7219(0x0c, 0x01); //0X0C为关断模式寄存器地址 //0x01为正常工作模式数据
Write_Max7219(0x0f, 0x00); //0X0F为显示模式寄存器地址 //0x00为正常工作模式数据
}
void Init_MAX7219(void)
{
Write_Max7219(0x09, 0x00); //0X09为译码控制寄存器地址 //0x00为不译码模式数据//01为译码模式
Write_Max7219(0x0a, 0x03); //0X0a为亮度控制寄存器地址 //0x00为亮度控制数据0x00-0x0f
}
void main(void)
{
uchar i,t,j=1;
Delay_xms(50); //MAX7219最大10MHz,所以延迟5毫秒
Init_MAX7219(); //调初始化函数
while(1)
{
for(t=1;t<20;t++) //t=数组里个数
DATA=DATA<<1; //左移一位
Max7219_pinCLK=1; //时钟关
}
}
void Write_Max7219(uchar address,uchar dat)
//程序编制:ching2221@
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit Max7219_pinDIN = P2^2;//定义引脚(数据)
sbit Max7219_pinCS = P2^1;//定义引脚(锁存)
sbit Max7219_pinCLK = P2^0;//定义引脚(时钟)
/*数组里要显示的内容*/
uchar code disp1[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
{
Max7219_pinCS=0;
Write_Max7219_byte(address); //写入八位地址
Write_Max7219_byte(dat); //写入八位数据
Max7219_pinCS=1;
{
Max7219_pinCLK=0; //时钟开
Max7219_pinDIN=DATA&0x80; //取出DATA的最高位(实参数据位与0X80即10000000相与)
}
}
}
//程序编制:ching2221@
{
for(i=t;i<t+9;i++)
{
Write_Max7219(j,disp1[i]);
j++;
if(j==9) j=0;
Delay_xms(35);
}
if(t==15) t=0;
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<112;j++);
}
void Write_Max7219_byte(uchar DATA)
{
Write_Max7219(0x0b, 0x07); //0X0b为扫描界限寄存器地址 //0x07为八位模式数据
Write_Max7219(0x0c, 0x01); //0X0C为关断模式寄存器地址 //0x01为正常工作模式数据
Write_Max7219(0x0f, 0x00); //0X0F为显示模式寄存器地址 //0x00为正常工作模式数据
}
void Init_MAX7219(void)
{
Write_Max7219(0x09, 0x00); //0X09为译码控制寄存器地址 //0x00为不译码模式数据//01为译码模式
Write_Max7219(0x0a, 0x03); //0X0a为亮度控制寄存器地址 //0x00为亮度控制数据0x00-0x0f
}
void main(void)
{
uchar i,t,j=1;
Delay_xms(50); //MAX7219最大10MHz,所以延迟5毫秒
Init_MAX7219(); //调初始化函数
while(1)
{
for(t=1;t<20;t++) //t=数组里个数
DATA=DATA<<1; //左移一位
Max7219_pinCLK=1; //时钟关
}
}
void Write_Max7219(uchar address,uchar dat)
//程序编制:ching2221@
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit Max7219_pinDIN = P2^2;//定义引脚(数据)
sbit Max7219_pinCS = P2^1;//定义引脚(锁存)
sbit Max7219_pinCLK = P2^0;//定义引脚(时钟)
/*数组里要显示的内容*/
uchar code disp1[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
{
Max7219_pinCS=0;
Write_Max7219_byte(address); //写入八位地址
Write_Max7219_byte(dat); //写入八位数据
Max7219_pinCS=1;